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
Source, Schaltplan! In einem davon ist der Fehler drin. Peter
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.
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
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 ;)
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 ;)
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 | }
|
@ 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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.