Forum: Mikrocontroller und Digitale Elektronik LED-Matrix -> Nachleuchten -> Timingproblem?!


von narzi (Gast)


Lesenswert?

Hey...also ich habe folgendes Problem.

Habe ein paar 5x7 LED-Matrizen angesteuert und will die Reihen 
multiplexen - soweit so gut, aber wenn ich jetzt z.B. die Reihe mit den 
"X" leuchten soll, leuchtet die links daneben ("o") nicht ganz so hell, 
aber doch auch. Kann es sein, dass ich da programmiertechnisch mich mit 
der Geschwindigkeit des Multiplexens oder habt ihr andere Vorschläge?


|---|---|---|---|---|
|   |   | o | X |   |
|---|---|---|---|---|
|   |   | o | X |   |
|---|---|---|---|---|
|   |   | o | X |   |
|---|---|---|---|---|
|   |   | o | X |   |
|---|---|---|---|---|
|   |   | o | X |   |
|---|---|---|---|---|
|   |   | o | X |   |
|---|---|---|---|---|
|   |   | o | X |   |
|---|---|---|---|---|

Danke im Voraus

von Peter D. (peda)


Lesenswert?

Source, Schaltplan!

In einem davon ist der Fehler drin.


Peter

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Deine Steuertransistoren haben eine gewisse Abfallzeit, diese kannst Du 
verringern, indem Du zwischen Basis und Emitter Widerstände schaltest 
(so etwa 1kOhm). Du kannst aber auch softwaretechnisch die 
Zeilenleitungen für die Zeit kurz vor bis kurz nach dem Umschaltvorgang 
der Spalten dunkeltasten. Die Helligkeit der angesteuerten Spalte wird 
dadurch nur unmerklich geringer. Auch solltest Du darauf achten, die 
Multiplexfrequenz nicht zu hoch zu wählen, da dadurch der 
Verwischungseffekt noch stärker wird.

von Peter D. (peda)


Lesenswert?

Travel Rec. wrote:
> Deine Steuertransistoren haben eine gewisse Abfallzeit, diese kannst Du
> verringern, indem Du zwischen Basis und Emitter Widerstände schaltest
> (so etwa 1kOhm).

Oder gleich die Kollektorschaltung nehmen, wenn Du richtig hellgesehen 
hast. Spart sogar 10 Widerstände ein.


Peter

von Chris (Gast)


Lesenswert?

Hi,

ich kenne das Problem.

wenn die LEDs links von den eigentlichen leuchten und du von links nach 
Rechts scannst, lädst du den Port mit den Daten der Spalte und lässt 
dann die Spalte hochzählen.
Also:
- Daten an Spalte (LED-Port) ausgeben
- Spaltenposition hochzählen

Wenn du es umgekehrt machst, leuchtet immer die rechte Spalte mit den 
Daten der aktuellen Spalte.

Die Lösung ist einfach wie wirkungsvoll ;)

Die LEDs einfach kurz auf dunkel setzen:

- Spalte dunkel setzen
- Spaltenposition hochzählen
- Daten an Spalte (LED-Port) ausgeben

das ist alles ;)

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Oder so :-).

von narzi (Gast)


Lesenswert?

Danke an alle für die fixen Antworten, hab jetzt das mit dem Spalte 
davor dunkelsetzen geändert und es funktioniert - wirklich einfach aber 
wirkungsvoll ;) vielen vielen Dank - ihr glaubt nicht wie lang das 
gefuchst hat...

Wünsch allen noch einen schönen Abend...danke ;)

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Chris war schneller, das ist richtig, das hat lediglich was mit der 
Reihenfolge der Aktionen zu tun ;) Die Transistoren sind viel zu schnell 
als dass man da was sehen koennte.

Ein Auszug aus der Firmware fuer meine Uhr: Ich musste ebenfalls erst 
den PORT auf 0 setzen, bevor ich sie Zeile wechseln (ich mach nen 
Zeilen-Multiplex).
1
   /* do the multiplexed display update */
2
   if (!(++multiplex_counter%4) && !(status_flags & STATUS_FLAG_MSTATUS_DIRTY))
3
   {
4
     PORTD = 0x00; // <-------------------------
5
6
     PORTC = (PORTC & 0xf0) | (1 << i);
7
     PORTD = matrix_status[i];  
8
     
9
     if (++i > 3)
10
     {
11
       i = 0;
12
     }
13
   }

von Falk B. (falk)


Lesenswert?

@ Michael G. (linuxgeek) Benutzerseite

>Chris war schneller, das ist richtig, das hat lediglich was mit der
>Reihenfolge der Aktionen zu tun ;) Die Transistoren sind viel zu schnell
>als dass man da was sehen koennte.

Irrtum. Bei den üblichen, eher schlecht als recht dimensionierten 
Schaltstufen hat man mal fix 500..1000ns Storage Time am Hals, 
währendessen bei ungeeigneter Programmierung die nächste Spalte LEDs 
schon eingeschaltet wird. Bei einer Multiplexfreqeunz von beispielsweise 
800 Hz (8 Anzeigen x100Hz) macht das immerhin ein Tastverhältnis von 
~1/1250..1/2500. Da das menschliche Auge eine ausserordentliche Dynamik 
besitzt, kann man auch so schwach leuchtende LEDs im abgedunkelten Raum 
noch sehen.

MfG
Falk

von Mike (Gast)


Lesenswert?

Das Problem nennt sich Sättigung. Der Transistor ist dabei mit 
Ladungsträgern "geflutet" und muss davon sozusagen wieder freigeräumt 
werden. Erst dann kann er wieder sperren. Das kann man z.B. mit den von 
Travel Rec. erwähnten Widerständen machen. Oder halt dem Transistor mehr 
Zeit geben.

von Peter D. (peda)


Lesenswert?

Mike wrote:
> Das kann man z.B. mit den von
> Travel Rec. erwähnten Widerständen machen. Oder halt dem Transistor mehr
> Zeit geben.

Oder mit der Kollektorschaltung.


Peter

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.