Pulsbreitenmodulation

Befehle für Pulsbreitenmodulation (Analogwertausgabe)

Die acht Leistungsausgänge können Pulsbreitenmoduliert werden. Hierdurch ist es möglich, Lampen in ihrer Helligkeit und Motoren in ihrer Geschwindigkeit zu regulieren.

Bei der Pulsbreitenmodulation liegt die Ausgangsspannung nicht dauerhaft an, sondern wird vom Interface selbsttätig fortlaufend Ein- und Ausgeschaltet.

Hierbei gibt es zwei Angaben: Die Schaltfrequenz und das Tastverhältnis.

Pulsbreitenmodulation

Pulsbreitenmodulation

Die Schaltfrequenz (f) gibt an, wie schnell hintereinander der Ausgang Ein- und Ausgeschaltet wird. Die Schaltfrequenz soll so hoch liegen, dass z.B. bei Lampen kein Flackern und bei Motoren kein Ruckeln wahrgenommen wird.

Das Tastverhältnis gibt an, wie lange der Ausgang in einem Zyklus (f) eingeschaltet ist. Bei einem Tastverhältnis von 80% ist der Ausgang zu 80% eingeschaltet und zu 20% ausgeschaltet.

Normalerweise ist die Pulsbreitenmodulation ausgeschaltet. Service USB Plus und Service USB classic unterstützen zwei Möglichkeiten, die Ausgänge mit Pulsbreitenmodulation zu nutzen, die je nach Einsatzzweck Verwendung finden.

Pulsbreite pro Ausgang verschieden

Hierbei ist es möglich, jeden Ausgang mit einem unterschiedlichen Tastverhältnis zu betreiben. Dies findet Anwendung, wenn z.B. mehrere Lampen mit unterschiedlicher Helligkeit oder mehrere Motoren mit unterschiedlicher Drehgeschwindigkeit betrieben werden.
request = 0
wIndex = 9
wValue = Frequenz

Beim Einschalten wird die Schaltfrequenz angegeben. Diese wird normalerweise im Betrieb nicht mehr verändert, denn die Helligkeit/Geschwindigkeit wird über das Tastverhältnis geregelt.

Technisch bedingt ist die Anzahl der möglichen Tastverhältnisse von der Schaltfrequenz abhängig.

Schaltfrequenz mögliche Tastverhältnisse wValue
500 Hz 4 3
250 Hz 8 7
125 Hz 16 15
62,5 Hz 32 31
31,5 Hz 64 63
16,5 Hz 128 127
Pulsbreite aus (Normalzustand) 0 0

Die Werte für wValue zum Setzen der Schaltfrequenz

Normalerweise ist die Schaltfrequenz von 125Hz eine gute Wahl. Diese liegt ausreichend hoch, so dass kein Flackern oder Ruckeln wahrnehmbar ist und gestattet 16 verschiedene Regelstufen.
send SERVICE vendor request 0 wValue 15 wIndex 9 device id 0

Nachdem die Pulsbreitenmodulation eingeschaltet ist, kann der Wert der einzelnen Ausgänge mit set SERVICE output value gesetzt werden. Dieser Befehl akzeptiert werte zwischen 0 und 65535, also zwei Byte. Im Gegensatz zum Normalmodus ohne Pulsbreitenmodulation gibt hier das obere Byte die Nummer des Ausgangs zwischen 0 und 7 an. Das untere Byte das Tastverhältnis zwischen 0 und der maximal möglichen Stufe.

Um nun den Ausgang 7 zu 3/16 (ca. 20%) einzuschalten, muß das obere Byte eine 7 und das untere Byte eine 3 enthalten. Als Hexadezimalzahl also 0703.
Hexadezimal 0703 entspricht dezimal 1795. Mit folgendem Befehl wird daher der Ausgang 7 zu 3/16 eingeschaltet.
set SERVICE output value 1795

In Programmierumgebungen, die nur dezimale Zahlensysteme zulassen, kann nach folgender Formel umgerechnet werden:
Dezimalwert = (Ausgangsnummer * 256) + Tastverhältnis

Durch das Einschalten der Pulsbreitenmodulation wurde das Verhalten des Befehls zum Steuern der Digitalausgänge verändert. Es ist nicht mehr jedes Bit einem Ausgang zugeordnet. Da intern sämtliche Befehle zum Steuern der Digitalausgänge, wie z.B. set SERVICE output value bit oder set SERVICE output value by mask zusammenhängen, funktionieren diese nicht mehr.

Die Ausgänge lassen sich nun individuell Regeln und es muß jedesmal neben der Ausgangnummer auch der Wert für das Tastverhältnis angegeben werden. Dies hat zwei Nachteile:

  • Die Digitalausgänge lassen sich nur noch über den Befehl set SERVICE output value setzen.
  • Die Digitalausgänge können nicht alle gleichzeitig abgeschaltet werden

Um dies zu ermöglichen, gibt es eine zweite Betriebsart für die Pulsbreitenmodulation.

 

Pulsbreite für alle Ausgänge gleich

Damit sämtliche Befehle zum Steuern der Digitalausgänge wie im Normalzustand funktionieren und somit jedes Bit einem Ausgang zugeordnet ist, wird die Pulsbreite einmal für alle Ausgänge gesetzt. Diese Betriebsart findet in der Regel bei Motoren Verwendung, die grundsätzlich zu schnell laufen. So kann z.B. ein 9V Motor mit 12V betrieben oder der gesamte Bewegungsablauf eines Roboters verlangsamt werden.

Beim Einschalten wird das Tastverhältnis angegeben.
request = 0
wIndex = 10
wValue = Tastverhältnis

Die Schaltfrequenz liegt fest bei 125Hz. Das Tastverhältnis liegt im Bereich von 0 bis 15. Eine 0 schaltet den Pulsbreitenmodus aus. Bei einer 15 liegt das Tastverhältnis bei 15/16, also sind die Ausgänge zu ca. 93% eingeschaltet.

send SERVICE vendor request 0 wValue 8 wIndex 10 device id 0

Tipp: Ein Testprogramm für die verschiedenen Arten der Pulsbreitenmodulation befindet sich in dem Ordner Xcode.