Freitag, 11. Februar 2011

Glimmende LEDs in der Matrix

Immer wieder mal kommt nach der Fertigstellung eines QLOCKTWO-Nachbaus die Frage auf, warum die LEDs über den eigentlich leuchtenden LEDs ganz leicht glimmen. Die Vermutung bislang war, daß die Darlington-Arrays in den Verstärker-Chips (UDN2981A) nicht schnell genug abschalten können, also mit der Multiplexing-Rate nicht mithalten können.
Ich habe mal versucht, diese These nachzuvollziehen. Dazu habe ich gemessen, wie oft eigentlich die loop()-Schleife pro Sekunde durchlaufen wird. Bei mir sind das 3736 Durchläufe pro Sekunde, ein Durchlauf benötigt ergo 0,00027 Sekunden. Da die Matrix im Multiplexing-Verfahren angesteuert wird und 16 Reihen enthält wird eine Reihe in 0,00027 Sekunden/16=16 μSekunden geschaltet. Aus dem Datenblatt der Chips kann man ersehen, daß der "Turn-Off Delay" bei 5 μSekunden (typisch) und 10 μSekunden (maximal) liegt. Da sind wir bei unserem 16 μSekunden-Zyklus (für Ein- und Ausschalten) tatsächlich ganz schön nah dran.
Bei den Fußnoten des Datenblattes findet sich bei genauem Hinsehen: "NOTES: Turn-off delay is influenced by load conditions. Systems applications well below the specified output loading may require timing considerations for some designs, i.e., multiplexed displays [...]". Der minimale "Load", also Strom, ist mit 350 Milliampere angegeben, meinen Messungen nach braucht die ganze QLOCKTWO gerade mal 160 Milliampere.

Zusammengefasst: Eigentlich ist der UDN2981A-Chip für die QLOCKTWO ungeeignet. Besser geeignet wären schnelle Schalttransistoren (der 2STX2220 hat z.B. ein Turn-Off Delay von 250 Nano-Sekunden). Wer das Glimmen vermeiden möchte, muß auf Schalttransistoren wechseln (und hat damit natürlich eine Menge mehr Bauteile auf dem Board). Mea culpa - aber ich bin eben "nur" Experimental-Elektroniker und mich hat das Glimmen bislang nicht gestört.

Kommentare:

  1. Hallo, ich hatte in den google Groups bereits mal angefragt, ob die Matrix vom Timing nicht etwas verlangsamt werden kann...in der Software kenne ich mich leider nicht so gut aus...an welcher Stelle muss was eingefügt werden, um das Wiederholtiming zu verändern?

    AntwortenLöschen
  2. Hallo,

    das Timing kann nicht einfach so verändert werden. In der loop()-Schleife könntest Du natürlich nur jeden zweiten, dritten etc. Durchlauf die Aktualisierung der Matrix aufrufen, aber das fängt dann an zu flackern. Was möchtest Du erreichen?

    Grüße,
    Christian

    AntwortenLöschen
  3. Hallo Christian,
    ich dachte eben daran, dass das Timing so angepasst werden könnte, dass der UDN gerade noch damit klarkommt und das Glimmen so unterbunden werden könnte. Wenn das aber zum Flackern führt, dann hat es sich wohl erledigt...

    AntwortenLöschen