Die Pulsbreitenmodulation (PWM) ist eine der wichtigsten Techniken, die in Raspberry Pi-Elektronik- und Automatisierungsprojekten verwendet werden. Es ermöglicht digitalen GPIO-Pins, eine analoge Steuerung zu simulieren, indem sie das Signaltiming statt der Ausgangsspannung anpassen.

Raspberry Pi PWM Überblick
Pulsbreite Modulation (PWM) ist eine Methode, die es Raspberry Pi GPIO-Pins ermöglicht, die Ausgangsleistung zu steuern, indem ein digitales Signal schnell AN und AUS geschaltet wird. Anstatt eine echte analoge Spannung zu erzeugen, ändert PWM die Zeitspanne, in der das Signal während jedes Zyklus HOCH bleibt. Dieser ON-Time-Prozentsatz wird als Duty Cycle bezeichnet.
Wie PWM auf Raspberry Pi funktioniert

Ein PWM-Signal schaltet wiederholt einen Raspberry Pi GPIO-Pin zwischen HOCH und NIEDRIG um. Das Signal bleibt digital, aber verbundene Geräte reagieren auf den durchschnittlichen Effekt des Schaltens.
Zwei Hauptparameter steuern den PWM-Betrieb:
| PWM-Parameter | Bedeutung |
|---|---|
| Frequenz | Wie oft wiederholt sich das Signal pro Sekunde |
| Duty Cycle | Wie lange bleibt das Signal während jedes Zyklus AN |
Bei Raspberry Pi GPIO-Pins beträgt HOCH etwa 3,3 V. Ein Duty Cycle von 50 % bedeutet, dass das Signal die Hälfte der Zeit HOCH und die Hälfte der Zeit NIEDRIG bleibt. Dies kann eine LED halbhell erscheinen lassen oder die durchschnittliche Leistung für einen Motor verringern.
Der Duty Cycle wird berechnet mit:
Duty Cycle = ON Time / Gesamtzeitraum × 100 %
| Duty Cycle | Signalverhalten | Praktische Wirkung |
|---|---|---|
| 0% | Immer AUS | Keine Ausgabe |
| 25% | AN für ein Viertel des Zyklus | Niedrige Leistung |
| 50% | AN für die Hälfte des Zyklus | Mittlere Leistung |
| 75% | AN für drei Viertel des Zyklus | Hohe Leistung |
| 100% | Immer AN | Volle Leistung |
Eine Erhöhung des Duty Cycle erhöht die durchschnittliche Leistung, während eine Verringerung des Duty Cycle sie verringert.
PWM-Frequenz ist die Anzahl der PWM-Zyklen pro Sekunde. Sie wird in Hertz (Hz) gemessen.
Die Häufigkeit wird berechnet mit:
f=1/T
| Gerät | Typische PWM-Frequenz |
|---|---|
| LEDs | Hunderte Hz oder mehr |
| Gleichstrommotoren | Hunderte Hz auf mehrere kHz |
| Servos | Etwa 50 Hz |
| Audioausgabe | Deutlich höhere Frequenzen |
Die falsche Frequenz kann zu flackernden LEDs, lauten Motoren, instabilen Servos oder schlechter Audioqualität führen.
Hardware-PWM vs. Software-PWM auf Raspberry Pi

| Thema | Hardware-PWM | Software PWM |
|---|---|---|
| Definition | Verwendet dedizierte PWM-Hardware im Raspberry Pi Prozessor | Verwendet softwaregesteuertes GPIO-Switching zur Erstellung von PWM-Impulsen |
| Zeitsteuerung | Gesteuert von Hardware | Gesteuert von Software und dem Linux-Betriebssystem |
| Zeitgenauigkeit | High | Moderat |
| Signalstabilität | Sehr stabil mit weniger Ruckeln | Kann Jitter, besonders unter hoher CPU-Last |
| CPU-Nutzung | Geringe CPU-Nutzung | Höhere CPU-Auslastung |
| GPIO-Flexibilität | Beschränkt auf ausgewählte GPIO-Pins | Kann an vielen GPIO-Pins arbeiten |
| Frequenzregelung | Genauer und stabiler | Hängt von der Systembelastung ab |
| Leistung unter Last | Erhält während der Hintergrundaktivität eine stabile Ausgabe besser | Kann instabil werden, wenn Linux-Hintergrundaufgaben das Pulstiming unterbrechen |
| Beste Anwendungen | Servos, Motorantriebe, Ventilatoren, Audioausgang, Präzisionssteuerungssysteme | LED-Dimmung, Anfängerprojekte, Steuerung mit niedriger Geschwindigkeit, Statusanzeigen |
| Hauptvorteil | Glatter und präziser PWM-Ausgang | Einfache Einrichtung und mehr GPIO-Optionen |
| Hauptbegrenzung | Nur auf ausgewählten Pins verfügbar | Weniger genaues Timing |
| Empfohlene Verwendung | Verwenden Sie, wenn die Zeitgenauigkeit zählt | Verwendung für einfache Projekte, bei denen kleine Zeitfehler akzeptabel sind |
Raspberry Pi PWM GPIO-Pins und Konfiguration

GPIO-Nummerierung und Hardware-PWM-Pins
Raspberry Pi verwendet mehrere GPIO-Nummerierungssysteme. Die meisten modernen Python-Bibliotheken verwenden BCM-Nummerierung, während physische Nummerierung die tatsächlichen Pin-Positionen im Header bezieht.
| Nummerierungstyp | Bedeutung |
|---|---|
| BCM-Nummerierung | Die Broadcom GPIO-Nummerierung wird intern verwendet |
| Physische PIN-Nummerierung | Tatsächliche Positionen der Header-Pins |
| WiringPi-Nummerierung | Älteres veraltetes Nummerierungssystem |
Überprüfe immer die GPIO-Nummern, bevor du die Hardware verkabelst.
Gängige Hardware-PWM-Pins
| BCM GPIO | Physischer Pin | PWM-Kanal | Gebrauchsgebrauch |
|---|---|---|---|
| GPIO12 | Pin 32 | PWM0 | LEDs, Motoren, Servos |
| GPIO13 | Pin 33 | PWM1 | LEDs, Motoren, Servos |
| GPIO18 | Pin 12 | PWM0 | Audio, Servos, Motorsteuerung |
| GPIO19 | Pin 35 | PWM1 | Audio, Servos, Motorsteuerung |
GPIO18 wird häufig verwendet, da es Hardware-PWM unterstützt und in PWM-Tutorials und Bibliotheken weit verbreitet ist.
PWM-Bibliotheken und Konfiguration
Gängige Raspberry Pi PWM-Bibliotheken
| Bibliothek | Hauptzweck | Anmerkungen |
|---|---|---|
| RPi.GPIO | Grundlegende GPIO- und PWM-Steuerung | Anfängerfreundlich |
| gpiozero | Vereinfachte Gerätesteuerung | High-Level-Schnittstelle |
| pigpio | Präzises Timing und fortschrittliche PWM | Unterstützt DMA-Timing |
| lgpio | Moderne GPIO-Steuerung | Zugang auf niedriger Ebene |
Typische PWM-Konfigurationsparameter
| Parameter | Beschreibung |
|---|---|
| Frequenz | PWM-Schaltgeschwindigkeit |
| Duty Cycle | Prozentsatz der ON-Zeit |
| GPIO-Pin | Ausgewählter PWM-Ausgangspin |
| PWM-Modus | Hardware-PWM oder Software-PWM |
PWM-Einschränkungen und Verkabelungssicherheit
Raspberry Pi Hardware-PWM hat mehrere Einschränkungen, die in der Robotik, Motorsteuerung, Audiosystemen und industriellen Anwendungen wichtig werden.
| Einschränkung | Erklärung |
|---|---|
| Begrenzte PWM-Kanäle | Es sind nur eine kleine Anzahl von Hardware-PWM-Ausgängen verfügbar |
| Gemeinsame Funktionen | Einige GPIO-Pins teilen sich Peripheriegeräte |
| Audio-Konflikte | PWM kann mit dem Onboard-Audio kollidieren |
| Pin-Beschränkungen | Nicht alle GPIO-Pins unterstützen Hardware-PWM |
| Frequenzteilung | Einige PWM-Kanäle teilen sich Taktquellen |
| DMA-Abhängigkeit | Fortgeschrittene PWM-Methoden können DMA-Ressourcen verwenden |
Viele PWM-Probleme werden durch Verdrahtungsfehler und nicht durch Softwareprobleme verursacht.
| Verdrahtungsfehler | Warum es wichtig ist |
|---|---|
| BCM und physische Nummerierung mischen | Kontrolliert den falschen GPIO-Pin |
| Motoren direkt an GPIO anschließen | Kann Raspberry Pi beschädigen |
| Fehlende gemeinsame Basis | Verursacht instabile Signale |
| Überschreitung der GPIO-Stromgrenzen | Kann die GPIO-Pins dauerhaft beschädigen |
| Fehlende Rückschlagdiode | Spannungsspitzen können Bauteile beschädigen |
| Falsche Spannungsverbindung | GPIO-Pins unterstützen nur 3,3V-Logik |
| Lose Überbrückendrähte | Verursacht instabile PWM-Signale |
Empfohlene Schutzkomponenten
| Komponente | Zweck |
|---|---|
| MOSFET | Schaltet sicher höhere Stromlasten um |
| H-Bridge Driver | Steuert Motorgeschwindigkeit und -richtung |
| Flyback-Diode | Schützt gegen induktive Spannungsspitzen |
| Externe Stromversorgung | Treibt Motoren sicher an |
| Optocoupler | Bietet elektrische Isolierung |
Raspberry Pi PWM-Anwendungen
LED-Dimmsysteme

PWM wird häufig in Raspberry Pi LED-Projekten eingesetzt, da es die Helligkeit steuern kann, ohne einen echten analogen Ausgangspin zu benötigen. Durch die Änderung des Arbeitszyklus können LEDs dunkler oder heller erscheinen. Dies ist nützlich für LED-Helligkeitskontrolle, RGB-Farbmischung, dekorative Beleuchtung, adaptive Helligkeitssysteme und Statusanzeigen. Eine ausreichend hohe PWM-Frequenz sollte verwendet werden, um sichtbares Flimmern zu verhindern.
Motordrehzahlregelung

PWM wird häufig verwendet, um die Drehzahl von Gleichstrommotoren in Roboterrädern, Pumpen, Ventilatoren, Fördersystemen und Automatisierungsaktuatoren zu steuern. Anstatt die Versorgungsspannung direkt zu ändern, passt PWM die durchschnittliche an den Motor gelieferte Leistung an. Höhere Betriebszeiten erhöhen in der Regel die Motordrehzahl, während niedrigere Betriebszeiten sie verringern. Externe Motortreiber sind erforderlich, da Raspberry Pi GPIO-Pins Motoren nicht sicher direkt antreiben können.
Servo-Positionssteuerung

Servomotoren verwenden wiederholende Steuerimpulse, bei denen die Pulsbreite die Position in Roboterarmen, Pan-Tilt-Kamerasystemen, RC-Fahrzeugen und Automatisierungssystemen bestimmt. Kleine Timing-Fehler können zu Zittern, Brummen oder instabiler Bewegung führen, daher ist stabiles PWM-Timing wichtig für eine zuverlässige Servosteuerung.
Erzeugung von Audiosignalen

Ein Raspberry Pi PWM kann einfache Töne, Alarme, Summer und grundlegende Audiosignale erzeugen, indem GPIO-Pins bei hörbaren Frequenzen geschaltet werden. PWM ist für einfache eingebettete Tonausgaben nützlich, kann aber einen dedizierten DAC für hochwertige Audioanwendungen nicht vollständig ersetzen.
Industrielle und IoT-Anwendungen

PWM ist in Raspberry Pi Industrie- und IoT-Systemen nützlich, da es verstellbare Hardware-Ausgänge steuern kann. Häufige Anwendungen sind intelligente Landwirtschaft, Umweltüberwachung, HLK-Systeme, industrielle Automatisierung und IoT-Steuerungssysteme. PWM steuert häufig Ventilatoren, Pumpen, Ventile, Beleuchtungssysteme und Aktuatoren.
Raspberry Pi vs Arduino für PWM

| Kategorie | Raspberry Pi | Arduino |
|---|---|---|
| Betriebssystem | Läuft mit Linux OS | Läuft mit einfacher Firmware |
| Rechenleistung | Höhere Rechenleistung für fortgeschrittene Anwendungen | Geringere Rechenleistung, aber optimiert für Steueraufgaben |
| PWM-Timing | Weniger vorhersehbar wegen Multitasking-Betriebssystems | Vorhersehbareres Echtzeit-PWM-Verhalten |
| Latenz | Moderate Latenz | Geringere Latenz bei schnellerer Hardware-Reaktion |
| Hardware-Steuerung | Indirekter Hardwarezugriff über Betriebssysteme und Bibliotheken | Direkter Hardware-Zugriff |
| PWM-Stabilität | Gut für allgemeine PWM | Besser für stabile Motorsteuerung und Steuerschleifen |
| Netzwerke | Ausgezeichnete Netzwerk- und IoT-Unterstützung | Begrenztes Netzwerken ohne zusätzliche Module |
| Multitasking | Kann Server, Skripte, Datenbanken und mehrere Anwendungen ausführen | Begrenzte Multitasking-Fähigkeit |
| Programmgestaltung | Einfache High-Level-Programmierung mit Python | Einfache Low-Level-Programmierung mit Arduino IDE |
| Anfängerelektronik | Gut für softwareorientierte Anfänger | Ausgezeichnet für Elektronik-Anfänger |
| Intelligente Automatisierung | Ausgezeichnet für vernetzte intelligente Automatisierungssysteme | Gut für eigenständige Automatisierung |
| Echtzeit-Motorsteuerung | Mäßige Leistung | Ausgezeichnete Leistung |
| Präzisionszeitmessung | Moderate Zeitgenauigkeit | Ausgezeichnete Zeitgenauigkeit |
| Beste Anwendungsfälle | IoT-Systeme, intelligente Automatisierung, Fernüberwachung, Linux-basierte Projekte | Motoren, Servos, Robotik, eingebettete Steuerung, Echtzeit-PWM |
| Hauptvorteil | Kombiniert PWM mit fortschrittlicher Software und Netzwerken | Bietet präzise und stabile Echtzeit-PWM-Steuerung |
Raspberry Pi PWM-Fehlerbehebung
| Problem | Mögliche Ursache | Empfohlene Lösung |
|---|---|---|
| Signal funktioniert nicht | Falsche GPIO-Nummerierung | Überprüfe, ob der Code BCM, physisches oder ein anderes Nummerierungssystem verwendet. |
| Signal funktioniert nicht | Falsche Verkabelung | Überprüfe die GPIO-Verbindungen, die Platzierung des Widerstands und die geteilte Masse erneut. |
| Signal funktioniert nicht | Nicht unterstützter Pin | Bestätigen Sie, ob der ausgewählte Pin Hardware- oder Software-PWM unterstützt. |
| Signal funktioniert nicht | Bibliotheks- oder Berechtigungsproblem | Überprüfe die Installation, Berechtigungen und Setup-Befehle der GPIO-Bibliothek. |
| Servo jitter | Schwache Stromversorgung | Benutze ein separates Netzteil für den Servo. |
| Servo jitter | Fehlende gemeinsame Basis | Verbinden Sie die Raspberry Pi-Masse mit der Servo-Stromversorgungsmasse. |
| Servo jitter | Software-PWM-Instabilität | Verwenden Sie Hardware-PWM oder eine stabilere Bibliothek wie Pigpio. |
| Servo jitter | Elektrisches Rauschen | Verkürze die Drähte und verbessere die Leistungsfilterung oder das Verdrahtungslayout. |
| LED-Flackern | Frequenz zu niedrig | Erhöhe die PWM-Frequenz, bis das Flimmern nicht mehr sichtbar ist. |
| LED-Flackern | Schlechte Verkabelung | Überprüfe die Widerstandswerte, lose Verbindungen und die Verkabelungsqualität. |
| Motorgeräusche oder Instabilität | Schwache Stromversorgung | Verwenden Sie ein externes Motornetzteil anstelle des Motors über GPIO. |
| Motorgeräusche oder Instabilität | Fehlende Schutzkomponenten | Verwenden Sie einen geeigneten Motortreiber und fügen Sie bei Bedarf Schutzkomponenten wie eine Rückschlagdiode hinzu. |
| Motorgeräusche oder Instabilität | Falsche Frequenz | Passen Sie die PWM-Frequenz an den Motor- und Treiberkreis an. |
| Pigpio-Fehler | Daemon läuft nicht ♪ Starte oder starte den Pigpio-Daemon neu. | |
| Pigpio-Fehler | GPIO-Konflikte | Überprüfe, ob ein anderes Programm bereits denselben GPIO-Pin verwendet. |
Häufig gestellte Fragen [FAQ]
Warum ist PWM auf Raspberry Pi wichtig, obwohl GPIO-Pins nur digital verfügbar sind?
PWM ermöglicht es Raspberry Pi GPIO-Pins, analoge Steuerung zu simulieren, indem Signale schnell zwischen HIGH- und LOW-Zuständen geschaltet werden. Anstatt die Spannung direkt zu ändern, ändert PWM den Duty-Cycle, um die durchschnittliche Leistungsabgabe zu steuern. Dadurch ist es möglich, LEDs zu dimmen, die Motorgeschwindigkeit anzupassen, die Position der Servos zu steuern und Lüfter mit standardmäßigen digitalen GPIO-Pins zu steuern.
Wann sollte Hardware-PWM anstelle von Software-PWM auf Raspberry Pi verwendet werden?
Hardware-PWM eignet sich besser für Anwendungen, die stabiles Timing und präzise Pulserzeugung erfordern, wie Servos, Motorantriebe, Audioausgaben und Robotik. Da dedizierte Hardware das Signal steuert, erzeugt sie weniger Jitter und verbraucht weniger CPU-Ressourcen. Software-PWM ist in der Regel für einfachere Aufgaben wie LED-Dimming oder Statusanzeigen ausreichend, bei denen kleine Zeitfehler weniger auffällig sind.
Warum kann eine falsche PWM-Frequenz in Raspberry Pi-Projekten Probleme verursachen?
Verschiedene Geräte reagieren am besten auf unterschiedliche PWM-Frequenzen. Wenn die Frequenz zu niedrig ist, können LEDs sichtbar flackern, Motoren können Geräusche oder grobe Bewegungen erzeugen, und Servos können instabil werden. Sehr hohe Frequenzen können auch die PWM-Auflösung verringern oder den Verarbeitungsbedarf erhöhen. Die Wahl der richtigen Frequenz verbessert Leistung, Flüssigkeit und Zuverlässigkeit.
Warum sollten Motoren und Servos niemals direkt mit Raspberry Pi GPIO-Pins verbunden werden?
Raspberry Pi GPIO-Pins unterstützen nur niedrigstromige 3,3V-Logiksignale und können Motoren oder Servos nicht sicher direkt mit Strom versorgen. Hochstromgeräte können GPIO-Pins beschädigen, Spannungsspitzen verursachen oder einen instabilen Betrieb verursachen. Externe Treiber, MOSFETs, H-Bridge-Schaltungen, Flyback-Dioden und separate Netzteile helfen, den Raspberry Pi zu schützen und die Zuverlässigkeit des PWM zu verbessern.
Warum ist Arduino oft besser für präzise PWM-Steuerung als der Raspberry Pi?
Arduino-Boards sind für Echtzeit-Hardwaresteuerung konzipiert und führen einfache Firmware ohne Multitasking-Betriebssystem aus. Dies ermöglicht eine vorhersehbarere PWM-Steuerung, eine geringere Latenz und eine bessere Stabilität für Motoren, Servos und Steuerschleifen. Raspberry Pi ist stärker in Netzwerken, Linux-Anwendungen, IoT-Systemen und smarter Automatisierung, aber Linux-Hintergrundaktivitäten können die Genauigkeit des PWM-Timings beeinflussen.