8 X 40 LED Panel mit Maxim 7219 2m X 0,4m und jede menge Fragen

Hallo liebe Community!

Hab vor einiger Zeit mein Großprojekt Dauerbaustelle im Wohnzimmer begonnen wo ich nun langsam zum Bereich Elektronik komme. Bei meinem Projekt handelt es sich in erster Linie um eine Trockenbauwand mit diversen Extras. Zu diesen Extras soll nun auch ein LED-Panel gehören. Zum besseren Verständnis hier mal was zum gucken.


Dieses Panel soll in Zukunft Zeit, Datum und Text anzeigen. Momentan wird es noch monocrom mit grünen Standard-LEDs gebaut. Für 320 RGB-LEDs fehlt mir denn doch das nötige Kleingeld.
Für das Multiplexing verwende ich 5 Maxim 7219 welche ich nach meinen bisherigen Recherchen parallel schalten werde. Jedes 8 X 8 Display-Segment bekommt einen Max für Zeilen und Spalten. Soweit die Theorie.

Nun mal zu meiner ersten Frage:
Theoretisch liefert ja mein Arduino maximal 1A, ich werd aber das Gefühl nicht los das das nicht reichen wird bei der Menge an LEDs. Hab zwar bis jetzt überall gelesen das der Max ohne Widerstände und Transistoren auskommt, nur befürchte ich, das die Helligkeit den Bach runtergeht, sobald mehr Strom gefordert wird als vorhanden. Im Extremfall würden ja alle 320 LEDs leuchten und das ergibt nach meiner Rechnung einen Wert von 0,02 X 320 = 6,4A. Ist es möglich mit dem Max Transistoren zu schalten welche mir dann den nötigen Strom für die LEDs liefern? Gut wenn ich mal das bis her gelesene rekapituliere, sollte der Max die Reihen nacheinander durchschalten, demzufolge wären dann 8 LEDs mit einmal im Höchstfall an, also 160 mA. Warscheinlich stimmen beide Überlegungen nicht, weil ich noch irgendwas nicht richtig verstanden habe.

Für den Anfang sollte das erstmal reichen. Bis diese Frage nicht geklärt ist, glaube ich nicht das ich die Max schon auf die Platte bringen sollte.

Ich bedanke mich schon mal im Voraus bei allen die mir mir Rat und Tat zu Seite stehen, meine Freundin wirds auch danken wenn das Wohnzimmer nicht mehr wie ne Baustelle aussieht.

LG aus Berlin
Daniel

Nun mal zu meiner ersten Frage:
Theoretisch liefert ja mein Arduino maximal 1A, ich werd aber das Gefühl nicht los das das nicht reichen wird bei der Menge an LEDs. Hab zwar bis jetzt überall gelesen das der Max ohne Widerstände und Transistoren auskommt, nur befürchte ich, das die Helligkeit den Bach runtergeht, sobald mehr Strom gefordert wird als vorhanden. Im Extremfall würden ja alle 320 LEDs leuchten und das ergibt nach meiner Rechnung einen Wert von 0,02 X 320 = 6,4A. Ist es möglich mit dem Max Transistoren zu schalten welche mir dann den nötigen Strom für die LEDs liefern? Gut wenn ich mal das bis her gelesene rekapituliere, sollte der Max die Reihen nacheinander durchschalten, demzufolge wären dann 8 LEDs mit einmal im Höchstfall an, also 160 mA. Warscheinlich stimmen beide Überlegungen nicht, weil ich noch irgendwas nicht richtig verstanden habe.

Jeder MAX schaltet max. 8 LEDs auf einmal und brauchst 5 MAX also ergibt sich der Maximalstrom I = 20mA * 8 * 5 = 800mA

Du musst aber beachten das du durch das Multiplexen an Helligkeit verlierst. Jede LED leuchtet ja nur 1/8 der Zeit.(Duty Cycle)
Deswegen könntest du den Strom(20mA) vervielfachen, ohne dabei den LEDs zu schaden. Wieviel du den Strom erhöhen darfst musst du aus dem Datenblatt entnehmen. Dort ist aber meistens nur der " Peak Forward Current" für "Duty Cycle = 1/10" angegeben, deswegen muss man(n) da ein wenig schätzen.

Grüße,
J3RE

Hallo J3RE

OK, also 800 mA, das schafft der Arduino. Nur 1/8 an Leuchtkraft is dann für dieses Projekt wohl zu wenig. Ich bräuchte da schon die volle Leuchtkraft. Somit müßte ich den Strom um Faktor 8 erhöhen, 8 X 0,8 A = 6,4 A. Der Arduino bringt soviel mit Sicherheit nicht und der Max wird sich hierbei wohl auch verabschieden.
Aber schonmal Danke, langsam versteh ich das Funktionsprinzip des Multipelxings.

hi,

wenn Du eigentlich farbe willst, schau mal nach den ws2812, die haben das schieberegister für 3x1bit schon eingebaut. Du sparst Dir das multiplexing, alles leuchtet mit voller helligkeit, und strom ist auch kein problem, der arduino schiebt ja nur daten raus. 500 stück kosten etwa 70 euro. ich find die dinger grenzgenial und hab mir jetzt mal welche bestellt, kann also über das ansteuern noch nichts sagen, aber es gibt schon beispiele im netz.

gruß stefan

Theoretisch liefert ja mein Arduino maximal 1A, ich werd aber das Gefühl nicht los das das nicht reichen wird bei der Menge an LEDs.

Ich weiß nicht was DEIN Arduino liefern kann; die Arduinos, die ich kenne können das nicht. Bei denen ist bei ca 450mA Schluß.

Der MAX7219 vermag maximal 40 mA pro LED geben (320mA total), Aber Glaube mir 5mA sind schon fast zu hell (wenn nicht gerade die Sonne draufscheint).
Der MAX7219 kann auch die Helligkeit aller LEDs in 16 Schritten regeln.

Du brauchst ein 5V Netzteil zu 8x5 ILED (Ich weiß nicht welchen LED-Strom Du nun einstellst). (200mA bei 5mA LED-Strom, 800mA bei 20mA und 1,6 bei 40mA). Dieses Netzteil versorgt direkt die MAX7219 und wenn Du willst auch den Arduino am 5V Pin. Bei Verschiedenen Netzteilen Masse zusammengeschaltet.

Für das Multiplexing verwende ich 5 Maxim 7219 welche ich nach meinen bisherigen Recherchen parallel schalten werde. Jedes 8 X 8 Display-Segment bekommt einen Max für Zeilen und Spalten. Soweit die Theorie.

Die MAX7219 werden nicht paralell geschaltet sondern in Serie.

Arduino Ausgang -> Din MAX7219 A
Dout MAX7219 A -> Din MAX7219 B
Dout MAX7219 B -> Din MAX7219 C usw

LOAD und CLK aller MAX7219 werden paralell geschaltet bzw angesteuert.
Es werden immer die Daten aller 5 MAX7219 übertragen.

Dieses Panel soll in Zukunft Zeit, Datum und Text anzeigen. Momentan wird es noch monocrom mit grünen Standard-LEDs gebaut. Für 320 RGB-LEDs fehlt mir denn doch das nötige Kleingeld.

RGB-LED können nicht mehr mit dem MAX 7219 angesteuert werden da mit diesen ICs nur 8 Farben möglich sind. Für RGB LED ist das einfachste Du nimmst 5 Rainbowduinis und verlötest die RGB-LEDs wie die 8x8 RGB-Matrix.

Grüße Uwe

Eisebaer:
hi,

wenn Du eigentlich farbe willst, schau mal nach den ws2812, die haben das schieberegister für 3x1bit schon eingebaut. Du sparst Dir das multiplexing, alles leuchtet mit voller helligkeit, und strom ist auch kein problem, der arduino schiebt ja nur daten raus. 500 stück kosten etwa 70 euro. ich find die dinger grenzgenial und hab mir jetzt mal welche bestellt, kann also über das ansteuern noch nichts sagen, aber es gibt schon beispiele im netz.

gruß stefan

Ich finde die WS2812 auch genial. Der einzigen Nachteil ist daß sie 5x5mm SMD-LEDs sind und Du darum Dir eine Platine selbst bauen mußt.
Stefan Du mußt nur noch sagen wo Du 500 um 70€ gefunden hast; ich hab sie für 164€ gefunden.
Ansonsten kannst Du einen LED-Strip kaufen und auseinanderschneiden; da brauchst Du dann keine Platine bauen: http://www.ebay.de/itm/4m-240-RGB-LED-Strip-WS2812-5050-SMD-LEDs-integriertem-WS2811-Controller-/350695271467?pt=Bauteile&hash=item51a7112c2b

Grüße Uwe

hi, uwe,

ich find das platinenmachen lustig (und kann trotzdem keine datenblätter lesen...), deswegen vergeß ich immer...

die adresse hab' ich in der firma, ich schreib' sie morgen hier rein.
doch gefunden:

dort haben leute vom mikrocontroller.net schon bestellt, dorther hab ich den link.

gruß stefan

Danke Stefan.
Wenn die WS2812 als "5050 SMD RGB LED with built-in WS2811 IC " beschreiben werden (was sie auch sind) ist es schwer den WS2812 zu finden.
Grüße Uwe

jaja, immer das gleiche: zu faul zum selber googeln, und dann noch ausreden... :stuck_out_tongue:

aber im ernst. sag mir bitte, wenn Du bestellen willst, vielleicht häng' ich mich an, oder ich bestelle, und Du...

ich hab' jetzt mal einen 2meter-streifen mit 120 ws2812 bestellt, weil ich an schaltung und code nicht gleichzeitig herumbasteln will. davon kann ich gern ein stück nach bozen schicken, vollkommen uneigennützig, ich hab' nämlich sicher kein problem beim coden mit dem vermaledeiten timing des 2811 (ich wüßte nicht wirklich, was ich da auf elektronischer seite mache, und würde schnipsel aus dem netz ausprobieren).
wenn ich da schon mal was funktionierendes hätte...

gruß stefan

Danke Stefan, Hab gestern abend selbst 1m davon bestellt.
Grüße Uwe

Auf die Gefahr hin das es Offtopic wird, die WS2812 klingen lecker.
Verstehe ich das richtig, dass die Dinger als Schieberegister arbeiten, also die ersten 3x8 bit gehen von AVR in Din erster WS, werden dann weitergereicht über Dout1 an Din2, wenn Din1 die nächsten Daten bekommt usw?

Danke

Dirk

dischneider:
Auf die Gefahr hin das es Offtopic wird, die WS2812 klingen lecker.
Verstehe ich das richtig, dass die Dinger als Schieberegister arbeiten, also die ersten 3x8 bit gehen von AVR in Din erster WS, werden dann weitergereicht über Dout1 an Din2, wenn Din1 die nächsten Daten bekommt usw?

DankeDirk

http://www.nooelec.com/files/WS2811.pdf Seite 4
Nicht ganz, ich habe verstanden, daß die ersten 24 Bit im ersten Chip bleiben und die nachfolgenden von Do an Din des nächsten Ws2811/12 weitergereicht werden.
Die Sequenz fängt mit einem Reset an (min 50µS LOW) gefolgt von den Daten wobei mittellanger Impuls und mittellange Pause High ist (1,2µS und 1,3µS) bzw kurzer Impuls und lange Pause Low ist (0,5µS und 2µS) alle Zeiten mit +/-0,15µS Tolleranz. In High Speed Modus halbieren sich die Zeiten von H und L. Der Modus wird über das Pin SET eingestellt.
Die FastSPI Bibliothek müßte den Baustein ansteuern können. Google Code Archive - Long-term storage for Google Code Project Hosting.

Grüße Uwe

hi,

beim 2812er kann man den modus nicht verstellen, das SET-pin vom ws2811 ist nicht herausgeführt. warum, kann ich mir nicht erklären, weil am 2812 ja noch ein pin frei wäre. so läuft er immer mit 800Kbps.

gruß stefan

Danke an Uwe,

hab das heute noch mal in Ruhe gelesen und auch so verstanden, dass die ersten 24 Bit / 3 Byte im ersten WS281x bleiben, die nächsten im zweiten usw.
Früher hab ich halt Schieberegister mal anders gelernt.
Muss mir mal so einen Meter mit 60 Stück zum Spielen holen ... machen sich bestimmt genial als Statusanzeigen für verschiedene Sachen.

Dirk

dischneider:
Früher hab ich halt Schieberegister mal anders gelernt.

Dirk, bei den Schieberegistern ist es immernoch so. Du schiebst 1 Bit hinein unadam Ende kommt ein Dit heraus. Um alle Bits herauszuschieben (neue Daten einzugeben) müßen genausoviele Bits hineingeschoben werden wie das/die Schieberegister lang ist/sind.

Grüße Uwe

Muss mir auch mal ein paar Stück von diesen genialen Teilen zulegen. :wink:

Wenn ich das richtig verstehe könnte man beliebig viele WS2812 in Serie schalten oder?
Man muss halt berücksichtigen dass, das "shiften" der Bits/Bytes eine gewisse Zeit benötigt und mit der Anzahl an WS2812 zunimmt.
Wie lange benötigt die FastSPI Library um ein Byte "rauszushiften"?

Grüße,
J3RE

Nicht beliebig viele da man laut Datenblatt bei einer gegebenen "Bildwiederholrate" von 30 fps und gegebener Zykluszeit/Resetzeit (2,5µs pro Bit und 50µs) bei 512 LED Schluß ist. Wenn Du weniger Auffrischungen pro Sekunde des Farbwertes akzeptieren kannst dann dann kannst Du auch mehr WS2811/12 in Reihe schalten.

Wie lange benötigt die FastSPI Library um ein Byte "rauszushiften"?
Hab keine Erfahrung und kann es Dir nicht beantworten. Laut Beschreibung ist sie:
"support for the ws2811 chipset"

Grüße Uwe

uwefed:
Nicht beliebig viele da man laut Datenblatt bei einer gegebenen "Bildwiederholrate" von 30 fps und gegebener Zykluszeit/Resetzeit (2,5µs pro Bit und 50µs) bei 512 LED Schluß ist. Wenn Du weniger Auffrischungen pro Sekunde des Farbwertes akzeptieren kannst dann dann kannst Du auch mehr WS2811/12 in Reihe schalten.

Vielen Dank.

512 RGB-LEDs mit 2 Pins ansteuern, das hört sich gut an. :smiley:

J3RE:

uwefed:
Nicht beliebig viele da man laut Datenblatt bei einer gegebenen "Bildwiederholrate" von 30 fps und gegebener Zykluszeit/Resetzeit (2,5µs pro Bit und 50µs) bei 512 LED Schluß ist. Wenn Du weniger Auffrischungen pro Sekunde des Farbwertes akzeptieren kannst dann dann kannst Du auch mehr WS2811/12 in Reihe schalten.

Vielen Dank.

512 RGB-LEDs mit 2 Pins ansteuern, das hört sich gut an. :smiley:

Mit 1 Pin. ZB der WS2801 braucht 2 (Takt und Daten).
Grüße Uwe

uwefed:
Mit 1 Pin. ZB der WS2801 braucht 2 (Takt und Daten).

Achja, stimmt. Ich habe gedacht der SET-Pin wird auch benötigt.

Somit könnte man ja ganze Hauswände mit RGB-LEDs bestücken und mit einem Arduino steuern (ohne viel Zubehör). :wink:
Wenn es möglich ist einen vernünftigen Code für so viele LEDs zu schreiben, welcher auf einen ATmega328 oder ähnliches läuft.