Inhaltsverzeichnis:
- Schritt 1: Sammeln der Hardware
- Schritt 2: Schaltungsdesign
- Schritt 3: Kovaris Schaltungsdesign
- Schritt 4: Schaltungsdesign von Giacomo
- Schritt 5: Software
- Schritt 6: Verpacken Sie es
Video: 4-Kanal-DMX-Dimmer - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:20
Das Konzept besteht darin, einen tragbaren Dimmer zu entwerfen und zu erstellen.
Anforderungen:
- DMX512 steuerbar
- 4 Kanäle
- tragbar
- Einfach zu verwenden
Diese Idee habe ich meinem Professor an der WSU vorgeschlagen, weil ich meine Leidenschaften für Theater und Computer verbinden wollte. Dieses Projekt verhielt sich ein wenig wie mein Seniorprojekt in der Theaterabteilung. Wenn Sie Anmerkungen oder Fragen haben, helfe ich Ihnen gerne.
Zukünftige Entwicklung könnte mehr Kanäle, 5-poliger DMX-Anschluss, DMX-Passthrough, 8 Dip-Schalter zum Wechseln des Kanals, Leiterplatte umfassen.
Ich habe dieses Projekt von https://danfredell.com/df/Projects/Entries/2013/1/6_DMX_Dimmer.html migriert, weil es immer noch beliebt ist, denke ich. Außerdem habe ich meine iWeb-Seed-Datei verloren, sodass ich sie nicht mehr problemlos aktualisieren kann. Es wäre schön, wenn die Leute ihre Fragen zum Projekt miteinander teilen könnten.
Schritt 1: Sammeln der Hardware
Verwendete Hardware: Das meiste davon wurde bei Tayda Electronics bestellt. Ich mag sie besser als DigiKey wegen der kleineren und leichter verständlichen Auswahl.
- ATMEGA328, Mikrocontroller
- MOC3020, TRIAC-Optokoppler. Nicht ZeroCross.
- MAX458 oder SN75176BP, DMX-Empfänger
- ISP814, AC-Optokoppler
- 7805, 5V-Regler
- BTA24-600, 600V 25A TRIAC
- 20MHz Quarz
- 9V Netzteil
Ein paar Hürden und gelernte Lektionen auf dem Weg
- Wenn Sie kein Registerexperte sind, bleiben Sie bei einem ATMEGA328P
- Falsche Optokoppler. Sie wollen kein Nullkreuz
- Hohe Kanäle waren instabil. Der Wechsel von 16MHz auf 20MHz hat dieses Problem gelöst
- Keine DMX-Statusleuchte möglich, da der Interrupt-Anruf sehr schnell sein musste
- Gleichstrom muss extrem stabil sein, jede Welligkeit führt dazu, dass das DMX-Signal sehr verrauscht wird
Das TRIAC-Design stammt von MRedmon, danke.
Schritt 2: Schaltungsdesign
Ich habe Fritzing 7.7 auf dem Mac verwendet, um meine Schaltung zu entwerfen.
Der MAX485 oben wird verwendet, um das DMX-Signal in etwas umzuwandeln, das der Arduino lesen kann.
Der 4N35 auf der linken Seite wird verwendet, um den Nulldurchgang des AC-Signals zu erkennen, damit der Arduino weiß, zu welcher Zeit der Sinuswellenausgang zu dimmen ist. Mehr zum Zusammenspiel von Hard- und Software im Abschnitt Software.
Ich habe die Frage bekommen, ob dieses Projekt in Europa mit 230V und 50Hz funktioniert? Ich lebe nicht in Europa und reise auch nicht oft dorthin, um dieses Design zu testen. Es sollte funktionieren, Sie müssten nur die Helligkeits-Timing-Zeile des Codes für die unterschiedliche Frequenzzeitverzögerung ändern.
Schritt 3: Kovaris Schaltungsdesign
Während der Einrichtung meiner Website konnte ich einige E-Mail-Gespräche führen. Einer war mit Kovari Andrei, der ein Schaltungsdesign basierend auf diesem Projekt erstellte und sein Design teilen wollte. Ich bin kein Leiterplattendesigner, aber es ist ein Eagle-Projekt. Lassen Sie mich wissen, wie es für Sie funktioniert, wenn Sie es verwenden.
Schritt 4: Schaltungsdesign von Giacomo
Von Zeit zu Zeit werden mir Leute mit den aufregenden Anpassungen, die sie mit diesem anweisbaren gemacht haben, eine Nachricht senden, und ich dachte, ich sollte sie mit Ihnen allen teilen.
Giacomo hat die Schaltung so modifiziert, dass kein Transformator mit Mittelanzapfung erforderlich war. Die Leiterplatte ist einseitig und kann eine kostengünstigere Lösung für diejenigen sein, die zu Hause keine doppelseitigen Bilder herstellen können (etwas schwierig).
Schritt 5: Software
Ich bin von Beruf Software-Ingenieur, daher ist dieser Teil der ausführlichste.
Zusammenfassung: Beim ersten Booten des Arduino wird die Methode setup() aufgerufen. Darin habe ich einige der Variablen und Ausgabeorte eingerichtet, die später verwendet werden sollen. zeroCrossInterupt() wird jedes Mal aufgerufen/ausgeführt, wenn der Wechselstrom von positiver zu negativer Spannung übergeht. Es setzt das ZeroCross-Flag für jeden Kanal und startet den Timer. Die Methode loop() wird für immer aufgerufen. Um den Ausgang einzuschalten, muss der TRIAC nur für 10 Mikrosekunden getriggert werden. Wenn es Zeit ist, den TRIAC auszulösen und ZeroCross aufgetreten ist, wird der Ausgang bis zum Ende der AC-Phase eingeschaltet.
Es gab ein paar Beispiele online, die ich verwendet habe, um dieses Projekt zu starten. Die Hauptsache, die ich nicht finden konnte, waren mehrere TRIAC-Ausgänge. Andere benutzten die Delay-Funktion, um den Ausgang zu PWM zu machen, aber das würde in meinem Fall nicht funktionieren, weil der ATMEGA die ganze Zeit DMX hören muss. Ich habe dies gelöst, indem ich den TRIAC mit so vielen ms nach dem Nulldurchgang gepulst habe. Indem der TRIAC näher am Nulldurchgang gepulst wird, wird mehr von der Sinuswelle ausgegeben.
So sieht die halbe 120-VAC-Sinnwelle auf einem Oszilloskop oben aus.
Der ISP814 ist an Interrupt 1 angeschlossen. Wenn er also ein Signal empfängt, dass der Wechselstrom von positiv auf negativ oder umgekehrt übergeht, setzt er den Nulldurchgang für jeden Kanal auf wahr und startet die Stoppuhr.
In der Methode loop () überprüft es jeden Kanal, ob zeroCross wahr ist und die Zeit für die Aktivierung verstrichen ist, wird der TRIAC 10 Mikrosekunden lang gepulst. Dies reicht aus, um den TRIAC einzuschalten. Sobald ein TRIAC eingeschaltet ist, bleibt er bis ZeroCross eingeschaltet. Das Licht flimmerte, wenn der DMX-Wert bei etwa 3% lag, also habe ich das Abschneiden dort hinzugefügt, um dies zu verhindern. Dies wurde verursacht, dass der Arduino zu langsam war und der Impuls manchmal die nächste Sinuswelle anstelle der letzten 4% der Welle auslöste.
Auch in der Schleife() setze ich den PWM-Wert der Status-LEDs. Diese LEDs können die vom Arduino erzeugte interne PWM verwenden, da wir uns keine Sorgen um den Nulldurchgang von AC machen müssen. Sobald die PWM eingestellt ist, fährt das Arduino mit dieser Helligkeit fort, bis es anders gesagt wird.
Wie in den oberen Kommentaren erwähnt, müssen Sie einige der Arduino-Anwendungsdateien bearbeiten, um einen DMX-Interrupt an Pin 2 zu verwenden und mit 20 MHz zu laufen. In HardwareSerial.cpp muss ein Stück Code gelöscht werden, damit können wir unseren eigenen Interrupt-Aufruf schreiben. Diese ISR-Methode befindet sich am Ende des Codes, um den DMX-Interrupt zu verarbeiten. Wenn Sie einen Arduino als ISP-Programmierer verwenden, stellen Sie sicher, dass Sie Ihre Änderungen an HardwareSerial.cpp zurücksetzen, da sonst der ATMEGA328 auf dem Steckbrett nicht erreichbar ist. Die zweite Änderung ist einfacher. Die Datei board.txt muss auf die neue 20MHz Taktfrequenz geändert werden.
Helligkeit[ch]=map(DmxRxField[ch], 0, 265, 8000, 0);
Die Helligkeit wird auf 8000 abgebildet, da dies die Anzahl von Mikrosekunden einer 1/2 einer AC-Sinuswelle bei 60 Hz ist. Bei voller Helligkeit 256 DMX lässt das Programm also 1/2 der AC-Sinuswelle für 8000us AN. Ich kam auf 8000 über Rate und Check. Die Berechnung von 1000000us/60hz/2 = 8333 ist möglicherweise eine bessere Zahl, aber mit den zusätzlichen 333us über dem Kopf kann sich der TRIAC öffnen und jeder Jitter im Programm ist wahrscheinlich eine gute Idee.
Auf Arduino 1.5.3 haben sie den Speicherort der Datei HardwareSerial.cpp verschoben. Es ist jetzt /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/HardwareSerial0.cpp Sie müssen diesen ganzen if-Block ab Zeile 39 auskommentieren: #if define(USART_RX_vect)
Andernfalls erhalten Sie diesen Fehler: core/core.a(HardwareSerial0.cpp.o): In Funktion `_vector_18':
Schritt 6: Verpacken Sie es
Ich habe die graue Projektbox bei Menards in der Elektroabteilung abgeholt. Ich benutzte eine Säbelsäge, um die elektrischen Steckerlöcher auszuschneiden. Der Koffer hat oben eine Theater-C-Klemme zum Aufhängen. Statusleuchten für jeden Eingang und Ausgang, um die Diagnose zu erleichtern, wenn jemals ein Problem auftritt. Ein Beschriftungsgerät wurde verwendet, um die verschiedenen Anschlüsse am Gerät zu erklären. Die Zahlen neben jedem Stecker stehen für die DMX-Kanalnummer. Ich habe die Platine und den Transformator mit etwas Heißkleber befestigt. Die LEDs werden mit LED-Haltern befestigt.