Raspberry Pi Pico: LED-Helligkeit mit PWM einstellen

Im Prinzip kennt ein GPIO nur zwei Zustände: „High“ und „Low“. Also „An“ und „Aus“ oder „1“ und „0“. Es handelt sich dabei um die binäre Logik. Werte dazwischen gibt es nicht. Demnach kann man eine LED an einem GPIO-Ausgang auch nur ein- und ausschalten. Die Helligkeit wird mit dem Vorwiderstand festgelegt.

Trotzdem gibt es einen Trick mit dem Du die Helligkeit einer LED doch steuern kannst. Und zwar macht man es sich zu nutze, dass das Leuchten einer LED eine gewisse Trägheit aufweist und für das menschliche Auge deshalb mit zeitlicher Verzögerung erfolgt. Wenn die LED sehr schnell ein- und ausgeschaltet wird, können wir den Schaltvorgang nicht direkt wahrnehmen. Desweiteren weist eine LED auch eine gewisse Trägheit auf, weshalb sie nicht schnell genug vom leuchtenden in den nichtleuchtenden Zustand kommt. Sie glimmt praktisch etwas nach. Statt eine schnellen Blinken sehen wir die durchschnittliche Leuchtdauer im Verhältnis zur Dauer des ausgeschalteten Zustands in Form einer unterschiedlichen Helligkeit.

Die Frage ist, wie realisiert man die Software-Steuerung? Das ist vergleichsweise einfach. Ein GPIO kann nicht einfach nur „High“ und „Low“, sondern zwischen diesen Zuständen hin- und herwechseln. Also ein Taktsignal ausgeben. Dieses Taktsignal wird als PWM-Signal realisiert, bei dem die Breite des Pulses über die Zeit eingestellt werden kann. Das heißt, es wird die Dauer des Leuchtens der LED eingestellt und somit die Helligkeit der Leuchtdiode gesteuert.

Im folgenden Aufbau wird der Mikrocontroller Raspberry Pi Pico verwendet. Zum Einstieg und erste Versuche empfehlen sich Erste Schritte mit dem Raspberry Pi Pico und Programmieren mit MicroPython.

Aufbau und Bauteile

Raspberry Pi Pico: LED-Helligkeit mit PWM einstellen

Den Aufbau haben wir für die Lichtsteuerung stark vereinfacht, in dem wir einfach die Onboard-LED auf dem Raspberry Pi Pico verwenden. Die reicht zum Testen vollkommen aus. Natürlich könntest Du eine normale LED, zum Beispiel mit der Farbe Weiß oder Rot ebenso verwenden. Dazu müsstest Du Dich um die entsprechende Beschaltung kümmern.

Programmcode

Im Programmcode wird der GPIO für die Leuchtdiode als PWM-Ausgang initialisiert und eine Frequenz von 1.000 Hertz (Hz) eingestellt. Anschließend wird innerhalb der Schleife das Duty-Cycle, das Verhältnis zwischen Impuls und Pause des Signals erhöht. Die Leuchtdiode leuchtet also immer heller, geht aus und wird wieder heller.

# Bibliotheken laden
from machine import Pin, PWM
from time import sleep

# Initialisierung Onboard-LED/PWM-Ausgang
led = PWM(Pin(25, Pin.OUT))

# PWM-Einstellung: Frequenz in Hertz (Hz)
led.freq(1000)

i = 0

# Wiederholung (Endlos-Schleife)
while True:
    led.duty_u16(i)
    sleep(0.1)
    i = i + 3000
    if i > 65535:
        i = 0

Verschiedene Parameter im Programm sorgen dafür, das die LED pulsiert. Allerdings nicht besonders schön. Es sieht sehr nach gewollt, aber nicht gekonnt aus. Der Programmcode lädt zum Experimentieren ein.

  1. Die Zeile „sleep(0.1)“ gibt an wie lange in Sekunden zwischen den Veränderungsschritte gewartet werden soll. Vergrößere und verkleinere den Wert von „0.1“. Zum Beispiel auf „0.5“ oder „0.05“.
  2. Softwareseitig kann das PWM-Signal einen Wert zwischen 0 und 65.535 annehmen. Bei 0 ist die LED aus. Bei 65.535 leuchtet die LED am hellsten. Allerdings leuchtet die LED schon wesentlich vor 65.535 sehr hell. Verkleinere den Wert von „65535“ so weit, wie es wirklich nötig ist.
  3. Von 0 (LED aus) nach 65.535 (LED leuchtet voll) wird in 3.000er Schritten die Helligkeit gesteigert. Vergrößere den Wert von „3000“ und verkleinere ihn, um den Effekt auf die Helligkeitsänderung herauszufinden.

Darf es etwas mehr sein?

Für was kann man die Helligkeitssteuerung von LEDs einsetzen? Beispielsweise, um Licht-Effekte zu programmieren.

Nur eine LED steuern ist doch langweilig. Machen wir es anspruchsvoller. Wie wäre es mit einer Ampelsteuerung oder ein Lauflicht?

Highlights: Elektronik mit dem Raspberry Pi Pico

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