PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servocontroller Protokoll / erste Version für RNBFRA fertig



Kjion
26.03.2004, 13:51
Hi,

ich programmiere gerade den Servocontroller ( der auch auf dem RNB-FRA1 Board drauf ist ) und würde deshalb gerne mal wissen was der alles können sollte.

Bis jetzt sieht das Protokoll für RS232 folgendermaßen aus:
zuerst wird die Zeichenfolge "#S" gesendet, gefolgt von dem Servo das angesprochen werden soll ( 1-10 ), dann der Wert für das entsprechnde Servo ( 0-255 ).
Ist das so Ok, gibts andere Vorschläge ?? Soll die aktuelle Position der Servos ausgelesen werden können ??
Welche I2C-Adresse soll das Ding bekommen ??

Sonst noch irgendwelche Idee/Vorschläge was man noch machen könnte ??

MfG Kjion

ketti
26.03.2004, 14:50
Gut wäre es wenn Slave-Adresse per Software geändert werden könnte. Generell könnte man ja Slave Hex 50 nutzen. Wenn das jemanden nicht gefällt sollte man es mit einem I2C oder Rs232 Befehl ändern können

Robert
26.03.2004, 15:47
Hallo Kjion,

empfehlenswert wäre auch, den Servo mit der Positionsangabe 0 ausschalten zu können.
Das heist Position 1-255 bedeutet Pulsweitenmodulation für Stellposition links/rechts
Position 0 bedeutet Pulsweitenmodulation ausgeschaltet.
Duch das Ausschalten der Pulsweitenmodulation schaltet sich auch die Servoelektronik aus und der Servomotor wird Stromlos.

Daduch kann man im einem Akuubetriebenen Roboter eine menge Strom sparen.

Gruß Robert

Kjion
26.03.2004, 16:07
@Robert
Hmm, wäre eine interessante Idee. Ich glaube aber es ist sinnvoller das als seperaten Befehl einzubauen, also zum Beispiel : '#A' und 10 senden um das Servo 10 auszuschalten. Was halten die anderen davon ??

@ketti
Hmm, sollte sich machen lassen, müsste man halt die Adresse im EEprom abspeichern. Werde ich vermutlich aber erst später einbauen...

MfG Kjion

Frank
26.03.2004, 16:22
Hi,

Ideen (also Arbeit für Dich) kann ich Dir auch genug geben :-)

Zum Ausschalten ist extra Befehl vermutlich besser.
Man könnte auch einen Befehl einbauen der die Zielposition und eine Geschwindigkeit angibt. Das Servo müsste sich dann in der angegebenen Geschwindigkeit auf diese Position drehen.

Man sollte vielleicht auch eine Möglichkeit schaffen das sich mehrere Servos kombinieren lassen. So das das eine Servo immer das gleiche macht wie das andere oder genau das entgegengesetzte!

Dei I2C Befehle sollten nicht so stark von den Rs232 Befehlen abweichen, falls möglich. So braucht man sich nicht zuviel merken ;-)

Ein Test-Befehl wäre noch ganz gut. Er könnte alle Servos mal in Mittelstellung und an die beiden Anschlagpunkte bringen. SO könnte man auch gut 10 Servos gleichzeitig testen

Es wäre gut wenn die Slave Adresse bei dem Servo-Board und bei Rnbfra etwas abweicht - so das man beides gut kombinieren kann. Vielleicht braucht ja jemand wirklich 20, 30 oder 40 Servos ;-)

Aber du solltest nun wieder lernen gehn :-)

Kjion
26.03.2004, 16:30
Hmm, mal sehen was alles in den Speicher des AT90S2313 so reingeht. Kann mir vorstellen, dass der demnächst voll ist ;)


Aber du solltest nun wieder lernen gehn

Jaja, mach ich schon ;) Man hat aber nicht lust den ganzen Tag zu lernen, sodass man sich mit ein bißchen programmieren gut ablenken kann ;)

PS: Warum gibts denn jetzt auf einem grüne Smilies ?? Ich fand die anderen ehrlich gesagt besser

MfG Kjion

Frank
26.03.2004, 16:34
Tja man muss doch immer mal was neues haben! Hab keine schöneren gefunden! Eigentlich wollte ich ein paar größere gelbe Smiles einbauen - hab aber noch nicht das paßende gefunden. So übel ist doch grün garnicht

Frank
14.04.2004, 15:10
Im Download-Bereich ist sie nun endlich. Die Software für den CoController des RNBFRA-Roboterboards. Damit lassen sich nun 10 Servos per I2C steuern.

Das Archiv enthält die Software als HEX-Format. Diese muß nur mit Bascom oder Pony in den CoController geladen werden.
Eine Doku und C-Beispielprogramm ist auch im Archiv vorhanden. Ein Bascom Beispiel wird folgen.

Der At90S2313 mit Servo Software wurde nun mit der Bezeichnung RNKC10 getauft. natürlich kann diese Software auch auf anderen Boards eingesetzt werden.

Gruß Frank

mpetz
14.04.2004, 17:22
Ich schlage vor, wie es mein SV203 macht vor die Position ein M (für move) zu setzen. Dann alternativ statt M ein I um den Servo relativ zu bewegen (z.B. 100 oder -50).
Beispiel des SV203: SV01M100 (BD steht fürs Board) o. SV03I-600

Gruß Martin

Kjion
14.04.2004, 19:29
Hmm, ich hab jetzt leider noch nicht so genau verstanden wie du das jetzt meinst...
Bezieht sich das jetzt auf die serielle Ansteuerung, oder hab ich da was ganz falsch verstanden ??

mpetz
14.04.2004, 19:36
klar! du hast doch nach dem Protokoll gefragt...

Kjion
14.04.2004, 21:58
Bring den das mit dem relativen Positionieren Vorteile bzw. ist das sinnvoll ?

Also würde eine übertragung folgendermaßen aussehen ( pro Zeile ein Byte ):
S
V
1 -> Nummer des Servos
M oder I -> normale Positionierung oder relative Positionierung
100 -> Wert für die Positionierung ( -600 wären übrigens zwei Byte )

Richtig so ??

MfG Kjion

mpetz
14.04.2004, 22:26
jo, das wäre mein vorschlag!

Kjion
14.04.2004, 22:40
Bleibt immer noch die Frage:

Bring den das mit dem relativen Positionieren Vorteile bzw. ist das sinnvoll ?

Rubi
09.06.2005, 13:46
Hallo

Ich habe für den RNKC10 ein nettes kleines Layout mit Sprint geroutet.
Ich verwende allerdings eine SMD Version von dem AVR um alles möglichst kompakt zu halten.
Bei Bedarf eine Email und ich leite es gerne weiter.

LG
Rubi