Arduino mit ws2803 viele LEDs ansteuern

Hallo zusammen,

ich habe vor, die Decke und die Wände meines Zimmers mit RGB - LEDs zu bestücken, bzw. diese hinter Plexiglas zu verbauen um so später verschiedene Farbverläufe auf die Wände projizieren zu können. Bin ziemlicher Anfänger was Arduino und Mikrocontroller angeht.
Nach ein paar Tagen Recherche habe ich folgendes zusammengestellt:

Diese Abbildung soll nur das grobe Schema darstellen. Insgesammt sollen ca. 120 RGB - LEDs verbaut werden. Mit 6 RGB - LEDs pro Treiber müssten 20 ws2803 aneinander gehängt werden.

Nun habe ich ein paar Fragen dazu.

  1. Seht ihr irgendwelche Fehler im Schema, bzw. kann das so funktionieren?

  2. Ist überhaupt möglich 20 ws2803 aneinander zu hängen?

  3. So viele LEDs können doch nicht nur über den Arduino mit Strom versorgt werden oder?

Hier das Datenblatt zum ws2803: http://www.jarzebski.pl/datasheets/WS2803.pdf

LG

Ber Arduino kann keine 120 RGB LEDs betreiben, du musst die LEDs mit einer eigenen Stromquelle betreiben, und nur die Masse desArduinos mit der Masse der Stromversorgung der LEDs verbinden.

Grüße,

Sven

Bei 60mA pro LED sind das über 7A.

Ich finde es einfacher daß Du LED-Streifen auf Basis des WS2812 / WS2812B nimmst. Da ist in jedem LED ein Controller eingebaut.

Das mit der externen Stromversorgung gilt auch für diese LEDs.

Grüße Uwe

120 x 3 x 25 ma =9 Ampere. Also antwort auf Frage 3 : nein. Die ws2803 mit eine anderen strohmversorgung. Die kan aber dagegen den Arduino auch versorgen durch den 5V pin.

Ob du alle 360 LEDs durch ein Arduino ansteuren kannst - ja - aber es dauert 8 x 360 x frekvens, bzw. mit 1Mhz dauert es 2,8 ms ein "Bild" rausschicken.

Sonnst sieht es gut aus. Viel spass/glück damit.

Das Thema mit den Rainbow-LEDs hatten wir erst vor kurzem in einem anderen Thread. Das hier könnte auch eine Lösung für dich sein: A 12mm Ws2811 Pixel Led Module Lamp Bulb Ip68 Dc5v Full Color Rgbstring Christmas Light Addressable As Ucs1903 Ws2801 - Led Modules - AliExpress
Wennn dir bei den fertigen Stripes die LEDs zu dicht sitzen, z.B.
Die Stripes gibt es mit 30, 60 oder 144 LEDs pro Meter. Wenn du die Stromversorgung in den Griff bekommst, kannst du mit einem Arduino 500-1000 LEDs ansteuern um noch bewegte Bilder darstellen zu können, ohne das es ruckelt. Für langsamere Farbverläufe gehen sogar noch wesentlich mehr 8)
Will mich demnächst auch mal mit den Dingern befassen und mir ein paar davon bestellen.
Hier z.B. organisiert einer Sammelbestellungen direkt aus China :smiley:
[V] Sammelbestellung WS2812B Leds und Led-Streifen (dauerhaft) - Mikrocontroller.net

Gruß Gerald

Teoretisch kann man über die Schnittstelle 1024 WS2812 mit einer Wiederholrate von 30 Hz ansteuern.
Man kann zwar mit Arduino viele WS2812 ansteuern aber man muß auch die darzustellenden Bilder irgendwoher bekommen bzw berechnen. Ein Arduino UNO kann das nicht bewerkstelligen da er zuwenig RAM hat. Ein ARduino MEGA hat genug RAM aber auch diese hat Probleme mit der Datenübertragung / Berechnung des Bildes.
Grüße Uwe

Hallo zusammen,
danke für die zahlreichen Antworten.

Zur Stromversorgung, sieht das besser aus?

Was ist denn am "saubersten", die LEDs extra zu versorgen oder die Treiber? In meiner Schaltung habe ich die LEDs extra mit Strom versorgt.

@Msquare Meinst du nicht den VIN pin?
Ich kann mit 2,8ms nicht viel anfangen. Bekomme ich denn damit vernümftige Farbverläufe hin?
Läuft des ATMega nicht mit 16Mhz?

@uwefed An LED-Streifen habe ich auch schon gedacht, nur es wurde schon voreilig angefangen zu Bauen. Also es sind schon die Löcher in der Decke und Wand und es wurde ziemlich viel Kabel verlegt. Die Kabel führen in ein anderes Zimmer wo die Elektronik stehen soll. Daher sind Stripes tabu. Das führt mich zu einer weiteren Frage, hat die Kabellänge Auswirkungen auf die LEDs?

Diese Schaltung Habe ich Teilweise übernommen. Ich verstehe nicht ganz warum ich die Kondensatoren brauche?

Wenn es um die Ansteuerung wirklich großer Mengen LEDs geht, dann hangele dich mal durch die Bilder und Links dieser Seite: http://www.agile-hardware.de/arduino-openspace-dresden-07-09-2013/
Den Spaß habe ich mir letztes Jahr mal angetan, das in live anzugucken.
Die Mega Matrix basiert aber nicht auf den Rainbows, das sind kleinere Unterplatinen von Solderlab. Wenn ich das richtig in Erinnerung habe, steuert jeweils ein ATMEGA 328 so um die 100-200 LEDs auf einer Platine. Die Platinen wiederum hängen an einem Bus und werden von einem PC gefüttert, der auch gleich die Video- und Bildaufbereitung und die Zerlegung in die Häppchen vornimmt.
Glediator ist die Software für den PC. Guckst du hier: http://www.solderlab.de/index.php/software/glediator

Gruß Gerald

unicum:
Zur Stromversorgung, sieht das besser aus?

Nein. jetzt hat der Arduino nichts. Aber wenn Arduino am Rechner hängt kriegt der ja Strohm davon.

@Msquare Meinst du nicht den VIN pin?

Wenn die eksterne 5V is dan is 5V der richtige. Wenn die eksterne 6-12V das ist VIn der richtige. und wenn es von USB kommt soll keinen benützt werden.

Ich kann mit 2,8ms nicht viel anfangen. Bekomme ich denn damit vernümftige Farbverläufe hin?

Tja ja bum, bum ... dass ist eben die schwierigkeit :slight_smile: Datanblatt sagt 2Mhz clock frekevens die chip ansteuren. (also 1,4ms)

Läuft des ATMega nicht mit 16Mhz?

ja aber du brauchts meherere Instruksen um die 0 oder 1 auf die Pins rauschicken - den wert wählen, sicher aus einer grossen matrix usw.

Ich verstehe nicht ganz warum ich die Kondensatoren brauche?

Es ist "Gute Praxis".

Die 100nF Kondensatoren filtern hochfrequente Störungen auf der Betriebsspannung heraus. Das ist Standard bei Logik ICs, vor allem wenn sie irgendwie getaktet sind. Es läuft vielleicht in Moment auch ohne, aber eventuell nicht immer.

Das sind ja ziemlich viele Informationen :sweat_smile: Ich versuch mal etwas Ordnung reinzubringen.

  1. Zu den Bildern. Bei 120 RGB - LEDs (20 Treiber) brauch ich für ein Bild 360 * 8bit (= 360 byte). Das kann ja der UNO. Jetzt stellt sich mir die frage, warum es mit dem Berechnen der Bilder Probleme geben sollte?
    Und 1,4ms um ein Bild "rauszuschicken" hört sich doch akzeptabel an oder?

  2. Zu der Stromversorgung. Wenn ich den Arduino an eine externe Stromversorgung anschließe und die LEDs wie oben auch, passt dann die Schaltung? Achja und was für eine Spannung brauch ich denn, bzw. wie wird die in diesem Fall berechnet?

  3. Nochmal zur Frage mit der Kabellänge, das Kabel von einer RGB - LED zum Treiber wird ca. 5 bis 10m sein, macht dies Probleme?

  4. Danke für die Erklärung bzgl. dem Transistor. Jetzt ist es klar! :slight_smile:

Ein großes Fragezeichen ist mir, wie ich was mit Strom versorgen soll.
De Arduino bekommt seinen Strom bspw. durch einen Komputer. Was Brauche ich nun für die Treiber und für die LEDs?
Für die LEDs brauche ich 9A. Die LEDs sind ja in Parallel geschaltet und jeder Treiber braucht 5V d.h. ich bräuchte ein Netzteil mit 12V und 9A? Ist das nicht zu viel für die Treiber?

unicum:
Das sind ja ziemlich viele Informationen :sweat_smile: Ich versuch mal etwas Ordnung reinzubringen.

  1. Zu den Bildern. Bei 120 RGB - LEDs (20 Treiber) brauch ich für ein Bild 360 * 8bit (= 360 byte). Das kann ja der UNO. Jetzt stellt sich mir die frage, warum es mit dem Berechnen der Bilder Probleme geben sollte?
    Und 1,4ms um ein Bild "rauszuschicken" hört sich doch akzeptabel an oder?

Wenn Du ein flimmerfreies Bild, das sich flüssig ändert, brauchst Du mindestens 25 bis 30 Bildwechsel pro Sekunde (FPS). Wenns mehr sind umso besser. PC-Röhrenmonitore kamen bis 75 Bildwechsel. Monitore vor allem für 3D Darstellungen mit Shutterbrille müssen 120 Bildwechsel pro Sekunde schaffen.

Wenn wir mal mit 30 FPS rechnen sind das 30 *1,4 = 42 mS für die Übertragung. Bleiben dann noch 958 für die Bildberechnung bzw Bildübertragung einer externen Quele. Bei 30 FPS sind das knapp unter 31mS pro Frame. bei 360 LED (=360Byte) darf die Bildberechnung bzw Bildübertragung nur ca 88,7µS pro LED dauern. Das sind bei 16Mhz gerade mal 1420 Takte. Nicht viel.
Übertragung von externer Quelle: (ca 108000 bit pro Sekunde).
Seriel: mit 115200 Baudrate gerade so drin.
I2C mit 400kHz: nicht zu schaffen
SPI mit 1/4 Takt: zu schaffen

unicum:
2. Zu der Stromversorgung. Wenn ich den Arduino an eine externe Stromversorgung anschließe und die LEDs wie oben auch, passt dann die Schaltung? Achja und was für eine Spannung brauch ich denn, bzw. wie wird die in diesem Fall berechnet?

Nein.
Die Masse darfst Du nicht über Arduino schleifen. (an einem GND Pin rein und am anderen GND wieder raus)
Versorge die Platine mit den WS2803 an mereren Stellen vom 5V Netzteil mit Spannung. Versorge den Arduino von dieser Platine mit Spannung. Am Arduino an GND und 5V Pin. (da darfst du aber nicht USB und 5V gleichzeitig versorgen). Wenn du den Arduino programmieren willst mußt Du die WS2803-Platine abklemmen.

unicum:
3. Nochmal zur Frage mit der Kabellänge, das Kabel von einer RGB - LED zum Treiber wird ca. 5 bis 10m sein, macht dies Probleme?

Wahrscheinlich nicht, aber Deine Geldbörse wird sich nicht freuen. Du verbaust dann sehr viel Kabel. Bei 360 LED und mittlere Distanz von 7,5m sind das 900m 4 adriges Kabel!!!. Wo führst Du das Kabel Durch? 120 4-adrige Kabel sind nicht wenig. auch bei 3 mm Durmesser sind das ein ganz schöner Kabelbaum.

Grüße Uwe

Wenn Du ein flimmerfreies Bild, das sich flüssig ändert, brauchst Du mindestens 25 bis 30 Bildwechsel pro Sekunde (FPS). Wenns mehr sind umso besser. PC-Röhrenmonitore kamen bis 75 Bildwechsel. Monitore vor allem für 3D Darstellungen mit Shutterbrille müssen 120 Bildwechsel pro Sekunde schaffen.

Wenn wir mal mit 30 FPS rechnen sind das 30 *1,4 = 42 mS für die Übertragung. Bleiben dann noch 958 für die Bildberechnung bzw Bildübertragung einer externen Quele. Bei 30 FPS sind das knapp unter 31mS pro Frame. bei 360 LED (=360Byte) darf die Bildberechnung bzw Bildübertragung nur ca 88,7µS pro LED dauern. Das sind bei 16Mhz gerade mal 1420 Takte. Nicht viel.
Übertragung von externer Quelle: (ca 108000 bit pro Sekunde).
Seriel: mit 115200 Baudrate gerade so drin.
I2C mit 400kHz: nicht zu schaffen
SPI mit 1/4 Takt: zu schaffen

Vielen Dank für diese Erklärung, jetzt ist mir einiges klarer! :slight_smile:
1420 Takte, das reicht doch nicht mal um mit einer for-Schleife alle bits neu zu setzen oder?
Wie wäre es da mit dem Arduino DUE, reicht dieser aus?

Nein.
Die Masse darfst Du nicht über Arduino schleifen. (an einem GND Pin rein und am anderen GND wieder raus)
Versorge die Platine mit den WS2803 an mereren Stellen vom 5V Netzteil mit Spannung. Versorge den Arduino von dieser Platine mit Spannung. Am Arduino an GND und 5V Pin. (da darfst du aber nicht USB und 5V gleichzeitig versorgen). Wenn du den Arduino programmieren willst mußt Du die WS2803-Platine abklemmen.

Das heißt ich brauche eine Stromquelle die den Arduino und die Treiber versorgt und eine weitere für die LEDs. Stimmt das nun so?

Das heißt ich kann für die LEDs ein 12V Netzteil nehmen mit 10A und einem 480 Ohm Wiederstand. Bspw. Folgendes 12V DC – wasserfestes Netzteil stabilisiert – 10A – 120Watt – | leds24.com

Für die Treiber und das Board brauche ich ein 5V Netzteil, was ist da zu beachten? Brauche ich da auch Wiederstände für die Treiber?

Wahrscheinlich nicht, aber Deine Geldbörse wird sich nicht freuen. Du verbaust dann sehr viel Kabel. Bei 360 LED und mittlere Distanz von 7,5m sind das 900m 4 adriges Kabel!!!. Wo führst Du das Kabel Durch? 120 4-adrige Kabel sind nicht wenig. auch bei 3 mm Durmesser sind das ein ganz schöner Kabelbaum.

Die Kabel sind leider schon verlegt. Und ja es ist ein ziemlich großer Kabelbaum. War leider alles etwas unbedacht. :frowning:

LG

Das heißt ich brauche eine Stromquelle die den Arduino und die Treiber versorgt und eine weitere für die LEDs. Stimmt das nun so?
...
Das heißt ich kann für die LEDs ein 12V Netzteil nehmen mit 10A und einem 480 Ohm Wiederstand. Bspw. Folgendes 12V DC – wasserfestes Netzteil stabilisiert – 10A – 120Watt – | leds24.com

Ich verstehe nicht wieso Du 12V für die LED brauchst. Gehen die nicht auch mit 5V?
Ok zwischen Ausgang und Masse des WS2803 dürfen maximal 1V abfallen. Da brauchst Du Vorwiderstände an den LEDs.
Bei 5V und 20mA LED-Strom sind das R = (5V-1V-Uf)/20mA. Uf ist die Spannung am LED wenn durch dieses 20mA fließen. Der Wert hängt vom Halbleitermaterial und darum von der Farbe des LED ab.

Welche LED wirst Du benutzen?

Grüße Uwe

Hallo zusammen,

ich habe mir einfach spaßeshalber folgendes bestellt.

Habe einfach mal losgelegt, den WS2803 auf ein breadbord gesteckt, ein LED Modul bzw. eine Farbe des LED - Moduls verbunden und eine Software geschrieben die, mit Hilfe des WS2803 die LED 1 Sekunde an und eine Sekunde ausschaltet.

Als Stromversorgung der LEDs habe ich ein 12V, 1A Netztteil rausgekramt, dass ich noch im Keller liegen hatte.

Das ganze Funktioniert aber nicht ganz.
Meine Aufbau sieht exakt so aus:

Wenn ich das richtig verstanden habe, ist der IREF PIn quasi die Masse des WS2803 für die LEDs?!

Nun funktioniert der Aufbau nicht ganz. Wenn ich den GND - Pin des WS2803 auf die Masse des Netzteils lege dann leuchtet die LED, sie pulsiert sogar jede Sekunde, nicht annähernd mit voller Lichtstärke. Jedoch sollte sie nicht im Sekundentakt pulsieren sondern vollständig ausgehen und dann mit voller Lichtstärke wieder angehen.
Wenn ich es exakt so mache, wie in der Zeichnung oben, passiert nichts.
Außerdem scheint es, als ob das Netzteil für die LEDs noch ziemlich lange Energie speichert, sodass wenn man es zieht, die LED weiterleuchtet. Warum?

Und eine abschließende Frage, warum wird der Kondensator parallel zum WS2803 geschaltet?

Due gieb 3,3V am output pin. Der WS2803 möchtet 0.8spannung haben um sicher sein dass est ein 1 und 0 ist. (weniger als 0,25V = 0, höher als 0.8*5V ist eine eins. Dazwischen ... ?

Ah stimmt der DUO arbeitet mit 3,3V. Hmmm heißt das, der DUO und der WS2803 sind nicht kompatibel?

Du musst einen Pegel-Wandler dazwischen machen. Das gibt es fertig:

Oder was von hier:
http://www.mikrocontroller.net/articles/Pegelwandler

3,3-V-Pegel werden bei TTL kompatiblen Eingängen richtig erkannt (Schaltschwelle 1,4 V). Es ist kein Pegelwandler erforderlich. Direkte Verbindung. Einer der großen Vorteile klassischer TTL-Technik!
...
3,3 V auf echte 5 V (CMOS) geht am einfachsten mit einem Baustein der HCT-Familie (NICHT HC!). Diese haben TTL-kompatible Eingänge und echte CMOS-Ausgänge

Unidirektional reicht hier. Da nimmt man dann nicht-invertierende Bus Puffer also z.B. einen 74HCT126 oder 74HCT367. Wie gesagt darauf achten, dass das "T" dabei steht. Die gibt es bei eBay recht billig.

Oder wie in dem Beispiel mit dem Open Collector Ausgang einen NPN + Pullup. Das kann allerdings die Schaltgeschwindigkeit herabsetzen.

Laut Datenblatt http://www.jarzebski.pl/datasheets/WS2803.pdf kanst du di WS2803 mit 3,3V treiben, dann passt es.

Ich glaube da fehlt dir die Masse/GND zwischen deine externe LED Versorgung und der Arduino Gnd/Masse, übrigens.

Der Kondensator ist da um spannungs-schwingungen auf der Vcc linje aufheben. Manchmahl wenn ein IC Kreis schaltet giebt es "spikes" ( hoch oder tief) die auf der Vcc-linje neben IC beinflüssen können. Desshalb imme ein (kleiner) Kondensator bei jedem IC, wenn man est ganz richtig machen möchte.