Was ist PWM? – Ein kleines Tutorial

DiagrammPWM steht für (engl.) Pulse Width Modulation und heißt eigentlich übersetzt Pulsbreitenmodulation, wird aber auch oft als Pulsweitenmodulation genannt.

In der Robotik stößt man schnell auf diesen Begriff. Spätestens wenn man die Drehgeschwindigkeit eines Motors regeln will oder einen Servo ansteuern möchte.

Nehmen wir mal als Beispiel einen Motor, den wir mit unterschiedlichen Geschwindigkeiten drehen lassen wollen.

Wenn wir das an eine 9 Volt Batterie für zwei Sekunden anschließen (Puls), dreht es mit seiner vollen Geschwindigkeit, die dieser Motor bei bei 9 Volt erreichen kann. Wenn wir das wieder abklemmen (Pause), bleibt der Motor stehen. Wenn wir genauer hinschauen, fällt uns auf, dass der Motor beim Anklemmen nicht sofort die höchste Geschwindigkeit erreicht, sondern fängt an, langsam zu drehen, dann wird er immer schneller und schneller und irgendwann erreicht er seine höchste Geschwindigkeit. Wenn wir den Motor wieder abklemmen, bleibt dieser nicht sofort stehen, sondern dreht immer langsamer und langsamer und irgendwann bleibt er stehen. Das An- und Abklemmen machen wir aber ziemlich langsam und können deswegen diesen Effekt sehen. Wenn wir das z.B. 500 Mal pro Sekunde machen könnten (1ms AN und 1ms AUS), fällt uns dieses Verhalten, mit schneller und langsamer werden, gar nicht auf. Der Motor würde dann permanent mit halber Geschwindigkeit drehen. Würde man den Motor für 1,5ms einschalten und für 0,5ms ausschalten, würde der Motor mit 3/4 seiner maximalen Geschwindigkeit drehen.

Die Dauer, wie lange so ein Ein-Aus-Durchlauf dauert, bezeichnet man als Periode. Die Anzahl der Perioden in einer Sekunde, ist dann die Frequenz. D.h. bei 500 Perioden in der Sekunde, beträgt die Frequenz 500Hz (Hertz).

Die Periodendauer errechnet man so: 1 Sekunde / Frequenz = Periodendauer    also 1/500=0,002

D.h. bei einer Frequenz von 500Hz hätten wir eine Periodendauer von 0,002 Sekunden bzw. 2 Millisekunden.

Die Periodendauer ist jetzt bei uns konstant und beträgt 2ms. Mal angenommen, die Pulsdauer ist 1ms lang und dementsprechend würde Pausenzeit  auch 1ms dauern. Damit kann man jetzt den Tastgrad ausrechnen. Tastgrad ist ein weiterer wichtiger Wert bei PWM und wird in Prozent angegeben. Dieser wird aus Periodendauer und der Pulsdauer errechnet.

Pulsdauer / Periodendauer = Tastgrad    D.h. bei einer Periodendauer von 2ms und Pulsdauer von 1ms, hätten wir einen Tastgrad von 0,5 bzw. 50%

Wenn wir die Pulsdauer auf 1,5ms verlängern, beträgt die Dauer der Pause, nur noch 0,5ms. Also ist es 75% der Periode AN und 25% der Periode AUS. Also Tastgrad = 75%

Wie sieht es jetzt in der Praxis aus? Mit dem Tastgrad können wir jetzt ganz einfach den Mittelwert der Spannung ausrechnen.

Mal angenommen, die Versorgungsspannung beträgt 9V und wir pulsieren damit unseren Motor mit PWM bei einer Frequenz von 500Hz und einem Tastgrad von 75%.

75% von 9Volt = 6,75V    (Siehe Grafik oben)

Bei 50% Tastgrad wäre die Spannung dann 4,5 Volt hoch.

Bei 25% dann nur noch 2,25 Volt.

Und was ist mit 100%? 😀 Dann hätten wir einfach eine Gleichspannung von 9V. Wie mein Ausbilder einst sagte (ungefähr): “Die Gleichspannung ist eine pulsierende Spannung, mit einem Tastgrad von 100%!” 😀

 

Um auch mal ein kleines Beispiel, für Arduino zu machen, kann man das Blink Programm nehmen und eine LED an Pin 11 (PWM Pin) anschließen.

Dann nimmt man das Beispielprogramm “Blink” aus den Beispielen der Arduino IDE. Statt Pin 13, tippt man Pin 11 ein. Die zwei interessanten Stellen, befinden sich im Hauptprogramm void loop(). Nach LED AUS und EIN, sind zwei delays mit je 1000ms angegeben. Dabei ist die LED für eine Sekunde AN und für eine Sekunde AUS. Jetzt löschen wir bei beiden delays die Nullen, sodass die delays nur noch 1ms betragen. Nach der Übertragung des Programmcodes zum Arduino, Blinkt die LED nicht mehr, sondern leuchtet nur noch halb so hell.   Naja, eigentlich blinkt die LED schon, nur das passiert 500 mal in der Sekunde und das können wir mit unserem menschlichen Auge nicht sehen.

Es gibt aber einen anderen Befehl, damit man ein PWM Signal mit nur einer Zeile erzeugen kann.

 

Der Wert 127 (ca. Hälfte von 255) stellt ein Tastgrad von ca. 50% ein und mit dem Wert 255 haben wir einen Tastgrad von 100% (also Gleichspannung).

Mit dem Wert 191 würde man knapp 75% Tastgrad einstellen.

Bei 5 Volt Versorgungsspannung, sieht der Mittelwert der PWM Spannung an der LED, wie folgt aus

75% = 3,75 Volt

50% = 2,5 Volt

25% = 1,25 Volt

 

Bei dem Beispielprogramm “Fade”, macht das Programm nichts anderes, als von 0 bis 255 hoch und wieder bis 0 runter zu zählen. Das bewirkt, dass die LED langsam hell wird und dann langsam wieder dunkler 😉

 

Ich hoffe, ich konnte das mehr oder weniger verständlich beschreiben. Falls es Korrekturen gibt, immer her damit.

Für noch tiefere Einblicke in das Thema, siehe:

http://de.wikipedia.org/wiki/Pulsweitenmodulation

http://de.wikipedia.org/wiki/Tastgrad

11 Replies to “Was ist PWM? – Ein kleines Tutorial”

  1. Hallo

    Gute Erklärung, Danke.
    Mich würde es nur noch interessieren wie sich das ganze verhält wenn mittels eines PWM-Signals eine grössere Last gesteuert wird, wie z.B. ein 230V Motor. Werden da auch die 230V ein und aus geschaltet oder wird da mittels des PWM-Signals ein Phasenanschnitt oder ein FU angesteuert?
    Besten Dank.

  2. Gut gemacht!
    Auch für Leute ohne elektrotechnischen Background
    gut zu verstehen.
    …….und so funktioniert die gesamte Signalsteuerung auf den can Bussen der Steuergeräte hin zum Kombi-Gerät?

  3. Sehr gut erklärt. Danke!
    Kleines Fehlerteufelchen am Ende des Artikels:
    Müsste der Mittelwert der Spannung bei 50% nicht 2,5V sein?

  4. Nach solch einer Erläuterung habe ich im Netz schon lange gesucht.
    Nun komme ich mit meinem Projekt endlicch weiter.

    Tolle Seite ! 5 Sterne
    Ralph

Schreibe einen Kommentar zu Max Mustermann Antworten abbrechen

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

*

Bitte löse folgende Rechenaufgabe * Time limit is exhausted. Please reload CAPTCHA.