[AVR] LEDs glimmen bei LED Matrix

Gast #949598
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
#949607
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
Gast #949672
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!
#957131
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
Gast #957236
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren