Obsah:

4kanálový DMX stmívač: 6 kroků
4kanálový DMX stmívač: 6 kroků

Video: 4kanálový DMX stmívač: 6 kroků

Video: 4kanálový DMX stmívač: 6 kroků
Video: USB to DMX Interface Adapter LED DMX512 Computer PC Stage Lighting Controller Dimmer 2024, Listopad
Anonim
4kanálový DMX stmívač
4kanálový DMX stmívač

Cílem je navrhnout a vytvořit přenosný stmívač.

Požadavky:

  • Ovládatelné DMX512
  • 4 kanály
  • Přenosný
  • Snadné použití

Tuto myšlenku jsem navrhl svému profesorovi na WSU, protože jsem chtěl spojit své vášně pro divadlo a počítače. Tento projekt se choval trochu jako můj seniorský projekt v divadelním oddělení. Pokud máte nějaké dotazy nebo připomínky, rád vám pomůžu.

Budoucí vývoj by mohl zahrnovat více kanálů, 5pinový DMX konektor, DMX passthrough, 8 dip přepínačů pro změnu kanálu, deska s plošnými spoji.

Tento projekt jsem migroval z https://danfredell.com/df/Projects/Entries/2013/1/6_DMX_Dimmer.html, protože je myslím stále populární. Také jsem ztratil svůj počáteční soubor iWeb, takže jej již nemohu snadno aktualizovat. Bylo by hezké umožnit lidem sdílet své otázky týkající se projektu navzájem.

Krok 1: Shromáždění hardwaru

Shromáždění hardwaru
Shromáždění hardwaru

Použitý hardware: Většina byla objednána u Tayda Electronics. Líbí se mi víc než DigiKey kvůli menšímu a srozumitelnějšímu výběru.

  1. ATMEGA328, Mikroprocesor
  2. MOC3020, optočlen TRIAC. Ne ZeroCross.
  3. Přijímač MAX458 nebo SN75176BP, DMX
  4. ISP814, AC optočlen
  5. 7805, 5v regulátor
  6. BTA24-600, 600V 25A TRIAC
  7. 20MHz krystal
  8. Napájení 9V

Na cestě bylo několik překážek a ponaučení

  • Pokud nejste odborník na registry, držte se ATMEGA328P
  • Špatné optočleny. Nechcete Zero Cross
  • Vysoké kanály byly nestabilní. Přechod z 16 MHz na 20 MHz tento problém vyřešil
  • Nelze mít stavovou kontrolku DMX, protože přerušovací hovor musel být velmi rychlý
  • DC napájení musí být extrémně stabilní, jakékoli zvlnění způsobí, že bude DMX signál velmi hlučný

Design TRIAC pochází od společnosti MRedmon, děkuji.

Krok 2: Návrh obvodu

Návrh obvodu
Návrh obvodu

K návrhu obvodu jsem použil Fritzing 7.7 na Macu.

MAX485 v horní části slouží k převodu DMX signálu na něco, co Arduino dokáže přečíst.

4N35 vlevo slouží k detekci nulového křížení střídavého signálu, takže Arduino bude vědět, kdy má ztlumit výstup sinusové vlny. Více o interakci hardwaru a softwaru v softwarové sekci.

Dostal jsem otázku, bude tento projekt fungovat v Evropě s 230 V a 50 Hz? Nežiji v Evropě, ani tam často necestuji, abych mohl tento design vyzkoušet. Mělo by to fungovat, jen byste museli upravit řádek časování jasu kódu pro různé časové časové zpoždění.

Krok 3: Kovari's Circuit Design

Kovariův obvodový design
Kovariův obvodový design
Kovariův obvodový design
Kovariův obvodový design

Během procesu otevírání mých webových stránek jsem mohl vést několik e -mailových konverzací. Jedním z nich byl Kovari Andrei, který na základě tohoto projektu provedl návrh obvodu a chtěl se o svůj design podělit. Nejsem návrhář obvodů, ale je to projekt Eagle. Dejte mi vědět, jak to funguje pro vás, pokud to používáte.

Krok 4: Návrh obvodu Giacomo

Obvodový design Giacoma
Obvodový design Giacoma

Čas od času mi lidé pošlou zprávu se vzrušujícími úpravami, které provedli s tímto návodem, a já jsem si řekl, že bych se o ně měl s vámi všemi podělit.

Giacomo upravil obvod, takže nebyl vyžadován středový odbočkový transformátor. Deska plošných spojů je jednostranná a může být dostupnějším řešením pro ty, kteří si doma nemohou vyrobit oboustranné (trochu obtížné).

Krok 5: Software

Software
Software

Jsem obchodním softwarovým inženýrem, takže tato část je nejpodrobnější.

Summery: Když se Arduino poprvé spustí, zavolá se metoda setup (). Tam jsem nastavil několik proměnných a umístění umístění, které budou použity později. zeroCrossInterupt () je voláno/ spuštěno pokaždé, když AC přejde z kladného na záporné napětí. Nastaví příznak zeroCross pro každý kanál a spustí časovač. Metoda loop () se nazývá nepřetržitě navždy. Chcete -li zapnout výstup, musí být TRIAC spuštěn pouze na 10 mikrosekund. Pokud nastal čas pro spuštění TRIAC a zeroCross, výstup se zapne až do konce fáze AC.

Na internetu bylo několik příkladů, které jsem použil k zahájení tohoto projektu. Hlavní věc, kterou jsem nemohl najít, bylo mít více výstupů TRIAC. Jiní použili funkci zpoždění k PWM výstupu, ale to by v mém případě nefungovalo, protože ATMEGA musí neustále poslouchat DMX. Vyřešil jsem to pulzováním TRIACu v tolika ms po nulovém křížení. Pulzováním TRIAC blíže k nulovému křížení je vydáváno více sinové vlny.

Zde vypadá poloviční sinusová vlna 120 VAC na osciloskopu výše.

ISP814 je připojen k přerušení 1. Takže když obdrží signál, že AC přechází z kladného na záporný nebo naopak, nastaví zeroCross pro každý kanál na true a spustí stopky.

V metodě loop () zkontroluje každý kanál, zda je zeroCross pravdivý a doba, po které se aktivuje, bude pulzovat TRIAC po dobu 10 mikrosekund. To stačí k zapnutí TRIAC. Jakmile je TRIAC zapnutý, zůstane zapnutý až do zeroCross. Světlo by blikalo, když byl DMX kolem 3%, takže jsem tam přidal zkrácení, abych tomu zabránil. To způsobilo, že Arduino bylo příliš pomalé a puls by někdy spustil další vlnu hříchu místo posledních 4% vlny.

Také ve smyčce () jsem nastavil hodnotu PWM stavových LED. Tyto LED diody mohou využívat interní PWM generované Arduinem, protože se nemusíme starat o nulový kříž AC. Jakmile je PWM nastaveno, Arduino bude pokračovat v tomto jasu, dokud nebude řečeno jinak.

Jak je uvedeno v hlavních komentářích, abyste mohli použít přerušení DMX na pinu 2 a spustit na 20 MHz, budete muset upravit některé soubory aplikace Arduino. V HardwareSerial.cpp musí být odstraněn kus kódu, což nám umožňuje napsat vlastní volání přerušení. Tato metoda ISR je ve spodní části kódu pro zpracování přerušení DMX. Pokud se chystáte použít Arduino jako programátor ISP, nezapomeňte vrátit změny na HardwareSerial.cpp, jinak bude ATMEGA328 na desce chleba nedostupný. Druhá změna je jednodušší. Soubor boards.txt musí být změněn na novou taktovací frekvenci 20 MHz.

jas [ch] = mapa (DmxRxField [ch], 0, 265, 8000, 0);

Jas se mapuje na 8 000, protože to je množství mikrosekund 1/2 sinusové vlny AC při 60 Hz. Při plném jasu 256 DMX program ponechá 1/2 sinusovky AC zapnuto po dobu 8000us. Přišel jsem na 8000 pomocí hádání a kontroly. Udělat matematiku 1000000us/60Hz/2 = 8333, takže by to mohlo být lepší číslo, ale mít 333us navíc nad hlavou umožňuje TRIAC otevřít a jakýkoli jitter v programu je pravděpodobně dobrý nápad.

Na Arduinu 1.5.3 přesunuli umístění souboru HardwareSerial.cpp. Nyní je /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/HardwareSerial0.cpp Celý tento blok budete muset okomentovat, pokud blok začíná řádkem 39: #if definován (USART_RX_vect)

Jinak skončíte s touto chybou: core/core.a (HardwareSerial0.cpp.o): Ve funkci `_vector_18 ':

Krok 6: Zabalte to

Zabalit to
Zabalit to
Zabalit to
Zabalit to
Zabalit to
Zabalit to

Zvedl jsem šedý projektový box u Menardů v jejich elektrické sekci. Pomocí pístové pily jsem vyřízl otvory pro elektrické zástrčky. Případ má nahoře k zavěšení divadelní c-svorku. Stavové kontrolky pro každý vstup a výstup pomáhají diagnostikovat, pokud se někdy vyskytne problém. K vysvětlení různých portů na zařízení byl použit štítkovač. Čísla vedle každého konektoru představují číslo kanálu DMX. Desku s obvody a transformátor jsem připevnil horkým lepidlem. LED diody jsou přilepené na místě pomocí držáků LED.

Doporučuje: