Über die Funktion PWM lassen sich Modelbauservos und andere Servomotoren ansteuern. Es lassen sich sich sowohl 180 Grad Servomotoren also auch 360 Grad Servomotoren ansteuern. Für das Beispiel auf dieser Seite verwende ich einen 180 Grad und einen 360 Grad Servomotor von M5Stack und zwei 10 K.Ohm Potis auf meinem ACE Board.
Um die Servomotoren anzusteuern wird die PWM Funktion benötigt. Bei der Pulsweitenmodulation (engl. Pulse Width Modulation, abgekürzt PWM) wird das Verhältnis zwischen der Einschaltzeit und Periodendauer eines Rechtecksignals bei fester Grundfrequenz variiert.
In der PWM Funktion stehen 3 Optionen zur Verfügung:
- Set Periode: Bestimmt die Periodendauer, für die meisten Modellbau (RC) Servos sind dies 20.000 Mikrosekunden.
- Start:
- Output Pin: Bestimmt den Pin an den der Servo angeschlossen ist
- On Time: Bestimmt den Winkel 0-180 Grad, zu dem sich der Servo bewegt. Da die ACE SPS sinkende Transistorausgänge haben muss die ON-Time Zeit umgekehrt werden und haben damit einen Wert von ca. 19.000 bis 18.000 oder 17.000 Mikrosekunden.
- On Time: Bestimmt die Geschwindigkeit und die Richtung eines 360 Grad Servos. Dabei ist 17.000 die schnelle Drehzahl rechts, 19.000 die schnelle Drehzahl links und 18.500 bedeutet dass der Motor aus. Alles dazwischen sind die langsamen Drehzahlen.
- Für On Time kann auch eine ui16 Variable verwendet werden.
- Stop: Stoppt den Servo Antrieb.
Elektrischer Anschluss des Servomotor an die ACE SPS mit externem Netzteil
Damit der PWM Pin vom Servomotor auch "erkannt" wird, muss das Potenzial des Netzteils mit der ACE verbunden werden. Der PWM Pin für den Servo ist frei wählbar.
Elektrischer Anschluss des Servomotor an die ACE SPS mit gleichem Netzteil
Wird für die SPS und die Servors das gleiche Netzteil verwendet, dann muss das Potenzial nicht mit den Ausgangsklemmen (Pin1 und 8) verbunden werden. Der PWM Pin für den Servo ist frei wählbar.
An die ACE SPS können mehrere Servomotoren an geschlossen werden.
Beispiel, die Stellung des Servomotors wird mit einem Potenziometer eingestellt:
- Die Periode auf 20.000 einstellen (für RC Servo)
- Über Scale den Wert des Potis einstellen, da ich 5 Volt an der SPS anliegen habe sind das bei mir ca. 0-2000, auf die Stellung des Servos (für diesen Servo) 17.000 bis 20.000 einstellen und den Wert in einer Variablen speichern
- Den Pin auswählen an dem der Servo angeschlossen ist
- Der Wert aus der Variablen in die Funktion PWM, in On Time schreiben
- Wieder von vorne beginnen
Das gleiche Programm, nur mit einem zweiten Servo. Der linke Servo ist bei mir der 180 Grad Servo, der rechte Servo ist bei mir der 360 Grad Servo.