Dieser Beitrag klärt die wichtigsten Fragen und möglichst viele Basics zum Thema LED-Streifen mit Microcontrollern. Folgende Themen schauen wir uns an:
- Was sind LED-Streifen?
- Welche LED-Streifen Typen gibt es?
- Was sind die Unterschiede der verschiedenen LED-Steifen und deren Chips?
- Wie funktioniert die Stromversorgung von LED-Streifen?
- Wie berechnet man den Strombedarf von LEDs?
- Welche Arduino LED Libraries gibt es?
Und natürlich erstellen wir auch ein erstes kleines Projekt mit Arduino und ESP. Am Ende hast du ein solides Verständnis über LEDs bzw. LED-Streifen und wie man diese mit einem Microcontroller wie ESP32, ESP8266 oder Arduino & Co. ansteuern kann.
Was sind LED-Streifen?
Ein LED-Streifen ist ein flexibles, meist selbstklebendes Band, auf dessen Oberfläche LEDs in gleichmäßigen Abständen montiert sind. Es gibt LED-Streifen, die RGB Farben darstellen können. Und es gibt LED-Streifen, die auf eine Farbe beschränkt sind. Außerdem gibt es LED-Streifen mit unterschiedlichen Weiß-Varianten – kaltes und warmes Weiß.
Zudem gibt es LED-Streifen, bei dem jede einzelne LED angesteuert werden kann. Das sind sogenannte einzeln adressierbare LEDs (klären wir gleich noch genauer). Mit diesen LED-Streifen kann man Animationen und Farbverläufe erzeugen. Und es gibt LED-Streifen, bei dem alle LEDs immer die gleiche Farb- und Helligkeits-Einstellung haben. Hier lässt sich nur ein allgemeiner Farbwechsel oder die Helligkeit animieren.
Es gibt viele Bezeichnungen für LED-Streifen: LED-Lichtband, LED-Flexband oder LED-Stripe sind weitere Begriffe. Oft wird auch einfach die genaue Typenbezeichnung wie Neopixel, WS2812, SK6812 etc. verwendet. Zu den unterschiedlichen Typen kommen wir gleich noch.
Gerade wenn nur ein paar wenige LEDs benötigt werden, oder die LEDs sehr ungleichmäßig in einem Projekt verteilt sind, machen eher einzelne LEDs Sinn. Manchmal ist eine Kombination von Einzel-LEDs und LED-Streifen praktischer, so wie bei meinem Uhrenprojekt „Voltage Clock“.
Insbesondere wenn man eine Reihe oder eine Matrix von LEDs benötigt, nehmen die LED-Streifen sehr viel Arbeit ab.
Auf den LED-Streifen sind zwischen jeder LED sog. Lötpads angelegt, die man einfach mit der Schere in der Mitte durchschneiden kann. Entweder um sie in die passende Länge zu kürzen oder um die Streifen z.B. in einer Matrix anzuordnen. Am Ende muss man die Streifen nur noch wieder mit drei Kabeln verbinden.
Das ist sehr viel weniger Aufwand, als wenn man jede einzelne LED miteinander verlöten muss. Jeder, der mal mit den klassischen 2-Beinchen-LEDs eine 2D- oder gar 3D-Matrix gebaut hat, weiß ein Lied davon zu singen.
Ein weiterer Vorteil: die LED-Streifen sind viel einfacher vom Schaltungsaufbau her, wenn du einzeln adressierbare LEDs haben willst – und um die geht es in diesem Beitrag.
Was bedeutet „einzeln adressierbare LEDs“?
LED-Streifen sind sehr einfach anzuschließen
Ich will in diesem Artikel nicht weiter auf Multiplexing und Charlieplexing eingehen. Hier wäre aber ein schöner Artikel dazu.
Die LED-Streifen, die wir verwenden wollen nutzen alle nur einen Pin für die Datenleitung. Und natürlich noch eine Verbindung zur Stromversorgung und zur Masse.
Jetzt anmelden
und kostenloses eBook bekommen!Worin unterscheiden sich LED-Streifen allgemein?
Analoge und Digitale LED-Streifen
Analoge LED-Streifen wären z.B. die klassische Weihnachtsbaum-Lichterkette – gut nicht unbedingt ein „Streifen“, aber der Aufbau ist im Grunde der gleiche: eine Reihe von Glühbirnen oder LEDs ohne weitere Technik in Reihe geschaltet.
Es gibt aber auch analoge LED-Streifen, die den digitalen LED-Streifen sehr ähnlich sehen. Bei analogen LED-Streifen ist die Farbe und die Helligkeit der LEDs fest eingestellt. Und es lassen sich auch nicht einzelne LEDs ansprechen. Im Grunde kann man diese Streifen einfach nur an- oder ausschalten.
In diesem Artikel geht es nur um die digitalen LED-Streifen. Hier kommen zusätzliche IC Chips zum Einsatz. Ausserdem geht es in diesem Artikel nur um LED-Streifen, bei denen man jede einzelne LED über eine Datenleitung steuern kann.
Anzahl der LEDs pro Meter
LED-Streifen unterscheiden sich in der Anzahl der LEDs pro Meter – das entspricht quasi der Bildschirmauflösung: je mehr LEDs pro Meter, desto höher die Auflösung. Hier eine Liste mit üblichen Werten:
- 144 LEDs/m
- 100 LEDs/m
- 90 LEDs/m
- 60 LEDs/m
- 30 LEDs/m
LED-Streifen mit 144 LEDs pro Meter sind quasi das Retina-Display unter den LED-Streifen 🙂
IP-Schutzklassen
LED-Streifen unterschieden sich in der sog. IP Schutzklasse. Die IP Schutzklasse gibt an, wie die LED-Streifen gegen das Eindringen von Partikeln und Wasser geschützt sind. Falls du LED-Streifen draußen verwenden willst, solltest du auf eine entsprechende Schutzklasse achten.
- IP 30: kein Schutz vor Wasser
- IP 65: beschichtet mit Silikon, daher etwas schwieriger zu schneiden und zu verlöten. Durch das Schneiden wird die Schutzklasse höchstwahrscheinlich zerstört und steigt auf IP 30 herab.
- IP 67: ummantelt von einem festen Silikon-Schlauch
Hier eine Tabelle, was die zwei Zahlen der IP Schutzklasse bedeuten:
Farbe des Trägermaterials
Was sind die Unterschiede der verschiedenen LED-Streifen Typen?
Wie ist eine einfarbige LED aufgebaut?
Oft ist das Gehäuse der LED an der Kathoden-Seite der LED abgeflacht – hilfreich wenn nicht mehr klar ist, welches Bein das längere ist.
Der Kathoden-Körper im Kopf-der LED ist größer da dieser am oberen Ende wie eine Wanne geformt ist. In dieser Wanne liegt der LED-Kristall, der letztendlich das Licht erzeugt.
Die Farbe des Lichts lässt sich u.a. mit dem Material der Anode steuern. Häufig werden diese Materialien verwendet:
- Rot : Aluminiumgalliumarsenid (AlGaAs)
- Grün: Galliumphosphid (GaP)
- Gelb: Galliumarsenidphosphid (GaAsP)
- Blau: Indiumgalliumnitrid (InGaN)
Um eine einfarbige LED zum Leuchten zu bringen, verbindet man die Kathode mit dem negativen Pol einer Batterie und die Anode mit dem positiven Pol. So funktionieren die Throwies wie in diesem YouTube Short zu sehen.
Mit einem Microcontroller würde man also die Kathode an Ground und die Anode an einen Pin anschließen – so weit so bekannt.
Wie ist eine RGB LED aufgebaut?
Hier gibt es übrigens zwei Varianten für das vierte Beinchen: entweder ist das vierte Beinchen die Kathode und muss an Ground angeschlossen werden, oder es ist die Anode und muss am 5V Out Pin angeschlossen werden – für LED-Streifen aber eher uninteressant, hier gibt es immer nur das gleiche Anschluss-Schema – dazu später mehr.
Jede einzelne Farb-LED einer klassischen RGB LED benötigt demnach einen Pin und eine Leitung. Bei 30 RGB LEDs würde man somit 90 Pins benötigen plus die Stromversorgung – mach zusammen: 91 Pins!
Um das Problem zu lösen, gibt es verschiedene Möglichkeiten: Stichwort Multiplexing und Charlieplexing (siehe Einleitung). Unsere LED-Streifen lösen das Ganze noch etwas anders.
Die Streifen schaffen es, alles über nur eine Datenleitung zu schicken. Und trotzdem kann jede LED einzeln angesteuert werden.
So funktionieren LED-Streifen
Wie bekommen die Streifen es hin, mit nur einer Datenleitung alle LEDs mit mehreren Farben anzusteuern? Die Lösung liegt in den zusätzlichen Chips, die auf den Streifen verwendet werden.
Schauen wir uns ein einzelnes LED-Element von einem LED-Streifen größer an, dann sehen wir, dass auch hier in Wirklichkeit 3 LEDs verbaut sind und einen zusätzlichen Chip besitzt. Dieser Chip löst das angesprochene Problem mit den vielen Kabeln und kümmert sich um die Ansteuerung der drei Farb-LEDs.
Im Grunde läuft es so: man erzeugt ein großes Datenpaket. Dieses Datenpaket enthält die Farbe für jede einzelne LED im ganzen Streifen. Dieses große Datenpaket wird nun direkt über die Datenleitung in den LED-Streifen geschickt.
Der Chip der ersten LED nimmt sich jetzt die erste Farbangabe aus dem Datenpaket und stellt die LED entsprechend ein. Jetzt der schlaue Trick: nun schneidet der Chip diese erste Farbangabe ab, und leitet den Rest des Datenpakets weiter zur nächsten LED – dort geht das Ganze wieder von vorne los, bis die letzte LED schließlich die letzte Farbangabe bekommen hat. Das Datenpaket wird nach jeder LED immer kleiner.
Nun gibt es kleine Unterschiede bei den verschiedenen Chips (siehe Bild oben WS2812 VS WS2812B) und wie die Daten verarbeitet werden. Wenn wir LED-Streifen programmieren wollen, benutzen wir eine LED Library, die uns die komplizierte Arbeit der Erstellung der Datenpakete abnimmt. Manche Chip-Typen funktionieren identisch, andere leider nicht. Eine LED-Library muss vom Entwickler angepasst werden, damit ein Chip-Typ unterstützt wird.
Die Entwickler dieser LED-Libraries haben es manchmal noch nicht geschafft (oder haben kein Interesse), jeden Chip-Typ einzubauen. Daher kann es sein, dass eine LED-Library nicht mit einem bestimmten LED-Streifen-Typ verwendet werden kann.
Alle LED-Streifen, die ich hier gleich vorstelle, funktionieren nach dem gleichen Prinzip:
Es gibt eine Datenleitung, mit der man die LEDs ansteuern kann. In den LEDs sind üblicherweise 3 LEDs verbaut – eine für rot, eine für grün und eine für blau. Bei den sog. RGBW Varianten gibt es noch eine zusätzliche vierte LED für reines weiß.
Oft findet man bei den LED-Streifen eine Zahlen-Angabe wie 5050. Dies bezieht sich auf die Abmessung des Gehäuses eines LED-Elements. Bei 5050 ist diese Gehäuse dann 5 × 5 mm groß. Es gibt auch kleinere Formate, wie z.B. 3528 – aber 5050 genießt wohl die meiste Verbreitung bei LED-Streifen.
Welche LED-Streifen Typen gibt es?
Wieso flackern LEDs im Auge und im Video?
Die WS2812B LED-Streifen flackern, weil sie mit einer Pulsweitenmodulation (PWM) betrieben werden. Die PWM ist eine Methode zur Steuerung der Helligkeit von LEDs, indem sie schnell ein- und ausgeschaltet werden. Die Steuerung erfolgt durch Ändern der Länge der eingeschalteten Zeit im Verhältnis zur Gesamtzeit eines Zyklus.
Wenn der Zyklus sehr kurz ist, kann das menschliche Auge das Flackern nicht mehr wahrnehmen. Die Frequenz, bei der das Flackern für das menschliche Auge nicht mehr wahrnehmbar ist, wird als kritische Frequenz bezeichnet. Diese Frequenz variiert jedoch von Person zu Person und liegt normalerweise zwischen 50 Hz und 90 Hz. Es gibt aber sicher auch empfindlichere Menschen. Außerdem wird das Flackern im peripheren Sichtfeld eher wahrgenommen, als wenn man direkt in das Licht schaut.
Für Videoaufnahmen ist die kritische Frequenz anders, da Kameras anders funktionieren als das menschliche Auge. Üblicherweise benötigen Kameras eine höhere PWM Frequenz, damit das Flackern in den Aufnahmen vermieden wird. Wenn du also eine LED-Beleuchtung bauen willst, um diese zur Beleuchtung deiner Videos zu nutzen, kannst du auf Nummer Sicher gehen und einen LED-Streifen einsetzen, der über den 430 Hz von WS2812B & Co. liegt – wie zum Beispiel SK6812. Wenn du auch Zeitlupenaufnahmen machen möchtest, sollte die Frequenz möglichst hoch sein – da würde ich auf SK9822 oder APA102 setzen.
Stromversorgung
Wann nutzt man 12 Volt und wann nutzt man 5 Volt LED-Streifen?
12 Volt (oder sogar mehr) eignen sich, um längere LED-Streifen zu betreiben, da hier die Farbverschiebung weniger problematisch ist. Und falls man an mehreren Stellen Strom einspeisen muss, benötigt man weniger Punkte zum Einspeisen. (Siehe weiter unten Abschnitt Spannungsabfall und Farbverschiebung)
Bei kleineren Projekten wie Uhren, Schilder, Kostüme etc., wo die Leitungen nicht so lang sind und die LED Anzahl nicht so hoch, würde ich auf 5 Volt setzen, insbesondere wenn man Mikrocontroller verwendet, die keine 12 Volt vertragen, wie z.B. ESP Dev Boards. Der Arduino UNO kann durch den eingebauten Spannungswandler direkt mit 12 Volt umgehen.
Wie berechnet man den Stromverbrauch von LEDs?
Das Thema Stromversorgung ist extrem wichtig. Das Netzteil muss genügend Ampere liefern, damit alle LEDs zum Leuchten gebracht werden können. Hier zeige ich dir, wie man den benötigten Strom im Voraus berechnen kann.
Als Richtwert rechnet man für eine LED bei voller Intensität mit 20 mA Strom – Worstcase! Da ist bereits ein wenig Puffer drin. Das ist auch sinnvoll, denn man darf Netzteile nicht dauerhaft mit 100 % Last fahren, d.h dauerhaft das Maximum an Ampere nutzen – andernfalls drohen Hitzeschäden.
Unsere RGB LEDs haben für jede Farbe eine eigene LED. D.h. wenn alle Farben leuchten, kann die LED 60 mA verbrauchen. Das wäre der Fall, wenn der Streifen weiß leuchten soll, denn dann werden alle Farben mit gleicher Intensität angestellt, um einen Weißton zu mischen.
Weiß verbraucht demnach am meisten Strom. Außer bei dem SK 6812 LED-Streifen – dort gibt es eine extra LED für weiß, d.h. hier werden lediglich 20 mA für weiß verbraucht.
ACHTUNG, dazu sei gesagt: beim Programmieren werden die Farbkanäle für rot, grün, blau und in diesem Fall auch weiß einzeln angesteuert. D.h. man könnte es auch so programmieren, dass alle vier LEDs angeschaltet werden. Dann wären es sogar 80 mA pro LED. Mir fällt allerdings kein sinnvolles Szenario dafür ein.
Hier ein paar Rechenbeispiele mit RGB LEDs:
30 RGB LEDs: 30 × 60 mA = 1800 mA.
60 RGB LEDs: 60 × 60 mA = 3600 mA
144 RGB LEDs: 144 × 60 mA = 8640 mA
Man kommt schnell in einen Ampere-Bereich, der größere Netzteile benötigt. Aber nochmal: das ist eine Worstcase-Berechnung. Um diese zu erreichen, müsste man alle LEDs bei voller Intensität mit weißer Farbe leuchten lassen. Meistens ist es gar nicht sinnvoll, alle LEDs immer leuchten zu lassen. Mehr dazu auch im Abschnitt Tipps zum Stromsparen.
Übrigens: wenn der Arduino Uno mit USB gespeist wird, kann der 5V Output noch um die 400 mA liefern. D.h. ohne zusätzliche Stromquelle sollte man hier einen LED-Streifen mit maximal 6 RGB LEDs anschließen. Das wären maximal 360 mA. Diese Angabe bezieht sich nur auf den Arduino UNO, das könnte bei anderen Arduino Modellen anders sein. Am besten arbeitet Ihr gleich mit einem externen Netzteil.
Es sollte ein bisschen mehr Strom sein
Welche Netzteile gibt es?
Wand-Netzteile (aka Wall Adapter)
Laptop Netzteile (aka Power Bricks)
Die Netzteile, wie Sie z.B. für Laptops verwendet werden, wäre das nächst größere Modell. Diese kann man durchaus mit 10 oder 15 Ampere finden. Letztere haben dann aber möglicherweise schon einen eingebauten Lüfter.
Auch hier kann ich wieder die Firma Leicke empfehlen – z.B. dieses 5V Netzteil mit 10 Ampere (Amazon-Link*).
Industrie-Netzteile (aka Frame style)
ATX Computer-Netzteile
ATX Netzteile führen drei Ausgangs-Strom-Leitungen:
- 3,3 Volt (orange Leitungen)
- 5 Volt (rote Leitungen)
- 12 Volt (gelbe Leitungen)
Die schwarzen Kabel sind immer Ground. Hilft natürlich nichts, wenn die lustigen Produkt-Designer alle Kabel schwarz machen – wie bei meinem bequiet! Netzteil. Zum Glück habe ich einen Artikel + Video zur Stromversorgung von Arduino, ESP32 & Co. mit ATX-Netzteilen im Angebot. Dort findest du auch eine Pin-Belegung für diesen Molex Stecker.
Einbau-Netzteile (aka LED-Netzteil)
Wie kann ich Strom sparen bei LED-Projekten ?
Benutze weniger LEDs
Nicht alle LEDs gleichzeitig und nicht in weiß leuchten lassen
Nicht alle LEDs gleichzeitig und nicht in weiß leuchten lassen
LED Intensität runter
Das ist der wichtigste und effektivste Tipp: es ist nicht sinnvoll die LEDs bei voller Intensität laufen zu lassen. Man gibt die Intensität für jede LED immer mit dem Farbwert zusammen an.
Der Farbwert ergibt sich aus drei Zahlen – eine Zahl für die rote LED, eine für die grüne und eine für die blaue LED. Die Zahl ist ein Wert zwischen 0 und 255 und gibt die Intensität an, mit der die LED leuchten soll – bei dem Wert 0 wäre die LED aus und bei 255 leuchtet sie am hellsten (= höchste Intensität).
Ein reines Rot mit höchster Intensität hat den RGB-Farbwert: 255,0,0.
Ein reines Rot mit halber Intensität hat den RGB-Farbwert: 127,0,0.
In der Praxis stellt sich heraus: 255 ist nicht notwendig – das ist sehr hell! Und selbst wenn man die Intensität auf 127 stellt ist kaum ein Unterschied zur vollen Intensität auszumachen.
Hier habe ich mal einen Test mit einer 8×8 = 64 LED Matrix gemacht: ich messe den Strom über eine smarte Steckdose HS110 von TP Link. Die wird leider nicht mehr hergestellt, gibt aber einen Nachfolger die TAPO P110 (Amazon-Link*).
Ich muss zugeben, auf den Fotos sieht der Unterschied krasser aus. Liegt sicher auch an den Einstellungen der Kamera. Man sieht aber auch schön das Einsparpotential, wenn man die Intensitäten kleiner macht:
- Intensität 255 mit 7,68 W = 1.52 A
- Intensität 127 mit 4,04 W = 0,81 A
- Intensität 63 mit 2,45 W = 0,5 A
- Intensität 31 mit 1,67 W = 0,34 A
Das schöne ist: unsere Wahrnehmung spielt uns hier zusätzlich in die Karten. Denn wir nehmen Helligkeitsunterschiede nicht linear war. Unsere Augen sind auf Tageslicht (zum Beute jagen) und auf Dunkelheit (um nicht selbst Beute zu werden) spezialisiert – also auf die Extreme: hell und dunkel – hier können wir Unterschiede besser wahrnehmen. Aber die Helligkeitswahrnehmung zwischen den Extremen war zum Überleben wohl eher … egal.
Wenn wir die LEDs auf halbe Intensität (127) stellen, dann nehmen wir das nicht als halb so hell wahr – für unser Auge erscheint es viel heller. Ich habe gelesen, das Verhältnis liegt eher bei 5:1 statt 2:1 – d.h. einen Intensitäts-Wert von 50 empfinden wir eher als halb so hell wie 255.
Probiert einfach mal aus, welcher Helligkeitswert noch hell genug ist für euch.
NERD-BOX: Was ist Gamma Korrektur?
Dass man die Helligkeit für Lichtintensität nicht linear, sondern mit einer Kurve steuert, nennt man Gamma Correction – habt ihr bestimmt schon mal gehört. Die Technik wird in jedem Fernseher und Monitor verwendet.
Warum eigentlich? Ist es nicht egal wie hell oder dunkel wir letztendlich das ganze Monitorbild wahrnehmen?
Es ist komplizierter, als ich es hier nur für weiße Farben dargestellt habe: Unser Auge nimmt die Helligkeit für die Farben rot, grün und blau unterschiedlich wahr. Also im Grunde hat jede Farbe eine unterschiedliche Gammakurve.
Würde der Monitor nun bei allen Farben die gleiche Gammakurve verwenden, würden wir die gemischte Gesamt-Farbe verfälscht wahrnehmen.
Grün nehmen wir 3x heller als rot und 10x heller als blau wahr. Diese Wahrnehmung korrigiert die Gammakorrektur und führt dazu, dass unsere Fernseher und Monitore nicht alle farbstichig sind.
Wer es darauf anlegt, könnte also die Farbangaben für seinen LED-Streifen noch einer Gammakorrektur unterwerfen. Aber ich denke, für die meisten Projekte wäre das Overkill.
Wer tiefer einsteigen möchte: hier ist ein toller Artikel auf Hackaday.
Wie ist der Schaltungsaufbau bei einem LED-Projekt?
Kommen wir jetzt zum Aufbau der Schaltung. Wie schließen wir einen LED-Streifen an einen Mikrocontroller wie Arduino oder ESP an?
Meistens habe die LED-Streifen schon einen sog. JST Stecker angelötet. Ich finde die praktisch, so kann man schnell einen Streifen anschließen oder wieder entfernen. Ich habe mir einen einfachen Adapter von JST auf drei einzelne Dupont Stecker gebastelt. Einfach drei Jumper-Kabel durchgeschnitten, verlötet und mit Schrumpfschlauch ummantelt. So kann man den LED-Streifen sehr einfach auf einem Breadboard oder direkt am Mikrocontroller anschließen.
Die JST Buchse habe ich einfach von einem LED-Streifen „geklaut“ – meistens ist am einen Ende ein JST Stecker und am anderen Ende eine JST Buchse verlötet.
Zunächst ist der Aufbau recht simpel. Schauen wir uns mal einen LED-Streifen mit 6 LEDs an, den wir direkt an einen Arduino anschließen, der mit USB Stromversorgung läuft:
Ihr müsst einen Pin wählen, der mit der Datenleitung des LED-Streifens verbunden wird. Die Datenleitung ist in der Regel auf dem Streifen mit DIN beschriftet. Außerdem werden noch GND mit Ground verbunden und 5V bekommt 5 Volt.
NERD-BOX: Strom und saubere Signale durch den passenden Widerstand
Wir hatten gesagt, die RGB Farbwerte werden in Bits umgewandelt, also in Nullen und Einsen, bevor sie in die Datenleitung des LED-Streifens geschoben werden.
Warum überhaupt? Warum wird bei Computern immer alles in 0 und 1 umgewandelt? Weil ein Computer mit Strom funktioniert und damit kann man sehr einfach Nullen und Einsen übersetzen in: Strom-aus und Strom-an.
Das Signal, also die vielen Nullen und Einsen in Form von Strom-an und Strom-aus, rast so schnell durch die Leitung, dass man ein möglichst „sauberes“ Signal benötigt. Sauber heißt in diesem Fall, dass der Unterschied zwischen Strom-aus (LOW) und Strom-an (HIGH) deutlich zu erkennen sein muss.
Wenn jetzt Störungen in die Leitungen einfließen, wird das Signal verfälscht und das Signal ist dann nicht mehr so sauber. Das kann so weit führen, dass der Chip des LED-Streifens nicht mehr eindeutig sagen kann, ob das jetzt ein HIGH oder ein LOW war.
Je länger nun ein Kabel ist, desto anfälliger ist es für Störungen. Auf der Webseite von QuinLED hat der Autor mal Tests gemacht. Es zeigt sich das ab 10 bis 15 m Kabeln mit dem Flickern zu rechnen ist – können aber auch schon ab 5 m einsetzen.
Je nach Länge des Kabels muss hier auch der Widerstand angepasst werden. In dem berühmten Neopixel Überguide von Adafruit wird ein 300-500 Ohm Widerstand verwendet, z.B. 470 Ohm. Der eignet sich für kurze Kabelstrecken bis 50 cm.
QuinLED hat viel zu diesem Thema getestet. Nach deren Aussage funktionieren bis 50 cm alles von gar keinem bis 500 Ohm. Ab 5 m Länge können Effekte einsetzen, die man dann mit kleineren Widerständen und/oder anderen Kabelkonfigurationen in den Griff bekommen kann. Meine Projekte hatten bisher allerdings noch nicht so lange Kabelstrecken, als dass ich auf solche Probleme gestoßen bin.
Oft findet man auch eine Schaltung, in der zusätzlich ein Kondensator verbaut wird. Dieser soll zusätzliche Eigenschaften mitbringen, allerdings gehen die Aussagen im Netz etwas auseinander:
- Bei plötzlichen Helligkeitsveränderungen mit viel LEDs kann der Kondensator diesen kurzzeitig hohen Strombedarf liefern und entlastet das Netzteil.
- Der Kondensator kann Stromspitzen/Lücken ausfiltern und so das Signal sauberer halten.
Hört sich beides nachvollziehbar an. Als Grundregel kann man aber festhalten: Ein Kondensator macht Sinn, je mehr LEDs man benutzt und je dünner die verwendeten Kabel sind.
Sollten also Probleme mit den Farben oder ein Flickern auftreten, probiert es mal mit einem Kondensator.
Ist der Kondensator zwingend notwendig?
Nein. Es geht nichts gleich kaputt oder brennt durch. Es treten höchsten Flickern oder Fehler bei den Farben auf.
Praktisch sind z.B. die klassichen KfZ-Sicherungen (Amazon-Link*). Diese lassen sich recht einfach mit KfZ-Sicherungshaltern (Amazon-Link*) befestigen.
Du musst zunächst berechnen, was die maximale Leistung deines LED-Streifens sein soll. Sagen wir mal ein Streifen mit 150 RGB-LEDs hat im worst case Szenario einen Stromverbrauch von:
150 × 60 mA = 9000 mA
Nun muss man eine Sicherung mit einer höheren Ampere-Zahl wählen – z.B. 10 Ampere. Man muss hier abwägen: ist der Abstand zur nächst höheren Ampere-Zahl zu klein, könnte eine kleine Strom-Spitze die Sicherung durchbrennen lassen, obwohl alles in Ordnung ist.
Ist der Abstand zur Ampere-Zahl der Sicherung zu groß, kann die Sicherung zu spät durchbrennen.
Da wir hier schon mit dem eher unrealistischem Worst-Case-Szenario rechnen, ist es recht unwahrscheinlich auf 10 Ampere zu kommen. Ich würde hier zunächst eine 10 Ampere Sicherung einsetzen. Im schlimmsten Fall brennt die Sicherung durch – genau dafür ist sie da.
Farbverschiebung durch Spannungsabfall (aka Voltage Drop)
Kommen wir nun zu einem der größten Probleme bei LED-Streifen: der Farbverschiebungseffekt durch Spannungsabfall.
Jede LED auf dem Streifen verbraucht Strom. Zudem haben die Bauteile und Leitungen auf dem Streifen einen Eigenwiderstand. Je nach Länge kommt am Ende des Streifens zu wenig Spannung bei den LEDs an. Das hat zur Folge, dass eine Farbverschiebung im Licht zum Ende des Streifens hin stattfindet.
In den folgenden Bildern ist der Effekt gut zu sehen. Eigentlich sollte die Farbe überall gleich weiß sein, so wie im rechten Teil des Streifens, wo der Strom eingespeist wird.
Warum verstärken billige LED-Streifen den Farbverschiebungseffekt?
Wir erinnern uns vielleicht noch an den Physikunterricht: je dünner die Leitung, desto höher der Eigenwiderstand der Leitung.
Um günstiger produzieren zu können, wird bei billigen LED-Steifen an Material gespart. Unter anderem spart man Kupferanteile in den Leitungen ein. Weniger Kupferanteile bedeuten quasi eine dünnere Leitung, was wiederum bedeutet: Der Eigenwiderstand ist höher bei den billigen Streifen und der Spannungsabfall setzt früher ein.
„Was ist denn ein billiger LED-Streifen?“, ist jetzt die Frage. Tatsächlich sind die Preise so sehr gestiegen (Chip-Krise, Container-Krise, bestimmt auch Corona-Krise und Ukraine-Krise), dass es gefühlt gar keine billigen Angebote mehr gibt. Da ich gute Erfahrungen mit Streifen von BTF-Lightning (Amazon-Link*) hatte, würde ich mich hier an den Preisen dieses Herstellers orientieren.
Wie kann man Farbverschiebung bei LED-Streifen lösen?
Wie lösen wir nun die Farbverschiebung durch Spannungsabfall? Hier gibt es zwei übliche Methoden, um die Farbverschiebung in den Griff zu bekommen:
Helligkeit verringern
Wenn man die Helligkeit der LEDs verringert, kann man das Problem oft schon in den Griff bekommen – je nach Länge des LED-Streifens.
Bei meinem 300 LEDs Streifen setzte der Effekt ab einer Intensität von 128 ein. Bei einer Intensität von 64 konnte ich den Effekt farblich nicht wahrnehmen. Allerdings wurden die LEDs am Ende des Streifens unruhiger und flackerten. Zumindest im peripheren Sehfeld war das Flackern wahrnehmbar.
Bei sehr langen Streifen würden die LEDs aber vermutlich zu dunkel werden. Dann eignet sich nur noch die nächste Möglichkeit, die allerdings ein bisschen aufwändiger ist: Power Injection.
Was ist Power Injection?
Wir wissen nun, wie man grundsätzlich eine Schaltung mit Mikrocontroller und LED-Streifen aufbaut. Bei der Power Injection wird der Strom nicht nur am Anfang, sondern an mehreren Stellen des LED-Streifens zugeführt.
Dazu kann man zum Beispiel den Strom über ein langes Kabel parallel zum Streifen laufen lassen und in regelmäßigen Abständen den Strom zuführen. Oft reicht es schon aus (je nach Länge des LED-Streifens), den Strom einfach zusätzlich am Ende in den LED-Streifen zu führen, so wie im folgenden Schema zu sehen:
LED-Streifen Praxis Tipps
- Fange mit wenigen LEDs bei niedriger Intensität an und arbeite dich bis zu 80 % der maximalen Leistung des Netzteils heran. Kontrolliere den Strombedarf mit einem Messgerät, z.B. mit einem Steckdosen-Messgerät wie dem oben bereits erwähntem TAPO P110 (Amazon-Link*) – du bekommst damit ein viel besseres und sichereres Gefühl, für den Strombedarf deiner Anwendungen.
- Auch wenn diese Orientierungs-Tipps meistens zutreffen – prüfe trotzdem vorher die Angaben des Netzteils. Denke nochmal darüber nach, ob es zusammen mit deiner Anwendung (einzelne Farben/LEDs VS. alle LEDs voll Power auf weiß) Sinn macht! Insbesondere, wenn du mit sehr langen LED-Streifen bzw. großen Netzteilen arbeitest. Wenn du unsicher bist, messe nach!
- Wenn du Anfänger bist: nehme dir zunächst kleinere Projekte vor wie z.B. Deko-Streifen, PC-Case Beleuchtung oder kleine Matrix-Displays. Fange nicht gleich mit der 150 Meter Weihnachts-Beleuchtung an – der benötigte Strom ist immens, insbesondere bei 5V LED-Streifen (hier machen 12V oder 24V LED-Streifen mehr Sinn). Wenn du Letzteres machen willst, hole dir unbedingt Hilfe von einem Profi.
Weitere Tipps:
- Unter 3m oder 100 LEDs 5V Streifen benötigen keine Power Injection.
- Unter 8m oder 240 LEDs 12V Streifen benötigen keine Power Injection.
- Bis 150 LED – hier könnte dein Handy-Ladegerät noch ausreichen (prüfe die Ampere-Angaben!).
- 150 bis 300 LEDs – hier würde ich ein 7 oder 8 Ampere Netzteil anpeilen.
- Die Kabel, die Ihr für Power Injection verwendet, dürfen nicht zu dünn sein – nicht dünner als 22 AWG bei kleinen Projekten. Ansonsten werden die Kabel zu heiß und können durchschmoren. Je länger die Kabel und je mehr LEDs verwendet werden, desto dicker müssen die Kabel werden.
- Wenn das Netzteil mehr als 100 Watt hat, lieber Sicherungen in jede Stromabzweigung, die zum LED-Streifen geht, einbauen.
- Dabei die Sicherungen so nah ans Netzteil wie möglich. Die Sicherung muss etwas größer sein, als der zu erwartenden maximale Strombedarf. Beispiel: wenn max. 4.5 Ampere zu erwarten sind, dann nutze mindestens eine 5 Ampere Sicherung.
ESP32 und andere 3,3 Volt Microcontroller
Jetzt mag ich ja so gerne den EPS32 – der läuft mit 3,3 Volt. Die LED-Streifen laufen jedoch mit 5 Volt. Funktioniert das überhaupt?
Eigentlich müsste man hier das 3,3 Volt Signal auf 5 Volt mit einem Logik Level-Shifter bringen.
Bei meinen Projekten hat es bisher immer ohne geklappt. Offensichtlich gibt es da einen Toleranzbereich, in dem ich mich immer befunden habe.
Ich kann mir auch vorstellen, dass ab einer bestimmten Länge des LED-Streifens Probleme einsetzen, wie z.B. flackernde LEDs, falsche Farben etc. In dem Fall, falls alles andere ausgeschlossen ist, mal einen Logik Level-Shifter wie dem 74AHCT125 ausprobieren. Der wandelt das 3 Volt Signal des ESPs für die Datenleitung in 5 Volt Signale um.
Welche LED Libraries gibt es?
Hardware haben wir jetzt besprochen. Nun kommen wir zur Software – den LED Libraries.
Damit man mit den LED-Streifen auch arbeiten kann, gibt es Libraries, die wir nutzen können. Ohne die Libraries müssten wir uns selbst darum kümmern, mit Bit Operatoren alles in die richtige Reihenfolge zu bringen und das Signal mit einer bestimmten Frequenz durch die Datenleitung zu schicken. Diesen ganzen Super-Nerd Kram nehmen uns diese Libraries ab, sodass wir nur noch angeben müssen, welche LED in welcher Farbe leuchten soll.
Es gibt drei quasi-Standard Libraries:
WLED ist noch eine interessante Option. Diese Library versteht sich aber eher als Set mit vorgefertigten Animationen und Effekten und einer zusätzlichen App zur Bedienung der LEDs. Wenn man zum Beispiel eine animierte Ambiente-Beleuchtung mit Animationen bauen will und schnell Ergebnisse haben möchte, ist WLED ziemlich cool. Wenn man selbst Animationen oder z.B. ein eigenes Matrix-Display programmieren möchte, ist WLED nicht geeignet.
Ansonsten geht es bei der Wahl der passenden Library auch darum, ob der LED-Streifen bzw. deren Chip-Typ überhaupt unterstützt wird. WS 2812B ist quasi der no-Brainer. Der wird von allen Libraries unterstützt. Aber bei den SK 6812 mit der extra LED für reines Weiss wird es schon schwieriger. FastLED kann mit SK 6812 zum Beispiel nicht umgehen. Falls Ihr also etwas anderes als die WS 2812B verwenden wollt, schaut welche Library überhaupt kompatibel ist.
Codebeispiele für LED-Streifen Programmierung
Jetzt schauen wir uns kurz im Vergleich an, wie man mit diesen drei Libraries arbeitet. Dazu verwende ich einen kurzen Code, der immer das Gleiche macht: bei einem LED-Streifen mit 30 LEDs wird die erste LED auf Rot und die letzte LED auf Blau gestellt. Der Code ist kompatibel zu PlatformIO und Visual Studio Code.
Wer noch nie mit PlatformIO und VS Code gearbeitet hat, dem empfehle ich zunächst diesen Artikel bzw. Video: Arduino IDE VS PlaltformIO und VS Code. Dort erfährst du die wesentlichen Basics. In der Arduino IDE sollte der Code auch laufen. Dabei kannst du die erste Zeile weglassen. Die Arduino.h Library baut die Arduino IDE automatisch im Hintergrund ein.
Codebeispiel Adafruit Neopixel
/* Minimal Example with Adafruit's Neopixel Library * Link: https://github.com/adafruit/Adafruit_NeoPixel */ #include <Arduino.h> #include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> #endif #define PIN 8 #define PIXELCOUNT 30 Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXELCOUNT, PIN, NEO_RGB + NEO_KHZ800); void setup() { strip.begin(); strip.setBrightness(50); // set the maximum LED intensity down to 50 strip.show(); // Initialize all pixels to 'off' delay(2000); // wait two seconds strip.setPixelColor(0, 255,0,0); // color the first LED in red strip.setPixelColor(29, 0,0,255); // color the last LED in blue strip.show(); // send the new color settings to the stripe } void loop() {}
Codebeispiel FastLED
/* Minimal Example with Daniel Garcia's and Mark Kriegsman's FastLED Library * Link: https://github.com/FastLED/FastLED * Web: http://fastled.io/ */ #include <Arduino.h> #include <FastLED.h> #define PIN 8 #define PIXELCOUNT 30 CRGB leds[PIXELCOUNT]; // Define the array of leds void setup() { FastLED.addLeds<WS2812B, PIN, RGB>(leds, PIXELCOUNT); delay(2000); // wait two seconds leds[0].setRGB( 255, 0, 0); // color the first LED in red leds[29].setRGB( 0, 0, 0); // color the last LED in blue FastLED.show(); // send the new color settings to the stripe } void loop() {}
Codebeispiel NeoPixelBus
/* Minimal Example with Makuna's NeopixelBus Library * Link: https://github.com/Makuna/NeoPixelBus */ #include <Arduino.h> #include <NeoPixelBus.h> #define PIN 8 #define PIXELCOUNT 30 NeoPixelBus<NeoGrbFeature, Neo800KbpsMethod> strip(PIXELCOUNT, PIN); void setup() { strip.Begin(); strip.Show(); // Initialize all pixels to 'off' delay(2000); // wait two seconds strip.SetPixelColor(RgbColor(0, 255,0,0)); // color the first LED in red strip.SetPixelColor(RgbColor(29, 0,0,255)); // color the last LED in blue strip.Show(); // send the new color settings to the stripe } void loop() {}