Ich möchte in der Lage sein, mit einem Arduino rund 100 unabhängige LEDs zu steuern. Das Problem ist, dass das 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?
arduino
digital-logic
gpio
Alexis K
quelle
quelle
Antworten:
Zunächst einmal kann ein Arduino nicht 100 LEDs direkt 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 kundenspezifischer Arduino Shield mit eigener Stromquelle und Regelung könnte jedoch genau das Richtige sein.
Es gibt mehrere einfache Ansätze, der einfachste Ansatz wird im Folgenden beschrieben:
Konstantstrom-LED-Treiber TLC5940 in kaskadierter Konfiguration:
Der TLC5940 steuert 16 LEDs pro IC an, die über einen seriellen Eingang über eine geringfügige Variante einer SPI-Schnittstelle gesteuert werden. Es können bis zu 40 TLC5940-Geräte hintereinander geschaltet werden, von denen jedoch 7 ausreichen, um die 100 in Frage kommenden LEDs anzusteuern.
Es gibt mindestens ein paar Arduino-Bibliotheken ( 1 , 2 ) für den TLC5940.
Empfohlene Taktraten, die vom Arduino gesendet werden sollen, und entsprechende Aktualisierungsrate:
Dies basiert auf den Formeln aus dem Datenblatt:
Die TLC5940 ist eine Konstantstromenke , so dass die Anoden der LEDs auf eine Spannung ein paar Volt größer als die LED Vf oder etwa 7 Volt gebunden werden würden, sofern dieser Wert niedriger ist, unabhängig von dem Power - Pins des Arduino mit Strom versorgt. Diese Spannungsquelle muss in der Lage sein, 100 * zu liefern (unabhängig davon, mit welchem Strom Sie die LEDs betreiben), kann jedoch eine ungeregelte Quelle sein.
Die LED-Kathoden gehen zu den Ansteuerleitungen der jeweiligen TLC5940-ICs.
Der TLC5940 selbst verbraucht während des Datenschreibens bis zu Icc = 60 mA pro Gerät, sodass das Versorgen von 7 von ihnen vom Arduino nicht funktioniert. Es ist daher erforderlich, dass eine unabhängige geregelte Vcc von 3,3 bis 5 Volt bereitgestellt wird, im Idealfall der gleiche Wert wie der Vcc des verwendeten Arduino und die Erdungsspuren müssen natürlich wieder mit der Erdung des Arduino verbunden werden. Das Betreiben der TLC-Teile mit einer anderen Spannung als das Arduino würde eine Pegelumwandlung des seriellen Signals erforderlich machen und daher am besten vermieden.
Mehrere YouTube-Videos demonstrieren die Verwendung von Arduino mit kaskadierten TLC5940-ICs.
8-stellige LED- Anzeigetreiber für MAX7219 (seriell) / MAX7221 (SPI) :
Obwohl diese ICs für die Ansteuerung von numerischen 7-Segment-LED-Anzeigen konzipiert wurden, bieten sie eine individuelle LED-Steuerung und können für bis zu 64 LEDs pro IC verwendet werden. Zwei davon können kaskadiert werden, um die 100 erforderlichen LEDs anzusteuern. Seite 13 des Datenblattes zeigt eine Kaskadenkonfiguration.
Die LEDs müssten für diesen Entwurf als Gruppen von bis zu 8 LEDs elektrisch verbunden werden, die sich jeweils eine Kathodenleitung (gemeinsame Kathode) teilen.
Beim MAX7219 / 7221 handelt es sich um Multiplex-LED-Treiber, daher ist die maximale Helligkeit der LEDs geringer als bei einem statischen LED-Treiber wie im vorherigen Abschnitt.
Hier finden Sie eine nützliche LED- Matrixbibliothek und Anleitung zur Verwendung des MAX7219.
Einige relevante YouTube-Videos ( 1 , 2 ) könnten von Interesse sein.
Charlieplexing: SPI-LED-Treiber, MAX6950 / MAX6951
Auch diese ICs wurden für die Ansteuerung von numerischen 7-Segment-LED-Anzeigen entwickelt. Sie bieten eine individuelle LED-Steuerung und können somit für bis zu 40/64 LEDs pro IC verwendet werden. Zwei / drei von ihnen können an einen Arduino SPI-Bus angeschlossen werden, um die 100 erforderlichen LEDs anzusteuern.
Konstruktionshinweise bleiben die gleichen wie im vorherigen Abschnitt. Außerdem wäre die maximale Helligkeit der einzelnen LEDs geringer als beim geraden Multiplex-Design des MAX7219.
Es gibt einige YouTube-Videos , die von Interesse sein könnten.
Diskrete Komponentendesigns, Schieberegister, IO-Expander, schneidbare LED-Streifen mit einzelnen Controllern und vieles mehr ...
All dies sind Ansätze, die mit unterschiedlichem Maß an Einfachheit und Erfolg eingesetzt wurden. Sie sind komplexere Implementierungen als die drei oben genannten Ansätze und werden daher nicht weiter ausgeführt. Das Durchsuchen des Webs würde bei Bedarf nützliche Anleitungen für diese Ansätze liefern.
Ein wesentlicher Irritant bei solchen Konstruktionen 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önlichen Erfahrungen mit diesem letzten Satz von Optionen, kann also nicht viel helfen.
Fußnote: Nachdem ich auf diese Frage geantwortet hatte, fand ich eine ältere Frage , die Antworten enthält, in denen einige der Ansätze in meinem letzten Abschnitt detailliert beschrieben und diskutiert werden. Dieser Thread macht interessant "weiterlesen als Hausaufgabe".
quelle