mikrocontroller.net

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


Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

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

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
switch (col){
case 1: PORTA=OFF;
        SPI_DW(  pixel_buffer[16],
            pixel_buffer[48],
            pixel_buffer[32],
            pixel_buffer[0]);
        PORTA=COL1;
        break;
...}
@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!

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Au weiha... Man streiche nach belieben ein paar "noch" aus meinem 
vorherigen Posting...

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gerd (Gast)
Datum:

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

Gruß Gerd

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.