Modellbau-Servos sind billige Getriebemotoren zum basteln. Sie haben drei Anschlüsse:
Masse: meist schwarz der braun gekennzeichnet.
Spannung: meist rot gekennzeichnet.
Signal: meist gelb oder orange gekennzeichnet.
Über die Signalleitung wird das Servo gesteuert. Dies geschieht in
Pulsweitenmodulation.
Bei gängigen Servos bedeutet ein Pulsweite von:
1000 ms: linker Vollausschlag
1500 ms: Neutralstellung
2000 ms: rechter Vollausschlag
Die Pulse werden alle 20 ms wiederholt. Die einfachste Steuerung geht über die GPIO Pins. Dazu kann man verschiedene
Biblotheken nutzen:
bcm2835: keine für Servos angepasste PWM Funktionalität
wiringPi: GPLv3 mit Beispiel zur Servo Ansteuerung
pigpio: Echtzeitfähig mit fertiger Servo Funktion
Mein Favorit ist damit ganz klar pigio. Bei den beiden anderen flackert das Servo, da aufgrund der
mangelnden Echtzeitfähigkeit das Timing nicht ganz stimmt. Dies erhöht den Stromverbrauch und lässt die
Servos leicht zittern. Hier ist der Link zur Bibliothek mit
einer sehr guten Anleitung zur Installation und einer hervorragenden Dokumentation. Unter den Beispielen
findet man leider kein Beispiel zur Servoansteuerung. Dies hole ich mit diesem kleinen c-Programm, das ich unter
GPLv3 gestellt habe, nach.
Das Programm kann man sich unter servo.c herunterladen. Um das Programm
zu compilieren, habe ich einen makefile geschrieben:
Der makefile muss im selben Verzeichnis wie der c-file sein und wird mit make gestartet. Vor dem ersten
Start des Programms muss noch der im Hintergrund laufende Daemon mit dem Befehl sudo pigpiod gestartet werden.
Das Programm selbst wird dann mit ./servo ausgeführt. Hier ist noch ein Bild meiner Experimentalanordnung:
Ich habe statt des Servos auch das bitscope Digitaloszilloskop (siehe Bild oben) an die Signalleitung
gehängt und folgende Aufzeichnung erhalten:
Die Ansteuerung eines Servos mit der Bibliothek pigpio ist wegen der Echtzeitfähigkeit deutlich exakter und
mit den Bibliotheken bcm2835 und wiringPi nicht zu vergleichen.
Dieses Programm wurde an einem Raspberry Pi 2 Model B V1.1 mit Raspbian Betriebssystem getestet.