Forum: Mikrocontroller und Digitale Elektronik RGB-POV-Display Timing Problem - STM32F4


von Mario S. (masp)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein vertikales POV-Display mit 6 TLC5940 Chips (16-Kanal 
LED-Treiber) gesteuert durch einen stm32f4 gebaut. Das Display arbeitet 
mit 32 RGB-LEDs. Jede Farbe (32 LEDs) wird direkt durch zwei TLC Chips 
angesteuert, d.h. ohne Multiplexing.

Der TLC5940 ist ein 16-Kanal LED-Treiber, der mit einer 12-Bit PWM 
arbeitet und bis 28 MHz spezifiziert ist.

Alle TLC hängen parallel am stm32f4. Der TLC erhält hierbei die 
Grayscale-Daten für die 16 LEDs in 16*12 Bit Paketen. Diese werden an 
den TLC gesendet und im Anschluß durch ein Latch-In Signal auf die 
Ausgabe übernommen. Ich weiß, dass man die TLC auch in Reihe schalten 
kann, habe ich aber wegen des höhern Zeitbedarfs zum Latch-In der Daten 
nicht umgesetzt.

Das klappt auch alles hervorragend und das Display schafft eine 180 
"Pixel" breite Darstellung bei ca. 24 Hz Bildwiederholfrequenz, sprich 
Umdrehungsgeschwindigkeit der LEDs. Daraus ergibt sich eine 
"Blinkfrequenz" der LEDs von ca. 18,4 Mhz.

- 24 Umdrehungen pro Sekunde mal
- 180 Positionen pro Umdrehung mal
- 4096 Helligkeitsstufen pro Position (per PWM)

Nach dem Latch-In der Werte an die TLC-Chips hat der stm32f4 so noch 
genug Zeit sich um Bildverarbeitung, Page-Switching, Kommunikation etc. 
zu kümmern.

Nun zum Problem:

Die einzelnen Farben werden durch die TLC-Chips nicht exakt zeitgleich 
geschalten. Dadurch ist ein "weiß" auf dem Display durch die schnelle 
Drehbewegung, mit leichten blauen Verschiebungen nach einer Seite und 
leichten roten Verschiebungen zur anderen Seite zu sehen.

Die Schaltung ist aber so aufgebaut, dass das "BLANK" Signal, dass die 
TLC-Ausgänge aus- und einschaltet sowie das "XLAT" Signal, dass die 
Datenübernahme vom stm32 steuert parallel an alle TLC gegeben wird.

Das "BLANK" Signal vom stm32, dass die LED letztlich ein- und 
ausschaltet, wird an einem PIN des stm32 erzeugt und geht parallel an 
die 6 BLANK-Eingänge der TLC-Chips. Jeder Eingangspin ist mit einem 
10K-Pull-Up ausgestattet. Das XLAT-Signal geht direkt in die 6 Eingänge 
der TLC.

Was kann diese Verzögerung verursachen? Bei der gleichen Farbe gibt es 
bei allen Farben keine Verzögerung zwischen den "oberen" und "unteren" 
16 LEDs, die ja ebenfalls durch zwei getrennte TLC-Chips angesteuert 
werden.

Ich hoffe ich konnte das Problem einigermaßen beschreiben und freue mich 
über Hilfen. Ein Oszi habe ich leider nicht zur Verfügung, um die 
konkrete Verzögerung zu messen. Man sieht Sie aber beim POV-Display 
leider deutlich.

Natürlich kann ich theoretisch drei getrennte BLANK-Signale für RG und B 
erzeugen und hier eine Verzögerung einbauen, aber wodurch entsteht diese 
überhaupt? Schalten RGB-LEDs die einzelnen Farben etwa unterschiedlich 
schnell? Datenblatt der verwendeten LEDs im Anhang.

Mario

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.