Die Pulsweitenmodulation (PWM) ist ein sehr nützliche und vielfältig einsetzbare Methode. Ohne Pulsweitenmodulation wäre die technische Entwicklung in vielen Bereichen wie beispielsweise der Messtechnik, der Steuerungstechnik oder der Leistungselektronik wesentlich langsamer vorangeschritten. Ein bekanntes Einsatzgebiet der PWM sind beispielsweise Analog-Digital- oder Digital-Analog-Umsetzer (ADU oder DAU). In diesem Kurs werden wir die PWM als Leistungselektronik verwenden, um durch ein Anpassen der vom ESP32 ausgegebenen Spannungen die Helligkeiten der drei LEDs in der RGB-LED steuern zu können und dadurch die gewünschte Farbe einzustellen.

Im Wesentlichen funktioniert eine PWM so, dass eine Gleichspannung mit einer bestimmten Frequenz "zerhackt" wird. Als Resultat davon entsteht eine Mischgröße mit einer bestimmten Frequenz und einem Low- sowie einem High-Pegel. Der Low-Pegel liegt dabei typischerweise bei 0 V und der High-Pegel bei dem Potential der Gleichspannungsquelle. Im zeitlichen Mittel ergibt sich aus diesem Rechtecksignal mit Gleichanteil eine weitere Gleichspannung, welche, sollte die gewählte Modulationsfrequenz groß genug sein, nicht geglättet werden muss. Wie hoch diese Spannung ist, wird durch das Puls-Pause-Verhältnis, den sogenannten Modulationsgrad \( m \), bestimmt. Dieser wird über das Verhältnis der Zeitdauer des Pulses \(T_\mathrm{Ein}\) zu der Periodendauer \(T_\mathrm{P}\) wie folgt berechnet:

\(m=\frac{T_\mathrm{Ein}}{T_\mathrm{P}}\)

Gesteuert wird der Modulationsgrad üblicherweise durch das Verändern der Einschaltzeit \(T_\mathrm{Ein}\) mithilfe eines dementsprechend getakteten Schalttransistors.

Nun ist klar, welche Parameter für eine Pulsweitenmodulation wichtig sind.


Wie wird die PWM aber auf dem ESP32 eingestellt?

Grundsätzlich verfügt der ESP32 über 28 Pins, welche eine PWM ermöglichen. Werden davon die sechs Pins abgezogen, welche für den Flash-Speicher des SPI-Buses reserviert sind und nicht verwendet werden sollen, so sind noch 22 Pins übrig, welche ein PWM-Signal ausgeben können. Da der ESP32 aber nur über 16 interne Pulsweitenmodulationskanäle verfügt, sind maximal 16 verschiedene PWMs zu gleichen Zeit möglich. Natürlich kann aber das Signal einer PWM auf mehreren Pins gleichzeitig ausgegeben werden. Die maximal vom ESP32 ausgebbare pulsweitenmodulierte Spannung beträgt 3,3 V. 

Der ESP32 benötigt für eine Pulsweitenmodulation statt des Modulationsgrades eine Modulationsfrequenz und eine sogenannte Modulationsauflösung. Diese wird in Bit angegeben und auf den maximal ausgebbaren Spannungsbereich abgebildet. 8 Bit entsprechen beispielsweise einem Zahlenbereich von 0 bis 255. Der ESP32 würde dann die 255 auf die 3,3 V und die 0 auf die 0 V legen und alle Spannungswerte dazwischen je nach eingegebenem Zahlenwert zwischen 0 und 255 per PWM bestimmen.

Liegt der Modulationsgrad beispielsweise bei 0,5, so würde sich bei einer maximalen Spannung von 3,3 V die untere Grafik ergeben. Auf dem ESP32 würde dieses Ergebnis mit einer Auflösung von beispielsweise 8 Bit und einem Übergabewert an den PWM-Kanal von 128 erreicht werden. Der Modulationsgrad könnte also, äquivalent zu der Rechnung mit den Zeiten, ebenfalls über die Auflösung und den Eingabewert wie folgt definiert werden: 

\(m=\frac{n_\mathrm{Ein}}{n_\mathrm{Auflösung}}=\frac{128}{2^8}=0,5\)

Pulsweitenmodulation mit m=0,5

Abbildung: Pulsweitenmodulation mit \(m=0,5\)
Quelle: BBS2 Wolfsburg


Wie es der obenstehenden Grafik entnommen werden kann, ist der Pegel am Ausgang des ESP32 für 50 % einer Schaltperiode High und für 50 % einer Schaltperiode Low. Ist die Schaltfrequenz groß genug und die Periodendauer somit sehr klein, so ergibt sich im zeitlichen Mittel eine relativ konstante Spannung, welche über der LED abfällt und diese zum leuchten bringt. Bei einem Modulationsgrad von 0,5 beträgt diese Spannung dementsprechend \(U_\mathrm{Aus}=0,5\cdot 3,3\,\mathrm{V}=1,65\,\mathrm{V}\). Die orangefarbene Kurve der nachfolgenden Grafik, welche lediglich den Mittelwert der blauen Kurve darstellt, verdeutlicht dies nochmal.

Pulsweitenmodulation mit m=0,5 und Mittelwert

Abbildung: Pulsweitenmodulation mit \(m=0,5\) und Mittelwert
Quelle: BBS2 Wolfsburg


Bei einem Modulationsgrad von \(m=1\), also 100 %, würde das Signal wie im untenstehenden Bild aussehen. Bei dem ESP32 hätte der Zahlenwert bei einer Auflösung von 8 Bit dabei auf \(n=n_\mathrm{Auflösung}=2^8=256\) eingestellt werden müssen. Es ist deutlich zu sehen, dass die Ausgangsspannung nun die ganze Zeit über 3,3 V beträgt, was daran liegt, dass der Puls die gesamte Periodendauer in Anspruch nimmt. Die angesteuerte LED würde nun mit maximaler Helligkeit leuchten. Das Darstellen eines Mittelwertes wäre hier sinnlos.

Pulsweitenmodulation mit m=100

Abbildung: Pulsweitenmodulation mit \(m=1\)
Quelle: BBS2 Wolfsburg


Ähnliches gilt für das Signal einer Pulsweitenmodulation mit \(m=0\) aus dem folgenden Bild. Allerdings hat der Puls hier eine Dauer von 0 s und das Ausgangssignal liegt somit konstant auf 0 V. Der dem ESP32 übergebene Wert müsste, um das Ergebnis der unteren Grafik zu erzielen logischerweise bei 0 liegen. Die angesteuerte LED würde dann gar nicht leuchten.

Pulsweitenmodulation mit m=0

Abbildung: Pulsweitenmodulation mit \(m=0\)
Quelle: BBS2 Wolfsburg


Um die Rechenformel zur Berechnung der Ausgangsspannung nun endgültig herzuleiten, verwenden wir als Beispiel eine Pulsweitenmodulation mit dem Modulationsgrad \(m=0,25\), was für die Eingabe im ESP32 bei einer Auflösung von 8 Bit einen Wert von 64 bedeuten würde. Berechnet werden kann die Ausgangsspannung mithilfe der genannten Informationen über folgende Formel:

\(U_\mathrm{Aus}=U_\mathrm{Max}\cdot m=U_\mathrm{Max}\cdot\frac{n_\mathrm{Ein}}{n_\mathrm{Auflösung}}=\frac{T_\mathrm{Ein}}{T_\mathrm{P}}\)

Mit \(U_\mathrm{Max}=3,3\,\mathrm{V}\)

Das nachfolgende Diagramm beweist den berechneten Wert der Ausgangsspannung.

Pulsweitenmodulation mit m=0,25

Abbildung: Pulsweitenmodulation mit \(m=0,25\) und Mittelwert
Quelle: BBS2 Wolfsburg


Wie bereits erwähnt ist die Ausgangsspannung eigentlich keine reine Gleichspannung. Sie weist ein von der Frequenz der Pulsweitenmodulation abhängiges Schwanken auf, was auch Rippel genannt wird. Dieser Rippel soll durch die Wahl einer genügend hohen Modulationsfrequenz so weit minimiert werden, dass die Spannungsschwankungen und die damit verbundenen Schwankungen der Helligkeit der LEDs für das menschliche Auge unsichtbar werden. Der im späteren Verlauf des Kurses verwendete Frequenzwert von \(f_\mathrm{m}=5\,\mathrm{kHz}\) eignet sich dafür bestens.

Last modified: Tuesday, 23 January 2024, 2:39 PM