Innehållsförteckning:

4 -kanals DMX -dimmer: 6 steg
4 -kanals DMX -dimmer: 6 steg

Video: 4 -kanals DMX -dimmer: 6 steg

Video: 4 -kanals DMX -dimmer: 6 steg
Video: DMX - What They Really Want (Official Music Video) ft. Sisqo 2024, November
Anonim
4 -kanals DMX -dimmer
4 -kanals DMX -dimmer

Konceptet är att designa och skapa en bärbar dimmer.

Krav:

  • DMX512 styrbar
  • 4 kanaler
  • Portabla
  • Lätt att använda

Jag föreslog denna idé för min professor vid WSU eftersom jag ville kombinera mina passioner för teater och datorer. Detta projekt agerade lite som mitt seniorprojekt på teateravdelningen. Om du har några kommentarer eller frågor, hjälper jag gärna till.

Framtida utveckling kan inkludera fler kanaler, 5 -stifts DMX -kontakt, DMX -genomströmning, 8 dip -switchar för att byta kanal, kretskort.

Jag har migrerat det här projektet från https://danfredell.com/df/Projects/Entries/2013/1/6_DMX_Dimmer.html eftersom det fortfarande är populärt antar jag. Jag tappade också min iWeb -fröfil så jag kan inte enkelt uppdatera den längre. Det skulle vara trevligt att låta människor dela sina frågor om projektet med varandra.

Steg 1: Samla hårdvaran

Samlar ihop hårdvaran
Samlar ihop hårdvaran

Hårdvara som används: Det mesta beställdes från Tayda Electronics. Jag gillar dem bättre än DigiKey på grund av det mindre och lättare att förstå urvalet.

  1. ATMEGA328, Micro-controller
  2. MOC3020, TRIAC Optokopplare. Inte ZeroCross.
  3. MAX458 eller SN75176BP, DMX -mottagare
  4. ISP814, AC optokopplare
  5. 7805, 5v Regulator
  6. BTA24-600, 600V 25A TRIAC
  7. 20 MHz kristall
  8. 9V strömförsörjning

Några hinder och lärdomar på vägen

  • Om du inte är en registerexpert, håll dig till en ATMEGA328P
  • Fel optokopplare. Du vill inte ha nollkors
  • Höga kanaler var instabila. Att byta från 16MHz till 20MHz löste detta problem
  • Det gick inte att ha en DMX -statuslampa eftersom avbrottsanropet måste vara mycket snabbt
  • Likström måste vara extremt stabil, varje krusning kommer att få DMX -signalen att bli mycket bullrig

TRIAC -designen kom från MRedmon, tack.

Steg 2: Kretsdesign

Kretsdesign
Kretsdesign

Jag använde Fritzing 7.7 på Mac för att designa min krets.

MAX485 högst upp används för att konvertera DMX -signalen till något som Arduino kan läsa.

4N35 till vänster används för att detektera nollkorset för AC -signalen så att Arduino kommer att veta vid vilken tidpunkt för att dämpa sinusvågens utgång. Mer om hur hårdvaran och programvaran interagerar i programvaruavsnittet.

Jag har fått frågan kommer detta projekt att fungera i Europa med 230V och 50Hz? Jag bor inte i Europa, och jag reser inte dit ofta för att kunna testa denna design. Det borde fungera, du måste bara ändra ljusstyrkan för tidslinjen för kod för olika frekvensfördröjningar.

Steg 3: Kovaris kretsdesign

Kovaris kretsdesign
Kovaris kretsdesign
Kovaris kretsdesign
Kovaris kretsdesign

Genom processen med att ha min webbplats uppe kunde jag ha några e -postkonversationer. En var med Kovari Andrei som gjorde en kretsdesign baserad på detta projekt och ville dela hans design. Jag är ingen kretskortsdesigner men det är ett Eagle -projekt. Låt mig veta hur det fungerar för dig om du använder det.

Steg 4: Giacomos kretsdesign

Giacomos kretsdesign
Giacomos kretsdesign

Då och då kommer människor att meddela mig med de spännande anpassningarna de har gjort med detta instruerbara och jag tänkte att jag borde dela dem med er alla.

Giacomo modifierade kretsen så att en transformator i mitten inte behövdes. Kretskortet är ensidigt och kan vara en mer prisvärd lösning för vem som inte kan göra dubbelsidigt hemma (lite svårt).

Steg 5: Programvara

programvara
programvara

Jag är en mjukvaruutvecklare av bransch så den här delen är den mest detaljerade.

Summery: När Arduino startar första gången kallas setup () -metoden. Där satte jag upp några av variablerna och utmatningsplatserna som ska användas senare. zeroCrossInterupt () anropas/ körs varje gång AC växlar från positiv till negativ spänning. Det kommer att ställa in zeroCross -flaggan för varje kanal och starta timern. Loop () -metoden kallas kontinuerligt för alltid. För att slå på utmatningen behöver TRIAC bara utlösas i 10 mikrosekunder. Om det är dags att trigga TRIAC och zeroCross har hänt kommer utgången att slå på tills slutet av AC -fasen.

Det fanns några exempel på nätet som jag använde för att få igång detta projekt. Det viktigaste som jag inte kunde hitta var att ha flera TRIAC -utgångar. Andra använde fördröjningsfunktionen för att PWM -utgången, men det skulle inte fungera i mitt fall eftersom ATMEGA måste lyssna på DMX hela tiden. Jag löste detta genom att pulsa TRIAC vid så många ms efter nollkorsning. Genom att pulsera TRIAC närmare nollkorsningen matas mer av sin våg ut.

Så här ser den halva 120VAC -sinvågan ut på ett oscilloskop ovan.

ISP814 är ansluten till avbrott 1. Så när den tar emot signal om att växelströmmen övergår från positiv till negativ eller vice versa sätter den zeroCross för varje kanal till true och startar stoppuret.

I loop () -metoden kontrollerar den varje kanal om zeroCross är sant och tiden för att den ska aktiveras kommer att pulsera TRIAC i 10 mikrosekunder. Detta är tillräckligt för att slå på TRIAC. När en TRIAC är påslagen kommer den att vara på tills zeroCross. Ljuset skulle flimra när DMX var runt 3% så jag lade till trunkeringen där för att förhindra det. Detta orsakade att Arduino var för långsam, och pulsen skulle ibland utlösa nästa sinvåg istället för de sista 4% av vågen.

Även i loop () ställde jag in PWM -värdet för status -lysdioderna. Dessa lysdioder kan använda den interna PWM som genereras av Arduino eftersom vi inte behöver oroa oss för zeroCross för AC. När PWM väl är inställt kommer Arduino att fortsätta med den ljusstyrkan tills det berättas för andra kloka.

Som nämnts i de översta kommentarerna för att kunna använda ett DMX -avbrott på pin 2 och köras på 20MHz måste du redigera några av Arduino -applikationsfilerna. I HardwareSerial.cpp måste en bit kod raderas, vilket gör att vi kan skriva vårt eget avbrottsanrop. Denna ISR -metod finns längst ner i koden för att hantera DMX -avbrottet. Om du ska använda en Arduino som en ISP -programmerare, var noga med att återställa dina ändringar till HardwareSerial.cpp annars kommer ATMEGA328 på brödbrädet inte att nås. Den andra förändringen är lättare. Boards.txt -filen måste ändras till den nya 20 MHz klockhastigheten.

ljusstyrka [ch] = karta (DmxRxField [ch], 0, 265, 8000, 0);

Ljusstyrka kartlägger till 8000 eftersom det är mängden mikrosekunder på 1/2 en AC -sinusvåg vid 60 Hz. Så vid full ljusstyrka 256 DMX lämnar programmet 1/2 AC -sinusvåg PÅ för 8000us. Jag kom på 8000 via gissning och kontroll. Att räkna 1000000us/60hz/2 = 8333 så det kan vara ett bättre tal, men att ha den extra 333us över huvudet gör att TRIAC kan öppna och eventuella skakningar i programmet är förmodligen en bra idé.

På Arduino 1.5.3 att de flyttade platsen för filen HardwareSerial.cpp. Det är nu /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/HardwareSerial0.cpp Du måste kommentera hela om block som börjar med rad 39: #if definierat (USART_RX_vect)

Annars kommer du att få detta fel: core/core.a (HardwareSerial0.cpp.o): I funktion `_vector_18 ':

Steg 6: Förpackning

Förpackning
Förpackning
Packa upp det
Packa upp det
Packa upp det
Packa upp det

Jag hämtade den grå projektlådan på Menards i deras elektriska sektion. Jag använde en fram- och återgående såg för att skära ut de elektriska plugghålen. Lådan fick en teaterklämma fäst vid ovansidan för hängande ändamål. Statuslampor för varje ingång och utgång för att diagnostisera om det någonsin finns ett problem. En etikettmaskin användes för att förklara de olika portarna på enheten. Siffrorna bredvid varje kontakt representerar DMX -kanalnumret. Jag fäst kretskortet och transformatorn med lite hett lim. Lysdioderna sitter fast med ledhållare.

Rekommenderad: