__________________________________________________ _____________
http://pe-products.jimdo.com/
Für (m)einen Roboterkopf habe ich zehn Servos anzusteuern (zum Video runterscrollen). Die Eigenbauplatine bedient die Servos mit besser als 10 Bit Auflösung bei einer Servoperiode von rund 25 ms; es läuft darauf ein mega1284 mit 20 MHz. Mit knapp weniger als 20 ms könnten es dann immer noch acht Servos sein. Das Prinzip ist theoretisch in der Lage auch doppelt so viel Servos anzusteuern. Die Geschichte müsste in ähnlicher Weise auch mit nem mega32 gehen. Da der nur 16 MHz macht (oder?) muss man eben die Anzahl der bedienten Servos entsprechend niedriger ansetzen. Vermutlich sechs bei 20 ms Periodendauer und knapp acht (*gg*) bei 25 ms.... Wie steuert ihr mehrere Servos mit einem Atmega an?
Das Timingprinzip ist hier in einem Codeauszug gezeigt: ein Timer mit einer Periodendauer von 2,5 ms startet jeweils einen umlaufend adressierten Servopuls (den Pin auf high) und einen zweiten Timer(kanal) dessen Laufzeit OCR1B den entsprechenden Servopin wieder zurücksetzt. Aus den zehn Perioden wird dann die Gesamtperiode für einen der zehn Servos. Servos die nicht adressiert werden laufen dann leer mit. Die Lösung ist also auch für nur einen oder zwei Servos geeignet, dann laufen die restlichen Teilperioden einfach leer.
Ciao sagt der JoeamBerg
Vom Prinzip her schaut die Ansteuerung bei mir gleich aus wie bei dir. Also 1 timer im CTC Modus. Deine Werte sollten auch passen wenn ich sie mit meinen vergleiche. (ATmega8 @16MHz)
Tut sich gar nix?
EDIT: Du verwendest keinen Synchronisationszyklus. Am Anfang hast du eine Periode von nur knapp 8ms. Vielleicht ist das für die Servos schon zu wenig.
Geändert von Siad (16.04.2014 um 07:08 Uhr)
Lesezeichen