<style>[reveal]{opacity:1 !important;transform:none !important}</style>

Adressierbare LED-Streifen (WS2812) anschließen

WS2812B-Streifen an ESP32 und Arduino: Netzteil und Stromgrenze berechnen, Datenpegel mit 74AHCT125 anheben, Serienwiderstand und Pufferelko richtig setzen.

7 Min. LesezeitWS2812B anschließenNeoPixelLED-Streifen ESP32adressierbare LEDs

In jedem Gehäuse eines WS2812B stecken drei LEDs – rot, grün und blau – und ein kleiner Steuerchip. Hintereinander auf einem Streifen bilden sie eine Kette, in der du jede LED einzeln in Farbe und Helligkeit einstellst, mit einer einzigen Datenleitung. Damit baust du Ambilight, Treppenbeleuchtung, Anzeigen oder Weihnachtsdeko. Bekannt sind sie auch unter dem Namen NeoPixel.

Die Datenleitung ist einfach angeschlossen. Die Tücken liegen woanders: Ein Streifen mit 120 LEDs kann über 7 A ziehen, der Datenpegel eines ESP32 liegt unter der Spezifikation, und ohne Schutz stirbt die erste LED gern beim Einstecken. Hier baust du den Anschluss so, dass er zuverlässig läuft.

Schaltplan

WS2812B-Streifen am ESP32: IO16 (Pin 27) an 1A (Pin 2) eines 74AHCT125, 1Y (Pin 3) über R1 330 Ω an DIN (Pin 4) von LED1, DOUT (Pin 2) an DIN der nächsten LED bis LED120; VDD (Pin 1) aller LEDs an +5 V, VSS (Pin 3) an GND; C1 1000 µF an der Einspeisung des Netzteils mit 5 V und 4 A; 74AHCT125 an 5 V, 1OE (Pin 1) an GND
Der 74AHCT125 hebt das 3,3-V-Datensignal auf 5 V. Das Netzteil versorgt Streifen und Pegelwandler direkt.
  • LED1 bis LED120, WS2812B: zwei Meter Streifen mit 60 LEDs pro Meter. Jede LED hat vier Anschlüsse: VDD (1), DOUT (2), VSS (3) und DIN (4). Sie ist eine RGB-LED mit eingebautem Treiber.
  • U2, 74AHCT125: vierfacher Puffer mit TTL-kompatiblen Eingängen an 5 V. Er erkennt die 3,3 V des ESP32 sicher als High und gibt 5 V aus. Der Freigabeeingang 1OE ist aktiv low und liegt an Masse.
  • R1, 330 Ω: Serienwiderstand direkt vor DIN der ersten LED. Er dämpft Überschwinger auf der Leitung und begrenzt den Strom in den Eingang, solange der Streifen noch keine Versorgung hat.
  • C1, 1000 µF, 10 V: Elko an der Einspeisung. Er fängt den Einschaltstoß und schnelle Laständerungen ab.
  • Netzteil 5 V, 4 A: versorgt den Streifen und den Pegelwandler. Das ESP32-Board bekommt seine 5 V über den Pin VIN oder USB; alle Massen sind verbunden.

So funktioniert die Schaltung

Der WS2812B empfängt Daten mit 800 kbit/s über eine einzige Leitung, ohne Takt. Jedes Bit dauert 1,25 µs, und die Länge des High-Pulses entscheidet über seinen Wert: rund 0,4 µs bedeuten 0, rund 0,8 µs bedeuten 1. Jede LED nimmt sich die ersten 24 Bit (8 Bit pro Farbe in der Reihenfolge Grün, Rot, Blau) und reicht alles Weitere über DOUT frisch aufbereitet an die nächste weiter. Eine Pause von mehr als 50 µs (bei neueren Versionen 280 µs) schließt das Bild ab, und alle LEDs übernehmen gleichzeitig ihre neuen Werte.

Weil jede LED das Signal neu erzeugt, spielt die Länge des Streifens für die Daten keine Rolle. Nur die erste Verbindung vom Mikrocontroller zur ersten LED muss stimmen. Laut Datenblatt erkennt der WS2812B High erst ab 0,7 · UDD, an 5 V also ab 3,5 V. Ein ESP32 liefert 3,3 V. Oft geht das trotzdem gut, aber eben nicht sicher: Je nach Exemplar, Temperatur und Leitungslänge flackern einzelne Farben.

Datenbits 1 0 1 1 des WS2812B: Pulse von 0,8 und 0,4 µs Länge in 1,25-µs-Abständen; nach dem 74AHCT125 erreichen sie 5 V, direkt vom ESP32 nur 3,3 V und damit nicht die Schwelle von 3,5 V
Die Pulslänge trägt die Information. Mit 3,3 V bleibt das Signal unter der garantierten Schwelle von 3,5 V.

Der 74AHCT125 löst das: Seine Eingänge schalten wie TTL schon ab 2,0 V, sein Ausgang liefert volle 5 V. Er ist schnell genug für 800 kbit/s und kostet ein paar Cent. Mehr zu Pegeln unter Logikfamilien.

Dimensionierung

1. Strombedarf. Bei vollem Weiß zieht eine LED je nach Version 35 bis 60 mA. Rechne mit 60 mA, solange du die Version nicht kennst:

Imax = 120 · 60 mA = 7,2 A

Das tritt nur bei voller Helligkeit in Weiß auf. Bunte Animationen brauchen typisch ein Drittel davon. Statt eines 8-A-Netzteils begrenzt du die Leistung in der Software auf 3,5 A und nimmst ein 5-V-Netzteil mit 4 A. Die Bibliothek FastLED dimmt dann automatisch, wenn ein Bild mehr verlangen würde.

2. Spannungsfall. Die Zuleitung vom Netzteil, zweimal 1 m mit 0,75 mm² Kupfer, hat

R = 2 · 1 m · 0,0178 Ω mm²/m0,75 mm² ≈ 0,047 Ω

Bei 3,5 A fallen daran 0,17 V ab. Dazu kommt der Spannungsfall auf den dünnen Kupferbahnen des Streifens selbst. Bei 2 m und mehr speist du deshalb an beiden Enden ein, bei längeren Streifen alle 1 bis 2 m. Nachrechnen kannst du das mit dem Rechner Spannungsfall auf Leitungen; die Grundlagen stehen unter Leitungen dimensionieren.

3. Serienwiderstand. Bekommt der Streifen noch keine Versorgung, während das Datensignal schon anliegt, fließt Strom über die Schutzdiode des DIN-Eingangs in die LED. R1 begrenzt ihn auf (5 V − 0,6 V) / 330 Ω ≈ 13 mA. Üblich sind 300 bis 500 Ω, direkt an der ersten LED.

4. Pufferelko. Springt die Helligkeit von Schwarz auf Weiß, steigt der Strom in Mikrosekunden um mehrere Ampere. Ein Netzteil regelt das nicht so schnell nach. C1 liefert die Ladung für den Übergang; mit 1000 µF sinkt die Spannung bei 3 A für 100 µs nur um 3 A · 100 µs / 1000 µF = 0,3 V.

5. Bildrate. Ein Bild für 120 LEDs dauert 120 · 24 · 1,25 µs = 3,6 ms, mit Pause rund 3,9 ms. Mehr als 250 Bilder pro Sekunde gehen nicht – weit mehr, als das Auge braucht.

Code

#include <FastLED.h>

const int ANZAHL = 120;
const int DATEN  = 16;              // IO16 → 74AHCT125 → DIN
CRGB leds[ANZAHL];

void setup() {
  FastLED.addLeds<WS2812B, DATEN, GRB>(leds, ANZAHL);
  FastLED.setMaxPowerInVoltsAndMilliamps(5, 3500);   // nie mehr als 3,5 A
}

void loop() {
  static uint8_t start = 0;
  fill_rainbow(leds, ANZAHL, start++, 3);   // wandernder Regenbogen
  FastLED.show();
  delay(20);
}

Jede LED belegt drei Byte Arbeitsspeicher. Beim ESP32 spielt das keine Rolle, beim Arduino Uno mit 2 KB sind 120 LEDs (360 Byte) gut machbar, 500 LEDs nicht mehr.

Bauteilliste

BezeichnerWert/TypHinweis
LED1–LED120WS2812B-Streifen, 60 LEDs/m, 2 m5 V; Pfeile auf dem Streifen zeigen die Datenrichtung
U274AHCT125 (oder 74HCT125)an 5 V, 100 nF an Pin 14; unbenutzte Eingänge an GND
R1330 Ωdirekt an DIN der ersten LED
C11000 µF, 10 V, ElkoPluspol an +5 V, an der Einspeisung
Netzteil5 V, 4 AZuleitung 0,75 mm², Sicherung 5 A

Varianten

Arduino Uno. Er arbeitet mit 5 V und braucht keinen Pegelwandler; R1 und C1 bleiben. Die Bibliothek sperrt während der Übertragung die Interrupts, millis() geht bei vielen LEDs etwas nach.

Ohne Pegelwandler. Behelfslösungen sind eine erste LED, die über eine Diode mit etwa 4,3 V versorgt wird und deshalb 3,3 V als High erkennt, oder ein Streifen an 4,5 V statt 5 V. Beides ist weniger sicher als der 74AHCT125. Ein bidirektionaler Pegelwandler mit MOSFET ist für 800 kbit/s mit seinen Pull-ups meist zu langsam.

Lange Zuleitung zur ersten LED. Über einige Meter nimmst du ein verdrilltes Paar aus Daten und Masse, oder du überträgst differenziell mit RS-485-Treibern und setzt den Pegelwandler an das Streifenende.

Andere Typen. SK6812 sind kompatibel und gibt es mit zusätzlicher weißer LED (RGBW). APA102 und SK9822 haben eine eigene Taktleitung, sind dadurch unempfindlich gegen Zeitfehler und schneller. Für einfarbige 12-V-Streifen ohne einzelne Pixel reicht ein MOSFET zum Dimmen.

Typische Fehler

  • Erste LED flackert oder zeigt falsche Farben: Datenpegel zu niedrig. 74AHCT125 einsetzen, Masseverbindung prüfen.
  • Ganzer Streifen bleibt dunkel: Datenleitung am falschen Ende angeschlossen. Die Pfeile auf dem Streifen zeigen von DIN nach DOUT.
  • Am Ende wird Weiß gelblich oder rötlich: Spannungsfall auf dem Streifen. Zusätzlich am Ende einspeisen.
  • Erste LED nach dem Einstecken tot: Daten lagen ohne Versorgung an, oder die Plusleitung wurde vor der Masse verbunden. R1 einbauen, beim Stecken zuerst Masse.
  • ESP32 startet neu, wenn alle LEDs angehen: Board und Streifen hängen am selben schwachen Netzteil, oder der Streifen wird über das Board versorgt. Leistung begrenzen und den Strom am Board vorbeiführen.

Selbsttest

Wie viel Strom braucht ein Streifen mit 300 LEDs bei vollem Weiß, wenn du mit 60 mA pro LED rechnest?

300 · 60 mA = 18 A.

Warum genügt der 3,3-V-Pegel des ESP32 nicht sicher?

Der WS2812B erkennt High erst ab 0,7 · 5 V = 3,5 V.

Wie lange dauert die Übertragung für 60 LEDs?

60 · 24 · 1,25 µs = 1,8 ms, dazu die Pause von mindestens 50 µs.

Wozu dient der Widerstand vor der ersten LED?

Er dämpft Überschwinger und begrenzt den Strom in den Dateneingang, solange der Streifen keine Versorgung hat.

Warum speist du lange Streifen an mehreren Stellen ein?

Die dünnen Kupferbahnen haben Widerstand; ohne zusätzliche Einspeisung sinkt die Spannung zum Ende hin, und die Farben verschieben sich.