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
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