Table of contents
Eine digitale Lüge Was ist das Zyklen Arbeitszyklen Berechnung des prozentualen Arbeitszyklus Berechnung der Ausgangsspannung PWM auf Arduino-Boards Verbindungen Der CodeEine digitale Lüge
Bei der Arbeit mit digitalen Signalen gibt es nur zwei Zustände: ein oder aus. Beispielsweise können wir mit einem digitalen Signal eine LED einschalten oder ausschalten; es gibt keinen Zwischenzustand.
Was aber, wenn wir eine LED ein- und ausblenden oder die Drehzahl eines Motors ändern möchten? Die Antwort ist recht einfach: Wir benötigen ein analoges Signal. Allerdings ist die Realisierung eines Digital-Analog-Wandlers, insbesondere auf einem Mikrocontroller, recht komplex (und teuer), weshalb das analoge Signal simuliert werden muss. Hier kommt die Pulsweitenmodulation (PWM) ins Spiel!
Was ist das
Pulsweitenmodulation ist eine Technik, bei der der Zustand eines digitalen Signals schnell verändert wird, sodass er einem analogen Signal möglichst genau ähnelt.
Die Abbildung unten zeigt, wie ein gleichmäßiger und schneller Impuls eine nahezu unendliche Anzahl von Werten zwischen einem hohen und einem niedrigen Zustand erzeugen kann:
Für das Verständnis von PWM sind einige Begriffe wichtig, nämlich: Zyklen und Tastverhältnisse.
Zyklen
Ein Zyklus definiert eine Wiederholung eines Ein- und Aus-Zustands; ein Impuls kann innerhalb eines Zyklus nur einmal auftreten. Die Periodendauer ist die Zeit, die ein einzelner Zyklus dauert. Die Frequenz eines Zyklus lässt sich berechnen, indem man 1 durch die Periodendauer teilt.
Die Amplitude definiert die Differenz zwischen der maximalen und der minimalen Spannung, die durch das PWM-Signal erzeugt werden kann.
Arbeitszyklen
Die Pulsweitenmodulation basiert auf einem wichtigen Konzept, dem Tastverhältnis. Es gibt an, wie lange das Signal innerhalb einer Periode auf hohem Pegel ist. Diese Zeitspanne wird als „Einschaltzeit“ bezeichnet. Die Zeitspanne, in der das Signal auf niedrigem Pegel ist, wird als „Ausschaltzeit“ bezeichnet. Das Tastverhältnis wird in Prozent gemessen. Wenn ein digitales Signal die Hälfte der Zeit eingeschaltet und die andere Hälfte ausgeschaltet ist, beträgt sein Tastverhältnis 50 %. Die Ein- und Ausschaltphasen sind dann gleich lang, sodass das Signal einer idealen Rechteckwelle entspricht. Beträgt das Tastverhältnis beispielsweise 75 %, ist das digitale Signal länger auf hohem Pegel. Bei 25 % wäre die Einschaltphase deutlich kürzer. Eine grafische Darstellung dieser Situationen finden Sie in der folgenden Abbildung.
Zu beachten ist außerdem, dass eine Änderung der Frequenz, mit der die Zyklen stattfinden, den Tastgrad nicht verändert. Nehmen wir an, wir haben zwei Tastverhältnisse von 50 %, eines bei 10 kHz und das andere bei 1000 kHz. Das Signal bei der höheren Frequenz erscheint kleiner. Bei genauerer Betrachtung beider Tastverhältnisse zeigt sich jedoch, dass die Signalstärken in beiden Fällen gleich hoch und niedrig sind. Sie sind jeweils die Hälfte der Zeit hoch und die andere Hälfte niedrig. Obwohl die Tastverhältnisse also unterschiedlich aussehen, sind sie in Wirklichkeit gleich.
Berechnung des prozentualen Arbeitszyklus
Die Kenntnis des Tastverhältnisses ist bei der Arbeit mit PWM unerlässlich. Doch wie lässt es sich ermitteln? Zur Berechnung benötigen Sie zunächst die Periodendauer. In unserem Beispiel verwenden wir zur Vereinfachung eine Periodendauer von 10 ms. Als Nächstes benötigen Sie die Ein- oder Ausschaltzeit. In unserem Beispiel beträgt die Einschaltzeit 6 ms, die Ausschaltzeit somit 4 ms.
Um den Tastgrad in Prozent zu berechnen, teilt man einfach die Einschaltzeit durch die Periodendauer. In unserem Fall teilen wir 6 (unsere Einschaltzeit) durch 10 (unsere Periodendauer) und erhalten 0,6. Multiplizieren wir das Ergebnis mit 100, erhalten wir 60 %. Unser Tastgrad beträgt also 60 %, was bedeutet, dass unser Signal 60 % der Zeit auf hohem Pegel ist.
Sie können die Einschaltzeit auch mit 100 multiplizieren, bevor Sie sie durch die Periode teilen. Das spart Zeit bei der Berechnung und verbessert die Lesbarkeit. Die Formel lautet in unserem Fall dann: x = (6 * 100) / 10 = 60 %.
Berechnung der Ausgangsspannung
Die Ausgangsspannung des PWM-Signals hängt davon ab, wie lange das Signal im Zyklus auf High-Pegel liegt, also vom Tastverhältnis. Die Abbildung unten zeigt ein Signal, das zwischen 0 V und 5 V oszilliert. Das Tastverhältnis beträgt 60 %, d. h. das Signal ist 60 % der Zeit auf High-Pegel. Diese beiden Werte benötigen wir, um die Ausgangsspannung zu berechnen. Dazu multiplizieren wir einfach die maximale Spannung mit dem Tastverhältnis. Das ergibt 5 V * 60 % = 3 V.
PWM auf Arduino-Boards
Auf den meisten Arduino-Boards lässt sich PWM über die integrierte Funktion analogWrite nutzen. Diese Funktion benötigt einen Pin und den Tastgrad (im Bereich von 0 (0 %) bis 255 (100 %)) als Parameter zur Erzeugung des PWM-Signals.
Hinweis: Nicht alle Pins sind PWM-signalfähig. Überprüfen Sie die Pinbelegung Ihrer Platine vor dem Anschließen. Sie werden üblicherweise mit einer Tilde (~) oder einem Apostroph (') gekennzeichnet.
Verbindungen
Lasst uns ein kleines Arduino-Projekt bauen, um die Funktionsweise von PWM besser zu verstehen. Wir schließen eine LED an ein Arduino-Board an und dimmen ihre Helligkeit mithilfe der PWM-Technik. Für dieses Projekt benötigen Sie:
- Ein Arduino-Board (wir verwenden das Soldered NULA Mini)
- Eine LED
- Einen 220-Ohm-Widerstand
- Ein Steckbrett
- Jumper-Kabel
Der Code
#define LED_PIN 19 // Pin, an dem die LED angeschlossen ist
void setup()
{
// In der setup()-Funktion wird nichts benoetigt
}
void loop()
{
// Uebergang von 0% auf 100% Tastgrad
for (int i = 0; i < 255; i++)
{
analogWrite(LED_PIN, i);
delay(30); // Kleine Verzoegerung von 30 ms
}
// Rueckwaerts, damit es wieder dunkler wird
for (int i = 255; i > 0; i--)
{
analogWrite(LED_PIN, i);
delay(30); // Kleine Verzoegerung von 30 ms
}
}
Wenn alles gut geht, sollten Sie sehen können, wie sich die Helligkeit Ihrer LED mit einer konstanten Rate ändert!