Forum: Mikrocontroller und Digitale Elektronik [AVR] LEDs glimmen bei LED Matrix


von Gerd (Gast)


Lesenswert?

Hallo,

ich versuche gerade vier 8x8 LED Matrix-Module (rot/grün, gemeinsame 
Anoden) anzusteuern.
Folgender Aufbau:
Atmega32
Am PORT A und C sind jeweils ein UDN2981 angeschlossen. Damit steuere 
ich die Anoden der Matrixen an.
Über HW-SPI werden vier 74HC595 mit ULN2803 gesteuert und schalten die 
Kathoden über Widerstände zu GND durch.

Die Ansteuerung funktioniert und ich kann schon Schriften und Bilder 
anzeigen. Allerdings sind viele LEDs dabei, die ich eigentlich nicht 
ansteuere und die leicht glimmen.

Kann es sein, dass der UDN2981 zu langsam abschaltet? Ich takte die 
PORTs A und C mit ca. 2kHz. Wie könnte ich den UDN am besten ersetzen?

Ich hatte dieses Prinzip schon bei einer großen Sieben-Segment-Anzeige 
angewendet und damit keine Probleme gehabt.

Gruß Gerd

von Falk B. (falk)


Lesenswert?

@ Gerd (Gast)

>Die Ansteuerung funktioniert und ich kann schon Schriften und Bilder
>anzeigen. Allerdings sind viele LEDs dabei, die ich eigentlich nicht
>ansteuere und die leicht glimmen.

Bekannter Effekt.

>Kann es sein, dass der UDN2981 zu langsam abschaltet?

Kaum.

> Ich takte die
>PORTs A und C mit ca. 2kHz. Wie könnte ich den UDN am besten ersetzen?

Es ist ein Softwarefehler. Deine Ansteuerung der Zeilen überlappen sich. 
Du musst so schalten

Spalte aus
neues Zeilenmuster ein
neue Spalte ein

MFG
Falk

von crazy horse (Gast)


Lesenswert?

nicht unbedingt.
Die Treiber sind schon recht lahm. Ein paar nops treiben den LEDs das 
Glimmen aus.

von Gerd (Gast)


Lesenswert?

@Falk

>Es ist ein Softwarefehler. Deine Ansteuerung der Zeilen überlappen sich.
>Du musst so schalten

>Spalte aus
>neues Zeilenmuster ein
>neue Spalte ein

So habe ich es ja auch. Ist zwar nicht schön gemacht, weil es eine 
switch-case Anweisung in einer ISR ist, aber diese Reihenfolge ist da. 
So nach dem Motto:
1
switch (col){
2
case 1: PORTA=OFF;
3
        SPI_DW(  pixel_buffer[16],
4
            pixel_buffer[48],
5
            pixel_buffer[32],
6
            pixel_buffer[0]);
7
        PORTA=COL1;
8
        break;
9
...}
@crazy horse
>Die Treiber sind schon recht lahm. Ein paar nops treiben den LEDs das
>Glimmen aus.
Ich werde zwischen dem Auschalten der UDN und dem Zeilenmuster mal mit 
nops experimentieren.

Aber in dieser Nacht nicht mehr.

Gute Nacht!

von crazy horse (Gast)


Lesenswert?

PORTA=OFF;
switch (col){
case 1: SPI_DW(  pixel_buffer[16],
            pixel_buffer[48],
            pixel_buffer[32],
            pixel_buffer[0]);
        PORTA=COL1;
        break;
...}

sollte genügen.

von Gerd (Gast)


Lesenswert?

Wollte nur ein Feedback geben. Die UDN2981 brauchen einige Zeit, bis sie 
ausschalten. Bei mir brauchte es ca. 30 NOPs (Quarz 14,7456 MHz).

Vielen Dank für eure Hilfe.

Gruß Gerd

von Falk B. (falk)


Lesenswert?

@ Gerd (Gast)

>Wollte nur ein Feedback geben. Die UDN2981 brauchen einige Zeit, bis sie
>ausschalten.

Klar, das ist ein eher langsamer Leistungstreiber, kein High Speed 
Digital IC.

> Bei mir brauchte es ca. 30 NOPs (Quarz 14,7456 MHz).

Das sind ~2us. Nicht viel für den AVR. Für den UDN2981 aber schon sehr 
flott. Der braucht laut Datenblatt 5..10us!

MFg
Falk

von Gerd (Gast)


Lesenswert?

Naja, wenn man im Dunkeln bei einem Abstand von 10cm genau hinsieht, 
kann man ein Glimmen noch erahnen. Damit kann ich leben und weiß nun wo 
ich noch schrauben muss. ;-P
Ich bin ja noch im Alpha-Stadium mit der Anzeige und werde noch einiges 
am Programm ändern.
Momentan habe ich vier 8x8 Module im Einsatz und die komplette Anzeige 
wird 16 oder 20 Module haben. Da geht ja noch der Spaß mit der 
Vernetzung der einzelnen Steuerplatinen los.
Mir war nur wichtig, dass ich heraus bekomme, was da schief läuft. Ich 
hatte damals schon mit Verzögerungen experimentiert, aber die hat der 
Compiler wieder weg optimiert. Sind halt Fehler, die man macht, wenn man 
nicht immer mit der Sache zu tun hat.

von Gerd (Gast)


Lesenswert?

Au weiha... Man streiche nach belieben ein paar "noch" aus meinem 
vorherigen Posting...

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Gerd wrote:

> Folgender Aufbau:

Schaltplan?


> Die Ansteuerung funktioniert und ich kann schon Schriften und Bilder
> anzeigen. Allerdings sind viele LEDs dabei, die ich eigentlich nicht
> ansteuere und die leicht glimmen.

Hoechstwahrscheinlich ein Reihenfolgeproblem.

von Gerd (Gast)


Lesenswert?

Danke Michael, aber das Problem wurde gelöst. Es lag an den UDN2981 und 
meinem Timing.

Gruß Gerd

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.