Servo Ansteuerung in C mit Timer0

Gast #102350
Lesenswert?

Nachdem es hier in der Codesammlung bereits Beispiele für die
Ansteuerung von Servos in Assembler und Basic gibt, hier ein Beispiel
in C.
Das Programm verwendet Timer0 zur Steuerung. Es dürften bis zu 8 Servos
ansteuerbar sein (getestet mit zwei).
Ausprobiert hab ich das Programm mit einem AT90S4433 mit 8MHZ.
Kommentare sind natürlich willkommen.
Angehängte Dateien:
Gast #102354
Lesenswert?

Aufgrund einer Nachfrage per Mail ergänze ich mal folgendes:
Zur Verwendung der Servos an Mikrocontrollern sind keine Modifikationen
an den Servos nötig.
Das Grundprinzip der Servoansteuerung erfolgt so:
An dem Signal Pin des Servos wird ein High Puls von 1-2ms Dauer
angelegt. Bei 1ms schlägt der Servo zur einen Richtung maximal aus, bei
2ms in die andere Richtung. Bei 1,5ms Puls-Dauer befindet sich der Servo
in der Mittelstellung. In der Praxis erreichen einige Servos erst bei
mehr als 2ms bz. weniger als 1ms den Maximalauschlag. Nach dem High
Puls kann der Steuereingang für ungefähr 20ms auf Low gesetzt werden
(hier kommt es auf ein paar ms mehr oder weniger nicht an).
http://www.geocities.com/BourbonStreet/3220/servobasics.html
bescheibt das Ganze noch etwas ausführlicher.

Andere Programmierbeispiele für Servos in diesem Forum:
In Basic:
http://www.mikrocontroller.net/forum/read-4-15251.html
in Assembler:
http://www.mikrocontroller.net/forum/read-4-7047.html
http://www.mikrocontroller.net/forum/read-4-591.html
in C:
http://www.mikrocontroller.net/forum/read-4-38872.html
http://www.mikrocontroller.net/forum/read-4-119934.html

fehlt nur noch Pascal ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren