Indholdsfortegnelse:

4 -kanals DMX -dæmper: 6 trin
4 -kanals DMX -dæmper: 6 trin

Video: 4 -kanals DMX -dæmper: 6 trin

Video: 4 -kanals DMX -dæmper: 6 trin
Video: Trina Moe 2024, November
Anonim
4 kanaler DMX dæmper
4 kanaler DMX dæmper

Konceptet er at designe og skabe en bærbar lysdæmper.

Krav:

  • DMX512 styrbar
  • 4 kanaler
  • Transportabel
  • Let at bruge

Jeg foreslog denne idé til min professor ved WSU, fordi jeg ville kombinere mine lidenskaber for teater og computere. Dette projekt virkede lidt som mit seniorprojekt i teaterafdelingen. Hvis du har kommentarer eller spørgsmål, vil jeg meget gerne hjælpe.

Fremtidig udvikling kan omfatte flere kanaler, 5 -polet DMX -stik, DMX -gennemgang, 8 dip -switches til at skifte kanal, printkort.

Jeg har migreret dette projekt fra https://danfredell.com/df/Projects/Entries/2013/1/6_DMX_Dimmer.html, fordi det stadig er populært, tror jeg. Jeg mistede også min iWeb seed -fil, så jeg ikke let kan opdatere den længere. Det ville være rart at give folk mulighed for at dele deres spørgsmål om projektet med hinanden.

Trin 1: Indsamling af hardware

Indsamling af hardware
Indsamling af hardware

Brugt hardware: Det meste blev bestilt fra Tayda Electronics. Jeg kan bedre lide dem end DigiKey på grund af det mindre og lettere at forstå udvalg.

  1. ATMEGA328, mikrokontroller
  2. MOC3020, TRIAC optokobler. Ikke ZeroCross.
  3. MAX458 eller SN75176BP, DMX -modtager
  4. ISP814, AC optokobler
  5. 7805, 5v regulator
  6. BTA24-600, 600V 25A TRIAC
  7. 20MHz krystal
  8. 9V strømforsyning

Et par forhindringer og erfaringer undervejs

  • Hvis du ikke er en registerekspert, skal du holde dig til en ATMEGA328P
  • Forkerte optokoblere. Du vil ikke have Zero Cross
  • Høje kanaler var ustabile. At skifte fra 16MHz til 20MHz løste dette problem
  • Kunne ikke have et DMX -statuslys, fordi afbrydelsesopkaldet skulle være meget hurtigt
  • Jævnstrøm skal være ekstremt stabil, enhver krusning får DMX -signalet til at blive meget støjende

TRIAC -designet kom fra MRedmon, tak.

Trin 2: Kredsløbsdesign

Kredsløbsdesign
Kredsløbsdesign

Jeg brugte Fritzing 7.7 på Mac til at designe mit kredsløb.

MAX485 øverst bruges til at konvertere DMX -signalet til noget Arduino kan læse.

4N35 til venstre bruges til at detektere nulkryds for AC -signalet, så Arduinoen ved på hvilket tidspunkt at dæmpe sinusbølgeudgangen. Mere om hvordan hardware og software interagerer i softwaresektionen.

Jeg har fået spørgsmålet om dette projekt vil fungere i Europa med 230V og 50Hz? Jeg bor ikke i Europa, og jeg rejser heller ikke ofte der for at kunne teste dette design. Det skulle fungere, du skulle bare ændre lysstyrketidslinjen for kode for den forskellige frekvensforsinkelse.

Trin 3: Kovari's Circuit Design

Kovari's Circuit Design
Kovari's Circuit Design
Kovari's Circuit Design
Kovari's Circuit Design

Gennem processen med at have mit websted oppe kunne jeg få et par e -mail -samtaler. Den ene var sammen med Kovari Andrei, der lavede et kredsløbsdesign baseret på dette projekt og ville dele sit design. Jeg er ingen printkortdesigner, men det er et Eagle -projekt. Lad mig vide, hvordan det fungerer for dig, hvis du bruger det.

Trin 4: Giacomos kredsløbsdesign

Giacomos kredsløbsdesign
Giacomos kredsløbsdesign

Af og til sender folk besked til mig med de spændende tilpasninger, de har gjort med denne instruktive, og jeg tænkte, at jeg skulle dele dem med jer alle.

Giacomo modificerede kredsløbet, så en center -tappet transformer var ikke påkrævet. PCB er en enkeltsidet og kan være en mere overkommelig løsning for dem, der ikke kan lave dobbeltsidet derhjemme (lidt svært).

Trin 5: Software

Software
Software

Jeg er en softwareingeniør af fag, så denne del er den mest detaljerede.

Sommerlig: Når Arduino først starter, kaldes setup () -metoden. Der har jeg konfigureret et par af de variabler og outputplaceringer, der skal bruges senere. zeroCrossInterupt () kaldes/ køres hver gang AC krydser fra positiv til negativ spænding. Det indstiller zeroCross -flag for hver kanal og starter timeren. Loop () -metoden kaldes kontinuerligt for altid. For at tænde for udgangen skal TRIAC kun udløses i 10 mikrosekunder. Hvis det er tid til at udløse TRIAC og zeroCross er sket, vil output tændes til slutningen af AC -fasen.

Der var et par eksempler online, som jeg brugte til at få dette projekt startet. Det vigtigste, jeg ikke kunne finde, var at have flere TRIAC -udgange. Andre brugte forsinkelsesfunktionen til at PWM output, men det ville ikke fungere i mit tilfælde, fordi ATMEGA hele tiden skal lytte til DMX. Jeg løste dette ved at pulse TRIAC ved så mange ms efter nul-krydsning. Ved at pulsere TRIAC tættere på nul-krydsning udsendes mere af sin-bølgen.

Sådan ser den halve 120VAC syndbølge ud på et oscilloskop ovenfor.

ISP814 er forbundet til afbrydelse 1. Så når den modtager signal om, at vekselstrømmen overgår fra positiv til negativ eller omvendt, sætter den zeroCross for hver kanal til sand og starter stopuret.

I loop () -metoden kontrollerer den hver kanal, om zeroCross er sand, og den tid, den skal aktiveres, er gået, vil pulsere TRIAC'en i 10 mikrosekunder. Dette er nok til at tænde TRIAC'en. Når en TRIAC er tændt, forbliver den tændt indtil zeroCross. Lyset ville flimre, når DMX var omkring 3%, så jeg tilføjede afkortningen derinde for at forhindre det. Dette fik Arduino til at være for langsom, og pulsen ville nogle gange udløse den næste syndbølge i stedet for de sidste 4% af bølgen.

Også i loop () indstillede jeg PWM -værdien for status -LED'erne. Disse lysdioder kan bruge den interne PWM genereret af Arduino, fordi vi ikke behøver at bekymre os om nulkryds på AC. Når PWM er indstillet, vil Arduino fortsætte med denne lysstyrke, indtil det bliver fortalt på anden vis.

Som bemærket i de øverste kommentarer for at kunne bruge en DMX -afbrydelse på pin 2 og køre ved 20MHz, bliver du nødt til at redigere nogle af Arduino -applikationsfilerne. I HardwareSerial.cpp skal en del kode slettes, hvilket giver os mulighed for at skrive vores eget afbrydelsesopkald. Denne ISR -metode er nederst i koden til håndtering af DMX -afbrydelsen. Hvis du vil bruge en Arduino som en ISP -programmør, skal du sørge for at tilbageføre dine ændringer til HardwareSerial.cpp ellers vil ATMEGA328 på brødbrættet ikke nås. Den anden ændring er lettere. Filerne boards.txt skal ændres til den nye 20MHz clockhastighed.

lysstyrke [ch] = kort (DmxRxField [ch], 0, 265, 8000, 0);

Lysstyrken kortlægges til 8000, fordi det er mængden af mikrosekunder på 1/2 en AC sinusbølge ved 60 Hz. Så ved fuld lysstyrke 256 DMX vil programmet efterlade 1/2 AC sinusbølge TIL for 8000us. Jeg kom på 8000 via gæt og check. At regne 1000000us/60hz/2 = 8333, så det kan være et bedre tal, men at have den ekstra 333us over hoved gør det muligt for TRIAC at åbne, og enhver rystelse i programmet er sandsynligvis en god idé.

På Arduino 1.5.3, at de flyttede placeringen af filen HardwareSerial.cpp. Det er nu /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/HardwareSerial0.cpp Du bliver nødt til at kommentere dette hele, hvis blok starter med linje 39: #if defineret (USART_RX_vect)

Ellers ender du med denne fejl: core/core.a (HardwareSerial0.cpp.o): I funktion `_vector_18 ':

Trin 6: Pak det op

Pakker det op
Pakker det op
Pakker det op
Pakker det op
Pakker det op
Pakker det op

Jeg hentede den grå projektkasse på Menards i deres elektriske sektion. Jeg brugte en frem- og tilbagegående sav til at skære de elektriske stikhuller ud. Sagen fik en teater c-klemme fastgjort til toppen til hængende formål. Statuslamper for hver input og output for at hjælpe med at diagnosticere, om der nogensinde er et problem. En etiketmaskine blev brugt til at forklare de forskellige porte på enheden. Tallene ved siden af hvert stik repræsenterer DMX -kanalnummeret. Jeg fastgjorde printkortet og transformeren med lidt varm lim. Lysdioderne sidder fast på plads med ledholdere.

Anbefalede: