Forum: Mikrocontroller und Digitale Elektronik LED-Matrix mit AVR und TLC5940: inaktive LEDs glimmen


von Heiko B. (arthur_d)


Angehängte Dateien:

Lesenswert?

Hallo,

ich versuche aus LED-Matrix die Variante "Multiplexansteuerung mit 
Special-ICs" nachzubauen: 2 Zeilen x 55 Spalten, die Zeilen werden per 
IRF7401 geschaltet, die Spalten per TLC5940, Zeilenfrequenz: 1kHz. 
Ansteuerung über einen ATMega 168, der mit 16MHz läuft.

Prinzipiell funktioniert auch alles (incl. Grayscale PWM des TLC5940), 
allerdings glimmen bei mir inaktive LEDs einer Zeile, wenn die 
zugehörige LED in der anderen Zeile aktiv ist. Zur Fehlersuche habe ich 
meine Schaltung auf den angehängten Schaltplan reduziert. LED_ROW0_COL0 
soll leuchten und LED_ROW1_COL0 soll aus bleiben. LED_ROW0_COL0 leuchtet 
auch wie gewünscht, allerdings ist LED_ROW1_COL0 nicht komplett aus, 
sondern glimmt leicht.

Ich hab schon an dem Timing herumgespielt (bis zu 1024 nops nach dem 
Abschalten der Zeilentreiber), aber LED_ROW1_COL0 glimmt munter weiter 
vor sich hin.
Mir gehen jetzt die guten Ideen aus, woher das Glimmen kommen kann :-(
Habt ihr noch Tipps, was ich untersuchen kann? Leider beschränkt sich 
mein Messgeräte-Equipment auf ein Multimeter und einen simplen 
Parallelport-Logic-Analyzer.

Nun noch ein paar erklärende Worte zu Schaltung und Programm:

Die Schaltung folgt dem LED-Matrix Artikel, verwendet statt dem TLC5921 
aber einen TLC5940. Das zusätzliche GSCLK-Signal für die PWM der 
Konstantstromsenken erzeuge ich mit dem timer/counter 2 des AVR. Die IRF 
7401 Mosfets zum Schalten der Zeilen steuere ich über einen ICL 7667 an.

Die ganze Schaltung läuft mit 5V. Wenn ich mich mit den Datenblättern 
nicht vertan habe, müssten sowohl der ICL7667, als auch der IRF7401 mit 
5V ordentlich laufen. Zum Testen ist der Strom, den der TLC5940 aufnimmt 
durch den 2kOhm Widerstand an IREF auf 20mA beschränkt. Als LEDs 
verwende ich weiße Osram LUW-T6SG, die verkraften dauerhaft 20mA. Wenn 
die Matrix sauber läuft, will ich den Strom auf 60mA erhöhen, dann 
brauchen sie aber zwischenzeitlich eine Pause. Bei 60mA passen 
Spannungsabfall am TLC5940 (1V) und Spannungsabfall an der LED (4V) so 
gerade zur Versorgungsspannung von 5V.

Der Code wird durch die Dokumentation hoffentlich gut erklärt, spannend 
ist hier nur die Funktion ISR(TIMER2_OVF_vect) ab Zeile 127. Der Rest 
ist Initialisierung. Der TLC5940 erwartet pro Ausgang 12 Bit, diese 
stehen für Zeile 0 in dem Array gsdata_row0 (Zeile 65) und für Zeile 1 
in dem Array gsdata_row1 (Zeile 72). Momentan soll in Zeile 0 die an 
OUT0 angeschlossene LED mit der niedrigsten PWM-Intensität des TLC5940 
leuchten. D.h. nach einem Puls an GSCLK soll sie wieder verlöschen. Das 
heißt, der Ausgang OUT0 müsste schon durch den TLC5940 lange 
abgeschaltet worden sein, bevor ISR(TIMER2_OVF_vect) das nächste Mal die 
Zeilen umschaltet.


Ich hoffe auf wertvolle Tipps, wie ich dem Glimmen auf den Grund gehen 
kann (bzw. woher es kommt) und es der Schaltung austreiben kann. Oder 
darauf, dass ich blind bin und einen offensichtlichen Fehler nicht 
erkenne ;-)

Danke für Eure Hilfe im Voraus!

P.S.:
Die LED-Matrix soll in einer Word Clock zum Einsatz kommen. Hinter 
der Diffusor-Schicht sollte das Glimmen nicht mehr auffallen. Ich habe 
aber Bedenken, dass die LEDs durch das Glimmen nie ganz aus sind. Bei 
den geplanten 60mA pro LED vertragen sie aber nur noch einen Duty Cycle 
von 0.5 laut Datenblatt. Und ich wollte nicht nach ein paar Monaten die 
vorschnell gealterten LEDs der Uhr austauschen :-/

von Heiko B. (arthur_d)


Angehängte Dateien:

Lesenswert?

Ich bin etwas weiter gekommen:

Ich habe an die Drain-Anschlüsse des IRF7401 jewils noch eine LED mit 1k 
Vorwiderstand nach Masse angeschlossen (LED2 und LED3 im Schaltplan).

Jetzt glimmt LED_ROW1_COL0 nicht mehr.

Das riecht mir jetzt nach einer ungewollten Kapazität, die sich vorher 
über LED_ROW1_COL0 und den TLC 5940 entladen hat, wenn dieser für ROW0 
eingestellt war.

Woher kann diese Kapazität kommen?
Verkabelung (momentan ist alles auf einem Steckbrett aufgebaut)?
Oder liegt das daran, dass der IRF7401 im Testaufbau momentan nur 20mA 
schaltet und dafür hoffnungslos überdimensioniert ist?

Grüße
Heiko

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
Noch kein Account? Hier anmelden.