Bemerkung

Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Vertiefen Sie sich mit anderen Enthusiasten in die Welt von Raspberry Pi, Arduino und ESP32.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Probleme nach dem Verkauf und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.

  • Lernen & Teilen: Austausch von Tipps und Anleitungen zur Verbesserung Ihrer Fähigkeiten.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Giveaways: Nehmen Sie an Giveaways und Feiertagsaktionen teil.

👉 Sind Sie bereit, mit uns zu erkunden und zu kreieren? Klicken Sie auf [hier] und treten Sie heute bei!

2.3 LED-Helligkeit mit PWM steuern

In dieser Lektion lernen wir, wie man die Helligkeit einer LED mithilfe der Pulsweitenmodulation (PWM) auf dem Raspberry Pi Pico 2 steuert. PWM ist eine grundlegende Technik in der Elektronik, die es ermöglicht, Geräte wie LEDs und Motoren mit variablen Intensitäten zu betreiben.

Was ist PWM?

Pulsweitenmodulation (PWM) ist eine Methode zur Steuerung der Leistung, die an ein elektronisches Gerät geliefert wird. Dabei wird die Spannung in schnellen Intervallen ein- und ausgeschaltet. Die „Breite“ des Impulses (die Dauer, in der er eingeschaltet ist) bestimmt, wie viel Leistung das Gerät erhält.

img_pwm_duty_cycle

  • Duty Cycle (Tastverhältnis): Der prozentuale Anteil eines Zyklus, in dem das Signal aktiv ist. Ein 100 %-Duty Cycle bedeutet, dass das Signal immer an ist, ein 0 %-Duty Cycle, dass es immer aus ist.

  • Frequenz: Gibt an, wie oft das Signal pro Sekunde zwischen Ein und Aus wechselt.

Durch Anpassen des Duty Cycles können wir analoge Signale mit digitalen Mitteln simulieren. Zum Beispiel: Wenn eine LED sehr schnell ein- und ausgeschaltet wird, nimmt unser Auge je nach Ein-Zeit der LED eine unterschiedliche Helligkeit wahr.

Warum PWM verwenden?

  • LED-Helligkeitssteuerung: Stufenlose Anpassung der LED-Helligkeit.

  • Motorsteuerung: Kontrolle der Geschwindigkeit von Gleichstrommotoren.

  • Effizienz: PWM ist energieeffizienter als variable Widerstände, da weniger Energie in Wärme umgewandelt wird.

PWM auf dem Raspberry Pi Pico 2

Der Raspberry Pi Pico 2 verfügt über PWM-Funktionalität auf allen GPIO-Pins, jedoch gibt es insgesamt 8 PWM-Slices (PWM0 bis PWM7), wobei jeder Slice über zwei Kanäle (A und B) verfügt. Dies ergibt 16 unabhängige PWM-Ausgänge.

pin_pwm

Bemerkung

Pins, die denselben PWM-Slice verwenden (z. B. GP0 und GP16), können unterschiedliche Duty Cycles haben, aber nicht unterschiedliche Frequenzen.

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Bauteile.

Ein komplettes Kit ist besonders praktisch, hier ist der Link:

Name

ENTHALTENE TEILE IM KIT

LINK

Newton Lab Kit

450+

Newton Lab Kit

Alternativ können die Komponenten auch einzeln über die untenstehenden Links erworben werden.

SN

KOMPONENTE

MENGE

LINK

1

Raspberry Pi Pico 2

1

KAUFEN

2

Micro-USB-Kabel

1

3

Steckbrett

1

KAUFEN

4

Jumperkabel

Mehrere

KAUFEN

5

Widerstand

1 (220Ω)

KAUFEN

6

LED

1

KAUFEN

Schaltplan

sch_led

Verdrahtungsdiagramm

wiring_led

Code schreiben

Bemerkung

  • Sie können die Datei 2.3_fading_led.ino aus dem Verzeichnis newton-lab-kit/arduino/2.3_fading_led öffnen.

  • Oder diesen Code in die Arduino IDE kopieren.

  • Wählen Sie das Raspberry Pi Pico 2 Board und den richtigen Port aus und klicken Sie auf „Hochladen“.

const int ledPin = 15; // GPIO-Pin für die LED

void setup() {
  pinMode(ledPin, OUTPUT); // GPIO-Pin als Ausgang festlegen
}

void loop() {
  // Helligkeit erhöhen
  for (int value = 0; value <= 255; value += 5) {
    analogWrite(ledPin, value); // Helligkeit setzen
    delay(30);                  // 30 Millisekunden warten
  }
  // Helligkeit verringern
  for (int value = 255; value >= 0; value -= 5) {
    analogWrite(ledPin, value);
    delay(30);
  }
}

Nach dem Hochladen des Codes sollte die LED langsam heller werden und dann wieder dunkler werden, wodurch ein sanfter Pulsierungseffekt entsteht.

Verständnis des Codes

  1. LED-Pin definieren:

    Erstellt eine Konstante ledPin mit dem Wert 15, welcher dem GPIO-Pin 15 entspricht.

    const int ledPin = 15;
    
  2. Pin initialisieren:

    Die setup()-Funktion wird einmal beim Start des Programms ausgeführt. Der ledPin wird als Ausgang definiert.

    void setup() {
      pinMode(ledPin, OUTPUT);
    }
    
  3. Loop-Funktion:

    Die loop()-Funktion wird kontinuierlich wiederholt. Sie enthält zwei for-Schleifen:

    • Helligkeit erhöhen: Startet mit value = 0 und erhöht sich in 5er-Schritten bis 255.

    • Helligkeit verringern: Startet mit value = 255 und verringert sich wieder in 5er-Schritten bis 0.

    • Die Funktion analogWrite() schreibt ein PWM-Signal an den angegebenen Pin. Der Wert reicht von 0 (aus) bis 255 (maximale Helligkeit).

    • delay(30); sorgt für eine sichtbare Veränderung der Helligkeit.

    void loop() {
      // Increase brightness
      for (int value = 0; value <= 255; value += 5) {
        analogWrite(ledPin, value);
        delay(30);
      }
      // Decrease brightness
      for (int value = 255; value >= 0; value -= 5) {
        analogWrite(ledPin, value);
        delay(30);
      }
    }
    

Zusätzliche Tipps

  • Experimentieren Sie: Ändern Sie die Inkrementwerte oder die Verzögerungszeit, um die Geschwindigkeit der Helligkeitsänderung zu steuern.

  • PWM-Einschränkungen verstehen: Obwohl alle GPIO-Pins des Pico PWM unterstützen, können Pins desselben PWM-Slices nur unterschiedliche Duty Cycles, aber nicht unterschiedliche Frequenzen haben.

  • Sicherheit beachten: Verwenden Sie immer einen Vorwiderstand mit der LED, um Schäden durch zu hohen Strom zu vermeiden.

Fazit

Sie haben erfolgreich einen sanften LED-Dimmeffekt mithilfe von PWM auf dem Raspberry Pi Pico 2 erstellt. Dieses Projekt demonstriert, wie PWM zur Simulation analoger Signale mit digitalen Mitteln genutzt wird – eine grundlegende Technik in der Mikrocontroller-Programmierung.