Einfache Lösung zum Ansteuern eines großen RGB-LED-Arrays mit PWM

Ich arbeite an einem kleinen spielzeugähnlichen Gerät, das im Kern eine 10 x 8 "Pixel" -Anordnung von RGB-LEDs hat. somit sind 10 x 8 x 3 = 240 einzelne LEDs anzusteuern. Ich möchte die Intensität jeder LED einzeln steuern und im Grunde ein 10 x 8-Pixel-Vollfarbdisplay erstellen.

Das Display wird von einem Mikrocontroller der AVR-Serie angesteuert. Ich suche nach einer einfachen Lösung, um 240 Kanäle anzusteuern und gleichzeitig die Helligkeit (Leistung) auf jedem Kanal einzeln steuern zu können. Soweit meine Forschung geht, gibt es keine andere Möglichkeit, dies effizient zu tun als mit PWM.

Kein AVR hat jedoch 240 Ausgänge, daher ist eine Art Erweiterung/Multiplexing/Seriell-zu-Parallel-Konvertierung erforderlich. Schieberegister wären eine Lösung, aber in Kombination mit PWM wurde mir gesagt, dass dies zu langsam sein wird.

Ich habe mir dedizierte LED-Treiberchips mit PWM angesehen, die über eine serielle Schnittstelle gesteuert werden. (Texas Instruments stellt zum Beispiel mehrere solcher Geräte her). Allerdings haben die maximal 12/16/24 Kanäle, da bräuchte ich noch ziemlich viele dieser Geräte. Solange die Treiber verkettet werden können, könnte dies funktionieren, aber das Gerät wird klein sein, sodass ich keinen Platz für eine große Anzahl von Komponenten habe.

Ich brauche nicht viel Auflösung bei der Steuerung der Helligkeit. 8 Bit würden 255 Stufen pro LED bedeuten, was reichlich ist. Der Treiberstrom wäre auch kein Problem, da ich Low-Power-LEDs verwenden werde, die direkt von den Ausgängen eines Controllers oder Treibers angesteuert werden sollten. Geschwindigkeit wird auch kein Problem sein; Das Objekt zeigt "Bilder" für den Konsum durch das menschliche Auge an, daher würde ich maximal 20-30 "fps" benötigen.

Obwohl ich ziemlich viel recherchiert habe, bin ich mir nicht sicher, ob ich an den richtigen Stellen suche, also dachte ich, ich würde hier eine Frage stellen. Ich freue mich über alle Hinweise und Erkenntnisse und bedanke mich im Voraus für alle Hinweise und Ideen!

Es gibt einige andere Fragen, bei denen Sie Hinweise finden können, aber bedenken Sie Folgendes: Mit einer Matrixadressierung mit Zeilen und Spalten können Sie die 240 LEDs mit - sagen wir - 15 + 16 Zeilen ansteuern, das ist eine viel einfachere Sache.

Antworten (2)

Es gibt eine Reihe von LED-Treiber-ICs, zum Beispiel TLC5951DAP. Sehen Sie es hier im Einsatz: Mbled

Ähnliche Probleme wurden in einigen Open-Source-Projekten wie Peggy2 gelöst . Der Chip, den Peggy2 verwendet, scheint aus der Produktion zu gehen, MBI5026 könnte ein Ersatz sein.

Das Problem ist jedoch nicht, wie man so viele fährt, sondern wie man ihre Helligkeit individuell steuert. Charlieplexing macht das tatsächlich schwieriger, da die gemeinsame Referenz pro Zeile kontrollierbar sein muss.
Da Charlieplexing sowieso Zeitmultiplex ist, können Sie die Impulsdauer für jede LED steuern. Aber du hast Recht, es ist schlecht geeignet für so viele einzeln angesteuerte LEDs.

Haben Sie einen Graustufen-aktivierten Treiberchip als Spaltentreiber in Betracht gezogen, während Sie immer noch die Zeilen scannen? Sie müssen den Strom proportional zu der Anzahl der Zeilen erhöhen, durch die Sie scannen, was auch bedeutet, dass Sie eine Abschaltung benötigen, damit Sie keine Zeile braten, wenn die MCU stoppt.