Tips&Tricks 114: digitale LED-ICs
Es gibt eine Menge Selbstklebe-Streifen, auf denen viele 3-Farb-LEDs verbaut sind, meist in Dreier-Gruppen mit
gemeinsamem Controller-IC, deren Benutzung aber problematisch ist, weil die Ansteuerung nicht ganz einfach ist.
Oder: Sie kaufen sich ein Steuergerät dazu. Mit diesem kann man aber normalerweise nur die Helligkeit und die
Farbe aller LEDs gleichzeitig steuern, mehr nicht. Die dort verbauten LEDs sind normalerweise WS2812.
Diese sind auch einzeln für wenig Geld erhältlich.
Was haben sie für Vorteile?
Bisher war es so, daß ein Controller (z.B. Arduino oder PIC) für jede LED einen eigenen Ausgang brauchte,
was bei einer größeren Anzahl ganz schön ins Geld ging; ganz einfach, weil der Controller je Ausgang
nur eine LED ansteuern konnte und somit viele Ausgänge haben mußte. Er wurde dadurch groß und
"exotisch". Das haben wir im Bild rechts dargestellt. Dort braucht der Controller 10 Ausgänge, um
10 einfarbige LEDs anzusteuern.
Die hier beschriebenen LEDs übernehmen viele Aufgaben vom Controller:
- sie werden gemeinsam seriell angesteuert
- sie speichern ihren Zustand
- sie enthalten drei verschiedenfarbige LEDs
- jede dieser LEDs läßt sich einzeln dimmen.
In der Zeichnung ist ein Controller dargestellt, der über einen einzigen Ausgang vier WS2812 ansteuert; das
sind, im Vergleich zur obigen Parallel-Darstellung, insgesamt 12 LEDs. Im Prinzip ist die Anzahl der WS2812 nicht
begrenzt.
Das Innenleben:
Dies ist im Bild rechts natürlich nur prinzipiell dargestellt. Das IC hat (neben der Stromversorgung) nur noch
einen Eingang (in) und einen Ausgang (out). In der Elektronik befinden sich:
- ein Decoder
- ein Speicher
- drei PWM-Generatoren
- eine Schaltlogik.
Da das Steuersignal in jedem IC neu aufgearbeitet wird, können sie beliebig oft aneinandergereiht werden.
Die Ansteuerung:
Der Controller muß einen Bit-Datenstrom mit einem Takt von 800 kBit/sec bereitstellen. Die ersten
3×8 Bit sind für die 3 LEDs des ersten WS2812 vorgesehen, wobei dort aus jeweils 8 Bit die PWM (also die
Helligkeit) für eine LED berechnet wird. Diese Werte werden zwischengespeichert und erst nach einem RESET
ausgegeben.
Der in der Kette erste WD2812 empfängt den vollen Datenstrom und speichert die ersten 24 Bit. Alle folgenden
Bits werden digital aufbereitet und dann weitergegeben. Der zweite WD2812 empfängt also den Datenstrom erst ab
dem 25. Bit. Für seine interne Logik ist es aber das erste Bit usw. Daher kann er den Rest des Datenstroms mit
derselben Logik bearbeiten wie sein "Kollege" vor ihm.
Jedes Bit im Datenstrom hat einen High- und einen Low-Anteil, die natürlich unterschiedlich sind. So werden
auch bei Nullen immer High- und Low-Komponenten übertragen.
Bleibt der Datenstrom für mehr als 280 µs komplett aus, so wird dies als RESET angesehen und die
gespeicherten Daten an die LEDs ausgegeben. Da die Verzögerungszeit im IC 300 ns beträgt, erhält der
1000. in der Kette das RESET erst nach 300 µs, ein durchaus vertretbarer Wert. So ist sichergestellt, daß
kein Flackern oder Flimmern in der Darstellung auftreten kann.
Ein einfacher PIC kann als ansteuernder Controller nicht Verwendung finden; er ist dazu zu langsam. Aber mit einem
Arduino ist die Aufgabe gut zu schaffen. Wer sich das Programmieren nicht zutraut, der sei auf die
Bibliothek "MoBaLedLib"
verwiesen, in der fertige Programme für einfache Aufgaben zur Verfügung gestellt werden. Diese
können, da sie im Quelltext vorliegen, auch als Grundlage für eigene Kreationen verwendet werden.
Weshalb wir dies so ausführlich schreiben?
Das Datenblatt ist in recht schlechtem Englisch geschrieben und z.T. unverständlich. Wir haben, auch mit recht
guten Englisch-Kenntnissen, etliche Zeit gebraucht, um auf den hier dargestellten Wissensstand zu kommen.
Der Hersteller ist
world-semi.com.
Das
Datenblatt WS2812
können Sie auch bei uns einsehen.
Es gibt auch einen Bruder des WD2812, den WD2811. Der hat keine LEDs an Bord, dafür 3 frei beschaltbare
Ausgänge. Er wird in einem DIL-8-Gehäuse geliefert.
Nehmen Sie sich viel Zeit zum Lesen, auch in den Datenblättern.
Was uns dazu einfällt, und was bisher fast unmöglich schien: ein Schweißlicht, bei dem die
Schweißstelle nach dem Britzel-Ende noch orange bis rot nachleuchtet; oder eine Zimmer-Beleuchtung, bei der
abends der Fernseher flimmert. Es gibt noch sehr viele weitere Anwendungen. Und - alle Gimmicks werden, ohne
Mehrkosten, nur durch Software im Arduino gelöst.
Oder - bauen Sie sich an die WS2811 Transistoren, mit denen Sie Weichenspulen betätigen können, jeweils
3 Stück. Bauen Sie sich mit diesen Typen eine Kette auf, mit nur einer einzigen Steuer-Leitung. Und zu Ihrer
Motivation rechnen Sie sich einmal die Kosten gegenüber einer Digital-Decoder-Weichensteuerung aus: Wahnsinn,
was man alles sparen kann!
Als erste praktische Anwendung bauen wir gerade eine sehr umfangreiche Stadtteil-Beleuchtung mit etwa 20 Häusern
und entsprechend vielen RGB-LEDs (WS2812). Deren Helligkeit und Lichtfarbe wird, wo schon oben beschrieben, allein
durch die Software gesteuert. Noch ein Vorteil: Helligkeit und Lichtfarbe können nach dem Zusammenbau
eingestellt werden und bei Bedarf auch nachträglich geändert werden. Mit herkömmlichen LEDs geht
so etwas nicht.
Im Bild links sehen Sie einige WS2812 auf Mikro-Platinen im Anlieferzustand. Sie sind etwa 8 mm breit. Das zweite
Bild zeigt einen aus Papier gefertigten Lichtkasten, der hinter ein Fenster geklebt werden wird. Rot und blau sind
die Leitungen der Stromversorgung, und weiß-gelb ist die Datenleitung, auf der die Informationen
weitergereicht werden.
Im letzten Bild ist der Lichtkasten von innen dargestellt. Die LED leuchtet "von der Decke" in den Raum.
Zu den Kosten:
100 Bausteine kosten z.Zt. bei ebay 12 Euro, Porto schon eingeschlossen. Die Teile kommen aus China, daher ist mit
längeren Lieferzeiten zu rechnen. Wahrscheinlich ist Zoll (19%) zu zahlen.
Für weitere Fragen stehen gern zur Verfügung:
- der MEC; Besichtigung und Fachsimpelei z.B. an unseren "Club-Abenden"
- die Autoren: Thorben Herting und Hans Peter Kastner
erstellt am: 30.10.2022
Copyright © 2022 by Modelleisenbahnclub Castrop-Rauxel 1987 e.V.