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.
Lesezeichen