PJEKTY Merger DMX VT W systemach DMX nierzadko jest konieczne dołączenie do sieci więcej niż jednej konsoli, choćby ze względu na zwiększenie liczby obsługiwanych urządzeń. Nie można po prostu połączyć równolegle ich zacisków wyjściowych, bo konsole będą się wzajemnie zakłócały. Konieczne jest zastosowanie mergera. Rekomendacje: urządzenie jest kontynuacją publikacji związanych z systemem DMX przyda się osobom zajmujących się aranżacją i obsługą techniczną sceny. udowa mergera nie jest tak prosta, jak opisywanego w poprzednim numerze EP splittera, w którym wystarczyło rozdzielić sygnał na kilka wyjść, co daje się łatwo zrobić z użyciem kilku driverów MX. W mergerze trzeba zsumować dwa niezsynchronizowane ze sobą strumienie DMX. Każdy ze strumieni może przenosić od do bajtów danych. Funkcjonalność taką można zrealizować z użyciem mikrokontrolera mającego dwa interfejsy URT. Wskazane, aby można było ustalić, jaką część strumienia wykorzystują poszczególne wejścia, co umożliwi połączenie kaskadowe wielu mergerów. Do skonfigurowania takiego urządzenia, co prawda, wystarczyłyby zworki, ale większe możliwości daje impulsator i wyświetlacz alfanumeryczny. udowa i zasada działania Schemat ideowy projektu mergera DMX pokazano na rysunku. Napięcie zasilające 0 V C jest obniżane w transformatorze, następnie prostowane za pomocą diod D i D, po czym stabilizowane przez układ U. Dane wejściowe konwertowane są w układach U i U, a następnie trafiają na wejścia URT mikrokontrolera. Przeważnie merger będzie jedynym urządzeniem podłączonym do konsoli czy interfejsu komputera, dlatego zworki JP i JP powinny być założone. Przekształcone dane wyjściowe z mikrokontrolera są konwertowane za pomocą U. Mikrokontroler steruje także alfanumerycznym wyświetlaczem LCD oraz odczytuje informacje z impulsatora. Wyświetlacz i impulsator umieszczono na osobnej płytce, za- ELEKTNIK PRKTYCZN /0 montowanej pod kątem 0 stopni w stosunku do płyty głównej. Jak widać, budowa urządzenia jest nieskomplikowana, program już niestety taki nie jest. Oprogramowanie mikrokontrolera odbiera dane z obu interfejsów USRT i zapamiętuje je w tablicy. Obsługa USRT odbywa się z użyciem przerwań. Realizuje to procedura (dla USRT0) pokazana na listingu. Przy odbiorze danych z USRT z użyciem mechanizmu przerwań należy pamiętać, aby zadeklarować przerwanie jako Signal. W przeciwnym wypadku dojdzie do przepełnienia stosu, gdyż znacznik przerwania jest kasowany po zakończeniu jego obsługi, a nie po wejściu w przerwanie, tak jak to się dzieje w wypadku przerwań od timerów i innych peryferii. Jeśli konieczne byłoby przerwanie wielopoziomowe, należy postąpić w następujący sposób: Zadeklarować przerwanie jako Signal. Odblokować przerwania za pomocą sei(). Obsłużyć przerwanie. Przerwania nie trzeba odblokowywać przy wychodzeniu z procedury jego obsługi. Dzieje się to automatycznie przy odtwarzaniu rejestru CG. Procedura odbiorcza jest zabezpieczona przed przepełnieniem bufora. Jak wspomniano, konsola może wysyłać od do bajtów danych. W zmiennej curlendmx znajduje się liczba odebranych danych. Gdy dwa razy zostanie odebrana taka sama ich liczba (zmienna prevlendmx), jest ona zapamiętywana w LenDmx0 dla USRT0 lub LenDmx dla USRT. W ofercie VT* VT- VT- UK Podstawowe informacje: Zasilanie 0 V C/maks. V. Dwa wejścia interfejsu DMX, jedno wyjście. Przyjmuje ramki DMX o różnych długościach. Przystosowany do zamontowania w obudowie KM-0. Dodatkowe materiały na FTP: ftp://ep.com.pl, user:, pass: ofq wzory płytek PC Projekty pokrewne na FTP: (wymienione artykuły są w całości dostępne na FTP) VT- Demultiplexer DMX (EP /0) VT- Multiplexer DMX (EP /0) VT- DMX-owy sterownik serwomechanizmów (EP /0) VT- Miniaturowa konsola z interfejsem DMX (EP /0) * Uwaga: Zestawy VT mogą występować w następujących wersjach: VT xxxx UK to zaprogramowany układ. Tylko i wyłącznie. ez elementów dodatkowych. VT xxxx płytka drukowana PC (lub płytki drukowane, jeśli w opisie wyraźnie zaznaczono), bez elementów dodatkowych. VT xxxx + płytka drukowana i zaprogramowany układ (czyli połączenie wersji i wersji UK) bez elementów dodatkowych. VT xxxx płytka drukowana (lub płytki) oraz komplet elementów wymieniony w załączniku pdf VT xxxx C to nic innego jak zmontowany zestaw, czyli elementy wlutowane w PC. Należy mieć na uwadze, że o ile nie zaznaczono wyraźnie w opisie, zestaw ten nie ma obudowy ani elementów dodatkowych, które nie zostały wymienione w załączniku pdf VT xxxx CD oprogramowanie (nieczęsto spotykana wersja, lecz jeśli występuje, to niezbędne oprogramowanie można ściągnąć, klikając w link umieszczony w opisie kitu) Nie każdy zestaw VT występuje we wszystkich wersjach! Każda wersja ma załączony ten sam plik pdf! Podczas składania zamówienia upewnij się, którą wersję zamawiasz! (UK,, +, lub C). http://sklep.avt.pl KLM
PJEKTY Procedura odbioru danych z USRT jest taka sama, jak z USRT0. Różni się tylko nazwami rejestrów. Odebrane dane są kopiowane do bufora nadawczego. Realizuje to procedura pokazana na listingu. Zależnie od zmiennej podzial jest kopiowana część pierwszego bufora odbiorczego do nadawczego. Następnie, drugi bufor odbiorczy jest kopiowany do nadawczego za danymi pierwszego bufora. Jeśli długość przekroczyłaby maksymalna liczbę da- XRL () XRL () XRL () J DMXin XRL () XRL () XRL () J DMXin /TxD0 R 0 Dñ D+ R 0 Dñ D+ C0 00nF U MX + C U R 0 MX JP Term U R 0 MX JP Term R 0 C 00nF U 0 Vin Vout /RxD0 C 00nF /RxD C 00nF R0 0 J DMX OUT C 00nF C 0uF/V 0uF/V J In 0V F m TR D SN00 0 TZV xv D SN00 0 0 0 P0/SS P/SCK P/MOSI P/MISO P/OC0 P/OC P/OC P/OC/OCC D0/P0 D/P D/P D/P D/Pa D/P D/P D/P PD0/INT0/SCL PD/INT/SD PD/INT/RXD PD/INTRXD PD/IC PD/XCK PD/T PD/T /PC0 /PC 0/PC /PC /PC /PC /PC /PC SET X X LE/PG PEN PG0/WR PG/RD PG/TOSC PG/TOSC 0 0 0 ref PF0/DC0 PF/DC PF/DC PF/DC PF/DC PF/DC PF/DC PF/DC PE0/P/RXD0 PE/PD0/TXD0 PE/C+/XCK0 PE/Cñ/OC PE/INT/OC PE/INT/OCC PE/INT/T PE/INT/IC G N D + + C 00nF TCK TMS TDO T D Run R 0 ImpSW Imp Imp /RxD C 00nF R 0k /Rst Q MHz C pf C pf U tmega0-u TCK TDO TMS T JP 0 /Rst JTG /RxD0 /TxD0 D D D D RS E D Power P R 0 ImpSW Imp Imp RS E D D D D J 0 0 CON0 J 0 CON0 J 0 0 CON0 J 0 CON0 C nf C 00nF P IMPULSTOR Gnd K 0 JP LCD x C nf 0k PT0LV Rysunek. Schemat ideowy Mergera DMX ELEKTNIK PRKTYCZN /0
Merger DMX Listing. Procedura obsługi przerwania od USRT0 // Obsługa IRQ od odbiornika USRT SIGNL(USRT0_RX_vect) byte UsartStatus, UsartDana; word static CntDanych, curlendmx, prevlendmx; UsartStatus = UCSR0; UsartDana = UDR0; UCSR0 = 0; //Jeśli wykryto błąd ramki, to skończył się sygnał K if ((UsartStatus & (<<FE0))) TimerDmx0 = OVERTIME_DMX; DmxStatus0 = DMX_K; //Ustaw status prevlendmx = curlendmx; //Zapamiętaj poprzednią długość curlendmx = CntDanych; // Zapamiętaj aktualną CntDanych = 0; // Zeruj licznik danych // Zapamiętaj długość danych gdy dwa wyniki takie same if (prevlendmx==curlendmx) LenDmx0 = curlendmx; else // Jesli byl K a pojawila sie nowa dana: if(dmxstatus0 == DMX_K) // nastepny kanal if (CntDanych < LENUFDMX) Rxuf0[CntDanych++] = UsartDana; Listing. Kopiowanie danych do bufora nadawczego //--- Wysłanie ramki DMX ---// if ( TxEmpty ) // Jeśli poprzednia ramka wysłana d = ; // Kopiujemy od bajta, bo 0 zawsze równy 0 newlen = podzial + LenDmx; if ( newlen > ) newlen = ; // Wyliczmy nową długość for (s=; s<podzial; s++) Txuf0[ d++ ] = Rxuf0[ s ]; for (s=; s<; s++) Txuf0[ d++ ] = Rxuf[ s ]; if ( d > LENUFDMX) break; // Kontrola długości if((dmxstatus0!= DMX_OFFLINE) (DmxStatus!= DMX_OFFLINE)) //Nadajemy tylko, gdy jest transmisja na którymś porcie SendDmx( newlen ); else newlen = 0; Listing. Generowanie sygnałów K i M, wysłanie danych void SendDmx( word len ) LenTxRs = len; if ( LenTxRs > LENUFDMX ) LenTxRs = LENUFDMX; TxEmpty = FLSE; // Program główny generuje K i M po czym wyśle dane (wpis do UDR0) DdrTx(); // Port wyjsciem UCSR0 &= ~(<<TXEN0); // wyłącz TX URT ClrTx(); _delay_us(00); // wygeneruj K SetTx(); _delay_us(); // wygeneruj M UCSR0 = (<<TXEN0); // włącz TX URT UDR0 = Txuf0[ PtrTxRs=0 ]; // Wpisz do nadajnika pierwszy znak (start transmisji) Listing. Obsługa przerwania USRT wysłanie danych // Przerwanie nadawcze od USRT #define USRT_UD_vect _VECTOR() /* USRT, Data Register Empty */ #define USRT_TX_vect _VECTOR(0) /* USRT Tx Complete */ SIGNL(USRT0_TX_vect) // Musi byc ISR lub SIGNL a nie INTERUPT PtrTxRs++; //Wskaźnik na następny znak if (PtrTxRs < LenTxRs) //Jeśli są jeszcze znaki do wysłania UDR0 = Txuf0[ PtrTxRs ]; // Wpisz do nadajnika else TxEmpty = TRUE; // Wszystkie znaki wysłane (ostatnie IRQ) nych, jest ona ograniczana. Jeśli jest mniejsza, to po wyliczeniu jest zapamiętywana w zmiennej newlen. Procedura transmisyjna korzysta z tej zmiennej, dzięki czemu nie wysyła niepotrzebnych danych, co zwiększa częstotliwość odświeżania. Dane wysyłane są z użyciem przerwań, jednak najpierw generowane są sygnały K i M (listing ). Ponadto, ta procedura wpisuje pierwszy bajt do USRT, co powoduje jego wysłanie Wykaz elementów Rezystory: (SMD 0) R, R, R, R, R, R0: 0 V R, R: 0 V R: 0 kv Kondensatory: C, C: 0 mf/ V (elektrolit.) Kondensatory SMD 0: C, C, C C, C0, C: 00 nf (SMD 0) C, C: nf (SMD 0) C, C: pf (SMD 0) Półprzewodniki: U: 0 U, U, U: MX U: Tmega0-U D, D: SN00 D: dioda LED żółta, mm D: dioda LED, zielona, mm Inne: P: 0 kv (PT0LV pot. montażowy) P: EDS-C-0F (impulsator z włącznikiem, długa ośka) Q: MHz (kwarc HC/HCS) F: F m (bezpiecznik 0) J: T-.0-PP-P, T-.0-PIN (złącze T z listwą kołkową) J: listwa kątowa goldpin 0 J: listwa kątowa goldpin 0 J, J: NS-W (gniazdo NS pin), NS-G (wtyk NS pin), NS-T ( szt. terminali do wtyku NS) XLR-G-C: wtyk XRL- do obudowy J: NS-W (gniazdo NS pin) NS-G: wtyk NS pin NS-T: szt. terminali do wtyku NS XLR-G-CH: gniazdo XRL- do obudowy JP: IDC0MLP (gniazdo wannowe ) JP: LCD (wyświetlacz z listwą goldpin + gniazdo do płytki) TR: TZV V (transformator sieciowy, zalewany V/00 m) PPIN: podstawka precyzyjna pin ( szt.) KLM Listing. Procedura obsługi impulsatora //Obsługa IRQ od wejścia INT 0 SIGNL( INT0_vect ) // NIEMOZLIWE przerwanie wielopoziomowe (brak instrukcji SEI) byte data; data = IMPdata; if ( RdImp ) data++; else data--; data &= IMPdataMSK; // ograniczenie zakresu IMPdata = data; ELEKTNIK PRKTYCZN /0
PJEKTY Rysunek. Schemat montażowy Mergera DMX 0 ELEKTNIK PRKTYCZN /0
Merger DMX Fotografia. Sposób zamontowania płytek drukowanych i wygenerowanie przerwania. Pozostałe dane są wysyłane z wykorzystaniem mechanizmu przerwań (listing ). Procedura obsługi impulsatora została zrealizowana z użyciem mechanizmu przerwań, dzięki czemu jest nieskomplikowana. Pokazano ją na listingu. Montaż i uruchomienie Schemat montażowy Mergera DMX pokazano na rysunku. Montaż jest typowy i nie wymaga omawiania. Jeśli płytki wykonujemy samodzielnie, to płytę główną można wykonać jako jednowarstwową. Wtedy jest konieczne zamontowanie kilkunastu zwór z drutu. Płytkę wyświetlacza i impulsatora montujemy pod kątem 0 stopni w stosunku do płyty bazowej, za pośrednictwem goldpina kątowego. Należy zwrócić uwagę na jego typ. Szczegóły można zobaczyć na fotografii. Złącze J zastosowano tylko w celu wzmocnienia mechanicznego płytki. Wyświetlacz montujemy na gnieździe goldpin. Po włączeniu zasilania dioda D Konsola powinna świecić natomiast D migać z częstotliwością około Hz. Na wyświetlaczu powinien pojawić się ekran powitalny. Jeśli nic nie widać lub kontrast jest za mały, regulujemy go potencjometrem P. Pod układy MX warto zastosować podstawki. Jeśli procesor nie jest zaprogramowany można to zrobić przez złącze JP (JTG). Ustawienie bitów konfiguracyjnych pokazano na rysunku. Płytka Mergera DMX jest przystosowana do zamontowania w obudowie KM-0. Obsługa Po włączeniu zasilania pojawi się ekran powitalny, po czym ukaże się ekran roboczy, a na nim komunikat: : aaa* : bbb* P: ccc N: ddd Poszczególne symbole oznaczają: aaa liczba odebranych danych na pierwszym wejściu DMX, gwiazdka za liczbą oznacza trwającą transmisję (on-line), znak minus, brak transmisji przez co najmniej sekundę (off-line). Mereger DMX (podział na kanale) kanały (...) DmxIN DmxIN bbb jak wyżej, ale dla wejścia drugiego. ccc liczba danych, które zostaną wysłane z pierwszego kanału na wyjście; za nimi zostaną przesłane dane z drugiego kanału (miejsce podziału bufora nadawczego). ddd liczba danych wysyłanych na wyjście. Porada: urządzenie, które wysyła dłuższe ramki powinno być włączone do pierwszego kanału. Dzięki temu, zależnie od ustawienia mergera i liczby danych odbieranych w drugim kanale,,merger będzie wysyłał mniej niż bajtów danych, co zwiększy częstotliwość odświeżania urządzeń odbiorczych. Kręcąc impulsatorem zmieniamy liczbę danych wysyłanych z pierwszego kanału. Tę liczbę można zmieniać z krokiem. by zapamiętać nastawę należy nacisnąć impulsator. Przykładowy sposób włączenia meregerów można zobaczyć na rysunku. Sławomir Skrzyński, EP Mereger DMX (podział na kanale) kanały... konsola... konsola Konsola Rysunek. Ustawienie ważniejszych fusebitów DmxIN DmxIN kanałów... konsola... konsola... komputer... konsola Do urządzeń DMX kanały (...) KLM Mereger DMX (podział na kanale) Konsola DmxIN kanały (...) DmxIN kanały... komputer... kosola Komputer z interfejsem DMX kanałów (...) Rysunek. Przykładowy sposób włączenia mergerów ELEKTNIK PRKTYCZN /0