RGB LED-Matrizen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

von Torsten Crull und anderen

Das Seite ist aus dem Forumsbeitrag "Projektidee "RGB-LED-Matrix" entstanden, hier können auch gern Fragen und weitere Anregungen gepostet werden.

Kurzbeschreibung

Die Grundidee: Aus anreihbaren Kacheln mit LED-Matrizen lassen sich beliebig Laufschriften, sowie Beleuchtungs- und Display-Flächen oder andere Anordnungen zusammenstellen.

Konzepte

Es wurden drei verschiedene Konzepte diskutiert

  • Matrix-Anordnung mit Konstantstom-LED-Treibern (Linear-Regler)
  • Reihen mit WS2812 LEDs mit integriertem Konstantstom-LED-Treiber (Linear-Regler)
  • Verwendung von getakteten Stromreglern

Matrix-Anordnung

Matrix-Anordnung sind im Artikel LED-Matrix erläutert. Bei RGB-LEDs ist lediglich zu beachten, dass pro RGB-Pixel drei Matrix-Kreuzungspunkte benötigt werden.

Eine Liste mit Konstantstom-LED-Treiber gibt es ebenfalls im Artikel LED-Matrix.

Es hat sich gezeigt, dass sich eine Eigenentwicklung von Platinen mit RGB-LED-Matrizen nur bedingt lohnt:

  • Es gibt fertige passive Matrix-Module, z.B. das "RGB LED Panel 6x6cm für Rainbowduino" ab ca. 4€ mit 8 x 8 = 64 LEDs (Foto folgt).
  • Es gibt fertige Matrix-Module mit Konstantstom-LED-Treibern mit 16x16 .. 32x32 Pixeln

Damit die LEDs auf ihre maximale Helligkeit erreichen, muss der maximal zulässige Strom des Konstantstom-LED-Treibers um den Faktor der Zeilenzahl höher sein als der Nennstrom der LED. Bei typischen 20mA pro LED und 8 einer Matrix mit 8 Zeilen ergeben sich 8 * 20mA = 160mA.

Kann der Konstantstom-LED-Treiber diesen Strom nicht liefern, muss man entweder die Anzahl der Zeilen verringern oder mit der geringeren Leuchtkraft der LED leben.

Das Prinzip funktioniert nur bei LEDs, die bei 20mA genau so hell leuchten, wie bei 12,5% Pulsweite mit 160mA. Mei LEDs mit 20mA Nennstrom ist dies i.d.R. der Fall, bei High-Power-LEDs ist das z.T. nicht der Fall, aber hier lohnen sich u.U. getaktete Stromreglern (s.u.)

Ansteuerung

Je nach LED-Treiber erfolgt die Ansteuerung sehr unterschiedlich. Allgemein gilt: Wenn die Schieberegister aus einen Mikrocontroller beschrieben werden, dürfen niemals Interrupts erlaubt werden, da sich dadurch Helligkeitsschwankungen ergeben. Bei Bedarf kann man natürlich konstante regelmäßige Zeitscheiben für andere Aufgaben vorhalten, wenn sie die Helligkeit nicht ungleichmäßig beeinflussen.

Der FD9802C

Der Baustein FD9802C wird vornehmlich in den in China produzierten Modulen verwendet. Dieser IC ist im Prinzip ein einfaches Schieberegister mit Konstantstom-Ausgängen. Um verschiedene Helligkeiten zu erzeugen, muss die Matrix sehr oft neu aufgebaut werden. Für 256 Helligkeitsstufen und 512 RGB-LEDs ergeben sich 512 x 3 x 256 = 39 3216 Schieberegister-Takte, bis das nächste Bild aufgebaut werden kann.

In den Chinesischen Modulen werden jeweils 6 Schieberegister-Ketten gebildet, in die Parallel geschrieben wird.

Der FD9802C ist für Taktfrequenzen bis 20MHz spezifiziert.

Bei 30 Aktualisierungen pro sekunde (fps) und 512 LEDs können bei 6 parallelen Schieberegister-Ketten maximal 2600 Helligkeitsstufen bzw. eine 11-Bit-Auflösung mit 2048 Helligkeitsstufen erreicht werden.

Einige Matrizen verwenden auch 16 Matrix-Zeilen; dabei verringert sich die Anzahl der erreichbaren Helligkeitsstufen eine 10-Bit-Auflösung mit 1024 Stufen.

Bei der Ansteuerung über einen Mikrocontroller mit einem 2MHz Schieberegister-Takt lassen sich 256 Helligkeitsstufen erreichen.

Der Baustein FD9802C ist übrigens für Ströme bis zu 45..90mA pro Ausgang spezifiziert, so dass sich im Mittel pro nur LED 5,5..11mA ergeben, selbst wenn die LEDs erst bei 20mA ihre maximale Helligkeit erreichen.

Der TLC5940

Der Baustein FD9802C erwartet im Schieberegister-Eingang 12 Bit pro Konstanstrom-Ausgang, also 192 Bit und liefert an jedem Ausgang einen in 4096 Stufen einstellbaren Strom. Dadurch ist der notwendige Schieberegister-Takt entsprechend geringer und es müssen nicht mehrere Schieberegister-Ketten parallel gebildet werden.

Implementierungen

Mit FD9802C-Modulen aus China

Beschreibung, Schaltplan, Fotos usw. folgen

Reihen mit WS2812 LEDs

WS2812 LEDs lassen sich als "daisy chain" zu beliebig langen Schieberegister-Ketten zusammenschließen. Der wichtigste Vorteil ist, dass sich die Anzahl der Zeilen und Spalten ohne ungenutzte LED-Treiber-Ausgänge beliebig wählen läßt.

Ansteuerung

Die "daisy chains" aus WS2812-LEDs müssen am seriellen Eingang durchgehend mit Bitmuster ohne Jitter versorgt werden. Bis das letzte Bit gesendet wurde, müssen alle Interrupts inaktiviert werden. Danach können sie jedoch erlaubt werden, da die sich einstellbaren Konstanstrom-Ausgänge ihren Wert merken, bis sie einen neuen Wert über den seriellen Eingang erhalten.

Implementierungen

Mit flexiblen LED-Streifen

Reihen aus WS2812-LEDs gibt es als flexible LED-Streifen fertig zu kaufen. Für eine Matrix-Anordnung kann man sie durch den rückseitig angebrachten Kleber direkt wie ein Etikett in gleichmäßigen Abständen auf eine Träger-Fläche kleben.

Schaltplan, Fotos usw. folgen

Als Platine mit 5,5mm Pitch

Um einen minimalen Pixel-Abstand zu erreichen, müssen die LEDs von Punkt zu Punkt jeweils um 90° gedreht werden.

Die Platinen können in einem Nutzen gefertigt werden, aus dem man zwei Kachen herausbrechen kann. Um trotz Anreihbarkeit einen geringen Pixel-Abstand zu erreichen, sind die Kanten mit rechteckigen Zähnen ineinandersteckbar. Siehe Bild 1:

PuzzleTeil Nord-Nord.png
Bild 1: RGB Matrix Kachel von der Rückseite

Da die Anzahl der Pixel in diesem Beispiel in der Höhe ungerade ist, lassen sich die Kacheln nicht beliebig kombinieren. Wie in dem Bild dargestellt, gibt es nur Kacheln, die oben und unten gleich gezahnt sind, und daher nicht zusammen passen. Da es pro Nutzen zwei unterschiedlihe Kacheln gibt (Nord-Nord und Süd-Süd) kann man trotzdem beliebige Formen zusammen setzen.

Prototypen dieser Implementierung sind derzeit nicht bekannt.

Matrix mit getakteten Stromreglern

Details folgen

Eagle-Dateien

Bibliotheken

RGB LED WS2812 mit integriertem WS2811 PWM Controller


Programmierung von Farben

Um Farbübergänge bei einzelnen LEDs oder Farbverläufe bei 2D-Anordnungen zu erzeugen, können folgende Profile verwendet werden, die sich an Thermographieanwendungen orientieren. Dargestellt sind Versionen für 64/80 sowie 96/112 und 128 Werte, beginnend bei einem einfachen optischen Spektrum.

Version mit 80 Werten

Einfaches Spektrum von Rot bis Blau mit natürlichem Werteverlauf für R,G,B passend für 64 und 80 Stufen. Der Eingangswert sollte auf diesen Bereich skaliert werden. Der abgelesene Tabellenwert von 0 ... 15 lässt sich leicht aus den Eingangsbits extrahieren. Er wird als Helligkeit verwendet. Für Helligkeitswerte von 0...255, wie bei den o.g. LEDs, multipliziert man die Werte einfach mit 17.


Version mit 112 Werten

Erweitertes Thermographie-Fehlfarben-Spektrum von Schwarz bis Weiss, mit Violett als hellster Farbe und natürlichem Werteverlauf für R,G,B passend für 96 und 112 Stufen. Wieder lassen sich die Bits für die einzelnen Bereiche einfach aus dem Eingangsvektor herausschneiden.


Version mit 128 Werten

Verbessertes Profil für 128 Werte unter Dehnung der Mischfarbe Orange, welche sich - anders als Türkis und Violett - nicht durch Vollaussteuerung zweier RGB-Grundfarben ergibt. Damit wird das vom Auge und Gehirn wahrnehmbare Spektrum besser ausgenutzt.


Allen 3 Abbildungen ist gemein, dass an den Schnittpunkten der Bereich jeweils eine Kombination zweimal verwendet wird. Um das zu beheben, kann eine Ganzzahl-Addition von z.B. (X/16) verwendet werden, um Sprünge in den Kurven bei 15/16 und 31/32 zu erwirken oder eine Tabelle verwendet werden.