Sehr grosse LED-Matrix zu steuern durch AVR(s)

  • Guten Tag,


    wie steuert man eigentlich eine wirklich grosse LED-Matrix über einen oder mehrere AVRs?


    Ich habe vor, eine Anzeigenwand zu realisieren, die aus 8 (logischen) Zeilen zu 40 Zeichen bestehen soll.


    Ein Zeichen besteht aus 5 physikalischen Spalten (+ 1 für den Abstand) x 9 physikalischen Zeilen, also aus 54 LEDs. Damit hab ich insgesamt 72 physikalische Zeilen x 239 Spalten, im Total also 17208 LEDs.


    Wie geht man hier vor? Nimmt man hier einen Master-AVR, der 8 Slaves kontrolliert, die jeweils eine logische Zeile zu 9 physikalischen Zeilen multiplexen? Schaff ich das mit einem AVR, die 239 Muster anzulegen zu 100 Hz? Kann der AVR die Ströme ab oder rauchen mir die Dinger ab?


    Logisches Zeichen:

    Code
    --X---
    -X-X--
    X---X-
    X---X-
    XXXXX-
    X---X-
    X---X-
    ------
    ------


    40 x nebeneinander und 8 x untereinander.


    Besten Dank im voraus!

  • Das hängt ein wenig von den genauen Anforderungen ab. Reicht an und aus, oder soll noch z.B. PWM realisiert werden?

    Zitat

    Kann der AVR die Ströme ab oder rauchen mir die Dinger ab?


    Welche Ströme? Wenn du LEDs direkt aus dem AVR versorgen willst, dann verabschiede dich lieber schnell von dem Gedanken


    Was sich relativ einfach machen lässt ist viele Schieberegister aneinanderzuhängen. Die Dinger gibts bis einige 100MHz schnell, müssen also nur schnell genug gefüttert werden. ;) Praktischerweise gibt es die auch schon als 9-bitter zu kaufen. (allerdings lange nicht so preiswert wie 8-bitter)
    9*6*40 macht 2160 Bits pro Zeile, bei 100Hz ohne Dimmen also 216kHz Ausgangstakt für die Daten + 100Hz Output enable (in wirklichkeit würde man naürlich versuchen die register mit maximalem takt zu füllen.). Wenn du das mit Bascom, general IO pin toggeln und wait() oder sonem Käse machen willst wird das sicher nichts. Mit einem halbwegs vernünfigen Programm (Shift register an Hardware SPI port, spi und timer interrupts nutzen) sollte noch Luft nach oben sein.
    Solltest du jeden Pixel noch dimmen wollen wird es etwas knapper, da bietet sich eher ein flinker controller oder programmierbare Logik an.
    Was du dann als master nimmst musst du mal gucken. Mit einem kleinen 8bit AVR wird es da knapp werden. Der muss ja deine einkommenden Daten empfangen, evtl. bearbeiten, (RAM!) und an die anderen controller verschicken.


    Insgesamt ein ziemlich aufwändiger und teuere Spaß, vielleicht kommen wir ja noch auf eine bessere Idee. ^^

  • Da kannst Du eigentlich nur ein fertiges Matrix-System nehmen. So etwas gibt es mit verschiedenen Abständen der LEDs. Wichtig ist der Betrachtungsabstand. Je weiter weg das ist, um so größer kann der LED-Abstand sein.


    Ich nehme an, dass es eine Anzeigetafel sein soll. Aber so etwas macht man auch nicht unbedingt auf die Zeilen/Spalten fest, denn auf einer Matrix kann man (fast) beliebig skalieren. Die Ansteuerung erfolgt über einen Controller vom PC aus oder auch per SD-Karte, je nach Anforderung. Ein kleines Kraftwerk braucht man für die LEDs aber trotzdem ...


    Hier mal ein paar Bilder. Dabei sind die ersten beiden mit jeweils 1m x 1m Matrix, die anderen klein mit ca. 20x30cm.



  • Och, man kann das schon selbst machen. Man muss sich nur sehr gut überlegen ob es einem die Arbeit wert ist. Je nach Ausstattung bedeutet das erstmal ein paar Wochenenden stupideste Bestückungsarbeiten.
    Ich denke ich würde das nicht wollen. ^^

  • Man kann solche Module preisgünstig vom Chinesen des geringsten Misstrauens fix & fertig kaufen.


    Wenn es um ein Einzelstück geht, also lediglich eine einzige Anzeige dieser Art, dann ist der Aufwand bis zum befriedigenden Produkt natürlich unverhältnismäßig. Es sei denn, Du siehst das rein als Hobby und als "learning by doing Projekt".
    Wenn Du unbedingt selbst bauen willst:


    • Zunächst mal die LEDs auswählen, damit Klarheit über die Ströme besteht.
    • Weiterhin überlegen, ob An/Aus reicht, oder ob Du auch Graustufen darstellen willst (wäre höherer Aufwand).
    • Fertigungstoleranzen bedenken! Billige LEDs sind nicht selektiert, leuchten also unterschiedlich hell, was bei solchen Anzeigen störend auffällt. Um diesem Problem zu begegnen, gibt es spezielle Treiber-ICs mit sog. "Dot-correction".
    • Überlegen, ob (bei reinem An/Aus-Betrieb) Multiplexing tolerierbar ist. Gemultiplexte Anzeigen flimmern, sofern man es nicht schafft, die Frequenzen sehr hoch zu pushen. Ich habe festgestellt, dass ich Blinkfrequenzen bei LEDs bis 1kHz deutlich wahrnehme! Sogar bis 3kHz ist da noch so ein Gefühl von "das ist nicht dauerhaft an", das mich stört.

    Nach diesen Eckdaten kann man sich Gedanken über den Lastteil und seine Ansteuerung machen.


    Bedenke aber auch das Thema Funkstörung! Wenn man den Aufwand in Grenzen halten will, dann stören solche Anzeigen heftig (u.a.) im Radio.
    Solche eine Anzeige kann also nicht gerade in einem Krankenhaus zum Einsatz kommen oder so ...
    Will man die Funkstörungen weg haben, wächst der Aufwand deutlich.


    Auch einen guten Überspannungsschutz vorsehen. Ich hatte hier mal 'nen Schwung chinesischer Videowand-Module zur Raparatur, bei denen alle Nase lang ICs und auch LEDs abgeraucht sind. Als Überltäter hatte ich Überspannungsimpulse ausgemacht, die mit dem versorgenden Schaltnetzteil und eventuell der Leitungsinduktivität zusammen hängen. Wenn hohe Ströme schnell geschaltet werden, können halt solche Effekte auftreten, denen man begegnen muss.
    Dennoch kann immer mal 'ne LED ausfallen; der Austausch sollte später also nicht durch verlöteten Sandwich-Aufbau erheblich erschwert sein, wie es bei meinen China-Modulen der Fall war.


    Ist halt auch ein Unterschied, ob Du die Anzeige einfach im Wohnzimmer aufhängen möchtest, um Dich am "ich-habe-gebaut-Gefühl" zu erfreuen, oder ob Du damit einen Kunden beliefern willst, der Dir das Ding am Ende um die Ohren haut, wenn er Probs hat.


    Mit der Ansteuerung von LEDs fängt wohl jeder Elektroniker an und es stellen sich auch rasche Erfolgserlebnisse ein, solange es rein um die nackte Funktion und um bloßes An/Aus geht, bei 'nem ultrasimplen Lauflicht.
    Aber eine größere Menge LEDs vernünftig anzusteuern, ohne das es flimmert, ohne dass der Radioempfang gestört wird, ohne das sichtbare Helligkeitsunterschiede nerven, ohne das 'ne ausgefallene LED das ganze System lahm legt - das ist eine ganz andere Schuhnummer!
    Der Aufwand wächst plötzlich gewaltig!
    Und dann kommen die Chinesen daher und bieten fertige Module zum Tasch***dpreis an, die zwar in jeder Beziehung Schrott sind, die einen jedoch in heftige Argumentationsnöte beim Kunden bringen, wenn man ihm ein vernünftiges System nur zu einem zehnfachen Preis anbieten kann (und selbst dabei noch nicht angemessen dran verdient).


    Definiere also zunächst klarer Deine konkrete Aufgabenstellung, dann können wir weiter sehen.

  • Vielen herzlichen Dank an alle Antwortenden für die hochwertigen Beiträge! Ich versuche alles Angesprochene zu beantworten.




    mdave:


    > Was sich relativ einfach machen lässt ist viele Schieberegister aneinanderzuhängen.


    Mit Schieberegistern habe ich schon gearbeitet, allerdings nur mit 7 Stück 74HC595 für 56 Bit. Was bedeutet denn "viele"?


    > Wenn du das mit Bascom, general IO pin toggeln und wait() oder sonem Käse machen willst wird das sicher nichts.


    Ich programmiere die AVRs in Assembler.


    > Solltest du jeden Pixel noch dimmen wollen


    Nein, ein/aus reicht, nur die Zeichen sollen dargestellt werden.




    turi:


    > Ich nehme an, dass es eine Anzeigetafel sein soll. Aber so etwas macht man auch nicht unbedingt auf die Zeilen/Spalten fest, denn auf einer Matrix kann man (fast) beliebig skalieren.


    Ja, eine Anzeigetafel für Text. Natürlich kann man die Tafel auch rein physikalisch betrachten, dann wären es 72 Zeilen x 200 Spalten. Der verfügbare Platz beträgt H 310 mm und B 1000 mm, d.h. pro "Pixel" bleiben mir 4 mm.


    Auf dem letzten Bild 1011325.jpg das oberste Modul, wieviele LED sind denn da drauf?


    > Die Ansteuerung erfolgt über einen Controller vom PC aus oder auch per SD-Karte, je nach Anforderung.


    Vom PC aus wäre natürlich extrem wünschenswert, aber vielleicht sollte ich das besser als ein späteres Folgeprojekt in Angriff nehmen. Mit was für Controllern hast du gute Erfahrungen gemacht?


    > Ein kleines Kraftwerk braucht man für die LEDs aber trotzdem


    Ja leider. Bei 14400 LEDs mit einem durchschnittlichen Zeilenfüllgrad von 75% und ca. 30-40% Zeichenfüllgrad komm ich bei 20 mA 5 V LEDs auf etwa 432 W. Low Current LEDs könnten helfen, aber dann wird es vermutlich so richtig teuer.




    Irrlicht


    > Man kann solche Module preisgünstig vom Chinesen des geringsten Misstrauens fix & fertig kaufen.


    Mir fehlen da die Quellen. Ich denke aber, dass die nicht nur ein einziges massgeschneidertes Stück anfertigen zu einem bezahlbaren Preis, oder irre ich mich da?


    > Zunächst mal die LEDs auswählen, damit Klarheit über die Ströme besteht.


    Am liebsten natürlich niedrigstromige, aber irgendwie bezahlbar muss das schon bleiben. Die "Pixelgrösse" ist mit max. 4 mm festgelegt.


    > Weiterhin überlegen, ob An/Aus reicht, oder ob Du auch Graustufen darstellen willst (wäre höherer Aufwand).


    An/Aus reicht vollkommen.


    > Fertigungstoleranzen bedenken! Billige LEDs sind nicht selektiert, leuchten also unterschiedlich hell, was bei solchen Anzeigen störend auffällt. Um diesem Problem zu begegnen, gibt es spezielle Treiber-ICs mit sog. "Dot-correction".


    Oh, daran hätte ich jetzt nicht gedacht. Wie steuern diese ICs denn die Helligkeit? Und braucht man da nicht unüberschaubar viele? Ich werd mich auf jeden Fall da mal einlesen.


    > Überlegen, ob (bei reinem An/Aus-Betrieb) Multiplexing tolerierbar ist. [...] Sogar bis 3kHz ist da noch so ein Gefühl von "das ist nicht dauerhaft an", das mich stört.


    Ich bin auch nicht unbedingt ein Freund des Multiplexens. Eine Lösung mit Schieberegistern ziehe ich schon vor.


    > Bedenke aber auch das Thema Funkstörung! Wenn man den Aufwand in Grenzen halten will, dann stören solche Anzeigen heftig (u.a.) im Radio. Solche eine Anzeige kann also nicht gerade in einem Krankenhaus zum Einsatz kommen oder so. Will man die Funkstörungen weg haben, wächst der Aufwand deutlich.


    Noch ein "oh", auch an die Funkstörung hab ich nicht gedacht. Die Anzeigetafel kommt bei mir zuhause zum Einsatz, wo aber durchaus auch Radio gehört wird. Auf welche Distanz kann sich die Funkstörung so eines Teils denn auswirken? Ansonsten auch hier: ich werde mich entsprechend einlesen.


    > Dennoch kann immer mal 'ne LED ausfallen; der Austausch sollte später also nicht durch verlöteten Sandwich-Aufbau erheblich erschwert sein, wie es bei meinen China-Modulen der Fall war.


    Besten Dank für den Hinweis, werd ich im Design dann berücksichtigen und entsprechend Reserven bereithalten!


    > der ob Du damit einen Kunden beliefern willst, der Dir das Ding am Ende um die Ohren haut, wenn er Probs hat.


    Ist schon für mich, werde mich dann nur über mich selber ärgern müssen ;)

  • Ok, also was ich derzeit habe ist bis zu einem Pixelabstand von 1cm hinunter. Es gibt zwar auch noch etwas darunter, aber der Preis steigt natürlich auch mit der Zahl der Pixel und wenn man schon ein paar Meter Abstand hat, hat man schon ein 1cm eine mehr als gute Auflösung.


    Die dargestellten kleinen Panels sind ca. 22x30cm groß. Das heißt, man müsste 5 Stück davon nehmen und man hat 660 Pixel x 5 = 3300. Der einfachere SD-Karten-Controller kann bis 4096 Pixel, würde also sogar passen.

  • Ich nehme mal an, da steht der Spaß am Basteln im Vordergrund...? - So Anzeigetafeln gibt es in Schiinaa zu nem Preis, für den Du unmöglich selbst basteln kannst, wenngleich wohl auch nicht exakt in den von Dir gewünschten Maßen...


    Mit Schieberegistern habe ich schon gearbeitet, allerdings nur mit 7 Stück 74HC595 für 56 Bit. Was bedeutet denn "viele"?

    gehe davon aus, da war schon gemeint multiplexen, aber mit SR als Portwerweiterungen - natürlich kann man auch die LEDs direkt an SR hängen, dann flimmert auch absolut gar nix, man muss nur pro Bild einmal die neuen Daten rein schieben, wird dann "statisch" angezeigt.


    Da brauchst Du halt bei 17.208 LEDs dann 2.151 8-Bit-SR... ;)


    Ich programmiere die AVRs in Assembler.

    Das ist schon mal gut!


    Oh, daran hätte ich jetzt nicht gedacht. Wie steuern diese ICs denn die Helligkeit? Und braucht man da nicht unüberschaubar viele? Ich werd mich auf jeden Fall da mal einlesen.

    Unterschiedlich - das sind halt Matrix-Treiber-ICs (von TI, Maxim, ...) die genau für sowas gedacht sind, also 8x8 oder 16x16 LEDs anzusteuern, machen das auch per Multiplexen, Dot-Correction über PWM oder Einstellung des Stroms für die LEDs...


    ich persönlich würde, statt 17.208 LEDs zu verlöten (da wird man ja blöde! :D ) solche fertigen Module nehmen - die sind genau für sowas gemacht, ca. 1 Euro pro 8x8 LEDs ist wohl sogar günstiger als einzelne LEDs, und nen Haufen Arbeit gespart. Sind genau 4 mm Pitch, zwar zweifarbig, aber Du musst ja nicht beide Farben nutzen...


    Du bräuchtest da dann 9x30 = 270 solcher Module - sind dann halt 240 Spalten statt 239...


    Da würde ich immer 3x3 = 9 solcher Module zusammen mit den Treiber-ICS auf ne Platine 96x96 mm packen, insg. 30 solcher Module nahtlos aneinander reihen. Sowas in der Art gibt's auch schon fertig zum unschlagbaren Preis, wobei die sich halt leider nicht in alle Richtungen beliebig anreihen lassen (irgendwo im Netz findet sich aber bestimmt auch sowas...)


    Die eigentlichen LED-Module auf Stecksockel, dann lassen sie sich auch ganz leicht tauschen, falls doch mal ne LED kaputt gehen sollte.


    Zur Ansteuerung dann vorne ein AVR dran, der die Daten rein schiebt - ich würde da sogar das ganze Bild im RAM vorhalten, sind ja nur 2.151 Byte - zum Text erzeugen die Buchstaben-Bitmaps aus dem Flash an die entsprechenden Stellen im RAM kopieren, Du kannst dann auch noch mit einfachen Algorithmen einfache Grafiken (Linien, Rechtecke, Kreise, ...) erzeugen, dann das komplette Bitmap auf die Module schieben... das muss nicht 100x pro Sekunde sein, nur wenn sich was ändert, das Multiplexen machen die Module ja selbst...


    z.B. so ein Board vorne dran, das hat auch nen USB-Anschluß, da kannst Du ganz simpel vom PC aus (im einfachsten Fall Texte in's Terminal eintippen) steuern, was das Ding anzeigen soll...

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!