Hallo, Ich habe vor mir mittel eines Arduino UNO und 54 MAX7219 eine große LED-Leinwand zu bauen. Jetzt kurz beine Frage bevor ich mich in das Projekt stürtze. Wieviele MAX7219-ICs kann man denn in Reihe schalten? (also DOUT->DIN usw.) Gibt es hier einen Maximalwert? Oder gibt es eine maximale Länge für die LOAD- und CLK-Signalkabel? Was haltet Ihr von der Idee? oder kenn ihr einen einfacheren Weg für die Umsetzung? LED-Leinwand habe ich mir als 48x72 Pixel, mit 10mm LEDs und 15mm Abstand. Könnt ihr mir auch einen Empfehlung für die LEDs geben? Dachte da an LEDs mit einem Abstrahlwinkel von 40° und einer Leuchtkraft von min. 8000mcd. Vielen Dank
Wieso sollte es einen Maximalwert geben? Schau doch ins Datenblatt.
Im Datenblatt habe ich dazu eben nichts gefunden. Ich dachte hier mal nach Erfahrungswerte zu fragen. hat jemand schonmal so ein ähnliches Projekt mit MAX7219/MAX7221 und Arduino durchgezogen? Danke
http://arduino.cc/playground/Main/MAX72XXHardware If you read the datasheet for the MAX72XX you know that the drivers can be cascaded by simply connecting the signal DOut from one chip to DIn on the next chip. The signals Clk and Load(/CS) have to be connected in parallel to each MAX72XX. There is no strict limit as to how many drivers can be cascaded that way. But the SPI-interface is not capable of any error checking on the transmitted data, so you are already limited with the length of the cables that run from one MAX72XX to the next one. If your cables get longer than 10cm between each MAX72XX you might already run into trouble.
Der MAX7219 liefert im Mittel nur 5mA an eine LED. Schau erst mal, ob dir deine LEDs bei diesem geringen Strom überhaupt hell genug sind, bevor da tausende von Euros sinnlos versenkst. > Wieviele MAX7219-ICs kann man denn in Reihe schalten? Hängt von der Taktrate ab. Ein einzelner Chip kann 10MHz Takt, 10 in Reihe nur noch 2MHz, du musst die 25ns SetUpSeit von DI gegenüber CLK einhalten, obwohl DO erst 25ns nach DI stabil ist. > Was haltet Ihr von der Idee? So ein endloses Schieberegister erlaubt keine schnellen Bildwechsel. Besser nur wenige in Reihe schalten, und so viele wie möglich parallel, z.B. 8 an ein Ausgangsport des uC, dann können 8 bit pro CLK auf ein mal übertragen werden und die Software muß sich nicht um Bitfummelei kümmern.
10cm ist aber nicht viel. Ich bräuchte 20cm. So ein Mist, schon das erste Problem... Oder ich setze alle MAX7219 ziemlich nebeneinander, dann ich die Kabellänge zu den LEDs größer. Danke für die Hilfestellung
MaWin schrieb: > Der MAX7219 liefert im Mittel nur 5mA an eine LED. > > Schau erst mal, ob dir deine LEDs bei diesem geringen Strom überhaupt > hell genug sind, bevor da tausende von Euros sinnlos versenkst. > >> Wieviele MAX7219-ICs kann man denn in Reihe schalten? > > Hängt von der Taktrate ab. Ein einzelner Chip kann 10MHz Takt, 10 in > Reihe nur noch 2MHz, du musst die 25ns SetUpSeit von DI gegenüber CLK > einhalten, obwohl DO erst 25ns nach DI stabil ist. > >> Was haltet Ihr von der Idee? > > So ein endloses Schieberegister erlaubt keine schnellen Bildwechsel. > > Besser nur wenige in Reihe schalten, und so viele wie möglich parallel, > z.B. 8 an ein Ausgangsport des uC, dann können 8 bit pro CLK auf ein mal > übertragen werden und die Software muß sich nicht um Bitfummelei > kümmern. Hallo MaWin, Da ich bei dem Arduino UNO nur 14 Ausgänge habe, werde ich damit dann wohl ein Problem bekommen oder? da ich bei 54 MAX7219 7 * 3(DI, LOAD, CLK) = 21 Ausgänge bräuchte. Oder sehe ich das Falsch? Sorry so tief bin ich in dem Thema dann doch nicht.
&KUNZderkann'z schrieb: > hast du ueberhaupt schon mal eine LED mit 7219 zum leuchten gebracht ? Nein, aber 3 Pins an dem Arduino einzuschließen, die 3 Pins zum MAX7219 zu führen ung deine Matrix aus LEDs zu Löten sollte jetzt nicht das große Problem sein. Oder meinst du ich würde solche Fragen stellen wenn überhaupt keine Ahnung von der Materie hat? Bestellt sind die ersten Teile, damit ich klein anfangen kann. Wenn ich aber dann 4 MAX7219 inkl. LEDs verlötet habe und sehe, dass das ganze funktioniert. Dann fange ich mit dem großen bestellen an und nichts funktioniert, dann frag ich doch lieber vorher nach. Da hat mir die Antwort von MaWin schon weiter gebracht.
und 8000 mcd bei 40 Grad wirst du auch nicht finden. Die mit >10000 mcd erreichen diesen Wert nur, weil sie sehr stark fokussiert sind (10-15 Grad). Zu den Schieberegistern: Wenn die Länge des Schieberegisters ein Problem ist, kannst du auch parallel erweitern. 8 bit parallel auf 8 Schieberegister wie oben erwähnt ist schon mal eine gute Idee. Mehr Bit parallel geht mit Port-Expander, das sind Latches, die die Portbits adressierbar speichern. So haben früher die ersten Prozessoren ihren Speicher angesprochen, da ging es um 65535x8 bit, die mit 8 Leitungen bedient wurden (plus ein paar Steuerleitungen). Natürlich wird es nicht schneller, wenn man erst x Latches und y Schieberegister bedienen muss, um seine LEDs zu ändern, aber da kommst du nicht dran vorbei. Eine Alternative wäre mehrere (einfache) Controller, der eine ist der Master, und die andern kümmern sich um die Massen von LEDs. So läuft es ja auch in der Politik :-)
Wäre es dann Möglich, wenn ich einen Arduino Mega 2560 (http://arduino.cc/en/Main/ArduinoBoardMega2560) nehmen würde, der hätte 54 Ausgänge. Dann könnte ich mit dem MAX7219 8 in Reihe schalten und 6 Parallel und hätte so eine Matrix von 64x48. Das mit dem MAX7219 und einem Arduino kam mir halt als einfachste Lösung vor. Die Programmierung scheint einfach und der Lötaufwand sollte auch zu erledigen sein. Danke für eure super Unterstützung
Hier der Link zu den LEDs die ich gefunden habe. http://www.ledtech-shop.de/Standard-LEDs/LED-10mm-ultrahell/LED-Rot-ultrahell-10mm-8000mcd-40-Grad-50-Stueck--159.html
> Da ich bei dem Arduino UNO nur 14 Ausgänge habe, werde ich damit dann > wohl ein Problem bekommen oder? da ich bei 54 MAX7219 7 * 3(DI, LOAD, > CLK) = 21 Ausgänge bräuchte. Oder sehe ich das Falsch? Wozu die LOAD und CLK Eingänge einzeln zum uC führen ? Das muß man doch nur mit den DI Eingängen machen. Also sind bei 13 Ausgängen 11 parallel möglich, so daß man nur noch je 5 in Reihe schalten muss und 'nur noch' 80 bits 8 mal in alle 11 parallel reinschreiben muss um ein Bild zu laden, also 640 Takte.
MaWin schrieb: > Wozu die LOAD und CLK Eingänge einzeln zum uC führen ? > Das muß man doch nur mit den DI Eingängen machen. Laut LedControl-Libary müssen für 8 MAX7219 imme runterschiedliche Pins verwendet werden. http://arduino.cc/playground/Main/LedControl
Christian schrieb: > Laut LedControl-Libary müssen für 8 MAX7219 imme runterschiedliche Pins > verwendet werden. Das ist zwar zutreffend, heisst aber nix anderes als dass die Library für den Zweck ungeeignet ist. Für die Verwendung getrennter Ketten von MAX7219 musst du eben den Code selber schreiben. Tip: wenn du LOAD und CLK gemeinsam verwendest, musst du natürlich die Daten an alle Ketten gleichzeitig (in derselben Routine) ausgeben. Wenn du das nicht schaffst, brauchst du eben 3mal soviele Pins. So ist das Programmiererleben. Gruss Reinhard
MaWin schrieb: > Hängt von der Taktrate ab. Ein einzelner Chip kann 10MHz Takt, 10 in > Reihe nur noch 2MHz Das ist Unsinn. Schieberegister kann man unendlich kaskadieren. Der maximale Takt bleibt exakt der gleiche wie bei einem IC. Es ist immer eine volle Taktperiode Zeit für das Signal von DOUT des einen zum DIN des nächsten. Allerdings kann die kapazitive Last der gemeinsamen Takt- und Latchleitungen etwas hoch werden. Daher ist es sinnvoll, z.B. alle 10 ICs die 3 Signale zu treiben (74HC04). Die Datenleitung auch, damit die Delays gleich sind. Peter
Die Informationen muss ich jetzt erstmal sammeln ;) Weiß jemand ob ich aus dem MAX mehr als 5mA pro LED heraus holen kann, da die LEDs bis 20mA gehen? Oder hat jemand eine Idee, was ich für LEDs nehmen soll, sollte halt ziemlich hell alles sein, dass man es auch noch in 100m Entfernung erkennen kann. Ich dachte die 10mm LEDs mit 8500mcd hätten das geschafft. Hat da jemand Erfahrungswerte? Danke
> Schieberegister kann man unendlich kaskadieren. Das ist grober Unsinn. Da die CLK-Leitung bei allen parallel ist, die Daten jedoch daisy-chain'd, kommen die Daten ab einem bestimmten IC nicht mehr mit der nötigen setuptime an, wenn man zu schnell taktet. |<-- 50ns -->| +---+ +---+ +---+ +---+ +---+ DATA --| |--| |--| |--| |--| |-- +---+ +---+ +---+ +---+ +---+ | | | | | CLK -----+------+------+------+------+---- Man könnte auch die CLK-Leitungen verzögern, das kostet aber extra Bauteile (ein Gatter pro MAX7219 bzw. eine Delay-Line mit genügend taps, oder ein Verzögerungsglied alle xxx MAX7219. +---+ +---+ +---+ +---+ +---+ DATA --| |--| |--| |--| |--| |-- +---+ +---+ +---+ +---+ +---+ | | | | | CLK -----+--|>--+--|>--+--|>--+--|>--+----
MaWin schrieb: > Da die CLK-Leitung bei allen parallel ist, > die Daten jedoch daisy-chain'd, > kommen die Daten ab einem bestimmten IC > nicht mehr mit der nötigen setuptime an, > wenn man zu schnell taktet. Ein Schieberegister hat keine "daisy-chain". Es schiebt mit jedem Taktzyklus genau ein Bit weiter. Jeder IC syncronisiert sich neu auf den Takt. Das Eingangsbit erscheint daher erst nach 16 Takten am Ausgang. Wann das Bit 16 Takte zuvor mal anlag interessiert den folgenden IC nicht mehr. Der Ausgang ist 25ns nach der 1-0 Flanke gültig, der Eingang muß 25ns vor der 0-1 Flanke anliegen. Paßt also ganz genau zu der Low-Dauer von 50ns und zu der 100ns Periode (= 10MHz). Mal Dir einfach mal ein Schieberegister aus D-FFs (74HC74) auf. Ob 2 FFs oder 1000, die Maximalfrequenz ist genau gleich. Peter
> Ein Schieberegister hat keine "daisy-chain".
Stimmt. Datenblatt fehlinterpretiert.
Die arduinos haben doch so einen ftdi Chip drauf, der eine serielle Schnittstelle emuliert, oder? Da bekommt man doch maximal 250 kBaud durch. Bei 3456 leds mit je 256 Graustufen sind das ca. 3,5s pro Frame. Da isses egal, wie schnell die Daten in die Chips kommen, wenn es Ewigkeiten braucht die in den Controller zu laden. Irgendwie hab ich schon als ich den Thread angeklickt habe an Totgeburt gedacht. Ich lassemich aber auch gern eines besseren belehren. Ich hätte echt keine Lust so viele Leds zusammenzulöten. Ums verecken nicht.
54 Maexe 34567 Leds Jung,da wirste alt ! Haste schon ein NT ?
D. S. schrieb: > Die arduinos haben doch so einen ftdi Chip drauf, der eine serielle > Schnittstelle emuliert, oder? > Da bekommt man doch maximal 250 kBaud durch. Bei 3456 leds mit je 256 > Graustufen sind das ca. 3,5s pro Frame. Da isses egal, wie schnell die > Daten in die Chips kommen, wenn es Ewigkeiten braucht die in den > Controller zu laden. > Irgendwie hab ich schon als ich den Thread angeklickt habe an Totgeburt > gedacht. Ich lassemich aber auch gern eines besseren belehren. > > Ich hätte echt keine Lust so viele Leds zusammenzulöten. Ums verecken > nicht. Wer braucht denn schon Graustufen ;), soweit habe ich noch nicht gedacht. Wobei ich keine 256 Graustufen benötige, mir würden auch 8 reichen. Habe mich aber noch nicht informiert, wie ich Graustufen darstelle. &KUNZderkann'z schrieb: > 54 Maexe 34567 Leds > Jung,da wirste alt ! > Haste schon ein NT ? NT kann so vie bedeuten ;) Keine Angst es sind nur 3456 (ohne 7). Außerdem habe ich nicht vor alles alleine zu löten.
MaWin schrieb: >> Ein Schieberegister hat keine "daisy-chain". > > Stimmt. Datenblatt fehlinterpretiert. Kann mir bitte, nach dem ganzen hin und her, mal jemand erklären was und wie das jetzt funktioniert. Kann ich jetzt alle MAXs hintereinander kaskatieren oder ist es doch sinnvoller immer nur 8-10 auf einen Ausgang zu legen. Danke
Christian schrieb: > Weiß jemand ob ich aus dem MAX mehr als 5mA pro LED heraus holen kann, > > da die LEDs bis 20mA gehen? Aus dem Datenblatt: "The MAX7219/MAX7221’s maximum recommended segment current is 40mA."
Christian schrieb: >> Weiß jemand ob ich aus dem MAX mehr als 5mA pro LED heraus holen kann, >> da die LEDs bis 20mA gehen? Aus dem MAX7219 nicht, aber mit externen Treiber geht es: http://www.maxim-ic.com/app-notes/index.mvp/id/1196 Gruss Uwe
> Aus dem Datenblatt: "The MAX7219/MAX7221’s maximum > recommended segment current is 40mA." Ja ... , was genau hast du am Datenblatt nicht verstanden ?
MaWin schrieb: >> Aus dem Datenblatt: "The MAX7219/MAX7221’s maximum> recommended segment current is 40mA."Ja ... , was genau hast du am Datenblatt nicht verstanden ? Ich habe das Datenblatt sehr gut verstanden, aber DU hast es jetzt schon zum zweiten mal nicht verstanden. an TO: Eine günstigere Alternative und Baugleich zum MAX7219 ist der AS1107. http://de.rs-online.com/web/p/led-driver/6691510/?searchTerm=AS1107&relevancy-data=636F3D3226696E3D4931384E4B6E6F776E41734D504E266C753D6465266D6D3D6D61746368616C6C7061727469616C26706D3D5E5C772B2426706F3D313326736E3D592673743D4D414E5F504152545F4E554D424552267573743D4153313130372677633D424F544826
&KUNZderkann'z schrieb: > der ist aber nicht 'cascadable' sondern 'daisy chain' Quatsch. Der ist genauso aufgebaut wie der MAX7219/7221. Auch wenn im Datenblatt bei der Pinbeschreibung Daisy Chain steht, heißt das noch lange nicht das es auch das ist was man im landläufigen Sinne als Daisy Chain versteht. Um als "Daisy Chain" durchzugehen fehlt eine wichtige Voraussetzung: "Wichtig ist bei dieser Verschaltung der Komponenten, dass Prioritäten vergeben werden können. Somit kann festgelegt werden, dass Informationen zum Beispiel nur dann übermittelt werden können, wenn die Leitung frei ist, oder dass einige Komponenten unbedingten Vorrang gegenüber anderen haben. Dadurch lassen sich Konflikte und Fehlfunktionen verhindern."
was haltet ihr von dieser Schaltung um den Strom an den LEDs zu erhöhen. http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1212882269/13#13
wenn du pro Segment nur EINE Diode hast brauchst du die Schaltung nicht. Der 7219 liefert genug Strom.
> wenn du pro Segment nur EINE Diode hast brauchst du die > Schaltung nicht. Der 7219 liefert genug Strom. Hirnie. Natürlich hat er 8. 3456 54 8 Also nur 1/8 des Stroms. Was ... nicht alles tut, um von seinem Unvermögen abzulenken.
MaWin schrieb: > Hirnie. > Natürlich hat er 8. > 3456 54 8 > Also nur 1/8 des Stroms. > Was ... nicht alles tut, um von seinem Unvermögen abzulenken. Ach MaWin, je oller desto doller? Ich empfehle dir Fielmann für ne neue Brille, damit du die Threads und Datenblätter wieder genau lesen kannst.
> Ich empfehle
Was ... nicht alles tut, um von seinem Unvermögen abzulenken.
MaWin schrieb: >> Ich empfehle > > Was ... nicht alles tut, um von seinem Unvermögen abzulenken. Du wiederholst dich. Alzheimer?
Kaum schaut man mal kurz nicht hin schon streiten die ersten ... Auseinander ;) Könnten wir bitte wieder sachlich bleiben. Hat sich jemand mal die Schaltung angeschaut? http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1212882269/13#13 Wenn ich die gleiche Spannung am MAX7219 und am UDN2981. brauch ich dann überhaupt noch ULN2803 und den Inverter? Gibts Inverter die 8 Ein- und Ausgänge haben. Das würde die Fummelei auf der Platine erleichtern. Sind bei dieser Schaltung dann noch "Graustufen" möglich? Danke
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.