PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [gelöst] Problem m. Serverboard-Programmierung/Anschluss



tiller
21.11.2007, 16:03
Hallöchen!

Hier erstmal ein kleines Testprogramm, mit dem ich mit der Servoansteuerung etwas rumprobieren wollte:



$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000

$baud = 9600

Dim Servonummer As Byte
Dim Servoposition As Byte

Config Portc = Output
Config Portd.7 = Output

Portc.0 = 0
Portc.1 = 1
Portc.2 = 1
Portc.3 = 1
Portc.4 = 1
Portc.5 = 1
Portc.6 = 1
Portc.7 = 1

Do
Sound Portd.7 , 400 , 400
Servonummer = 7
Servoposition = 0
Print Chr(255) ; Chr(servonummer) ; Chr(servoposition);
Wait 3

Sound Portd.7 , 400 , 400
Servonummer = 7
Servoposition = 255
Print Chr(255) ; Chr(servonummer) ; Chr(servoposition);
Wait 3
Loop


Nunja, folgendes passiert nach dem Starten: Das RN-Board fängt an, fröhlich vor sich hin zu piepsen, wärend die grüne LED des Servoboards (SB) im gleichen Takt blinkt, was bis dahin nicht weiter verwunderlich ist. DSas Servo rührt sich allerdings nicht und nach etwa 30s erlischt die grüne LED; nun leuchtet die gelbe dauerhaft und die rote blinkt.

Zur Verkabelung: RN wird über 9,6V Akkupack versorgt, SB über Anschluss von RN (für externe 5V-Geräte), Servos über vier Zink-Kohle-Zellen mit U(ges)=6,4V (Leerlauf). Das einzige angeschlossene Servo hängt an Port 7. Der logic-level serial input des SB hängt an PortD.2 (TXD)(das ist wenn mich nicht alles täuscht der Pin links oben).

Tja, ich weiß nicht weiter, ihr aber bestimmt sehr wohl :-)
Danke für eure Hilfe!

tiller
22.11.2007, 18:18
Hallöle!

Hab' ein paar neue Erkenntnisse gewonnen. Ich bin mittlerweile so weit, dass am SB nicht mehr die gelbe LED dauerhaft leuchtet und die rote blinkt, sondern anscheinend eine ordnungsgemäße Kommunikation des RN-Boards mit dem SB stattfindet, die grüne LED blinkt dabei in einem bestimmten Takt kurz auf. Am Servo tut sich allerdings immernoch nichts. Erreicht habe ich diesen Fortschritt durch Rumprobieren mit der Baudrate, die standardmäßig auf 9600 steht, erst ab einer höheren Baudrate legen sich die durch die gele/rote LED angezeigten Fehlermeldungen.

Zur Verkabelung: Der TX-Pin des RS232-Ports des RN-Boards ist mit dem RS232-Input des SB verbunden, Masse natürlich mit Masse. Die in der von robotikhardware mitgelieferten Dokumentation vorgeschlagene Möglichkeit über PortD.4 des RN-Boards funktioniert überhaupt nicht.

Weiterhin ist seltsam, dass, wenn ich den Jumper am SB abziehe und somit in den Polulu-Mode wechsle (dementsprechend auch andere Befehle in der Software), wiederum die gelbe LED leuchtet und die rote blinkt, unabhängig von der eingestellten Baudrate.

Hier nochmal der Quellcode des von mir momentan verwendeten Demoprogramms von robotikhardware (mit geänderter Baudrate):



'################################################# ##
'microservoboard.bas
'für
'RoboterNetz Board RN-CONTROL ab Version 1.1
'und das Micro Servo Board

'Aufgabe:
' Dieses Testprogramm bewegt ein Servo das am Anschluss SERVO7
' des Micro Servo Board steckt, hin und her.
' Der Jumper am Servoboard muss gesteckt sein, da der MINI SSC MODE
' zur Ansteuerung von Servos genutzt wird

'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de oder robotikhardware.de
'################################################# ######


$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32

$crystal = 16000000 'Quarzfrequenz
$baud = 38800 'wahlweise auch 2400 Baud


Dim Servonummer As Byte
Dim Servoposition As Byte

'Der Zahlenbereich 0 bis 254 umfasst einen 90 Grad Drehbereich
Do
Servonummer = 7 '0 bis 15 (bei mehreren Boards bis 254)
Servoposition = 254
Print Chr(255) ; Chr(servonummer) ; Chr(servoposition); 'Servo ganz rechts

Wait 2

Servonummer = 7 '0 bis 15 (bei mehreren Boards bis 254)
Servoposition = 0
Print Chr(255) ; Chr(servonummer) ; Chr(servoposition); 'Servo ganz rechts

Print Chr(255) ; Chr(7) ; Chr(0); 'Servo ganz links
Wait 2
Loop

End


Bitte helft mir, bin wirklich kurz vor der endgültigen Verzweiflung...

Tuxy
22.11.2007, 18:54
Ich habe es einfach nach der Anleitung /cd/microservoboard/microseriellservo.pdf
getestet und es hat bestens funktioniert.

http://img135.imageshack.us/img135/6083/microservoboardanrncontbv5.jpg


(wenn der TX Pin genutzt wird, muss das IC MAX232 aus der Fassung gezogen werden)

tiller
22.11.2007, 19:32
Korrektur:
1. Baudrate lioegt bei 38400, aber das ändert nicht viel...
2. Hab mich vertan, wenn ich Sb so anschließe wie auf dem Bild von Tuxy, blinkt ebenfalls die grüne LED, es scheint also eine ordnungsgemäße Kommunikation stattzufinden. Servo rührt sich allerdings ebenfalls keinen Millimeter

Es stimmt doch, dass JP5.2 (blaues Kabel auf dem Bild dort angeschlossen) PortD.2 entspricht oder? So lese ich es zumindest aus der Dokumentation zum RN-Board heraus.



Ich habe es einfach nach der Anleitung /cd/microservoboard/microseriellservo.pdf
getestet und es hat bestens funktioniert.


Bei mir ist das leider nicht der Fall. Ich glaube immer mehr, dass das SB defekt ist...

Tuxy
22.11.2007, 20:15
Es stimmt doch, dass JP5.2 (blaues Kabel auf dem Bild dort angeschlossen) PortD.2 entspricht oder? So lese ich es zumindest aus der Dokumentation zum RN-Board heraus.


Nein, es ist PD.1, wenn ich mich jetzt nicht irre,
da es von links mit PD.0 beginnt.

Bau es doch mal genau nach Anleitung auf und verwende die Beispielprogramme,
wenn es dann nicht funktioniert ist es wohl defekt.

tiller
22.11.2007, 20:35
Stimmt, es ist PD.1, ich meinte aber eigentlich die Pins. Pin2 entspricht dabei PD.1 und befindet sich links oben.
Habs ja anfangs so probiert (wie beschrieben auch den MAX232 entfernt) aber da es auch da nicht funktioniert hat, bin ich auf die RS232-Schnittstelle ausgewischen. Wie gesagt habe ich RS232/TX (RN) mit RS232/RX (SB) und GND (RN) mit GND (SB) verbunden.

Der Witz an der Sache ist aber, dass das Board laut Anleitung nur eine Baudrate von 2400 oder 9600 unterstützt, setze ich diese so, bekomm ich ne Fehlermeldung über die LEDs (gelb dauernd, rot blinkt). Erst wenn ich baud auf 19200 oder 38400 setze, verschwindet die Meldung und die grüne LED blinkt, was eigentlich eine RS232-Aktivität signalisiert. Funktionieren tut es aber wohl nicht, weil das Board eine so hohe Baudrate halt nicht unterstützt, der Servo steht im Endeffekt also still, alles sehr verwirrend.

Fazit: Ja, ich denke mittlerweile auch, dass das Board defekt ist. Kommt sowas öfter vor? Ich habs z.B. auch schon mehrfach bei größeren Herstellern wie NVidia erlebt (bisher 2mal).

Tuxy
12.12.2007, 02:28
Guten Morgen.
Ich möchte nur kurz meine heutigen Erfahrungen mit dem Board hier hinterlegen.

Voller begeisterung wollte ich meinem Bot heute das fahren beibringen,
aber das SB hat mir einen gewaltigen Strich durch die Rechnung gemacht,
nichts als Ärger....

Ich habe das Ding schonmal vor einigen Wochen benutzt und da hat es noch funktioniert.

Also hier eine kleine Zusammenfassung.

Rn-mini mega 168
-Pololu Mode keine Funktion
-mini ssc II Mode funktioniert teilweise
-über rs232 kommt auf dem pc nur wirres zeugs an,
also neuer mega 168 rein Fuses usw..eingestellt immernoch das gleiche.

Also dann mal mit dem Rn-control, man hats ja
-mini ssc II Mode funktioniert
-Pololu Mode teilweise, nach wiederholen der Befehle spielt das Ding verrückt

Im letzten Fall habe ich dann Wait's eingebaut, das hat schonmal ein bisschen
geholfen, aber vorallem wenn das Programm neu beginnt gehts immernoch nicht.

Ich habe dann total verzweifelt über den neuen Servos gehangen und ein
wenig die Leistung "getestet"
Dabei hat sich das SB ständig aufgehangen, ok dachte ich starke servos hoher
stromverbrauch, bei den alten ist schon immer unter vollast die Spannung
zusammen gebrochen, sodass der Controller sich resetet hat.

Aber diesmal war es garnicht so, es hat sich anscheinend nur das SB zurückgestelt.
Habe dann mal ein Blick in die Anleitung geworfen und festgestellt das eine Spannung von 5-16V ausgeschrieben ist.

Ich habe dann nur den Controler mal über einen &V Spannungsregler angeschlossen
und siehe da, das Ding funktioniert einwandfrei.


Warum der Mega 168 nicht funktionierte ist mir ein Rätsel,
probier demnächst mal stattdessen ein mega 8.

Fazit:

-Controller mit über 5V versorgen, ein 5V Spannugnsregler liefert manchmal weniger.
(wie bei meinem Rn-Control nur 4,87 ohne Last.)

-Servos über eine externe Spannung versorgen

-Vor dem senden des ersten Befehls ein Wait einbauen
(direkt Do Befehl funktioniert nicht wenn man den Controller resetet)

-zwischen den Befehlen genug Zeit lassen

so das wars von meiner seite, hf


Ich würde mich noch über andere Erfahrungsberichte freuen,
ich suche noch eine Möglichkeit das "zucken" beim Spannung anlegen zu verhindern.
Denn wenn der Servo am anschlag ist tut das weh.

tiller
12.12.2007, 15:29
Hallo Tuxy,

mein Problem ist mittlerweile gelöst, habe quasi durch learning by doing herausgefunden, dass es bei der Übertragung der Software per RS232 (sprich Bootloader) zu massiven Problemen mit dem MSSC kommt. Seit ich per ISP-USB-Adapter programmiere, haben sich meine Probleme in Luft aufgelöst.
An einer Lösung des Problems mit dem ruckhaften Springen in die Neutralposition beim Einschalten wäre aich auch stark interessiert. Ich denke, man kann diese Position im Pololu-Mode verändern, bei mir müsste ich die Neutralpositition dann auf die volle Auslenkung einstellen. Voraussetzung wäre dann nur noch, vor dem Abschalten in diese Position zu gehen...

PS: Hast du Erfahrung mit bipolaren Schrittmotoren? Wenn ja, würde ich mich sehr freuen, wenn du mal in meinem Thread dazu vorbeischauen würdest. Hab da ein paar kleine Probleme :-)

Gruß, Thomas

Tuxy
12.12.2007, 15:46
Hi Thomas.

Mit dem "zucken" der Servos meinte ich etwas anderes.
Jedes mal wenn ich Spannung anlege (übrigens auch bei einem
normalem rc-Empfänger) springt der Servo kurz an.
Er dreht dabei um einige Grad in die gleiche Richtung.

Wenn das jetzt öfter nacheinander passiert,
ohne dass der Servo zwischendurch in eine andere Position fährt,
knallt der voll gegen den Anschlag.

Ich habe dadurch schon ein 25€ Servo verloren, der ist durchgebrannt.
Es handelte sich dabe um ein Lenkservo, der überdreht hat.
Aus dieser Position ist er dann nichtmehr selbst rausgekommen,
habs leider erst gemerkt als es zu spät war.

Ein ruckartiges fahren in Neuralstellung ist mir bisher noch nicht
aufgefallen, ich benutze auch nur Pololu Mode mit geringer Geschwindigkeit.


Zu deiner letzten Frage muss ich dich enttäuschen,
ich habe weder von Schrittmotoren, noch deren Ansteuerung Ahnung.

Ich habe ledeglich mal einen amm Rn-control zu Testzwecken laufen lassen.