PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servosteuerung für 18 Servos, welches Datenprotokoll?



waran
06.05.2009, 20:06
Hallo,

ich tüftel grade an einer Servosteuerung für einen Hexabot, mit der man mind. 18 Servos steuern kann.
Das Grundprogramm ist jetzt so weit fertig und soll auf einem Atmega8 oder Atmega16 zum Laufen kommen.

Die eigentliche Steuerung der Bewegung des Haxabots soll ein anderer AVR übernehmen, der dann die Daten für die Servos an o.g. Controller sendet.

Jetzt überlege ich, welches Protokoll für die Datenübertragung sinnvoll ist.

Ich wollte das fertige Programm nämlich der Allgemeinheit zur Verfügung stellen, und da bietet es sich u.U. an, ein Protokoll zu verwenden, dass in Roboterkreisen ohnehin geläufig ist. Was meint Ihr?

Thomas$
06.05.2009, 20:14
ich würd gleich atmega 16 nehmen und wenn ich daten übertrage gleich paralell.

waran
06.05.2009, 21:17
Parallel ist sicher schneller, braucht aber auch mehr Leitungen. Ob der Benefit bei einer Servosteuerung so groß wäre?

Warum würdest Du den M16 nehmen?

yaro
06.05.2009, 22:52
Ein m16 hat einfach mehr Pins. Dann kannst du, falls du es dir nochmal überlegen willst, sowas wie einen Sensor ans Bein basteln, der dir bestätigt, dass das Bein fest auf dem Boden steht. Dann musst du später zwar das board neu machen, kannst die Programmierung aber beibehalten.
Ich bin auch gerade dabei einen Hexapoden zu bauen, mache das mit einem m16 als motorsteuerung und einem m8 als haupt-Prozessor. Verbinde beide über I²C.

Gruß, Yaro

vohopri
07.05.2009, 04:20
Hallo waran,

wenn du die Servos seriell ansteuerst, verwendest du am einfachsten 2 Ports für je 9 Servos. Das Übertragungsprotokoll heisst PPM, also Pulse Position Modulation und wird in der Modellbau Technik allgemein angewendet.

https://www.roboternetz.de/phpBB2/files/05-in-555-q1-512x256.gif

In dem Beispiel werden mit 3 Impulsen 2 Kanäle übertragen = grüne Linie. 9 Kanäle sind genau so möglich, dann werden eben 10 Impulse verwendet. Die Impulsdauer ist konstant, ein Zyklus für alle Kanäle dauert 20 ms. Die Servostellung ist durch die Impulsabstände codiert. Die Impulsabstände betragen also 1 bis 2 ms.

Eine ganz einfache Schaltung klaubt dann die Kanäle auseinander. Oben stellt die gelbe Linie das Ergebnis für den ersten Kanal dar.

http://www.jbergsmann.at/ppm-2-pwm-demultiplexer-v3.GIF

Das ist die Schaltung, die das Signal für die 9 Servos entgegen nimmt und an die 9 Servos verteilt. Gezeichnet sind allerdings nur 2 Kanäle.

Bei Servos hast du ohnehin einen Übertragungszyklus von 20 ms, egal, ob du sie parallel über 18 Leitungen oder seriell über 2 Leitungen ansteuerst.

Ich persönlich würde die serielle Übertragung bevorzugen, und die eingesparten Leitungen für spätere Erweiterungen in Reserve belassen.

grüsse,
Hannes

waran
17.05.2009, 11:44
Hallo Hannes,

Danke für die ausführliche Antwort!
Die Idee mit dem 4017 gefällt mir sehr gut!

Bei diesem Projekt geht es mir darum, eine Ein-Chip-Lösung zu finden.

Mittlerweile bin ich mit der Programmierung auch schon ein gutes Stück weiter gekommen.

Derweilen viele Grüsse Richtung AT!