Hallo, ich weiß, es gibt hier sehr viele Artikel zu diesem Thema und ich habe sie Alle gelesen. Ich möchte eine 16x16 LED-Matrix bauen mit ultrahellen blauen LEDs (d.h. 3,5V Flussspannung) und habe zwei Spannungen (5V und 12V) zur Verfügung. Im Anhang habe ich einen Schaltplan angehängt und möchte einfach wissen, ob ich grobe Fehler gemacht habe und dies so funktionieren würde. Oder ob ihr Vebesserungsvorschläge habt. Zur Schaltung: Links ist der USBasp von fischl zu sehen, der dann fest mit dem ATMega32 verbunden sein soll. Frage: Da ich den SPI bereits für die Schieberegister nutze, bin ich den AVR Hardware Design Considerations gefolgt und habe die SPI Leitungen vom Programmer zu den Registern über Widerstände "abgeschirmt". http://www.atmel.com/dyn/resources/prod_documents/doc2521.pdf auf Seite 5 Würde dies so funktionieren? Der Mega32 dann steuert eine selbstgebaute 16x16 LED-Matrix im Spaltenmultiplex 16:1. Die Zeilentreiber sind UDN2981, da hier bei Spaltenmultiplex ja immer nur eine LED pro Treiberstufe zu versorgen ist. Der Pulsstrom für die LEDs ist hier auf 100mA eingestellt mittels eines 68 Ohm Vorwiderstands bei 12V Betriebsspannung für die Zeilentreiber. Dabei wurde ein Spannungsabfall an den Treibern und FETS von 2V einkalkuliert. Als Schieberegister wurden die 74HC595 verwendet, wobei hier 2 davon kaskadiert wurden. Der Spaltenmultiplex ist realisiert über einen 74HC161 einen synchronen 4Bit Binärzähler, der seine "Zahl" ausgibt an den 74HC4514 einen nicht invertierenden Demultiplexer 4-16. Am Enable des Demux hängt ein Inverter, damit, wenn der Pin noch auf Low steht auch wirklich keine Spalte ausgewählt ist. (denn im Datenblatt ist ein High am Enableeingang zum Low setzen der 16 Ausgänge gefordert) Die Verwendung des 74HC4514 soll gewährleisten, dass wirklich auch immer nur eine Spalte auf Masse gezogen ist, sodass die Zeilentreiber nicht zerstört werden. Jeder Kanal des Demux steuert dann einen n-Channel Logic Level MOSFET (IRLD024). So braucht man immer nur ein Taktpuls erzeugen, um die nächste Spalte auf Masse zu schalten. Problem 1: Da der IRLD024 ein LL-MOSFET ist, schaltet der ja schon bei TTL High Pegel voll durch.=> Sperrt dieser auch wirklich bei einem Low Pegel vom Demux ? (Im Datenblatt sind 1,35V Max für Low angegeben.) Problem 2: Kann ich die Ausgänge von HCMOS ICs direkt an Eingänge eines entsprechenden, anderen ICs hängen? Bei den FETs ist jeweils ein 100k Widerstand von Gate zu Masse (Source) eingeplant, um das Gate wieder entladen zu können. Bei vielen Schaltungen habe ich gesehen, dass dieser fehlt. Problem 3: Ist dieser evtl. zu groß? Vorstellbar ist, dass es ab einer bestimmten Frequenz problematisch werden könnte und sich das Gate nicht schnell genug wieder entladen kann. Ließe sich evtl. berechnen. (man kennt ja die e-Funktion, Spannung am Kondensator) Problem 4: Da oft nicht verwendet (siehe oben), kann ich den Gatewiderstand weglassen? Vielen vielen Dank für die Geduld beim Lesen des Texts. Ich wäre für Hinweise dankbar und Verbesserungen dankbar. Einen schönen Abend noch. Fabian
@ Fabian (Gast) > schaltplanmatrix.png > 196,6 KB, 13 Downloads Du solltest die Auflösung beim Export am besten auf 1000dpi stellen, dan kann soger ein Blinder deinen Schaltplan lesen . . . >Im Anhang habe ich einen Schaltplan angehängt und möchte einfach wissen, >ob ich grobe Fehler gemacht habe und dies so funktionieren würde. Nein. Dein UDN schlcukt ca. 1,5V, bleiben nur noch ~3,5V Ausgangsspannung. Zu wenig für blaue 3,3V LEDs und den Vorwiderstand. >Der Mega32 dann steuert eine selbstgebaute 16x16 LED-Matrix im >Spaltenmultiplex 16:1. Sollte man auf 2x 8:1 verändern, 16:1 macht schon arg hohe Pulsströme. Ausserdem mögen die blauen LEDs das sowieso nicht besonders. >Der Pulsstrom für die LEDs ist hier auf 100mA eingestellt mittels eines >68 Ohm Vorwiderstands bei 12V Betriebsspannung für die Zeilentreiber. Nöö, deine Zeilentreiber hängen an 5V. >Dabei wurde ein Spannungsabfall an den Treibern und FETS von 2V >einkalkuliert. Das passt. >Der Spaltenmultiplex ist realisiert über einen 74HC161 einen synchronen >4Bit Binärzähler, der seine "Zahl" ausgibt Wozu? Das kann der AVR direkt. >Die Verwendung des 74HC4514 soll gewährleisten, dass wirklich auch immer >nur eine Spalte auf Masse gezogen ist, sodass die Zeilentreiber nicht >zerstört werden. Das kann man auch sauber programmieren, ohne extra IC. >Sperrt dieser auch wirklich bei einem Low Pegel vom Demux ? Ja. >(Im Datenblatt sind 1,35V Max für Low angegeben.) Man nimmt heute sowieso nur noch HC oder HCT Typen. >Kann ich die Ausgänge von HCMOS ICs direkt an Eingänge eines >entsprechenden, anderen ICs hängen? Ja. >Bei den FETs ist jeweils ein 100k Widerstand von Gate zu Masse (Source) >eingeplant, um das Gate wieder entladen zu können. Das ist ein Pull-Down, der den FET sicher sperren soll, wenn der ansteuernde Pin vom uC im Reset als Eingang geschaltet ist. >Problem 3: Ist dieser evtl. zu groß? Nein. >Vorstellbar ist, dass es ab einer bestimmten Frequenz problematisch >werden könnte und sich das Gate nicht schnell genug wieder entladen >kann. Das macht der ansteuernde IC selber. >Problem 4: Da oft nicht verwendet (siehe oben), kann ich den >Gatewiderstand weglassen? Hier schon, da der V1 keine Tristateausgänge hat. >Ich wäre für Hinweise dankbar und Verbesserungen dankbar. Siehe LED-Matrix MFG Falk
@Falk Ok...zugegeben war beim Export die Auflösung etwas groß... Die ULN2981 sollen an 12V hängen, habe ich da evtl. falsch eingezeichnet. Dann ist der Spannungsabfall ja nicht weiter schlimm. Über den Pulsstrom habe ich mir ebenfalls Gedanken gemacht. Blöd ist nur, dass ich die LEDs bei Ebay ersteigert habe und der Händler keine Angaben dazu machen kann und er auch keinen Hersteller angibt. Um die LEDs nicht zu gefährden und in Anbetracht der Tatsache, dass ich keinerlei Angabe zum Pulsstrom habe, werde ich wohl deinem Rat folgen. Vielen Dank nochmal für deine Mühe. Fabian
Hi, möchte noch kurz etwas zum Thema "blaue LEDs und Muliplexing" sagen: Habe mir für eine 12x12 Matrix auch relativ günstige blaue diffuse LEDs geholt. Nach meiner Erfahrung ist das Multiplexing mit 1:16 tatsächlich zu wenig. Da wird Dir eine Menge Helligkeit verlorengehen und das kannst Du auch mit den hohen Impulsströmen nicht ausgleichen. Habe deswegen meine Matrix von 12x12 auf 6x24 Ansteuerung geändert, dass muss man dann eben in der Software ausgleichen. Ciao... Markus
@Markus Danke für den Hinweis. Nun in meinem Fall sind es superhelle blaue LEDs mit 24000mcd. Habe ein wenig herumgespielt und getestet und festgestellt, dass sie auch noch bei 5mA Dauerstrom noch sehr hell leuchten. Denke mal, dass ich das Ganze "offen" gestalte, sodass man das Verhältnis noch in SW ändern kann. Vielen Dank nochmal. Gruß Fabian
@ Fabian (Gast) >Denke mal, dass ich das Ganze "offen" gestalte, sodass man das >Verhältnis noch in SW ändern kann. Geht nicht, denn dann musst du deine Hardware ändern. MFG Falk
Also bei Verwendung von nochmals 2 Schieberegistern für die Spalten sollte das doch möglich sein... Dann wird eben nur 10000000:10000000 gesendet und dann jeweils nach 7 CLKs wiederholt. So hätte ich dann ein 8:1 Spaltenmultiplex, da jeweils 2 Spalten gleichzeitig aktiv wären. Sende ich 10000000:00000000 und warte 15 CLKs und wiederhole, hätte ich doch dann den alten 16:1 Spaltenmultiplex. Oder? So müsste es doch möglich sein, das Ganze "offen" zu gestalten? Gruß Fabian
@Fabian (Gast) >So müsste es doch möglich sein, das Ganze "offen" zu gestalten? Ja. Aber vergiss den externen Zähler und auch deinen 16:1 MUX. Denn der hat u.a. das Problem, dass IMMER ein Ausgang aktiv ist. Wenn du deinen AVR progammierst, und das dauert eineige Dutzend Sekunden, verglühen die LEDs dieser Spalte. Nimm statt dessen zwei 74HC138, das sind 8:1 MUXe mit Enable Eingang. MFG Falk
Bin ich vorhin drüber gestolpert. Vielleicht interessiert es dich ja: http://separaterealities.com/projects/acceled_pong/ Gruß
So...hab mich mal kurzerhand angemeldet. Vielen Dank Falk für die Bestätigung. Natürlich würde ich dann den Zähler und den 16:1 Mux weglassen. > Aber vergiss den externen Zähler und auch deinen 16:1 MUX. Denn der hat > u.a. das Problem, dass IMMER ein Ausgang aktiv ist. Wenn du deinen AVR > progammierst, und das dauert eineige Dutzend Sekunden, verglühen die > LEDs dieser Spalte. Um dieses Problem zu entgehen, hatte ich ja einen Inverter an den EN gehängt. siehe: >(denn im Datenblatt ist ein High am Enableeingang des 74HC4514 > zum Low setzen der 16 Ausgänge gefordert) Ich werde dann mal einen aktualisierten Schaltplan in angemessener Auflösung hochladen. Könnte für Andere hilfreich sein. Eine allerletze Frage: Weiß Jemand zufällig, ob die Ausgänge vom 74HC595 Tristated sind? (bezieht sich darauf, da dann ja wieder die Pull-Down Widerstand an den MOSFETs nötig sind) @Lazlo Eine schöne Sache. Allerdings soll das hier in ein Gehäuse fest eingebaut werden (in ein Computergehäuse) und da wäre ein Beschleunigungssensor wenig hilfreich. ;-) Es sei denn man will Bodybuilding betreiben... Gruß Fabian
Da ich den obigen Beitrag nicht editieren konnte. Nachtrag: Der 74HC138 ist doch invertierend. Wir wollen doch aber das Gegenteil. Dann doch eher der 74HC238, wenn ich richtig sehe...
@ Fabian W. (fabwil10) >> progammierst, und das dauert eineige Dutzend Sekunden, verglühen die >> LEDs dieser Spalte. >Um dieses Problem zu entgehen, hatte ich ja einen Inverter an den EN >gehängt. Ahhhh, gar nicht gesehen. Der Pin ist aber auch nicht beschriftet! Der Inverter ist unnötig und für das Problem wirkungslos. Man muss einen Pull-Up oder Pull-Down Widerstand verwenden, welcher die MUX deaktiviert, wenn der AVR programmiert wird. >Ich werde dann mal einen aktualisierten Schaltplan in angemessener >Auflösung hochladen. Könnte für Andere hilfreich sein. Wäre von Vorteil. >Eine allerletze Frage: Weiß Jemand zufällig, ob die Ausgänge vom 74HC595 >Tristated sind? Das Datenblatt? MFG Falk
> Ahhhh, gar nicht gesehen. Der Pin ist aber auch nicht beschriftet! > Der Inverter ist unnötig und für das Problem wirkungslos. Man muss einen > Pull-Up oder Pull-Down Widerstand verwenden, welcher die MUX > deaktiviert, wenn der AVR programmiert wird. Ups. Vielen Dank für den Hinweis. Habe nicht an die Möglicgkeit gedacht, dass die AVR Pins beim Programmieren ja tristated sind... Das hätte wahrscheinlich ne böse Überraschung gegeben. btw: Wenn ich die Enable Leitungen dann mit Pull-down beschalte, muss ich mich dann eigentlich noch um die SPI Leitungen kümmern, die ja vom AVR an den Programmer und an die Register gehen? (siehe AVR Design Considerations) http://www.atmel.com/dyn/resources/prod_documents/doc2521.pdf auf Seite 5 >In case other devices than >the AVR is connected to the ISP lines the programmer must be protected >from any >device, other than the AVR, that may try to drive the lines. This is >specially important >with the SPI bus, as it is similar to the ISP interface. Applying series >resistors on the >SPI lines, as depicted in Figure 4-2, is the easiest way of doing this Grüße Fabian
Hi, nochetwas zum Thema Helligkeit: Am besten Du baust einmal eine kleine Versuchsschaltung auf, wo Du eine LED mal mit 1:16 Tastverhältnis bei der geplanten PWM Rate und dem entsprechenden Vorwiderstand ansteuerst. Da kannst Du dann ja sehen, ob die Helligkeit Deinen Ansprüchen genügt, bevor Du die Schaltung komplett baust. Ciao... Markus
Hi, hatte ich auch vor gehabt;-) Wäre auch etwas nervig wenn sich herausstellt, dass man nur deswegen nichts sieht, weil die LED entweder durchgebrannt sind oder zuwenig Strom bei dem geplanten Dutycycle bekommen... Gruße Fabian
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.