Ich möchte mit einem Arduino etwa 100 unabhängige LEDs steuern können. Das Problem ist, dass der Arduino nicht annähernd genug Pins hat, die dafür konfiguriert werden können. Was wäre ein Weg, um dieses Problem zu lösen? Gibt es einen Chip, der ein komplexeres Signal vom Arduino demuxen kann, das dann die LEDs steuern könnte? Oder gibt es eine andere Lösung?
Zunächst einmal kann ein Arduino nicht direkt 100 LEDs ansteuern, da der kombinierte Strom, den das Gerät liefern oder senken muss, sowohl den Mikrocontroller als auch den Spannungsregler auf der Arduino-Platine bei weitem übersteigt. Ein benutzerdefiniertes Arduino Shield mit eigener Stromquelle und Regelung könnte jedoch die Rechnung erfüllen.
Es gibt mehrere einfache Ansätze, der einfachste Ansatz wird unten beschrieben:
Der TLC5940 treibt 16 LEDs pro IC an, gesteuert durch einen seriellen Eingang über eine leichte Variante einer SPI-Schnittstelle. Bis zu 40 TLC5940-Geräte können kaskadiert werden, aber 7 davon reichen aus, um die fraglichen 100 LEDs anzusteuern.
Es gibt mindestens ein paar Arduino-Bibliotheken ( 1 , 2 ) für den TLC5940.
Vorgeschlagene Taktraten zum Senden vom Arduino und entsprechende Aktualisierungsrate:
Dies basiert auf den Formeln aus dem Datenblatt:
f(GSCLK) = 4096 * f(update)
f(SCLK) = 193 * f(update) * n
wobei:
f(GSCLK): erforderliche Mindestfrequenz für GSCLK
f(SCLK): erforderliche Mindestfrequenz für SCLK und SIN
f( update): Aktualisierungsrate des gesamten Kaskadiersystems
n: Anzahl der kaskadierten TLC5940-Geräte
Der TLC5940 ist eine Konstantstromsenke , sodass die Anoden der LEDs an eine Spannung gebunden sind, die ein paar Volt höher ist als die LED-Vf oder etwa 7 Volt, je nachdem, welcher Wert niedriger ist, unabhängig von den Stromanschlüssen des Arduino. Diese Spannungsquelle muss in der Lage sein, 100 * zu liefern (unabhängig davon, mit welchem Strom Sie die LEDs betreiben), kann aber eine ungeregelte Quelle sein.
Die LED-Kathoden gehen zu den Treiberleitungen der jeweiligen TLC5940-ICs.
Der TLC5940 selbst verbraucht während des Datenschreibens bis zu Icc = 60 mA pro Gerät, sodass die Stromversorgung von 7 von ihnen über den Arduino nicht funktioniert. Es muss eine unabhängige geregelte Vcc von 3,3 bis 5 Volt bereitgestellt werden, idealerweise der gleiche Wert wie die Vcc des verwendeten Arduino, und die Erdungsspuren müssen natürlich wieder mit dem Boden des Arduino verbunden werden. Der Betrieb der TLC-Teile mit einer anderen Spannung als der Arduino würde eine Pegelwandlung des seriellen Signals erforderlich machen und daher am besten vermieden werden.
Mehrere YouTube-Videos demonstrieren die Verwendung von Arduino mit kaskadierten TLC5940-ICs.
Obwohl diese ICs für die Ansteuerung von numerischen 7-Segment-LED-Anzeigen konzipiert wurden, bieten sie eine individuelle LED-Steuerung, sodass sie für bis zu 64 LEDs pro IC verwendet werden können. Zwei davon können kaskadiert werden, um die erforderlichen 100 LEDs anzusteuern. Seite 13 des Datenblatts zeigt eine Kaskadenkonfiguration.
Die LEDs müssten für dieses Design als Gruppen von bis zu 8 LEDs elektrisch verbunden werden, die sich jeweils eine Kathodenleitung (gemeinsame Kathode) teilen.
Die MAX7219/7221 sind Multiplex-LED-Treiber, daher ist die maximale Helligkeit der LEDs geringer als bei einem statischen LED-Treiber wie im vorherigen Abschnitt.
Hier ist eine nützliche LED-Matrix- Bibliothek und Anleitung zur Verwendung des MAX7219.
Einige relevante YouTube-Videos ( 1 , 2 ) könnten von Interesse sein.
Auch diese ICs wurden für die Ansteuerung von numerischen 7-Segment-LED-Anzeigen entwickelt, sie bieten eine individuelle LED-Steuerung und können daher für bis zu 40/64 LEDs pro IC verwendet werden. Zwei / drei davon können an einen Arduino-SPI-Bus angeschlossen werden, um die 100 erforderlichen LEDs anzusteuern.
Design-Hinweise bleiben die gleichen wie im vorherigen Abschnitt. Außerdem wäre die maximale Helligkeit der einzelnen LEDs geringer als beim reinen Multiplex-Design des MAX7219.
Es gibt einige YouTube-Videos , die von Interesse sein könnten.
Dies sind alles Ansätze, die mit unterschiedlichem Grad an Einfachheit und Erfolg verwendet wurden. Sie sind komplexere Implementierungen als die drei oben genannten Ansätze und werden daher nicht weiter detailliert. Eine Suche im Internet würde bei Bedarf nützliche Anleitungen für diese Ansätze liefern.
Ein Hauptproblem bei solchen Designs ist die Notwendigkeit von Stromsteuerwiderständen an jeder LED oder LED-Kette. Geräte, die speziell für den LED-Betrieb entwickelt wurden, benötigen dies normalerweise nicht.
Ich habe keine persönliche Erfahrung mit diesen letzten Optionen und kann daher nicht viel helfen.
Fußnote: Nachdem ich auf diese Frage geantwortet hatte, fand ich eine ältere Frage , die Antworten enthält, in denen mehrere der Ansätze in meinem letzten Abschnitt detailliert beschrieben und diskutiert werden. Dieser Thread ist eine interessante "weiterführende Lektüre als Hausaufgabe".
Vicatcu
Alexis K
Chris Stratton