Ich erwäge, ein Projekt zu übernehmen, bei dem 500 LEDs einzeln adressiert werden, wobei jeweils die PWM-Unterstützung optimal ist.
Ich habe vor, ein Arduino zu verwenden, da ich bereits eines habe. Ich bin jedoch offen für Vorschläge, wenn jemand der Meinung ist, dass eine andere Plattform besser zu mir passt.
Schieberegister müssten eingesetzt werden. Was ist in dieser Situation ein gutes Schieberegister? Wenn PWM dieses Projekt sehr viel teurer macht, kann ich darauf verzichten. Ich möchte versuchen, weniger als 100 Dollar auszugeben. Ich würde 500 LEDs von eBay kaufen.
Was ist Ihre Meinung dazu, wie Sie eine so große Anzahl von LEDs am besten steuern können? Wie würde ich auch vorgehen, um den Strom bereitzustellen? Ich würde mich über jede Hilfe freuen. Ich bin ziemlich erfahren mit Elektronik, ich habe einfach noch nie etwas in so großem Maßstab gemacht.
quelle
Einfach kopieren :-)
http://www.evilmadscientist.com/article.php/peggy2
quelle
In welchem Layout möchten Sie die LEDs? Sie können eine Menge Arbeit sparen, wenn Sie einige LED-Matrizen kaufen. Sie können einfarbige 8x8-LED-Matrizen (64 LEDs) für ein oder zwei Dollar erhalten .
Sie werden mit einem AVR und Schieberegistern auf diesen vielen LEDs kein echtes PWM erhalten, aber Sie sind möglicherweise in der Lage, 2-4 Helligkeitsstufen zusammenzudrücken. Sie müssten die Zahlen durchgehen und sehen, was möglich ist.
Allegro stellt einige praktische Konstantstrom-Senken-Schieberegister zur Verfügung, die speziell für die Steuerung von LED-Arrays entwickelt wurden, sodass Sie keine zusätzlichen Widerstände benötigen, was die Sache auch einfacher macht. Sie können die LEDs möglicherweise nicht direkt über den AVR-Ausgang ansteuern, wenn dieser nicht genügend Strom liefert. Daher müssen Sie Transistoren verwenden. Sie können sie in Arrays in einem einzelnen IC speichern, was ebenfalls Arbeit spart.
quelle
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, die Impulse zwischen 600us und 2,4ms liefern kann. Dabei werden mit dem CD74HCT238E (3-8 Line-Demultiplexer) 64 Kanäle aus 8 E / A-Pins an einem ATMega168 generiert, die über einfache serielle Befehle gesteuert werden können. Ich vermute, Sie könnten mehrere Versionen einer modifizierten Version dieses Controllers auf einer seriellen Leitung miteinander verketten und alle 500 LEDs ansprechen ... Sie könnten wahrscheinlich die ATTiny2313-Version des Controllers verwenden, da Ihre Firmware-Anforderungen einfacher wären.
Mein Blog enthält die Assembly-Quelle sowie Schaltpläne und Details des Entwurfsprozesses.
quelle
Schauen Sie sich die LED-Treiber-ICs auf der Maus / dem Digikey an. TI zum Beispiel stellt eine Reihe von Treibern mit einer Vielzahl von Schnittstellen (I2C, SPI) her, die sicherlich Ihren Anforderungen entsprechen. Die meisten dieser Treiber sind so ausgelegt, dass sie in Reihe geschaltet sind, sodass der serielle Ausgang eines Treibers in den seriellen Eingang eines anderen Treibers eingespeist wird.
So bietet beispielsweise der TLC5940 eine 16-Kanal-PWM-Steuerung. Im Grunde genommen handelt es sich also um ein 16-Bit-Schieberegister mit konstantem Strom und 12-Bit-Graustufen-PWM-Steuerung. Ich kann diesen speziellen IC empfehlen, da ich beim Entwerfen eines 80x16-Displays mitgeholfen habe.
quelle
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 recht einfach ein System zusammenstellen
quelle
Wenn Sie nicht zu viele Bits der PWM-Steuerung für jede LED benötigen und vermeiden möchten, dass ein Prozessor bei jedem PWM-Zyklus mit 500 LEDs herumfummelt, können Sie 8 LEDs mit N Bits Helligkeit mit N 74HC595 oder entsprechenden Chips steuern . Verdrahten Sie die Ausgänge aller N Chips miteinander und verdrahten Sie die Aktivierungen mit einigen Schaltungen, die jeweils nur einen mit einer geeigneten Zeitsteuerung aktivieren. Ordnen Sie dies so an, dass der erste Chip die Hälfte der Zeit aktiviert wird, der zweite für den halben Rest usw.
Ein erneutes Laden der Schieberegister sollte mit der PWM-Rate synchronisiert werden, um Aliasing-Effekte zu minimieren (z. B. wenn ein Helligkeitspegel schnell zwischen 0111 und 1000 umgeschaltet wurde, kann der Zeitpunkt im PWM-Zyklus, an dem der Wechsel erfolgte, die scheinbare Helligkeit vorübergehend ändern ).
Die Verwendung mehrerer 74HC595-Ausgänge für jede LED kann ärgerlich sein, aber dieser Ansatz ist wahrscheinlich der einfachste, mit dem unterschiedliche Helligkeitsstufen ohne laufenden CPU-Eingriff beibehalten werden können.
quelle
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 500-Batch. Dies ist besonders wichtig, wenn diese LEDs wie in einer Matrix oder in 7-Segment-Anzeigen nahe beieinander montiert sind. In dieser Antwort finden Sie weitere Informationen zur Behebung dieses Problems, insbesondere zur Verwendung der Punktkorrektur, um Schwankungen der LED-Helligkeit auszugleichen.
Ich habe dieses Problem festgestellt, als ich 200 rote 1-mm-LEDs für einen Satz großer 7-Segment-Anzeigen erhielt, die ich erstellt habe. Meine billige Lösung zur Lösung des Problems beinhaltete Folgendes:
quelle
Ich schlage vor, die in diesem Artikel beschriebene Technik der binären Winkelmodulation zu verwenden. Http://www.artisticlicence.com/WebSiteMaster/App%20Notes/appnote011.pdf
Oder überprüfen Sie die ShiftPWM-Bibliothek unter http://www.elcojacobs.com/shiftpwm/
quelle
XMOS verwendet den Macroblock MBI5026 mit seinen LED-Kachelsätzen. Ich denke, dass sie in den meisten anderen professionellen Systemen verwendet werden.
Leon
quelle
Engagierte Treiberchips mit seriellen Schnittstellen werden in der Tat wahrscheinlich die beste Route sein. Der Umgang mit einzelnen Schieberegistern wird wahrscheinlich eine sehr komplexe Schaltung bedeuten. Zumindest machen Maxim und TI welche. Ich erinnere mich nicht, ob eines der beiden Modelle dafür besonders geeignet ist.
Es wird noch viel Hardware brauchen.
In Bezug auf Leistung, Programmierung und Busse enthält das Datenblatt für jeden Treiber wahrscheinlich die meisten Informationen, die Sie benötigen.
quelle
Im Softwarebereich kann es hilfreich sein, die Daten im Bit-Planar-Format (wie in meiner anderen hardwarebasierten Antwort beschrieben) zu speichern, wenn die Anzahl der benötigten Helligkeitseinstellungen nicht zu groß ist Ausgaberoutinen verwenden Boolesche Operatoren, um 8 Pixel gleichzeitig zu bearbeiten. Für eine maximale Effizienz sind mehrere separate Ausgaberoutinen erforderlich, 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:
Man würde verschiedene Kombinationen von IORWF und ANDWF verwenden, abhängig vom Wert des Komparanden. Es ist zu beachten, dass unter Verwendung dieses Ansatzes, wie dargestellt, Pixelhelligkeitswerte an jedem Punkt im PWM-Zyklus ohne Flimmern aktualisiert werden können, vorausgesetzt, dass alle vier Bits zwischen Aufrufen der Anzeigeverschiebungsroutine geschrieben werden, oder indem die Pixelaktualisierungsroutine bestimmt, ob die Die nächste Verschiebung gibt eine "1" oder eine "0" für das Pixel aus und setzt oder löscht alle Bits des Pixels (welche Operation es auch immer veranlassen würde, das zu tun, was es ohnehin tun würde) und schreibt dann alle Bits, deren Wert es sollte gegenüber sein. Man beachte auch, dass man willkürliche nichtlineare Helligkeitsskalen erzielen kann, indem man den Zeitpunkt der Anzeigeaktualisierungen variiert oder einige Vergleichswerte mehr als einmal in einem PWM-Zyklus verwendet.
quelle
FPGAs oder CPLDs können für solche Aufgaben gut geeignet sein, da sie viele E / A-Pins bieten. Entscheide dich für die einfachsten und billigsten. Wenn einer nicht ausreicht, benutze ein Paar.
quelle
Mit einer PSoC3 oder PSoC5 ist dies mit ziemlicher Sicherheit problemlos möglich .
Die PSoC-Chips sind Mikrocontroller mit rekonfigurierbarer digitaler Hardware, ähnlich einem FPGA oder CPLD. Dies bedeutet, dass Sie komplexe Schaltungen erstellen können, um ungewöhnliche Aufgaben wie das Ansteuern von 500 LEDs mit PWM auszuführen. Darüber hinaus können Sie das Ganze wahrscheinlich mit den neu konfigurierbaren 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önnte dies funktionieren. Erraten Sie, was? Die PSoC hat mehr als das.
Sie können auf einfache Weise 24 PWM-Kanäle auf einem PSoC einrichten und 21 andere Pins als Teil eines Schieberegisters konfigurieren. Konfigurieren Sie als Nächstes 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 Grafiken generieren. Die PSoC3 verfügt über einen 8-Bit-8051-Kern, während die PSoC5 über einen 32-Bit-ARM verfügt. Treffen Sie Ihre Wahl. Die einzigen externen ICs, die Sie benötigen, sind einige ULN2803, um den hohen Treiberstrom für die Zeilen bereitzustellen. Die PWM-Ausgänge sollten genug Strom für einzelne LEDs haben.
quelle
Skaleneffekte nutzen. Chinesische Websites wie Aliexpress verkaufen WS2811-basierte LED-Stränge für ~ 15 USD pro 50 LEDs. Sie sind einzeln adressierbar, hell, normalerweise wasserdicht und haben PWM für Helligkeit. Keine Löt- oder Schieberegister. Ich wette, all dies selbst zu tun kostet dich mehr, nimmt dir viel mehr Zeit und ist sehr frustrierend. Außerdem sind Sie in Oz, damit der Versand aus China nicht zu teuer wird.
Diese sind für die Herstellung von riesigen LED-Displays gedacht, daher sind sie in der Regel recht billig. Stellen Sie einfach sicher, dass Sie etwa alle 50 LEDs erneut Strom einspeisen, um eine optimale Leistung zu erzielen.
Es gibt auch Arduino-Bibliotheken, um die Verwendung zu vereinfachen.
quelle