PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Micro Servo Board



datatom
30.12.2011, 16:41
Hallo zusammen,

mein Micro Servo Board http://www.pololu.com/file/0J37/ssc03a_guide.pdf zuckt wenn ich es starte. Was kann das sein?

Grüße

datatom

Kampi
30.12.2011, 19:56
Starten heißt was?
Legst du da nur eine Spannung an oder gibst du auch was über RS232 oder UART auf das Board?
Und dann wäre eine genauere Beschreibung deines Problems hilfreich. Was auch gut wäre wäre ein Schaltplan deines Aufbaus sowie von dem was du auf das Modul an Befehlen gibst.

datatom
31.12.2011, 09:56
Starten heißt was?
Legst du da nur eine Spannung an oder gibst du auch was über RS232 oder UART auf das Board?
Und dann wäre eine genauere Beschreibung deines Problems hilfreich. Was auch gut wäre wäre ein Schaltplan deines Aufbaus sowie von dem was du auf das Modul an Befehlen gibst.

Ich habe das Micro Servo Board mit dem Rn-Mega2560 verbunden. Ich habe alle Anschlüsse für die Spannung belegt, wie in den jeweiligen hier anhängenden Dokus beschrieben ist. Der Strom kommt über einen Netzstecker mit 5 V. Beide Module sind seriell Verbunden, d.h. Tx vom Rn-Mega2560 auf den Stecker logic-level seriell input des Servoboards. Der Servo ist am Servoboard angeschlossen. Sobald ich jetzt den Netzstecker reinstecke, dreht der Servo kurz rechts herum. Erst dann dreht er sich in die per Bascomprogramm festgelegten Richtungen. Der Servo drecht auch kurz nach rechts oder versucht es, obwohl er vorher schon seine Endstellung fürs rechtsrumdrehen erreicht hatte.


' Pololu Testprogram

$regfile = "m2560def.dat"
$hwstack = 82
$framesize = 68
$swstack = 68


$crystal = 16000000 'Quarzfrequenz
'$baud = 19200


Config Pind.5 = Output
Led Alias Portd.5


Dim Servonumber As Byte
Dim Servodevice As Byte
Dim Servocommand As Byte
Dim Servogespeed As Byte
Dim Servodata1 As Byte


Config Com3 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Open "com3:" For Binary As #3 'Servomodul


Do

' Pololu mode

Led = 1

Servodevice = 1 'Device-Number
Servonumber = 7 'Servonumber
Servocommand = 2 'Position
Servodata1 = 90 '0 to 127

Print #3 , Chr(128) ; Chr(servodevice) ; Chr(servocommand) ; Chr(servonumber) ; Chr(servodata1)

Wait 2

Led = 0

Servodevice = 1
Servonumber = 7
Servocommand = 2
Servodata1 = 70

Print #3 , Chr(128) ; Chr(servodevice) ; Chr(servocommand) ; Chr(servonumber) ; Chr(servodata1)

Wait 2

Loop
End

Ich hoffe die Beschreibung reicht:cool:

Grüße

datatom

Torrentula
31.12.2011, 10:05
Ich kenne mich mit Bascom nicht so gut aus aber kannst du nicht per $baud=19200 die richtige Baudrate einstellen und die Befehle per print schicken?

Läuft das Board überhaupt mit 19200 baud oder ist es im auto-detect mode?

MfG

Torrentula

datatom
31.12.2011, 10:19
Der Befehl ist auskommentiert durch '

Das Board läuft mit 19200 baud. Ich lege es mit diesem Befehl fest:


Config Com3 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0


Ob das Board im auto-detect mode läuft weiß ich nicht. Wäre aber ein Ansatz. Wenn die Baudrate zweimal kommt könnte es ja zu diesem kurzen Drehen kommen. Aber wie kann ich das überprüfen?

Torrentula
31.12.2011, 11:10
Nein die Frage war ob das Servo-Board mit 19200 baud bzw. im auto-detect mode läuft. Mit dem Befehl, den du in Bascom schreibst legst du ja lediglich die baudrate des Microcontrollers fest, nicht jedoch des Servo boards fest!

MfG

Torrentula

Kampi
31.12.2011, 12:06
Danke Torrentula du hast langes suchen erspart :D
Wie er schon erwähnt hat legst du mit $baud die Bauerate für den Mikrocontroller fest. Ich hab mich mal durch die Doku des Servoboards gewühlt und das hier auf Seite 5 gefunden:

http://img35.imageshack.us/img35/3601/unbenanntgop.png (http://imageshack.us/photo/my-images/35/unbenanntgop.png/)

Das heißt sobald der "Protocol Selection Jumper" gesteckt ist (laut Bild sieht es so aus als ob er das im Auslieferungszustand ist) kann das Servomodul nur mit zwei festgelegten Baudraten arbeiten.
Du musst also deine Bauerate auf 2400 oder 9600 ändern damit es funktioniert. Das Board kann keine anderen baudraten verarbeiten und im Moment empfängt es deswegen nur Datenmüll :)

Du kannst den Jumper auch entfernen dann funktionieren auch höhere Baudraten. Nur dann wird das ansteuern der Servos komplizierter (siehe Seite 6 deiner Doku). Dann reicht nämlich nicht mehr nur ein Zahlenwert für die Position und die Geschwindigkeit.
Es reicht aber eigentlich vollkommen aus das Modul mit 9600 Baud anzusprechen. Du musst nur gucken ob der Jumper steckt und dann das $baud = 19200 in $baud = 9600 umändern.

Edit: Keine Ahnung wieso aber ich konnte keinen Text aus dem PDF rauskopieren. Liegt sicher an dem dummen Foxit-Reader hier auf dem Lappi. Hoffe das Bild reicht ;)

datatom
04.01.2012, 18:43
Also, ich kann den Servo jetzt beliebig drehen:p

Aber das kurze drehen beim einstecken des Netzsteckers bleibt:(

Kommt aber angeblich vor und man kann nichts machen. So habe ichs im Pololu Forum erfahren: http://forum.pololu.com/viewtopic.php?f=16&t=4822

Danke und Grüße

datatom

Kampi
04.01.2012, 18:58
Na solange es klappt ist doch ok ;)