Innholdsfortegnelse:

4 -kanals DMX -dimmer: 6 trinn
4 -kanals DMX -dimmer: 6 trinn

Video: 4 -kanals DMX -dimmer: 6 trinn

Video: 4 -kanals DMX -dimmer: 6 trinn
Video: Стильная Мужская Стрижка 2023 Пошагово дома | Уроки стрижек Евы Лорман | Как стричь Мужские стрижки 2024, Juli
Anonim
4 -kanals DMX dimmer
4 -kanals DMX dimmer

Konseptet er å designe og lage en bærbar dimmer.

Krav:

  • DMX512 kontrollerbar
  • 4 kanaler
  • Bærbar
  • Lett å bruke

Jeg foreslo denne ideen til professoren min ved WSU fordi jeg ønsket å kombinere mine lidenskaper for teater og datamaskiner. Dette prosjektet fungerte litt som mitt seniorprosjekt i teateravdelingen. Hvis du har kommentarer eller spørsmål, vil jeg gjerne hjelpe.

Fremtidig utvikling kan inkludere flere kanaler, 5 -pinners DMX -kontakt, DMX -gjennomgang, 8 dip -brytere for å bytte kanal, kretskort.

Jeg har migrert dette prosjektet fra https://danfredell.com/df/Projects/Entries/2013/1/6_DMX_Dimmer.html fordi det fortsatt er populært, antar jeg. Jeg mistet også iWeb -frøfilen min, så jeg kan ikke enkelt oppdatere den lenger. Det ville være fint å la folk dele spørsmålene sine om prosjektet med hverandre.

Trinn 1: Samle maskinvaren

Samler maskinvaren
Samler maskinvaren

Maskinvare brukt: Det meste ble bestilt fra Tayda Electronics. Jeg liker dem bedre enn DigiKey på grunn av det mindre og lettere å forstå utvalget.

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

Noen få hindringer og erfaringer underveis

  • Hvis du ikke er registerekspert, må du holde deg til ATMEGA328P
  • Feil optokoblere. Du vil ikke ha Zero Cross
  • Høye kanaler var ustabile. Å bytte fra 16MHz til 20MHz løste dette problemet
  • Kan ikke ha et DMX -statuslys fordi avbruddssamtalen måtte være veldig rask
  • Likestrøm må være ekstremt stabil, enhver ringning vil føre til at DMX -signalet blir veldig bråkete

TRIAC -designet kom fra MRedmon, takk.

Trinn 2: Kretsdesign

Kretsdesign
Kretsdesign

Jeg brukte Fritzing 7.7 på Mac for å designe kretsen min.

MAX485 på toppen brukes til å konvertere DMX -signalet til noe Arduino kan lese.

4N35 til venstre brukes til å oppdage nullkrysset til vekselstrømssignalet, slik at Arduino vil vite når klokkeslettet skal dempe sinusbølgeutgangen. Mer om hvordan maskinvare og programvare samhandler i programvaredelen.

Jeg har fått spørsmålet om dette prosjektet vil fungere i Europa med 230V og 50Hz? Jeg bor ikke i Europa, og jeg reiser heller ikke dit ofte for å kunne teste dette designet. Det burde fungere, du må bare endre lysstyrketidslinjen for kode for den forskjellige frekvensforsinkelsen.

Trinn 3: Kovari's Circuit Design

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

Gjennom prosessen med å ha nettstedet mitt oppe, kunne jeg ha noen e -postsamtaler. Den ene var med Kovari Andrei som laget en kretsdesign basert på dette prosjektet og ønsket å dele designet hans. Jeg er ingen kretskortdesigner, men det er et Eagle -prosjekt. Gi meg beskjed om hvordan det fungerer for deg hvis du bruker det.

Trinn 4: Giacomos kretsdesign

Giacomos kretsdesign
Giacomos kretsdesign

Fra tid til annen vil folk sende meg beskjed med de spennende tilpasningene de har gjort med dette instruerbare, og jeg tenkte jeg skulle dele dem med dere alle.

Giacomo modifiserte kretsen, så det var ikke nødvendig med en transformator i midten. Kretskortet er ensidig og kan være en rimeligere løsning for de som ikke kan gjøre tosidig hjemme (litt vanskelig).

Trinn 5: Programvare

Programvare
Programvare

Jeg er en programvareingeniør av fag, så denne delen er den mest detaljerte.

Sommerlig: Når Arduino starter for første gang, kalles setup () -metoden. Der satte jeg opp noen av variablene og utgangsstedene som skal brukes senere. zeroCrossInterupt () kalles/ kjøres hver gang AC krysser fra positiv til negativ spenning. Det vil sette zeroCross -flagget for hver kanal og starte timeren. Loop () -metoden kalles kontinuerlig for alltid. For å slå på utgangen må TRIAC bare utløses i 10 mikrosekunder. Hvis det er på tide å utløse TRIAC og zeroCross har skjedd, vil utgangen slå på til slutten av vekselstrømfasen.

Det var noen eksempler på nettet som jeg brukte for å starte dette prosjektet. Det viktigste jeg ikke fant var å ha flere TRIAC -utganger. Andre brukte forsinkelsesfunksjonen til å PWM -utgangen, men det ville ikke fungere i mitt tilfelle fordi ATMEGA må lytte til DMX hele tiden. Jeg løste dette ved å pulse TRIAC på så mange ms etter null-kryss. Ved å pulse TRIAC nærmere null-kryss blir mer av sin bølge sendt ut.

Slik ser den halve 120VAC syndbølgen ut på et oscilloskop ovenfor.

ISP814 er koblet til avbrudd 1. Så når den mottar signal om at vekselstrømmen går fra positiv til negativ eller omvendt, setter den zeroCross for hver kanal til sann og starter stoppeklokken.

I loop () -metoden sjekker den hver kanal om zeroCross er sant, og tiden for aktivering har passert, vil den pulsere TRIAC i 10 mikrosekunder. Dette er nok til å slå på TRIAC. Når en TRIAC er slått på, vil den forbli på til zeroCross. Lyset ville flimre når DMX var rundt 3%, så jeg la til avkortingen der inne for å forhindre det. Dette forårsaket at Arduino var for treg, og pulsen ville noen ganger utløse den neste syndbølgen i stedet for de siste 4% av bølgen.

Også i sløyfen () satte jeg PWM -verdien til statuslysdiodene. Disse lysdiodene kan bruke den interne PWM generert av Arduino fordi vi ikke trenger å bekymre deg for zeroCross av AC. Når PWM er innstilt, vil Arduino fortsette med den lysstyrken inntil det blir fortalt andre kloke.

Som nevnt i de øverste kommentarene for å bruke en DMX -avbrudd på pin 2 og kjøre på 20MHz, må du redigere noen av Arduino -applikasjonsfilene. I HardwareSerial.cpp må en del kode slettes, dette lar oss skrive vårt eget avbryteanrop. Denne ISR -metoden er nederst i koden for å håndtere DMX -avbruddet. Hvis du skal bruke en Arduino som en ISP -programmerer, må du huske å tilbakestille endringene til HardwareSerial.cpp, ellers vil ATMEGA328 på brødbrettet ikke nås. Den andre endringen er lettere. Filene boards.txt må endres til den nye 20MHz klokkehastigheten.

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

Lysstyrken kartlegges til 8000 fordi det er mengden mikrosekunder på 1/2 en AC sinusbølge ved 60 Hz. Så ved full lysstyrke 256 DMX vil programmet la 1/2 AC sinusbølge PÅ for 8000us. Jeg kom på 8000 via gjetning og sjekk. Å gjøre regnestykket på 1000000us/60hz/2 = 8333, slik at det kan være et bedre tall, men å ha den ekstra 333us over hodet gjør at TRIAC kan åpne og eventuelle rystelser i programmet er sannsynligvis en god idé.

På Arduino 1.5.3 flyttet de plasseringen av HardwareSerial.cpp -filen. Det er nå /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/HardwareSerial0.cpp Du må kommentere denne helheten hvis blokk begynner med linje 39: #if definert (USART_RX_vect)

Ellers vil du ende opp med denne feilen: core/core.a (HardwareSerial0.cpp.o): I funksjon `_vector_18 ':

Trinn 6: Pakker den opp

Pakker den opp
Pakker den opp
Pakker den opp
Pakker den opp
Pakker den opp
Pakker den opp

Jeg hentet den grå prosjektboksen på Menards i deres elektriske seksjon. Jeg brukte en stempel for å skjære ut de elektriske plugghullene. Saken fikk en teaterklemme festet til toppen for hengende formål. Statuslys for hver inngang og utgang for å diagnostisere om det noen gang er et problem. En etikettmaskin ble brukt til å forklare de forskjellige portene på enheten. Tallene ved siden av hver plugg representerer DMX -kanalnummeret. Jeg festet kretskortet og transformatoren med litt varmt lim. Lysdiodene sitter fast på plass med ledholdere.

Anbefalt: