PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servo Ansteuerung



Isator
02.02.2007, 17:21
Hallo allerseits,

ich habe hier zwei Servo's von robotikhardware (http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=70&products_id=48)

Ich habe sie munter angeschloßen und entsprechend der Beschreibung im Wiki-Bereich angesteuert. Der Servo dreht aber allein bei "Config Servo = 1, Servo1 = Porta.0" schon. Sobald der Servo also konfiguriert wird und er weiß wo der Servo angeschloßen ist scheint er diesem die entsprechenden Signale zu senden.
Eine Eingabe von Servo(1) = X ist völlig wirkungslos.
Angesteuert wird er von einem Atmega32(RN-Control)

Der Servo ist übrigens NICHT(!!!!) gehackt.
Woran könnte es liegen?

UriAn
02.02.2007, 17:50
Moin,
stell mal den Quellcode ins forum und mach mal ne skizze vom aufbau.

MfG René

Tuxy
02.02.2007, 17:51
Wie/wo hast du den Servo angeschlossen und poste mal bitte dein programm dazu.

edit: ach da war jemand schneller O:)

Isator
02.02.2007, 17:56
Enable Interrupts
Config Servos = 1 , Servo1 = Porta.0 , Reload = 20
Config Porta = Output

Servo(1) = 20
Waitms 5000


Das ist der genaue Quellcode davon

Anschlußbelegung ist halt, Masse(schwarz) an GND vom Board, +5V(rot) an +5V vom Board und Signal(gelb) an Porta.0

UriAn
02.02.2007, 18:16
Ähhm,

Quarzfrequenz, ...... in Bascom gewechselt???
Und pack den Servowert-befehl in ne do loop schleife
sry wegen der schreibweise muss weg.

MfG René

Isator
02.02.2007, 18:17
Ich hab jetzt gerade nur eben den Servo teil kopiert ^^
Natürlich steht Quarzfrequenz und so davor:

$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600

Aber was ändert das daran? ^^

Edit: Zu der Do-Loop Schleife. Wieso in eine Do Loop Schleife? Dann würde er doch(angenommen es funktioniert) drehen. Dann seh ich ja keinen Unterschied zwischen meinem Fehler und dem dann richtigen Ergebnis ^^

UriAn
02.02.2007, 18:22
Wo dran???

MfG René

UriAn
02.02.2007, 18:29
Ah, kapiert

1. Der Servowert is schon mal zu niedrig(Wert >= 50)(Hängt mit dem timer1 oder 0 zusammen,Bla bla bla )

2. Der servowert ist die position vom Servohorn.(Also der "winkel")

MfG René

PS. Pn, wenn noch fragen;-)

UriAn
05.02.2007, 21:32
Moin,
nur ne Vermutung,bei mir steht "Enable Interrupts" nach der Servoconfig ev. ist der timer zuschnell und unterbricht immer.
Glaube ich zwar nich, aber eventuell.
Nimm mal den Quellcode, is meiner und funtzt bei mir.


$regfile = "m32def.dat"
$crystal = 16000000

Config Servos = , Servo1 = Porta.0 , Reload = 10
Config Portc = Output
Enable Interrupts

Declare Sub Rodeo

Dim E1 As Byte
Dim R As Byte
Dim T1 As Word


Do
R = R + 1

If R = 5 Then
Disable Interrupts
Sound Portd.7 , 450 , 250
Sound Portd.7 , 200 , 100
Sound Portd.7 , 450 , 250
Wait 10
R = 0
Else
Enable Interrupts
E1 = Rnd(100) + 50
Servo(1) = E1
T2 = Rnd(900) + 10
Waitms T2
End If
Loop

End


MfG René

Isator
09.02.2007, 13:24
Hi

Sorry das ich mich so lang nicht mehr gemeldet habe. Lag mit Grippe flach.
Das Problem ist inzwischen gelöst... Anstatt Pina.0 haben wir einfach mal Pina.1 genommen und siehe da es klappt.
Mal wieder sehr eigenartig.

Danke nochmals für die Hilfe

UriAn
09.02.2007, 14:26
Mhh,
hört sich ja sehr komisch an.
Naja viel Spass noch beim basteln.

MfG René