Inhoudsopgave:

4-kanaals DMX-dimmer - Ajarnpa
4-kanaals DMX-dimmer - Ajarnpa

Video: 4-kanaals DMX-dimmer - Ajarnpa

Video: 4-kanaals DMX-dimmer - Ajarnpa
Video: DIMMER PACK dmx 4ch WDP-4 4-х канальный диммер сценического света work pro 2024, November
Anonim
4-kanaals DMX-dimmer
4-kanaals DMX-dimmer

Het concept is om een draagbare dimmer te ontwerpen en te maken.

Vereisten:

  • DMX512 bestuurbaar
  • 4 kanalen
  • draagbaar
  • Makkelijk te gebruiken

Ik heb dit idee voorgelegd aan mijn professor aan de WSU omdat ik mijn passies voor theater en computers wilde combineren. Dit project leek een beetje op mijn senior project op de theaterafdeling. Als u opmerkingen of vragen heeft, help ik u graag verder.

Toekomstige ontwikkeling zou meer kanalen kunnen omvatten, 5-pins DMX-connector, DMX-doorvoer, 8 dipswitches om het kanaal te veranderen, printplaat.

Ik heb dit project gemigreerd van https://danfredell.com/df/Projects/Entries/2013/1/6_DMX_Dimmer.html omdat het nog steeds populair is, denk ik. Ook ben ik mijn iWeb-seedbestand kwijtgeraakt, dus ik kan het niet meer gemakkelijk bijwerken. Het zou mooi zijn als mensen hun vragen over het project met elkaar kunnen delen.

Stap 1: De hardware verzamelen

De hardware verzamelen
De hardware verzamelen

Gebruikte hardware: het meeste is besteld bij Tayda Electronics. Ik vind ze beter dan DigiKey vanwege de kleinere en gemakkelijker te begrijpen selectie.

  1. ATMEGA328, microcontroller
  2. MOC3020, TRIAC Optocoupler. Geen ZeroCross.
  3. MAX458 of SN75176BP, DMX-ontvanger
  4. ISP814, AC Optocoupler
  5. 7805, 5v-regelaar
  6. BTA24-600, 600V 25A TRIAC
  7. 20MHz kristal
  8. 9V voeding

Een paar hindernissen en geleerde lessen onderweg

  • Als u geen registerexpert bent, blijf dan bij een ATMEGA328P
  • Verkeerde optocouplers. Je wilt geen Zero Cross
  • Hoge kanalen waren onstabiel. Overschakelen van 16 MHz naar 20 MHz loste dit probleem op
  • Kan geen DMX-statuslampje hebben omdat de onderbrekingsoproep erg snel moest zijn
  • Gelijkstroom moet extreem stabiel zijn, elke rimpel zal ervoor zorgen dat het DMX-signaal erg luidruchtig wordt

Het TRIAC-ontwerp kwam van MRedmon, bedankt.

Stap 2: Circuitontwerp

Circuit ontwerp
Circuit ontwerp

Ik heb Fritzing 7.7 op Mac gebruikt om mijn circuit te ontwerpen.

De MAX485 bovenaan wordt gebruikt om het DMX-signaal om te zetten in iets dat de Arduino kan lezen.

De 4N35 aan de linkerkant wordt gebruikt om de nuldoorgang van het AC-signaal te detecteren, zodat de Arduino weet op welk moment de sinusgolfuitgang moet worden gedimd. Meer over hoe de hardware en software op elkaar inwerken in de softwaresectie.

Ik heb de vraag gekregen of dit project zal werken in Europa met 230V en 50Hz? Ik woon niet in Europa en reis er ook niet vaak heen om dit ontwerp te kunnen testen. Het zou moeten werken, u hoeft alleen de helderheidstimingregel van de code aan te passen voor de vertraging van de verschillende frequenties.

Stap 3: Kovari's circuitontwerp

Kovari's circuitontwerp
Kovari's circuitontwerp
Kovari's circuitontwerp
Kovari's circuitontwerp

Door het proces van het opzetten van mijn website kon ik een paar e-mailgesprekken voeren. Een daarvan was met Kovari Andrei die een circuitontwerp maakte op basis van dit project en zijn ontwerp wilde delen. Ik ben geen ontwerper van printplaten, maar het is een Eagle-project. Laat me weten hoe het voor jou werkt als je het gebruikt.

Stap 4: Circuitontwerp van Giacomo

Circuitontwerp van Giacomo
Circuitontwerp van Giacomo

Van tijd tot tijd zullen mensen me een bericht sturen met de opwindende aanpassingen die ze met deze instructable hebben gedaan en ik dacht dat ik ze met jullie allemaal moest delen.

Giacomo heeft het circuit aangepast, zodat een centraal getapte transformator niet nodig was. De pcb is enkelzijdig en kan een meer betaalbare oplossing zijn voor wie thuis niet dubbelzijdig kan maken (een beetje moeilijk).

Stap 5: Software

Software
Software

Ik ben een software-engineer van beroep, dus dit deel is het meest gedetailleerd.

Samenvattend: wanneer de Arduino voor het eerst opstart, wordt de methode setup() aangeroepen. Daarin heb ik een paar variabelen en uitvoerlocaties ingesteld om later te gebruiken. zeroCrossInterupt() wordt aangeroepen/ uitgevoerd telkens wanneer de AC van positieve naar negatieve spanning gaat. Het zal de zeroCross-vlag voor elk kanaal instellen en de timer starten. De methode loop() wordt continu voor altijd aangeroepen. Om de uitgang in te schakelen, hoeft de TRIAC slechts 10 microseconden te worden geactiveerd. Als het tijd is om de TRIAC en zeroCross te activeren, wordt de uitgang ingeschakeld tot het einde van de AC-fase.

Er waren een paar voorbeelden online die ik gebruikte om dit project op gang te krijgen. Het belangrijkste dat ik niet kon vinden, was het hebben van meerdere TRIAC-uitgangen. Anderen gebruikten de vertragingsfunctie om de output te PWM, maar dat zou in mijn geval niet werken omdat de ATMEGA de hele tijd naar DMX moet luisteren. Ik heb dit opgelost door de TRIAC met zoveel ms te pulseren na nuldoorgang. Door de TRIAC dichter bij de nuldoorgang te pulseren, wordt meer van de sinusgolf afgegeven.

Hier is hoe de halve 120VAC sin-golf eruit ziet op een oscilloscoop hierboven.

De ISP814 is aangesloten op interrupt 1. Dus wanneer het signaal ontvangt dat de AC overgaat van positief naar negatief of vice versa, stelt het nulCross voor elk kanaal in op waar en start de stopwatch.

In de loop()-methode controleert het elk kanaal of zeroCross waar is en de tijd om het te activeren verstreken is, zal het de TRIAC gedurende 10 microseconden pulseren. Dit is voldoende om de TRIAC aan te zetten. Zodra een TRIAC is ingeschakeld, blijft deze aan tot zeroCross. Het licht flikkerde als de DMX rond de 3% was, dus ik voegde de afknotting daar toe om dit te voorkomen. Dit kwam doordat de Arduino te traag was en de puls soms de volgende sin-golf activeerde in plaats van de laatste 4% van de golf.

Ook in de loop() stel ik de PWM-waarde van de status-LED's in. Deze LED's kunnen de interne PWM gebruiken die door de Arduino wordt gegenereerd, omdat we ons geen zorgen hoeven te maken over het nulkruis van AC. Zodra de PWM is ingesteld, blijft de Arduino op die helderheid doorgaan totdat anders wordt verteld.

Zoals opgemerkt in de bovenste opmerkingen om een DMX-interrupt op pin 2 te gebruiken en op 20 MHz te werken, moet u enkele van de Arduino-toepassingsbestanden bewerken. In HardwareSerial.cpp moet een stuk code worden verwijderd, dit stelt ons in staat om onze eigen interrupt-aanroep te schrijven. Deze ISR-methode staat onderaan de code om de DMX-interrupt af te handelen. Als je een Arduino als ISP-programmeur gaat gebruiken, zorg er dan voor dat je je wijzigingen terugzet naar HardwareSerial.cpp, anders is de ATMEGA328 op het breadboard onbereikbaar. De tweede verandering is een gemakkelijkere. Het boards.txt-bestand moet worden gewijzigd naar de nieuwe 20MHz-kloksnelheid.

helderheid[ch]=kaart(DmxRxField[ch], 0, 265, 8000, 0);

Helderheid komt overeen met 8000, want dat is het aantal microseconden van een 1/2 AC-sinusgolf bij 60 Hz. Dus bij volledige helderheid 256 DMX laat het programma 1/2 van de AC-sinusgolf AAN voor 8000us. Ik kwam op 8000 via raden en controleren. De berekening van 1000000us/60hz/2 = 8333 dus dat is misschien een beter getal, maar als je de extra 333us boven je hoofd hebt, kan de TRIAC worden geopend en is eventuele jitter in het programma waarschijnlijk een goed idee.

Op Arduino 1.5.3 hebben ze de locatie van het HardwareSerial.cpp-bestand verplaatst. Het is nu /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/HardwareSerial0.cpp. U moet dit hele blok uit commentaar geven dat begint met regel 39: #ifdefined(USART_RX_vect)

Anders krijg je deze fout: core/core.a(HardwareSerial0.cpp.o): In functie `_vector_18':

Stap 6: het inpakken

Het inpakken
Het inpakken
Het inpakken
Het inpakken
Het inpakken
Het inpakken

Ik heb de grijze projectdoos opgehaald bij Menards in hun elektrische afdeling. Ik gebruikte een heen en weer bewegende zaag om de gaten voor de elektrische plug uit te snijden. De koffer kreeg een theater-c-klem aan de bovenkant om op te hangen. Statuslampjes voor elke ingang en uitgang om te helpen diagnosticeren als er ooit een probleem is. Een labelmaker werd gebruikt om de verschillende poorten op het apparaat uit te leggen. De nummers naast elke plug vertegenwoordigen het DMX-kanaalnummer. Ik heb de printplaat en transformator met wat hete lijm aangebracht. De LED's worden op hun plaats geplakt met led houders.

Aanbevolen: