Spisu treści:

4-kanałowy ściemniacz DMX: 6 kroków
4-kanałowy ściemniacz DMX: 6 kroków

Wideo: 4-kanałowy ściemniacz DMX: 6 kroków

Wideo: 4-kanałowy ściemniacz DMX: 6 kroków
Wideo: Rodzaje oświetlenia scenicznego: oświetlenie „Retro” Lutuj z Wodzirejem #3 2024, Listopad
Anonim
4-kanałowy ściemniacz DMX
4-kanałowy ściemniacz DMX

Koncepcja polega na zaprojektowaniu i stworzeniu przenośnego ściemniacza.

Wymagania:

  • Sterowanie DMX512
  • 4 kanały
  • Przenośny
  • Łatwy w użyciu

Zaproponowałem ten pomysł mojemu profesorowi na WSU, ponieważ chciałem połączyć swoje pasje do teatru i komputerów. Ten projekt zachowywał się trochę jak mój starszy projekt w dziale teatralnym. Jeśli masz jakieś uwagi lub pytania, chętnie pomogę.

Przyszły rozwój może obejmować więcej kanałów, 5-pinowe złącze DMX, przejście DMX, 8 przełączników DIP do zmiany kanału, płytkę drukowaną.

Przeniosłem ten projekt z https://danfredell.com/df/Projects/Entries/2013/1/6_DMX_Dimmer.html, ponieważ wydaje mi się, że nadal jest popularny. Zgubiłem też plik seed iWeb, więc nie mogę go już łatwo aktualizować. Byłoby miło, gdyby ludzie mogli dzielić się ze sobą swoimi pytaniami dotyczącymi projektu.

Krok 1: Zbieranie sprzętu

Zbieranie sprzętu
Zbieranie sprzętu

Użyty sprzęt: Większość zamówiono w Tayda Electronics. Lubię je bardziej niż DigiKey ze względu na mniejszy i łatwiejszy do zrozumienia wybór.

  1. ATMEGA328, mikrokontroler
  2. MOC3020, TRIAC Transoptor. Nie ZeroCross.
  3. MAX458 lub SN75176BP, odbiornik DMX
  4. ISP814, transoptor AC
  5. 7805, regulator 5v
  6. BTA24-600, 600V 25A TRIAK
  7. Kryształ 20 MHz
  8. Zasilanie 9V

Kilka przeszkód i lekcji wyciągniętych po drodze

  • Jeśli nie jesteś ekspertem od rejestrów, trzymaj się ATMEGA328P
  • Złe transoptory. Nie chcesz przejść przez zero
  • Wysokie kanały były niestabilne. Zmiana z 16 MHz na 20 MHz rozwiązała ten problem
  • Nie można mieć kontrolki statusu DMX, ponieważ wywołanie przerwania musiało być bardzo szybkie
  • Zasilanie prądem stałym musi być niezwykle stabilne, wszelkie tętnienia powodują, że sygnał DMX będzie bardzo zaszumiony

Projekt TRIAC pochodzi od MRedmon, dziękuję.

Krok 2: Projekt obwodu

Projekt obwodu
Projekt obwodu

Do zaprojektowania obwodu użyłem Fritzing 7.7 na Macu.

MAX485 na górze służy do konwersji sygnału DMX na coś, co Arduino może odczytać.

4N35 po lewej stronie służy do wykrywania przejścia przez zero sygnału AC, dzięki czemu Arduino będzie wiedział, o której godzinie przyciemnić wyjście fali sinusoidalnej. Więcej informacji o interakcji sprzętu i oprogramowania znajdziesz w dziale Oprogramowanie.

Dostałem pytanie czy ten projekt będzie działał w Europie z 230V i 50Hz? Nie mieszkam w Europie i nie jeżdżę tam często, aby móc przetestować ten projekt. Powinno działać, wystarczy zmodyfikować linię synchronizacji jasności kodu dla różnych opóźnień czasowych częstotliwości.

Krok 3: Projekt obwodu Kovari

Projekt obwodu Kovari
Projekt obwodu Kovari
Projekt obwodu Kovari
Projekt obwodu Kovari

Dzięki uruchomieniu mojej strony internetowej udało mi się przeprowadzić kilka rozmów e-mailowych. Jednym z nich był Kovari Andrei, który wykonał projekt obwodu w oparciu o ten projekt i chciał podzielić się swoim projektem. Nie jestem projektantem płytek drukowanych, ale to projekt Eagle. Daj mi znać, jak to działa, jeśli go użyjesz.

Krok 4: Projekt obwodu Giacomo

Projekt obwodu Giacomo
Projekt obwodu Giacomo

Od czasu do czasu ludzie będą mi przesyłać wiadomości z ekscytującymi adaptacjami, które zrobili z tym instruktażem, i pomyślałem, że powinienem podzielić się nimi z wami wszystkimi.

Giacomo zmodyfikował obwód, więc transformator z odczepem centralnym nie był wymagany. Płytka jest jednostronna i może być tańszym rozwiązaniem dla osób, które nie mogą zrobić dwustronnej w domu (trochę trudne).

Krok 5: Oprogramowanie

Oprogramowanie
Oprogramowanie

Jestem z zawodu inżynierem oprogramowania, więc ta część jest najbardziej szczegółowa.

Summery: Kiedy Arduino uruchamia się po raz pierwszy, wywoływana jest metoda setup(). W tym miejscu ustawiłem kilka zmiennych i lokalizacji wyjściowych, które będą używane później. zeroCrossInterupt() jest wywoływana/uruchamiana za każdym razem, gdy AC przechodzi z napięcia dodatniego do ujemnego. Ustawi flagę zeroCross dla każdego kanału i uruchomi timer. Metoda loop() jest wywoływana bez przerwy w nieskończoność. Aby włączyć wyjście, TRIAC musi być wyzwolony tylko na 10 mikrosekund. Jeśli nadszedł czas, aby wyzwolić TRIAC i zeroCross, wyjście włączy się do końca fazy AC.

Było kilka przykładów online, które wykorzystałem do rozpoczęcia tego projektu. Najważniejszą rzeczą, której nie mogłem znaleźć, było posiadanie wielu wyjść TRIAC. Inni używali funkcji opóźnienia do PWM wyjścia, ale to nie zadziałałoby w moim przypadku, ponieważ ATMEGA musi cały czas słuchać DMX. Rozwiązałem to pulsując TRIAC w tak wielu ms po przejściu przez zero. Pulsując TRIAC bliżej przejścia przez zero, więcej fali grzechu jest wyprowadzane.

Oto jak wygląda połowa fali sinusoidalnej 120VAC na oscyloskopie powyżej.

ISP814 jest podłączony do przerwania 1. Więc kiedy otrzyma sygnał, że AC przechodzi z dodatniego na ujemny lub odwrotnie, ustawia zeroCross dla każdego kanału na true i uruchamia stoper.

W metodzie loop() sprawdza każdy kanał, czy zeroCross jest prawdziwe, a czas aktywacji minął, wysyła impulsy do TRIAC przez 10 mikrosekund. To wystarczy, aby włączyć TRIAC. Po włączeniu TRIAC pozostanie włączony do zera Cross. Światło migotało, gdy DMX wynosiło około 3%, więc dodałem tam przycinanie, aby temu zapobiec. Spowodowało to, że Arduino było zbyt wolne, a impuls czasami wyzwalał następną falę grzechu zamiast ostatnich 4% fali.

Również w loop() ustawiam wartość PWM diod statusu. Diody te mogą korzystać z wewnętrznego PWM generowanego przez Arduino, ponieważ nie musimy się martwić o zerowy krzyż AC. Po ustawieniu PWM Arduino będzie kontynuować tę jasność, dopóki nie zostanie poinformowany inaczej.

Jak zauważono w najlepszych komentarzach, aby użyć przerwania DMX na pinie 2 i działać z częstotliwością 20 MHz, będziesz musiał edytować niektóre pliki aplikacji Arduino. W HardwareSerial.cpp fragment kodu musi zostać usunięty, co pozwala nam na napisanie własnego wywołania przerwania. Ta metoda ISR znajduje się na dole kodu, aby obsłużyć przerwanie DMX. Jeśli zamierzasz używać Arduino jako programisty ISP, pamiętaj, aby przywrócić zmiany do HardwareSerial.cpp, w przeciwnym razie ATMEGA328 na płycie chlebowej będzie nieosiągalny. Druga zmiana jest łatwiejsza. Plik Boards.txt musi zostać zmieniony na nową częstotliwość zegara 20 MHz.

jasność[ch]=mapa(DmxRxField[ch], 0, 265, 8000, 0);

Jasność mapuje się do 8000, ponieważ jest to ilość mikrosekund 1/2 fali sinusoidalnej prądu przemiennego przy 60 Hz. Czyli przy pełnej jasności 256 DMX program pozostawi włączoną 1/2 sinusoidy AC przez 8000us. Wymyśliłem 8000 przez zgadywanie i sprawdzanie. Obliczenie 1000000us/60hz/2 = 8333, więc może to być lepsza liczba, ale posiadanie dodatkowych 333us nad głową pozwala na otwarcie TRIAC i wszelkie jitter w programie jest prawdopodobnie dobrym pomysłem.

W Arduino 1.5.3 przenieśli lokalizację pliku HardwareSerial.cpp. Teraz jest to /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/HardwareSerial0.cpp Będziesz musiał zakomentować to wszystko, jeśli blok zaczyna się od linii 39: #if defined(USART_RX_vect)

W przeciwnym razie otrzymasz ten błąd: core/core.a(HardwareSerial0.cpp.o): W funkcji `_vector_18':

Krok 6: Pakowanie go

Pakowanie go
Pakowanie go
Pakowanie go
Pakowanie go
Pakowanie go
Pakowanie go

Wziąłem szare pudełko projektowe w Menards w ich dziale elektrycznym. Użyłem piły szablastej do wycięcia otworów na wtyczki elektryczne. Walizka ma mocowany do góry zacisk typu teatralnego do zawieszania. Lampki stanu dla każdego wejścia i wyjścia pomagają zdiagnozować, czy kiedykolwiek wystąpi problem. Do wyjaśnienia różnych portów urządzenia użyto drukarki etykiet. Liczby obok każdej wtyczki reprezentują numer kanału DMX. Płytkę drukowaną i transformator przykleiłem gorącym klejem. Diody LED są mocowane za pomocą uchwytów do diod LED.

Zalecana: