Bunte LED-Streifen mit WS2812B und Arduino

Send to Kindle

Seit geraumer Zeit sind LED-Streifen mit Farbwechselfunktion auf dem Markt. Oft gibt es mit Lebensmitteldiscounter die Kombination aus 150 LEDs, Netzteil und Fernbedienung (mit 16 Farben oder so) für etwa 25 bis 30 Euro. Pro LED sind bis zu 0,2 Watt Leistung möglich – auf voller Leistung bringt solch ein Band demnach 25 bis 30 Watt. Realisiert sind diese Lichtbänder meist mit LED-Bausteinen WS2812, dabei handelt es sich um drei LEDs (rot, grün und blau) und einen kleinen Microcontroller auf einem einzigen Die. Der Clou ist, dass sich jede LED einzeln adressieren lässt und für jeden Farbkanal 8 Bit möglich sind – in der Summe ergibt das die 16 Millionen Farben, die wir vom Computer-Monitor kennen.

Testaufbau

Für einen Testaufbau rate ich zu einem Abschnitt von 10 bis 15 LEDs. Hier können Masse und VCC direkt mit den passenden Pins des Arduino verbunden werden. Die Steuerleitung DI wird über einen Widerstand von 220 oder 470 Ohm mit einem beliebigen Pin des Arduino verbunden. Kommen mehr als 15 LEDs zum Einsatz, sollte ein Kondensator (1000µF) zwischen Masse und VCC geschaltet werden. Zudem ist es ratsam, in diesem Fall die Versorgungsspannung von einem externen Netzteil zu holen. Das ist nicht nötig, wenn nie mehr als 15 LEDs dauerhaft leuchten: 600mA liefern die meisten USB-Ports problemlos, bzw. der Spannungswandler der meisten Arduinos und Klone sollte diese Ströme bereitstellen können.

Ein Testsketch

Als Biliothek empfehle ich Adafruit_NeoPixel. Diese enthält auch einen Testsketch „strandtest“, mit dem Sie sofort loslegen können. Anzupassen sind lediglich der Steuerpin:

#define PIN 6

und die Zahl der LEDs (das Beispiel geht von 60 aus):

Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);

Der Code ist gut dokumentiert und zeigt spielerisch, welche Effekte machbar sind.

Was geht maximal?

Die maximale Anzahl der WS2812-Einheiten ist durch die Steuerfrequenz und den Speicher des Arduino limitiert. Pro LED werden volle drei Byte Speicher belegt. Mit nur einfachen Effekten sind demnach fast 500 LEDs möglich. In der Praxis dürften die typischen 120 bis 150 LEDs gängiger Streifen eine sinnvolle Obergrenze darstellen. Auch 300 LEDs (zwei Streifen hintereinander) sollten gerade noch machbar sein, wenn die Stromversorgung an der Verbindungsstelle erfolgt. Bei Tests mit 120 LEDs (nur schnelles durchlaufenlassen eines weissen Punkten) kam bei Stromversorgung über den Arduino immer wieder ein stehen gebliebener Punkt vor – mit höherer Wahrscheinlichkeit bei den „oberen“ Pixeln, was sehr dafür spricht, dass über den Streifen mit einem gewissen Spannungsabfall zu rechnen ist.

Was nun?

Ich spiele mit dem Gedanken, eine Blinker-Rückleuchte-Bremslichtkombination für den Fahradanhänger zu bauen mit sechs oder acht Leuchten auf jeder Seite. Mit einem coolen Innen-Nach-Außen-Effekt wie beim Audi A6 und geschickter Kombination wenn beim Blinken gleichzeitig gebremst wird. Mal sehen. Im Prinzip wäre auch eine Art Ambilight für den Fernseher möglich. Oder eine vom Außenlicht abhängige Flurbeleuchtung (was mich wieder näher an das Hausautomationsthema heranbringt).