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
- 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.
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:
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
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
| Bezeichner | Wert/Typ | Hinweis |
|---|---|---|
| LED1–LED120 | WS2812B-Streifen, 60 LEDs/m, 2 m | 5 V; Pfeile auf dem Streifen zeigen die Datenrichtung |
| U2 | 74AHCT125 (oder 74HCT125) | an 5 V, 100 nF an Pin 14; unbenutzte Eingänge an GND |
| R1 | 330 Ω | direkt an DIN der ersten LED |
| C1 | 1000 µF, 10 V, Elko | Pluspol an +5 V, an der Einspeisung |
| Netzteil | 5 V, 4 A | Zuleitung 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.