Ich arbeite an einem Projekt, das wirklich cool aussehen würde, wenn ich in der Lage wäre, einen Ring aus LEDs (ähnlich wie der auf den TRON Identity Discs) gleichmäßig in einem Kreis aufleuchten zu lassen, anstatt Teile der LEDs aufleuchten zu lassen einzeln. Ich weiß, dass EL-Draht das glatte, einheitliche Aussehen erzielen wird, das ich will, aber ich kann EL-Draht nicht dazu bringen, nach und nach in einer Schleife zu leuchten.
Gibt es Ideen? Ich habe darüber nachgedacht, ein Skript auf einem Mikrocontroller zu schreiben, der sie reibungslos beleuchtet, aber ich bin mir nicht sicher, welche Art von LEDs ich dafür benötigen würde oder ob es möglicherweise eine einfachere Lösung gibt.
Das Problem in mehrere Blöcke aufteilen:
Hardware:
Leuchtdioden:
Die einfachste Implementierung würde 16 LEDs umfassen. Wenn ein weicherer Übergang erwünscht ist, könnten mit geeigneten LED-Treiber-ICs 32 oder sogar noch mehr LEDs verwendet werden.
Konstantstrom-LED-Treiber mit integrierter PWM-Dimmunterstützung
Der LED-Treiber TLC5940 von Texas Instruments unterstützt 16 LEDs mit jeweils 12-Bit-PWM-Dimmung (4096 Schritte). Das PWM-Tastverhältnis für jede LED wird intern vom IC generiert, wodurch der Mikrocontroller von intensivem Timing und PWM-Erzeugungsaufwand entlastet wird. Das Teil wird über eine serielle Schnittstelle gesteuert, und es gibt Open-Source-Bibliotheken für viele gängige Mikrocontroller und Entwicklungsboards. Die Ausgänge sind Konstantstromsenken, sodass man die Stromsteuerwiderstände pro LED einspart.
Wenn 32 LEDs oder mehr für einen reibungsloseren Übergang gewünscht werden, unterstützt der TLC5940 Kaskadierung, sodass ein einziger Satz von Steuerleitungen das gesamte Array von LED-Treibern programmieren kann.
Wenn man es mit einer gleichmäßigen LED-Beleuchtung weit übertreiben möchte, dann ist der Austria MicroSystems AS1130 132 LED-Treiber oder sogar der 144 LED-Treiber ( AS1119 ) mit seiner integrierten Ladungspumpe zum Ansteuern von LEDs von einer Stromschiene niedriger als die Vorwärtsspannung Ihrer LED, könnte von Interesse sein.
Mikrocontroller:
So ziemlich jeder Mikrocontroller, der in der Lage ist, eine serielle Leitung (normalerweise SPI) mit einer angemessen hohen Datenrate anzusteuern, würde ausreichen. Ein Arduino Uno wäre zum Beispiel ausreichend.
Leistung:
Beachten Sie, dass einzelne LEDs zwar anscheinend keine stromhungrigen Bestien sind, aber 16 oder 144 von ihnen parallel zu schalten, bedeutet, dass sie irgendwo zwischen einem Watt und 10 oder mehr Watt liegen, wenn man von normalen 20-mA-Anzeige-LEDs ausgeht. Hinzu kommt der Stromverbrauch der LED-Treiber selbst (z. B. 60 mA typisch pro TLC5940), und der Strombedarf wird ziemlich hoch.
Software:
Zeitliche Koordinierung:
Der Mikrocontroller muss in der Lage sein, das/die LED-Steuerpaket(e) für alle LED-Treiber besser als die Persistenz der Sichtraten zu übertragen: Vorzugsweise mehr als 20 Mal pro Sekunde für eine statische Anzeige und 200 Mal pro Sekunde oder besser für etwas das soll sich bewegen. Außerdem reagiert das menschliche Auge sehr empfindlich auf selbst geringfügige Störungen in einem sanften Übergang der Lichtintensität, sodass die Übertragung von Steuerdaten idealerweise von einem stabilen Zähler-Interrupt gesteuert werden sollte und keine andere Mikrocontroller-Aufgabe einer LED-Controller-Aktualisierung zuvorkommen sollte.
Intensitätsberechnung:
Die Berechnung einer einigermaßen linearen (für das menschliche Auge) Folge von PWM-Arbeitszyklen für einen glatten Übergang beinhaltet ungefähr die folgende vereinfachte Formel: wobei die gewünschte Intensität für die y = (x ^ 2.5) / k
Schrittzahl y
eine Konstante ist x
, k
die von der verfügbaren Bittiefe (Auflösung) der PWM abgeleitet wird Generator.
Einfach ausgedrückt: Bei niedrigen Intensitäten ist ein kleinerer Anstieg des Tastverhältnisses erforderlich, bei hoher Intensität größere Sprünge, um im Übergang linear zu erscheinen.
64 verschiedene Intensitätsstufen sollten für einen vernünftigen Übergang ausreichen, 256 wenn Over-the-Top der Geschmack der Woche ist. Für 64 Schritte, die 4096 PWM-Werten (12-Bit-PWM) zugeordnet sind, funktioniert die obige Formel wie folgt:
PWMvalue = (StepNumber ^ 2.5) x 0.125
Es ist nicht perfekt, aber ziemlich nah dran.
Für 256 Schritte und 12 Bit PWM lautet die FormelPWMvalue = (StepNumber ^ 2.5) x 0.00390625
Obwohl diese Berechnung trivial genug ist, ist es für die beste Leistung sinnvoll, die PWM-Werte für jeden Schritt im Voraus zu berechnen und sie als statisches Array, eine Nachschlagetabelle (LUT), in den Code einzufügen. Dies spart wertvolle Zyklen während der Laufzeit, indem Daten aus einem Array abgerufen werden, anstatt Exponentialwerte zu berechnen.
Implementierungslogik:
Aktualisieren Sie in jedem Auffrischungszyklus die PWM-Arbeitszyklen für jede LED gemäß der LUT und lassen Sie beispielsweise 64 / 4 = 16 steps
zwischen aufeinanderfolgenden LEDs eine Lücke. Somit wird die erste LED innerhalb von 64 Auffrischungszyklen glatt von Null auf Voll übergehen, die zweite LED wird beim 16. Auffrischungszyklus beginnen und die 3. LED beim 32. Auffrischungszyklus und so weiter. Bei 16 LEDs 64 x 4 = 256 cycles
bleiben alle LEDs voll erleuchtet. Berechnen Sie die maximale Zeit pro Aktualisierung, indem Sie die gewünschte Übergangszeit für den vollen „Tron-Ring“ durch 256 dividieren, und stellen Sie Ihren Aktualisierungs-Interrupt-Zähler entsprechend ein.
Wenn Sie tatsächlich einen Tron-Ring implementieren, teilen Sie bitte ein Video. Die derzeit auf YouTube zu findenden Videos von DIY Tron Disc Light-up-Implementierungen sind viel zu rudimentär.
Anindo Ghosh
M. Choi
Anindo Ghosh
Andi aka
Eric Gunnerson
Engelgroß
Anindo Ghosh