Ich erwäge, ein Projekt zu übernehmen, bei dem 500 LEDs individuell adressiert werden, optimalerweise mit PWM-Unterstützung für jede.
Ich plane die Verwendung eines Arduino, da ich bereits einen habe, aber ich bin offen für Vorschläge, wenn jemand der Meinung ist, dass eine andere Plattform besser geeignet wäre.
Es müssten Schieberegister verwendet werden. Was ist ein gutes Schieberegister in dieser Situation? Wenn PWM dieses Projekt viel teurer macht, kann ich gut darauf verzichten. Ich möchte versuchen weniger als 100€ auszugeben. Ich würde 500 LEDs in großen Mengen bei ebay kaufen.
Was ist Ihrer Meinung nach der beste Weg, um eine so große Anzahl von LEDs zu steuern? Und wie würde ich vorgehen, um den Strom bereitzustellen? Ich würde mich über jede Hilfe freuen. Ich bin ziemlich erfahren mit Elektronik, ich habe nur noch nie etwas in so großem Umfang gemacht.
Ich bin der Autor der ShiftPWM-Bibliothek und habe gerade die Dokumentation aktualisiert, um Schaltpläne und viel mehr allgemeine Informationen für normale LEDs, LED-Streifen und Hochleistungs-LEDs aufzunehmen.
Wahrscheinlich haben Sie Ihr Projekt bereits gestartet, aber da diese Seite viele Besucher hat, möchte ich trotzdem eine ausführliche Antwort geben.
Wenn Sie 500 LEDs mit ShiftPWM ansteuern möchten, können Sie bei 60 Hz etwa 64 Helligkeitsstufen pro LED erhalten. Sie würden 64 Schieberegister verwenden. Dedizierte Hardware-PWM-Treiber geben Ihnen mehr Helligkeitsstufen, sind aber etwas teurer. Ich denke, der Hauptvorteil meiner Bibliothek ist die Benutzerfreundlichkeit, da sie RGB- und HSV-Funktionen und viele Beispiele enthält.
Ich persönlich würde mich für den TLC5916 von TLC5917 anstelle von normalen Schieberegistern entscheiden, weil sie einen eingebauten Konstantstrom-LED-Treiber haben. Dies erspart Ihnen viel Lötarbeit, da Sie keine Widerstände benötigen.
Auf meiner Website ( http://www.elcojacobs.com/shiftpwm ) habe ich mehr Informationen darüber, wie man die LEDs anschließt und wie man mit dem Ansteuern der langen Signaldrähte mit dem Arduino bei hohen Geschwindigkeiten umgeht.
Wenn Sie weitere Fragen haben, fragen Sie bitte.
Einfach kopieren :-)
http://www.evilmadscientist.com/article.php/peggy2
Heute veröffentlichen wir ein Update für unser Open-Source-LED-Pegboard-Projekt „Peggy“. Peggy Version 2 wurde von Grund auf neu gestaltet. Und es sieht … fast genauso aus. Die Änderungen unter der Haube sind jedoch erheblich, und wir denken, dass es in vielerlei Hinsicht eine große Verbesserung ist.
In erster Linie macht Peggy 2.0 immer noch dasselbe verdammte Ding: Es versorgt ein 25 x 25-Array von LED-Positionen effizient mit Strom. Peggy wurde entwickelt, um etwas von dem Stich, der Komplexität und dem Durcheinander beim Spielen mit LEDs zu nehmen. Es ist eine vielseitige und leistungsstarke lichtemittierende Stecktafel, mit der Sie Hunderte von LEDs in jeder beliebigen Konfiguration effizient ansteuern können, ohne auch nur einen einzigen Lastwiderstand zu berechnen. Sie können beliebig zwischen einer und 625 LEDs installieren, und Peggy wird sie für Sie zum Leuchten bringen.
Peggy 2.0 ist jetzt auch Arduino-kompatibel: Es unterstützt die Programmierung über ein USB-TTL-Kabel unter Verwendung der beliebten Arduino-Softwareumgebung.
In welchem Layout möchten Sie die LEDs haben? Sie können viel Arbeit sparen, wenn Sie einige LED-Matrizen kaufen, Sie können einfarbige 8x8-LED-Matrizen (64 LEDs) für ein oder zwei Dollar bekommen .
Mit einem AVR und Schieberegistern auf so vielen LEDs erhalten Sie kein echtes PWM, aber Sie können möglicherweise 2-4 Helligkeitsstufen drücken. Sie müssten die Zahlen ausführen und sehen, was möglich ist.
Allegro stellt einige praktische Konstantstromsenken-Schieberegister her, die speziell für die Steuerung von LED-Arrays entwickelt wurden, sodass Sie keine zusätzlichen Widerstände benötigen, was die Dinge ebenfalls vereinfacht. Möglicherweise können Sie die LEDs nicht direkt vom AVR-Ausgang ansteuern, wenn dieser nicht genügend Strom liefern kann, sodass Sie Transistoren verwenden müssen. Sie können sie in Arrays in einem einzigen IC erhalten , was auch etwas Arbeit spart.
Ich habe keine Ahnung, welchen PWM-Bereich Sie für eine LED benötigen, aber ich habe an einem 64-Kanal-PWM-Controller für eine Servosteuerungsanwendung gearbeitet, der mir Impulse zwischen 600 us und 2,4 ms geben kann. Dies verwendet CD74HCT238E (3-8-Zeilen-Demultiplexer), um 64 Kanäle aus 8 E / A-Pins auf einem ATMega168 zu erzeugen, und ist über einfache serielle Befehle steuerbar. Ich denke, Sie könnten mehrere Versionen einer modifizierten Version dieses Controllers auf einer seriellen Leitung miteinander verketten und alle 500 LEDs adressieren ... Sie könnten wahrscheinlich die ATTiny2313-Version des Controllers verwenden, da Ihre Firmware-Anforderungen einfacher wären.
Mein Blog enthält die Montagequelle und Schaltpläne sowie Details des Designprozesses.
Schauen Sie sich "LED-Treiber"-ICs auf mouser/digikey an. TI stellt beispielsweise eine Reihe von Treibern mit einer Vielzahl von Schnittstellen (I2C, SPI) her, die sicherlich Ihren Anforderungen entsprechen würden. Die meisten dieser Treiber sind so konzipiert, dass sie in Reihe geschaltet werden können, sodass der serielle Ausgang von einem in den seriellen Eingang eines anderen eingespeist wird.
Beispielsweise bietet etwas wie der TLC5940 eine 16-Kanal-PWM-Steuerung. Im Grunde handelt es sich also um ein Konstantstrom-16-Bit-Schieberegister mit 12-Bit-Graustufen-PWM-Steuerung. Ich kann diesen speziellen IC empfehlen, da ich damit geholfen habe, ein 80x16-Display zu entwerfen.
Mondomatrix stellt einige seriell (rs-485) adressierbare LED-Treiberplatinen her und basiert auf der Arduino-Plattform: http://www.displayduino.com/ Möglicherweise können Sie mit dieser Hardware ziemlich einfach ein System zusammenstellen
Wenn Sie nicht zu viele Bits PWM-Steuerung für jede LED wünschen und vermeiden möchten, dass ein Prozessor bei jedem PWM-Zyklus mit 500 LEDs herumfummeln muss, können Sie 8 LEDs mit N Bits Helligkeit mit N 74HC595 oder gleichwertigen Chips steuern . Verdrahten Sie die Ausgänge aller N Chips miteinander und verdrahten Sie die Freigaben mit einigen Schaltungen, die jeweils nur eine mit geeignetem Timing aktivieren. Ordnen Sie es so an, dass der erste Chip für die Hälfte der Zeit aktiviert wird, der zweite für die Hälfte des Rests usw.
Jedes Neuladen der Schieberegister sollte mit der PWM-Rate synchronisiert werden, um Aliasing-Effekte zu minimieren (z. B. wenn ein Helligkeitspegel schnell zwischen 0111 und 1000 wechselt, könnte der Punkt im PWM-Zyklus, an dem die Umschaltung erfolgte, die scheinbare Helligkeit vorübergehend ändern ).
Während die Verwendung mehrerer 74HC595-Ausgänge für jede LED lästig sein kann, ist dieser Ansatz wahrscheinlich der einfachste, der unterschiedliche Helligkeitsstufen ohne laufenden CPU-Eingriff aufrechterhalten könnte.
Dies beantwortet die Frage nicht direkt, aber ein weiterer Aspekt, den Sie möglicherweise berücksichtigen müssen, ist die mögliche Helligkeitsvariabilität zwischen den LEDs in Ihrem 500er-Charge. Das ist besonders wichtig, wenn diese LEDs nahe beieinander montiert sind, wie in einer Matrix oder in 7-Segment-Anzeigen. In dieser Antwort finden Sie weitere Einzelheiten zur Behebung dieses Problems, insbesondere zur Verwendung der Punktkorrektur, um Schwankungen in der LED-Helligkeit zu kompensieren.
Ich habe dieses Problem erlebt, als ich 200 rote 1-mm-LEDs für einen Satz großer 7-Segment-Anzeigen bekam, die ich baute. Meine billige Lösung zur Lösung des Problems beinhaltete Folgendes:
Ich schlage vor, die in diesem Artikel http://www.artisticlicence.com/WebSiteMaster/App%20Notes/appnote011.pdf beschriebene Technik der binären Winkelmodulation zu verwenden
Oder überprüfen Sie die ShiftPWM-Bibliothek http://www.elcojacobs.com/shiftpwm/
XMOS verwendet den Macroblock MBI5026 mit seinen LED-Kachel-Kits. Ich denke, dass sie in den meisten anderen professionellen Systemen verwendet werden.
Leon
Dedizierte Treiberchips mit seriellen Schnittstellen werden in der Tat wahrscheinlich der beste Weg sein. Der Umgang mit einzelnen Schieberegistern wird wahrscheinlich eine sehr komplexe Schaltung bedeuten. Wenigstens machen Maxim und TI welche. Ich kann mich nicht erinnern, ob einer der beiden ein Modell hat, das für so viel besonders geeignet ist.
Es wird immer noch eine Menge Hardware benötigt.
In Bezug auf Leistung, Programmierung und Busse enthält das Datenblatt für jeden Treiber wahrscheinlich die meisten Informationen, die Sie benötigen.
Wenn die Anzahl der benötigten unterschiedlichen Helligkeitseinstellungen im Softwarebereich nicht zu groß ist, kann es hilfreich sein, die Daten im "bitplanaren" Format zu speichern (wie in meiner anderen hardwarebasierten Antwort beschrieben) und dann die Ausgaberoutinen verwenden boolesche Operatoren, um auf 8 Pixel gleichzeitig einzuwirken. Für maximale Effizienz erfordert dies mehrere separate Ausgaberoutinen, die für verschiedene Teile des PWM-Zyklus verwendet werden; Wenn man beispielsweise 4-Bit-Helligkeitswerte verwenden möchte, würde man acht Routinen der Form verwenden:
movf bit0Comp,w ; Sollte 00 oder FF sein, abhängig von Bit 0 des Komparanden (FF wenn frei) iorwf POSTINCF,w ; Bit 0 der Daten; Verwenden Sie immer IORWF andwf POSTINCF,w ; Bit 1 der Daten; IORWF verwenden, wenn Bit 1 des Komparanden gesetzt ist; ANDWF wenn klar andwf POSTINCF,w ; Bit 2 der Daten; Verwenden Sie IORWF, wenn Bit 1 des Vergleichers gesetzt ist; ANDWF wenn klar andwf POSTINCF,w ; Bit 2 der Daten; Verwenden Sie IORWF, wenn Bit 1 des Vergleichers gesetzt ist; ANDWF wenn klar movwf SPIREG ; Ergebnisbyte speichern (Bits gesetzt wenn >= Vergleich)
Man würde verschiedene Kombinationen von IORWF und ANDWF verwenden, abhängig vom Wert des Komparanden. Man beachte, dass man unter Verwendung dieses dargestellten Ansatzes Pixelhelligkeitswerte an jedem Punkt im PWM-Zyklus ohne Flimmern aktualisieren kann, vorausgesetzt, dass alle vier Bits zwischen Aufrufen der Anzeigeverschiebungsroutine geschrieben werden, oder indem man die Pixelaktualisierungsroutine bestimmen lässt, ob die Die nächste Verschiebung gibt eine "1" oder eine "0" für das Pixel aus und setzt oder löscht entweder alle Bits des Pixels (welche Operation auch immer dazu führen würde, dass es das tut, was es sowieso tun würde) und schreibt dann alle Bits, deren Wert sollte gegenüber sein. Beachten Sie auch, dass man willkürliche nichtlineare Helligkeitsskalen erzielen kann, indem man das Timing der Anzeigeaktualisierungen variiert oder einige Vergleichswerte mehr als einmal in einem PWM-Zyklus verwendet.
FPGAs oder CPLDs können für solche Aufgaben gut sein, da sie viele I/O-Pins bieten. Entscheiden Sie sich für das Einfachste und Billigste. Wenn einer nicht ausreicht, verwenden Sie ein Paar.
Sie können dies mit ziemlicher Sicherheit problemlos mit einem PSoC3 oder PSoC5 tun .
Die PSoC-Chips sind Mikrocontroller, die rekonfigurierbare digitale Hardware enthalten, ein bisschen wie ein FPGA oder CPLD. Das bedeutet, dass Sie komplexe Schaltungen für ungewöhnliche Dinge wie das Ansteuern von 500 LEDs mit PWM erstellen können. Darüber hinaus können Sie das Ganze wahrscheinlich mit den rekonfigurierbaren digitalen Blöcken implementieren, sodass der CPU-Teil des Chips nur die gewünschten LED-Helligkeiten in ein Array schreiben muss.
504 LEDs passen in ein Rechteck von 21 x 24. Wenn Sie 24 PWM-Kanäle und 21 GPIO hätten, könnten Sie dies zum Laufen bringen. Erraten Sie, was? Der PSoC hat mehr als das.
Sie können 24 PWM-Kanäle einfach auf einem PSoC einrichten und 21 andere Pins als Teil eines Schieberegisters konfigurieren. Als nächstes konfigurieren Sie einige DMA-Kanäle, um Bytes aus dem Speicher in die PWM-Ausgänge zu pumpen, und Sie lachen. Jetzt muss die CPU nur noch die Grafik generieren. Der PSoC3 hat einen 8-Bit-8051-Kern, während der PSoC5 einen 32-Bit-ARM hat. Treffen Sie Ihre Wahl. Die einzigen externen ICs, die Sie benötigen, sind einige ULN2803s, um den hohen Treiberstrom für die Zeilen bereitzustellen. Die PWM-Ausgänge sollten genügend Strom für einzelne LEDs haben.
Nutzen Sie Skaleneffekte. Chinesische Seiten wie Aliexpress verkaufen WS2811-basierte LED-Stränge für ~15 US-Dollar pro 50 LEDs. Sie sind einzeln adressierbar, hell, normalerweise wasserdicht und haben PWM für die Helligkeit. Auch kein Löten oder Schieberegister zum Durcheinander. All dies selbst zu tun, wird Sie bestimmt mehr kosten, viel mehr Zeit in Anspruch nehmen und sehr frustrierend sein. Außerdem befinden Sie sich in Oz, sodass der Versand aus China nicht zu teuer ist.
Diese sind für die Herstellung riesiger LED-Displays gedacht, daher sind sie in der Regel ziemlich billig. Stellen Sie einfach sicher, dass Sie die Stromversorgung etwa alle 50 LEDs oder so neu einspeisen, um die beste Leistung zu erzielen.
Es gibt auch Arduino-Bibliotheken, um sie einfach zu verwenden.
Superkatze
Superkatze
ElcoJacobs
ElcoJacobs