PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 400 LED's über Mega48 mit Matrixschaltung ansteuern



Michael 123
26.02.2008, 19:37
Hallo,

nun ist es esndlich soweit, dass ich für meine Modellbahn das Stellpult baue.
Auf dem Stellpult werden ca. 400 Leds untergebracht. Nun muss ich diese alle ansteuern. Dabei habe ich mich schon ein bisschen im Netz erkundigt. Und habe rausgefunden, dass ich diese am kostengünstigsten über eine Matrix ansteuern kann. Dazu habe ich mir gedacht, dass ich den Port vom Mega mit den ICs MOS 4094 erweitere. (Ich möchte diese nehmen, da ich schon viel mit denen gearbeitet habe und ich mit diesen am besten zurchtkomme) 3 Stück für die Spalten und 3 Stück für die Zeilen. An die Zeilen 4094er dachte ich gehe ich noch mit jeweils einem ULN2801 als Negativer Treiber. An die Spalten IC habe ich gedacht kommen BD535 (mein persönlicher Standarttransistor). Nun könnte ich die 400Leds leuchten lassen. Das problem ist nur: Wie schaffe ich es möglichst schnell, wenn dabei auch noch der µC über uart Daten empfangen muss? Vielleicht Tips oder so.

Ach ja: Die LEDs müssen nicht mit voller Lichstärker leuchten.

mfg
Michael

deSilva
26.02.2008, 22:01
Da Du Dich ja im Internet schon mal umgeguckt hast, ist Dir sicherlich auch aufgefallen, dass Du der 65535-te bist, der so etwas bastelt :-)

Meist wird der (HC)595 genommen, o.ä. Es reichen natürlich 5 davon, Du musst die Matrix ja nicht auf Chipgrenzen verdrahten - die LEDs können ja zum Glück nicht gucken ...

Die beiden Probleme sind Strom und Helligkeiten.
Jede - sahen wir mal - Zeile wird mit 1/20 der Zeit gemultiplexed, d.h. die LEDs leichten mit 1/20 ihrer normalen Helligkeit.. Du musst da also "Besonders Helle" nehmen, was nicht mehr so billig ist (20 Cents/Stück = 80 Euro) Nehmen wir mal an, Du steuerst sie jetzt mit Pulsen von 100mA an, dann fließen im Mittel 5mA dadurch.

Im "worst case" müssen nun 20 leichten = 2 A.. 1/3 davon kriegst Du wohl gerade noch durch ein ULN....

Ok.

Wenn Du mit 100 Herz "refreshed", dann musst Du 40 Bit*100 = 4 kHz ausgeben... das sollte ein 8 bit Rechner auch noch schaffen...

stefan_Z
26.02.2008, 22:29
Ansonsten nimm einen speziellen Treiber. Der TLC5920 von TI treibt 16 LEDs plus 8 Spalten. Mit 4 davon kannst du die 400 LEDs sauber treiben und dir die Widerstände sparen, weil der Chip Konstantstrom von 0 bis 80 mA pro Ausgang liefert (einstellbar)

deSilva
26.02.2008, 23:13
Ja, da habe ich auch schon Schaltungen mit gesehen - gute Teile! Nicht teuer, aber schwer zu kriegen - und im 48-SSOP Gehäuse :-)

Das 3. Problem, das ich oben vergessen hatte, ist die HeligkeitsVERTEILUNG. Wenn man ohne StromRESERVE arbeitet, dann werden Zeilen, in denen gerade viele LEDs an sind, dunkler und Zeilen mit nur einer LED ordentlich hell.. Das sieht sch... aus!

Über die Widerstände äußere ich mich nicht, da habe ich ganz offensicht hier im Forum eine Minderheitenmeinung :-)

stefan_Z
26.02.2008, 23:19
Wenn dir das Gehäuse nicht liegt, nimm den LTC5940 - den gibts als DIP.
Der kann allerdings keine Spalten schalten - dafür lassen sich Strom und PWM super einstellen.

Die Helligkeitsverteilung ist mit den ICs kein Thema, die machen das super. Bei Selbstbau muss man einfach genug Reserve haben. Ich hatte da aber auch noch keine Probleme.

Widerstände kann man THEORETISCH weglassen, aber das halte ich für keine gute Idee.
Was ist denn deine Minderheitsmeinung?

Michael 123
27.02.2008, 15:13
Hallo,


Wenn dir das Gehäuse nicht liegt, nimm den LTC5940 - den gibts als DIP.


Bis du dir sicher das der LTC5940 heißt und nicht anderes? Goggle spuckt mir dazu nur irgendwelche Ziffernlisten aus, keine Datenblätter oder ähnlich.

Zum Rest: Ich habe heute noch mal nachgedacht: Wenn ich statt dem Mega48 einen Mega162 nehme, bei dem für die Zeilensteuerung die Ports A, B und C nehme und die Spalten über die MOS4094 ansteuere, dann käme ich, wenn ich pro Spalte 1ms brauche auf eine dauer von 17ms. Wenn ich es schaffe die Zeit pro Spalte zu halbieren habe ich eine Zeit bis "LED1" wider angesteuert wird von 8,5ms. Das würde dann einer Frequenz von 117Hz entsprechen. Was wiederum, wenn man dem Netz glauben kann, optimal wäre.

Ach ja: Es macht eigentlich nicht viel, wenn die LED1 heller als die LED 200 ist, da diese quer über das Pult verteilt sind. bzw. auch auf der Modellbahnanlage verteilt.

mfg
Michael

stefan_Z
27.02.2008, 15:19
Oh sorry, freudscher Vertipper!
LTCxx ist Linear, TLCxx ist Texas Instruments ;-)
TLC5940 heißt das gute Stück. http://focus.ti.com/lit/ds/symlink/tlc5940.pdf
Code zum Ansteuern gibts auch schon, da darf ich vielleicht auf das LED-Styles Forum verweisen:
http://www.ledstyles.de/viewtopic.php?t=3773&highlight=tlc5940

stefan_Z
27.02.2008, 15:22
Von der Geschwindigkeit her kannst du das auch alles ohne viele Einzelpins machen. ein Tiny2313 plus Schieberegister auf 20MHz kann das sicher noch viel schneller als 117Hz.

Michael 123
27.02.2008, 15:28
Naja ich hab grad nochmal mit dem bascom simulator und nem 16mhz quarz mit dem mega48 gerechnet: 3333Hz also 3,3kHz sollte reichen :-)
@stefan_Z: Wenn ich den nehme kann ich ja auch gleich den MOS 4094 nehmen.

mfg
Michael

stefan_Z
27.02.2008, 15:36
Ja, klar, der Chip bietet halt noch weitere praktische Funktionen. Alleine Der Konstatstrom der da raus kommt ist ungemein nützlich. Das zentrale einstellen des Stroms auch. Aber mit Schieberegister u.Ä. gehts natürlich auch.