Raspberry Pi Pico: Grundlagen zur PWM

PWM steht für Pulsweitenmodulation bzw. Pulse Width Modulation. Modulationsverfahren werden eingesetzt, um Informationen und Daten so in elektrische Signale umzuwandeln, dass sie für die Übertragung geeignet sind.
In einem PWM-Signal kann man eine Information im Rechtecksignal mit unterschiedlicher Pulsbreite übertragen. Die Information befindet sich im Verhältnis der Impulsbreite bzw. Impulsweite zur Periodendauer des Signals.

Um ein PWM-Signal zu erzeugen benötigt man einen PWM-Signal-Generator. Ein Raspberry Pi Pico kann an jedem GPIO ein PWM-Signal erzeugen und damit Geräten steuern. Einmal programmiert, wiederholt der PWM-Generator das Signal so lange, bis es geändert oder abgeschaltet wird.

PWM-Signal

PWM - Pulsweitenmodulation

Das PWM-Signal besteht aus zwei Teilen. Einem High-Pegel und einem Low-Pegel, zwischen denen hin- und hergewechselt wird. Die Zeit, die ein High-Pegel und ein Low-Pegel brauchen, wird als Periodendauer bezeichnet. Die Länge, Dauer oder Breite des High-Pegels im Verhältnis zur Periodendauer wird als Tastgrad oder Duty Cycle bezeichnet.

Der PWM-Generator kennt bzw. braucht zwei Parameter, um ein PWM-Signal zu generieren:

  1. Die Frequenz, mit der das Signal wiederholt werden soll.
  2. Den Tastgrad, auch Duty Cycle genannt, die die Dauer in Zeit oder Prozent angibt, des High-Pegels innerhalb einer Periode (Wechsel zwischen High- und Low-Pegel) des PWM-Signals.

Beispiel: Eine Frequenz von 100 Hz und ein Duty Cycle von 50 Prozent bedeuten, dass während einer Periodendauer von 10 Millisekunden die ersten 5 Millisekunden ein High-Pegel ausgegeben wird und danach ein Low-Pegel für eine Dauer von 5 Millisekunden folgt.

Einschränkungen beim Raspberry Pi Pico

Das PWM-Signal des Raspberry Pi Pico ist dafür gedacht eine LED zu dimmen, eine einfaches Signal per RC-Glied zu generieren oder einen Servo-Motor zu steuern. Mehr aber auch nicht.

PWM-Kanäle am Raspberry Pi Pico

Der Mikrocontroller RP2040 auf dem Raspberry Pi Pico hat 8 unabhängige Kanäle, von denen jeder 2 Ausgänge hat, was insgesamt 16 PWM-Kanälen entspricht. Die Frequenz kann von 7 Hz bis 125 MHz eingestellt werden (laut Datenblatt).
Einige dieser PWM-Kanäle, die sich auf der linken Seite der Platine befinden, sind auf der rechten Seite dupliziert. Das bedeutet, dass nur jeweils einer der beiden Kanäle benutzt werden kann. Jeder Kanal ist mit einem Buchstaben und einer Zahl gekennzeichnet, z. B. PWM_A[0]. Wenn man hardwarenah programmiert muss man diese Einschränkungen und Bezeichnungen eher berücksichtigen. Wenn man in MicroPython programmiert muss man sich darum nicht kümmern. Die Einschränkungen und die dahinterliegende Komplexität der PWM-Erzeugung wird von MicroPython verborgen.

Wissen sollte man, dass jeder GPIO-Pin von 0 bis 29 auf dem Raspberry Pi Pico als PWM-Ausgang verwendet werden kann.

Programmcode für MicroPython

# Bibliotheken laden
from machine import Pin, PWM

# GPIO25 mit PWM initialisieren (Onboard-LED)
pwm = PWM(Pin(25))

# Frequenz in Hertz (Hz) einstellen
pwm.freq(8)

# Tastgrad (Duty Cycle) einstellen
pwm.duty_u16(1000)

Programmcode für CircuitPython

# Bibliotheken laden
import board, pwmio

# GPIO25 mit PWM initialisieren (Onboard-LED)
pwm = pwmio.PWMOut(board.GP25, variable_frequency=True)

# Frequenz in Hertz (Hz) einstellen (Default: 500 Hz)
pwm.frequency = 8

# Tastgrad (Duty Cycle) einstellen
pwm.duty_cycle = 1000

Experimente mit PWM

Mit einem PWM-Signal können eine Reihe von interessanten Experimenten durchgeführt werden, um die Konzepte der Regelungstechnik besser zu verstehen.

Anwendungen mit PWM

In der Regel wir man ein PWM-Signal vom Raspberry Pi Pico zur Steuerung oder Regelung verwenden. Typischen Anwendungen sind:

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren