Miniaturowa konsola z interfejsem DMX

Miniaturowa konsola z interfejsem DMX
Pobierz PDF Download icon
Na łamach EP już opisano kilkanaście projektów urządzeń z interfejsem DMX. Przeważnie były to odbiorniki, takie jak Dimmery, przekaźniki, sterownik listew RGB. Przyszła pora na nadajnik - miniaturową konsolę. Potrafi ona sterować 12 urządzeniami. Umożliwia także zapis i późniejsze odtworzenie sekwencji sterującej. Rekomendacje: urządzenie przyda się do obsługi małych imprez, gdzie nie jest konieczne używanie dużej konsoli lub komputera.

Rysunek 1. Schemat ideowy miniaturowej konsoli DMX

Schemat ideowy miniaturowej konsoli z interfejsem DMX pokazano na rysunku 1. Urządzenie jest zasilane z sieci 230 VAC. Transformator TR1 obniża napięcie do 9 V. Stabilizator U1 zapewnia +5 V DC na potrzeby mikrokontrolera i nadajnika RS485 stosowanego powszechnie w urządzeniach DMX. Układ U3 konwertuje sygnał standardu TTL na RS485. Rezystory włączone na wyjściu konwertera to terminatory linii.

Rozwiązanie z trzema rezystorami jest stosowane w sieciach RS485 w sytuacji, gdy magistrala jest dwukierunkowa i czasem nie jest do niej dołączony żaden nadajnik. Wtedy to rezystory dołączone do masy i zasilania zapewniają polaryzację magistrali.

W systemie DMX nadajnik jest cały czas dołączony do magistrali, więc można pominąć rezystory polaryzujące, a rezystor 240 Ω zamienić na 120 Ω (impedancja kabla). Mikrokontroler, za pośrednictwem wbudowanego przetwornika A/C, odczytuje napięcie z potencjometrów i umieszcza je w ramce nadawczej DMX w kanałach od 1 do 6. Dane z przetwornika A/C są uśredniane. W konsoli wykorzystano uśrednianie wykładnicze (listing 1). Zaletą takiego uśredniania jest mała zajętość pamięci RAM (trzeba pamiętać tylko poprzedni wynik przetwarzania).

Sygnały z przełączników są odczytywane przez porty cyfrowe i zależnie od ich stanu, w ramce DMX w kanałach od 7 do 12, zapisywana jest wartość 0 lub 255. Tak skompletowana ramka, po uzupełnianiu sygnałami BREAK, MAB i SC, jest wysyłana na magistralę (listing 2).

Listing 1. Uśrednianie wykładnicze

Listing 2. Procedura generująca sygnały BREAK i MAB

Tabela 1. Budowa ramki Mini konsoli

Tabela 2. Budowa rekordu w EEPROM

Wysyłane są 24 kanały DMX, ponieważ takie wymagania stawia norma. W kanałach od 14 do 24 na stałe jest zapisana wartość 0. Budowę ramki wysyłanej przez konsolę umieszczono w tabeli 1.

Naciśnięcie przycisku REC spowoduje zaświecenie diody REC oraz rozpocznie proces rejestracji nastaw potencjometrów i przełączników do pamięci EEPROM. Zapis kończy się po ponownym naciśnięciu przycisku REC lub zapełnieniu pamięci. Budowę rekordu zapisywanego w pamięci EEPROM opisuje tabela 2.

Ze względu na niewielką pojemność pamięci procesora przy próbkowaniu co 100 ms (10 razy na sekundę) w procesorze ATmega328 można zapisać tylko 14 sekund, co wynika z wyrażenia. W mikrokontrolerach ATmega168 lub ATmega88 jest to już tylko 7 sekund, ponieważ pamięć EEPROM ma pojemność 500 bajtów.

Rysunek 2. Schemat montażowy miniaturowej konsoli DMX

Aby wydłużyć czas zapisu zastosowano małą "sztuczkę". Dane zapisywane są do EEPROM co 80, 160, 320 lub 640 ms, zależnie od ustawienie przełączników KOMPRESJA i TEMPO. Dane o położeniu potencjometrów są wysyłane zawsze co 80 ms, ale pobierane są z EEPROM co 80 lub 160 ms, a dane pomiędzy próbkami są uśredniane (listing 3).

Zmienna FLdziel jest zmieniana po każdym odczycie z EEPROM, więc jeden odczyt zapisuje do bufora DMX wartość z EEPROM, drugi uśrednioną wartość wyliczoną z aktualnej i kolejnej próbki (listing 4).

Możliwe ustawienia przełączników KOMPRESJA i TEMPO pokazano w tabeli 3. Oczywiście można użyć innych algorytmów pakowania. Zakładając, że równocześnie zmieniają się nastawy kilku, a nie wszystkich potencjometrów można by użyć algorytmu ByteRun.

Długość zapisu można też zwiększyć przez zastosowanie mikrokontrolera z większą ilością pamięci ram lub użyć zewnętrznej pamięci RAM/EEPROM komunikującej się przez SPI lub IIC. Zaletą zewnętrznej pamięci byłaby możliwość zwiększenia częstotliwości próbkowania grubo poniżej 1 ms, co zwiększyło by płynność odtwarzania. Konsola miała być prosta, więc zrezygnowałem z tej opcji, bo prościej będzie zastosować komputer z przejściówką USB-DMX.

Tabela 3. Ustawienie przełączników KOMPRESJA i TEMPO

Listing 3. Uśrednianie próbek przy odczycie z kompresją 2:1

Listing 4. Uśrednianie próbek przy odczycie z kompresją 4:1

Tabela 4. Funkcje Diod LED

Jeśli w EEPROM znajduje się jakiś zapis, naciśnięcie przycisku PLAY spowoduje zaświecenie diody PLAY oraz rozpocznie się proces odtwarzania nastaw potencjometrów i przełączników z pamięci EEPROM. Odczyt kończy się po ponownym naciśnięciu przycisku PLAY lub odczytaniu całego zapamiętanego zapisu. Stan pracy konsoli jest sygnalizowany za pomocą diod LED (tabela 4).

Wykaz elementów

Rezystory: (1/8 W):
R12: 51 Ω
R9: 240 Ω
R1, R2, R7, R8, R10, R11: 470 Ω
P1...P6: 10 kΩ/A (potencjometr suwakowy)

Kondensatory:
C6, C7: 22 pF/50 V (ceram.)
C2, C3, C5, C8, C9: 100 nF/50 V (ceram.)
C1, C4: 470 µF/16 V/16 V (elektrolit.)

Półprzewodniki:
D1, D2: 1N4007
U1: 7805 (TO-220)
U2: ATmega328PU (można użyć ATmega88 lub 168)
U3: MAX485
D4, D5: dioda LED, zielona
D6: dioda LED, czerwona
D3: dioda LED, żółta

Inne:
Q1: 16 MHz (kwarc w obudowie HC49 lub HC49S)
F1: 63 mA (gniazdo+bezpiecznik 5×20 mm)
J3: NS25-W3, gniazdo NS25 3 pin XLR-3G-C, gniazdo XRL-3 do obudowy NS25-T, 3 szt. terminali do wtyku NS25
J2: ZL231-6PG gniazdo ZL231-6PG (6 pin proste) lub listwa kołkowa ZL202-6G goldpin 2×3
J1: TB-5.0-PP-3P, TB-5.0-PIN złącze TB z listwą kołkową
J4: ZL231-10PG, gniazdo ZL231-10PG (10 pin, proste)
FT14, wtyk zaciskany na taśmę + taśma FLAT 14-żyłowa
SW1...SW6, SW9, SW10: MTS-101 (przełącznik pojedynczy SPST 2P)
SW7, SW10: przycisk chwilowy, zielony
SW8, SW10: przycisk chwilowy, czerwony
TR1: TZ2VA 2×9 VAC
DIP28S: podstawka precyzyjna 28 pin wąska (300 mils)
PDIP8: podstawka precyzyjna 8 pin

Montaż i uruchomienie:

Rysunek 3. Ustawienia ważniejszych fusebitów

Schemat montażowy konsoli pokazano na rysunku 2. Montaż jest typowy i nie wymaga omawiania. Pod układy warto zastosować podstawki. Uruchomienie rozpoczynamy od zasilacza. Jeśli napięcie jest poprawne można umieścić układy w podstawkach.

Jeśli procesor nie jest zaprogramowany, możemy to zrobić przy wykorzystaniu załącza J2. Ustawienie bitów konfiguracyjnych przedstawiono na rysunku 3. Podczas programowania trzeba pamiętać, że ustawienie przełącznika SW10 "TEMPO" w pozycję On (zwarcie do masy), zablokuje możliwość programowania (zablokowana linia SCK).

Po włączeniu zasilania dioda D3 powinna migać z częstotliwością około 1 Hz. Elementy umieszczone w ramce znajdują się poza płytką i są z nią połączone taśmą. Urządzenie można zamknąć w obudowie KM-60. W materiałach dodatkowych, na FTP, znajduje się kod źródłowy i wynikowy dla Atmega88, Atmega168 i Atmega328.

Sławomir Skrzyński, EP

Artykuł ukazał się w
Elektronika Praktyczna
lipiec 2014
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik czerwiec 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec 2020

Świat Radio

Magazyn użytkowników eteru

APA - Automatyka Podzespoły Aplikacje czerwiec 2020

APA - Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna czerwiec 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich czerwiec 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów