PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mux/Demux LED flimmern



uC-Anfänger
02.02.2010, 16:30
Hallo,

in meiner Schaltung übertrage ich 32 Informationen (low) per Mux auf eine Info.-Leitungen und per Demux (74HC4067) auf 32 LED's. Für die Selektion der Kanäle habe ich einen Dezimal-/Hex-Zähler (74HC93) verwendet.
Die Steuerung erfolgt über einen Atmega32. Die Schaltung und das Programm funktionieren.

Nun das "aber". Das jede LED nur kurzen einen Impuls bekommt, flackert sie bei niedrigem Takt und bei hohem Takt leuchtet sie nur schwach.
Als Verbesserung habe einen Transitor als Treiber mit einem Kondensator auf die Basis verwendet. Quasi als Stützkondensator, der die Basis des Transisors länger offen hält als der Impils dauert.

Gibt es eine bessere Lösung?

Danke vorab für Eure Vorschläge.

Gruß
Dietmar

Jaecko
02.02.2010, 16:40
Wie viel Strom bekommt denn die LED?
Ich machs beim Multiplexen immer so, dass die LEDs nicht "nur" die üblichen 20mA kriegen sondern mehr. So 80-100 mA für die im Datenblatt angegebene Zeit gehen da problemlos. Da gibts die Stelle wo's in etwa heisst "Peak Current: 120mA", da dann noch ne Bemerkung mit 1/10 Duty Cycle und Taktzeit 1µs; also 0,1µs kurz leuchten lassen, dann 0,9µs aus zum "Abkühlen".
Da gibts dann auch keine Probleme mit der Helligkeit mehr.

Problem nur: Wenn die Weiterschaltung versagt und die LED länger leuchtet, ist die ziemlich schnell Asche.

askazo
02.02.2010, 17:04
Du könntest auch für jede LED ein FlipFlop einsetzen.
Das synchrone Rücksetzen kann dann evtl. der Zähler übernehmen.

Gruß,
askazo

Besserwessi
02.02.2010, 18:19
Beim Multiplexte 1:32 hat man mit LEDs oft ein helligkeitsproblem, denn der maximale Pulsstrom liegt oft nur beim etwa 10 fachen des Dauerstromes. Die Idee mit dem Spaicher ist also schon nicht schlecht, Je nachdem wie das mit den Kondensatoren und Transstoren gelöst ist, kann das auch eine gute Lösung sein.

Wenn man die LEDs nur an/Aus braucht, also keine unterschiedliche Helligkeit, könnte man Schieberegister ("Porterweiterung) verwenden, ggf, auch mit nur 2 Leitungen.
Ein andere Alternative wäre ein I2C Interfache und dann ein µC auf der Seite mit den LEDs.

uC-Anfänger
03.02.2010, 09:29
Vielen Dank für Eure Antworten.

Zur Antwort von Jaecko:
Die LED'a sind sog. low current 2 mA. Ich betreibe sie bei 5 V. Das Datenblatt gibt bei "Peak Forward Current - 1/10 Duty Cycle, 0.1ms Pulse Width" 150 mA an. Damit wäre ich mit gemessenen 4 mA wohl auf der sicheren Seite, auch mit dem Stützkondensator (1 µF) und dem Transistor.
Dies ist ein PNP, da der Ausgang des Demux ein negatives Signal als Information liefert. Als Vorwiderstand für die LED verwende ich 806 Ohm.

Ein Ausfallen der Weiterschaltung dürfte es eigentlich nicht geben. Sobald Spannung an der Schaltung anliegt pulst der µC.

Was meint eigentlich der Begriff "DC Forward Current" im Datenblatt?

Zur Antwort von Akazo:
An den Einsatz eines Flip-Flops hatte ich auch gedacht, dann wird die Steuerung für das zeitgerechte Zurücksetzen aber komplizierter.

Zur Antwort von Besserwessi:
Ja, ich brauche nur an/aus.
Meine erste Idee war Schieberegister 74HC165 für Leitungsabfrage und 74HC595 für die Anzeige zu verwenden. Da sie mit SPI vom µC gesteuert
werden müssen habe ich gepasst. Ich habe kein Oszi und denke, dass ich das Programm für SPI ohne nicht zum Laufen bringe.

In den Begriff I2C lese ich mich gerade ein. Ist das einfacher zu steuern als SPI? Wenn ich den Bus richtig verstanden habe, könnte ich mit einem Takt von 0,5 sec. ein Flimmern der LED's verhindern. Die Geschwindigkeit würde mir auch genügen.