Wie steuere ich mehrere hundert einzelne LEDs mit Arduino(s)?

Ich arbeite an einem Elektronikprojekt, das Hunderte von LEDs umfasst. (Ich spreche von sechs- bis siebenhundert LEDs aufwärts ... eine Menge, ich weiß.) Gibt es eine Möglichkeit, so viele LEDs mit einem oder mehreren Arduinos zu steuern? Ich möchte in der Lage sein, auf jede LED einzeln zuzugreifen/zu steuern, da ich LEDs auf einer Wandkarte der Welt darstellen möchte. Ich werde dann Arduino mit Google Analytics verbinden und wenn jemand von einem bestimmten Ort auf der Welt zu meiner Website navigiert, leuchtet die LED, die seiner Region am nächsten ist, fast in Echtzeit auf.

Jede Hilfe wäre willkommen. Vielen Dank! Ich habe versucht, einige zu recherchieren und über Multiplexing und Charlie-Plexing zu lesen, aber diese scheinen bei 100 oder so maximal zu sein? Ich gehe davon aus, dass ich externe Hardware/Komponenten benötigen würde, um so viele LEDs steuern zu können, aber was genau brauche ich, um dies zu erreichen? Hat jemand schon einmal eine so große LED-Matrix erstellt?

Antworten (7)

Wenn Sie eine große Anzahl von LEDs einzeln multiplexen, wird üblicherweise eine N x M-Matrix verwendet. Die Zeit ist in N Schritte unterteilt, in jedem Schritt aktivieren Sie eine der N Zeilenleitungen und die Spaltenleitungen, die den LEDs entsprechen, die Sie aktivieren möchten. Beachten Sie, dass die Zeilenleitungen jeweils das M-fache des LED-Stroms führen können, was eine gewisse Pufferung erfordert. Jede LED ist nur 1/N der Zeit eingeschaltet, um also die normale Helligkeit beizubehalten, müssen Sie den Strom N-fach erhöhen. Die meisten LEDs mögen das nicht. Charlieplexing ist in dieser Situation wegen der großen Ströme nicht praktikabel.

Aus Ihrer Frage geht hervor, dass Sie jeweils nur 1 LED aktivieren möchten? In diesem Fall ist Charlieplexing in Ordnung. Ein uC mit 31 I/O-Pins kann 900 LEDs ansteuern. Klingt, als würde der Bau ein Albtraum werden ...


Update 5 Jahre später: Normales Multiplexing oder Charlieplexing ist schön, wenn man zu viel Zeit zur Hand hat, aber wenn ich jetzt 100 LEDs ansteuern müsste, würde ich einen langen Streifen WS2801 LEDs kaufen.

Ich glaube, ich habe etwas hinzuzufügen. Nun, wenn hoher Strom das Problem ist, dann verwenden Sie Hochspannung. wie 9v, aber für eine sehr kurze Zeit 10ms und korrekt berechnetes Tastverhältnis. Da es auch die Lebensdauer von LED-Lampen erhöht.
Die von einer LED abfallende Spannung ist fest, ebenso wie die Ausgangsspannung eines Arduino (wahrscheinlich 5 V, für einige Typen 3,3 V). Die Verwendung eines höheren Stroms mit einem kleineren Arbeitszyklus verringert im Allgemeinen die LED-Lebensdauer.

Sie könnten ein billiges und leicht zu findendes 74HC595-Schieberegister (oder ein ähnliches) verwenden, um Hunderte von LEDs mit nur wenigen Pins vom Arduino zu steuern.

Es gibt sogar ein Tutorial dazu auf der Arduino-Seite!

Seriell zu Parallel Shifting-Out mit einem 74HC595

Herausschalten & der 595 Chip

Irgendwann gehen Ihnen vielleicht die Pins auf Ihrem Arduino-Board aus und Sie müssen es mit Schieberegistern erweitern. Dieses Beispiel basiert auf dem 74HC595. Das Datenblatt bezeichnet den 74HC595 als "8-Bit-Serial-In-, Serial- oder Parallel-Out-Schieberegister mit Ausgangslatches; 3-State". Mit anderen Worten, Sie können damit 8 Ausgänge gleichzeitig steuern, während Sie nur wenige Pins auf Ihrem Mikrocontroller belegen. Sie können mehrere Register miteinander verknüpfen, um Ihre Ausgabe noch weiter zu erweitern.

Das wären viele Schieberegister, aber es würde funktionieren :) Sie würden ca. 88 (700 LEDs / 8 LEDs pro Chip) Schieberegister und nur 1 MCU benötigen.
Vergessen Sie nicht die zusätzlichen Logiktreiber, da 88 Eingänge ziemlich viel zu handhaben sind.

Ich würde das modular aufbauen. Der 6960 von Maxim wird 64 LEDs für Sie ansteuern, obwohl er ein bisschen teuer ist. Sie werden mit einer seriellen Schnittstelle angesteuert und Sie können bis zu 256 davon miteinander verbinden.

Die 7218/7221 würde auch funktionieren.

Eine etwas späte Antwort auf diese Frage, aber hier sind 528 LEDs Charlieplexed von einem einzigen PICAXE 40X2. Es würde bis zu 930 LEDs gehen, wenn alle Pins dem Job gewidmet wären.

Der Build: http://www.picaxeforum.co.uk/entry.php?25-The-PICaxe-orrery

Ein Video: http://www.youtube.com/watch?v=82LvqiaH-iA

Die PICAXE-Architektur ist ziemlich langsam, daher ist die maximale Anzahl von LEDs, die gleichzeitig leuchten können, auf etwa 15 begrenzt, bevor Flimmern zu einem Problem wird. Ein schnellerer Prozessor und eine cleverere Programmierung würden diese Zahl deutlich erhöhen.

Ich bin mir nicht sicher, ob meine Antwort gut ist oder nicht ... aber warum nicht über adressierbare WS2811-LED-Streifen sprechen?

Wir wollen eine LED-Matrix machen, um Text anzuzeigen. Hier gibt es ein Projekt ( https://www.pjrc.com/teensy/td_libs_OctoWS2811.html ), das auf einem Teensy erstellt wurde, das fast dasselbe ist wie ein Arduino.

Ich denke, es verwendet das Konzept der PWM (Pulsweitenmodulation) und ermöglicht es so, komplexe Daten mit einem einzigen Draht an die LED-Streifen zu senden.

Aber nochmal, ich bin mir nicht sicher, ob meine Antwort gut ist ...

Das Problem besteht darin, dass das erforderliche Timing die Anzahl der LEDs beschränkt, die Sie miteinander verketten können, und die Verteilung auf mehrere Ketten die Gesamtverarbeitungszeit erhöht.

Wir hatten eine nette Diskussion über das Ansteuern vieler LEDs in einer kürzlich gestellten Frage hier. Meine Antwort dort scheint direkt auf Ihr Problem hier anwendbar zu sein. Siehe die Antwort hier:

Antreiben von LEDs auf lange Distanz

Können Sie die zutreffenden Informationen mitbringen und auf diese Frage zuschneiden, wenn Ihre Antwort für beide perfekt funktioniert, ist dies ein Zeichen für ein exaktes Duplikat.

Basierend auf Informationen unter http://bildr.org/?s=shift+register zum 74H595-Schieberegister mit einem Arduino Uno, das sagte: "Wenn Sie 1000 davon miteinander verkettet haben", wurde ein Projekt mit einem LED-Display gestartet 320 LEDs. Als ich über 100 LEDs kam, flackerte es schlecht und frittierte schließlich den Arduino.

Also habe ich mit dem technischen Support von Sparkfun gesprochen, der mir die Breakout-Boards für den 74H595 verkauft hat. Er sagte, Sie können nur fünf oder sechs LEDs gleichzeitig leuchten lassen. Also ging ich zurück und las den Artikel bei BLDR erneut und stellte fest, dass Sie Tausende von LEDs mit 74H595/Arduino steuern können, aber Sie können nur etwa ein Dutzend gleichzeitig haben. (Dies ist sinnvoll, da der Arduino 200 mA durch den 5-Volt-Ausgang zulässt und jede LED 20 mA zieht, sodass etwa zehn alles sind, was sicher mit Strom versorgt wird.)

Es wurden Transistoren gesehen, die mit 1 mA Strom eingeschaltet werden können. Wenn dies zutrifft, könnte man eine Schaltung entwerfen, die Transistoren steuert, die einen viel höheren Spannungs- / Stromkollektor zum Emitterfluss haben. Dann könnte man die Arduino / 74H595-Kombination verwenden, um Transistoren in einer Schaltung mit höherem Strom zu steuern.

Allen in Dallas