Das Steuerhorn eines Standardservos kann innerhalb eines Bereichs von 180° jede Winkelposition einnehmen. Wenn man einen kleinen Draht oder ein Stück
Papier am Steuerhorn befestigt, dann lässt sich die Drehbewegung und der überstrichene Winkelbereich des Servos besser verfolgen.
Die Mittelstellung eines Servomotors findet man, indem man das Steuerhorn mit der Hand vorsichtig im und gegen den
Uhrzeiger jeweils bis zum Anschlag dreht. Die Mittelstellung entspricht dann der 90° Position.
Drehbewegungen eines Servos
programmieren
Abb. 2 zeigt ein sogenanntes Zeitdiagramm eines Servomotors. Dargestellt wird eine Folge von HIGH-/ LOW-Signalen, bei der ein Servo in der 90° Position verweilt.
Erkennbar ist:
- die Signalfolge wiederholt sich alle 20
ms.
- das HIGH-Signal liegt ca. 1,5ms
an.
- das LOW-Signal liegt ca. 18,5 ms
an.
Mit diesem Pulsfolgeschema wird der Servo in seiner stabilen Mittelposition gehalten. Die Dauer des
anliegenden LOW-Signals kann nach oben und unten um wenige Millisekunden
abweichen, während die Dauer des HIGH-Signals für die genaue Positionierung
exakt sein muss.
Mit dem speziellen BASCOM-Befehl
- Servo(1) = n; n aus der Menge der natürlichen Zahlen,
lässt sich die Dauer für ein HIGH-Signal exakt vorgeben. Wir sprechen zukünftig auch kurz von der Pulsdauer
eines HIGH-Signals.
Das Programm Servo_01.bas
Mit einem Oszilloskop kann man zeigen, dass bei dieser Einstellung der Steuerimpuls für den eingesetzten
Servomotor eine Impulslänge von 1,8ms hat. Entsprechend findet man eine Impulslänge von 0,5ms für die entgegengesetzte maximale Drehposition. Die Impulslängen bewegen sich für den benutzten Servo
zwischen 0,5ms und 1,8ms.
Die Helligkeit der roten LED variiert bei diesen beiden Extremeinstellungen. Sie leuchtet deutlich
schwächer bei 0,5ms und entsprechend heller bei 1,8ms Impulslänge. Im ersten Fall leuchtet sie 0,5ms von insgesamt 20ms (2,5%), im zweiten Fall 1,8ms von 20ms (9%).
Die drei gesuchten Zahlenwerte für den von mir eingesetzten Servo lauten:
- Linksanschlag: Servo(1) = 255
- Rechtsanschlag: Servo(1) = 70
- Mittelstellung: Servo(1) = 160
Schaltungsaufbau
Der Schaltungsaufbau ist mit dem aus Übung 1 identisch.
Wie arbeitet das Programm servo_2.bas?
Wie bereits in Übung 1 läuft auch in diesem Programm die Konfiguration im Modus Servo über eine
Interrupt-Routine. Wir gehen darauf an dieser Stelle nicht näher ein sondern nutzen sie als Black-Box-System.
Die Prescale-Einstellung (Zeile 18) beeinflusst die Impulslänge. Je nach Systemtakt sind
unterschiedliche Werte zu wählen. Mit einem Systemtakt von 9,6 MHz leistet der Prescale-Wert 64 gute Dienste. Die Impulsdauer wird über Servo(1) eingestellt und lässt nur Werte zwischen 0 und 255 zu
(über eine vordefinierte Variable vom Typ Byte). Damit sollte sich das Steuerhorn des Servo in die beiden Extrempositionen nach links und rechts drehen lassen.
dreht den Servo in die eine Extremposition (rechts) und wartet 3s (Zeile 25). Die zugeschaltete rote LED leuchtet relativ
schwach.
dreht den Servo in die andere Extremposition (links) und warte wieder 3s. (Zeile 27). Die zugeschaltete rote LED leuchtet sehr
hell.
dreht den Servo in die Mittelstellung mit anschließender Warteschleife von 3s. Die Lichtintensität der LED nimmt ab.
Da die Befehle in eine Do ... Loop Schleife eingebettet sind, wiederholen sich
die beschriebenen Vorgänge beliebig oft.
Weiter geht´s mit dem Kapitel 7-Segment Anzeige