Pulsweitenmodulation

Veröffentlicht von

Inhalte

  • Pulsweitenmodulation zur Simulation eines analogen Signalen mit einem digitalen Signal

Einführung

In der Digitaltechnik kommen üblicherweise nur Signale zum Einsatz, die zwei Spannungslevel darstellen können (HIGH und LOW). Oft werden aber Signale benötigt, die auch Werte dazwischen darstellen können. Die Pulsweitenmodulation (PWM) ist eine Möglichkeit solche Werte zu simulieren, indem man sehr schnell zwischen HIGH und LOW mit einer gewissen Dauer umschaltet. Im Durchschnitt ergibt die Einschaltdauer einen Wert, der sich zwischen HIGH oder LOW befindet.

Prinzip der Pulsweitenmodulation

Betrachten wir zunächst die folgenden Signale:

pwm_100_percent
Dieses Signal hat immer den Wert HIGH. Seiner durchschnittliche Energie beträgt 100%.
pwm_0_percent
Dieses Signal ist immer auf LOW. Seine durchschnittliche Energie beträgt 0%
pwm_50_percent
Dieses Signal wechselt zwischen HIGH und LOW, wobei die Dauer der Zustände gleich lange ist. Die durchschnittliche Energie im Signal ist 50%

Im letzten Bild wird durch das schnelle Umschalten zwischen HIGH und LOW die durchschnittliche Energie des Signals auf 50% reduziert. Durch eine Variation der Einschaltdauer können im Durschnitt auch viele andere Werte zwischen HIGH und LOW erreicht werden.

pwm_25_percent
Das Signal wird nur in 25% der Zeit auf HIGH gesetzt. Seine durchschnittliche Energie beträgt daher 25%
pwm_75_percent
Das Signal wird zu 75% der Zeit auf HIGH gesetzt. Seine durchschnittliche Energie beträgt daher 75%.

Der Wechsel zwischen HIGH und LOW geschieht sehr schnell (am Arduino im Bereich von mehreren hundert Hertz, d.h. mehrere hundert Male pro Sekunde). Die Dauer des eingeschalteten Signals wird in Prozent angegeben und Tastgrad (engl. duty cycle) genannt.

Wir ein solches Signal an eine LED geschickt, so schaltet diese ebenso schnell an oder aus. Das menschliche Auge ist für so schnelle Umschaltgeschwindigkeiten viel zu träge und nimmt daher nur die durchschnittlich abgegebene Energie wahr. Bei vielen Gleichstrommotoren ist führt die Anwendung der Pulsweitenmodulation zu einer niedrigeren oder höheren Drehzahl.

PWM am Arduino ( analogWrite )

Manche der digitalen Pins am Arduino erlauben die Ausgabe eines PWM-Signals. Diese Pins sind mit einer Tilde (~) gekennzeichnet. Über den Aufruf der Funktion analogWrite(PIN, WERT)  kann an einem PIN ein PWM-Signal mit einem bestimmten duty cycle erzeugt werden. Der WERT muss zwischen 0 (0% duty cycle) und 255 (100% duty cycle) liegen. Ein duty cycle von 50% verlangt also den Wert 127.

Zusammenfassung

PWM-Signale simulieren analoge Spannungen, indem sie ein digitales Signal sehr schnell ein- und ausschalten. Die eingeschaltete Zeit im Verhältnis zur Gesamtzeit eines solchen Zyklusses wird duty cycle genannt und in Prozent angegeben.

Am Arduino lässt sich auf bestimmten Pins, die mit einer Tilde ~ gekennzeichnet sind ein PWM-Signal erzeugen. Der Befehl analogWrite  nimmt Werte im Bereich 0 bis 255 an, um den duty cycle des Signals zu setzen.

Weiterführende Links

 

 

 

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.