PROJEKTY Merger DMX 5481 AVT · do przepełnienia stosu, gdyż znacznik prze-rwania jest kasowany...
Transcript of PROJEKTY Merger DMX 5481 AVT · do przepełnienia stosu, gdyż znacznik prze-rwania jest kasowany...
27ELEKTRONIKA PRAKTYCZNA 12/2014
PROJEKTY
montowanej pod kątem 90 stopni w stosun-ku do płyty głównej.
Jak widać, budowa urządzenia jest nie-skomplikowana, program już niestety taki nie jest. Oprogramowanie mikrokontrolera odbie-ra dane z obu interfejsów USART i zapamię-tuje je w tablicy. Obsługa USART odbywa się z użyciem przerwań. Realizuje to procedura (dla USART0) pokazana na listingu 1.
Przy odbiorze danych z USART z uży-ciem mechanizmu przerwań należy pa-miętać, aby zadeklarować przerwanie jako „Signal”. W przeciwnym wypadku dojdzie do przepełnienia stosu, gdyż znacznik prze-rwania jest kasowany po zakończeniu jego obsługi, a nie po wejściu w przerwanie, tak jak to się dzieje w wypadku przerwań od ti-meró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 odtwarza-niu rejestru CREG.
Procedura odbiorcza jest zabezpieczona przed przepełnieniem bufora. Jak wspomnia-no, konsola może wysyłać od 24 do 512 baj-tów danych. W zmiennej curLenDmx znaj-duje się liczba odebranych danych. Gdy dwa razy zostanie odebrana taka sama ich liczba (zmienna prevLenDmx), jest ona zapamięty-wana w LenDmx0 dla USART0 lub LenDmx1 dla USART1.
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.
Merger DMX
Budowa mergera nie jest tak prosta, jak opi-sywanego w poprzednim numerze EP splitte-ra, w którym wystarczyło „rozdzielić” sygnał na kilka wyjść, co daje się łatwo zrobić z uży-ciem kilku driverów MAX485. W mergerze trzeba zsumować dwa niezsynchronizowane ze sobą strumienie DMX. Każdy ze strumieni może przenosić od 24 do 512 bajtów danych. Funkcjonalność taką można zrealizować z użyciem mikrokontrolera mającego dwa interfejsy UART. Wskazane, aby można było ustalić, jaką część strumienia wykorzystują poszczególne wejścia, co umożliwi połącze-nie kaskadowe wielu mergerów. Do skonfi-gurowania takiego urządzenia, co prawda, wystarczyłyby zworki, ale większe możliwo-ści daje impulsator i wyświetlacz alfanume-ryczny.
Budowa i zasada działaniaSchemat ideowy projektu mergera DMX po-kazano na rysunku 1. Napięcie zasilające 230 V AC jest obniżane w transformatorze, następnie prostowane za pomocą diod D1 i D2, po czym stabilizowane przez układ U1. Dane wejściowe konwertowane są w ukła-dach U2 i U3, a następnie trafiają na wejścia UART mikrokontrolera. Przeważnie merger będzie jedynym urządzeniem podłączonym do konsoli czy interfejsu komputera, dlate-go zworki JP2 i JP3 powinny być założone. Przekształcone dane wyjściowe z mikro-kontrolera są konwertowane za pomocą U5. Mikrokontroler steruje także alfanumerycz-nym wyświetlaczem LCD oraz odczytuje informacje z impulsatora. Wyświetlacz i im-pulsator umieszczono na osobnej płytce, za-
W ofercie AVT*AVT-5481 A AVT-5481 UKPodstawowe informacje:• Zasilanie 230 V AC/maks. 2 VA.• Dwa wejścia interfejsu DMX, jedno wyjście.• Przyjmuje ramki DMX o różnych długoś-
ciach.• Przystosowany do zamontowania w obudo-
wie KM-60.Dodatkowe materiały na FTP:ftp://ep.com.pl, user: 63172, pass: 428ofq53• wzory płytek PCBProjekty pokrewne na FTP:(wymienione artykuły są w całości dostępne na FTP)AVT-5474 Demultiplexer DMX (EP 11/2014)AVT-5473 Multiplexer DMX (EP 11/2014)AVT-5462 DMX-owy sterownik serwomechanizmów (EP 8/2014)AVT-5456 Miniaturowa konsola z interfejsem DMX (EP 7/2014)* Uwaga:Zestawy AVT mogą występować w następujących wersjach:AVT xxxx UK to zaprogramowany układ. Tylko i wyłącznie. Bez elementów
dodatkowych.AVT xxxx A płytka drukowana PCB (lub płytki drukowane, jeśli w opisie
wyraźnie zaznaczono), bez elementów dodatkowych.AVT xxxx A+ płytka drukowana i zaprogramowany układ (czyli połączenie
wersji A i wersji UK) bez elementów dodatkowych.AVT xxxx B płytka drukowana (lub płytki) oraz komplet elementów wymienio-
ny w załączniku pdfAVT xxxx C to nic innego jak zmontowany zestaw B, czyli elementy wluto-
wane w PCB. 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
AVT 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 AVT 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, A, A+, B lub C). http://sklep.avt.pl
AVT5481
REKLAMA
28 ELEKTRONIKA PRAKTYCZNA 12/2014
PROJEKTY
RO1
RE2
DE
3
GN
D5
Vcc
8
DI
4
B7
A6
U5
MAX
485
1 2 3J6
DM
X O
UT
VCC
R10
120
R9 120
C10
100n
F
VCC
/TxD
0
RO1
RE2
DE
3
GN
D5
Vcc
8
DI
4
B7
A6
U3
MAX
485
1 2 3
J5 DM
Xin2
VCC
R5 120
R6 120
/RxD
1
12
JP3
Term
C11
100n
F
Dñ
D+
XRL
(2)
XRL
(3)
XRL
(1)
RO1
RE2
DE
3
GN
D5
Vcc
8
DI
4
B7
A6
U2
MAX
485
1 2 3
J4 DM
Xin1
VCC
R2 120
R3 120
/RxD
0
12
JP2
Term
C7 100n
F
Dñ
D+
XRL
(2)
XRL
(3)
XRL
(1)
C1 470uF/16V
C4 470u
F/16
VC2 10
0nF
C3 100n
FVCC
+12
Vin
1
2
Vout
3
U1
7805
F1 63m
A
D1
SN40
07
D2
SN40
07
109
5 1
76TR
1
TZ2V
A 2
x9V
1 2 3
J1 In 2
30V
X124
X223
RESE
T20
PD7/
T232
PD6/
T131
PD2/
INT2
/RXD
127
PD3/
INT3
RXD
128
PD4/
IC1
29
PD5/
XCK1
30
PB0/
SS10
PB1/
SCK
11
PB2/
MO
SI12
PB3/
MIS
O13
PB4/
OC0
14
PB5/
OC1
A15
PB6/
OC1
B16
PB7/
OC2
/OC1
C17
AD
0/PA
051
AD
1/PA
150
AD
2/PA
249
AD
3/PA
348
AD
4/Pa
447
AD
5/PA
546
AD
6/PA
645
AD
7/PA
744
A8/
PC0
35
A9/
PC1
36
A10
/PC2
37
A11
/PC3
38
A12
/PC4
39
A13
/PC5
40
A14
/PC6
41
A15
/PC7
42
PEN
1A
LE/P
G2
43
PD1/
INT1
/SD
A26
PD0/
INT0
/SCL
25
VCC21
PG1/
RD34
PG0/
WR
33
PG4/
TOSC
218
PG3/
TOSC
119
PF0/
AD
C061
PF1/
AD
C160
PF2/
AD
C259
AVCC64
PF3/
AD
C358
PF4/
AD
C457
PF5/
AD
C556
PF6/
AD
C655
PF7/
AD
C754
PE0/
PDI/R
XD0
2
PE1/
PD0/
TXD
03
PE2/
AC+/
XCK0
4
PE3/
ACñ/
OC3
A5
PE4/
INT4
/OC3
B6
PE5/
INT5
/OC3
C7
PE6/
INT6
/T3
8
PE7/
INT7
/IC3
9
Are
f62
AGND 63VCC52U
4A
tMeg
a128
0-16
AU
VCC
Q1
16M
Hz
R7 10k
VCC
/Rst
C12
22pF
C13
22pF
/RxD
0/T
xD0
/RxD
1
TCK
TMS
TDO
TDI
C8 100n
F
VCC
C5 100n
F
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
JP1
LCD
2x1
6
E
C6 100n
F
P1
KA
Vcc
Gnd
VCC
D4
D5
D6
D7
135 4
2
P2 IMPU
LSAT
OR
C9 15nF
D4
D5
D6
D7
RS
RS
E
12
34
56
78
910
JP4
JTAG
TCK
TMS
TDO
TDI
/Rst
VCC
ImpA
ImpA
ImpB
ImpB
ImpS
W
ImpS
W
VCC
D4
Pow
er
D3
Run
R4 510
VCC
R8 510
VCC
VCC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
J3 CON
20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
J2 CON
20
VCC
1 2 3 4 5 6 7 8 9 10
J7 CON
10
1 2 3 4 5 6 7 8 9 10
J8 CON
10
C14
15nF
++
GN
D
VCC
VCC
10k PT10LV
Rysunek 1. Schemat ideowy Mergera DMX
Procedura odbioru danych z USART1 jest taka sama, jak z USART0. Różni się tylko nazwami rejestrów. Odebrane dane są kopiowane do bufora nadawczego.
Realizuje to procedura pokazana na listin-gu 2.
Zależnie od zmiennej podzial jest kopio-wana część pierwszego bufora odbiorcze-
go do nadawczego. Następnie, drugi bufor odbiorczy jest kopiowany do nadawczego za danymi pierwszego bufora. Jeśli długość przekroczyłaby maksymalna liczbę da-
29ELEKTRONIKA PRAKTYCZNA 12/2014
Merger DMX
REKLAMA
nych, jest ona ograniczana. Jeśli jest mniej-sza, 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ła-ne są z użyciem przerwań, jednak najpierw generowane są sygnały BREAK i MAB (lis-ting 3).
Ponadto, ta procedura wpisuje pierwszy bajt do USART, co powoduje jego wysłanie
Listing 1. Procedura obsługi przerwania od USART0// Obsługa IRQ od odbiornika USARTSIGNAL(USART0_RX_vect){ byte UsartStatus, UsartDana; word static CntDanych, curLenDmx, prevLenDmx;
UsartStatus = UCSR0A; UsartDana = UDR0; UCSR0A = 0;
//Jeśli wykryto błąd ramki, to skończył się sygnał BREAK if ((UsartStatus & (1<<FE0))) { TimerDmx0 = OVERTIME_DMX; DmxStatus0 = DMX_BREAK; //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 BREAK a pojawila sie nowa dana: if(DmxStatus0 == DMX_BREAK) { // nastepny kanal if (CntDanych < LENBUFDMX) RxBuf0[CntDanych++] = UsartDana; }}
Listing 2. Kopiowanie danych do bufora nadawczego//--- Wysłanie ramki DMX ---//if ( TxEmpty ) // Jeśli poprzednia ramka wysłana{ d = 1; // Kopiujemy od bajta 1, bo 0 zawsze równy 0 newLen = podzial + LenDmx1; if ( newLen > 513 ) newLen = 513; // Wyliczmy nową długość for (s=1; s<podzial; s++) TxBuf0[ d++ ] = RxBuf0[ s ]; for (s=1; s<513; s++) { TxBuf0[ d++ ] = RxBuf1[ s ]; if ( d > LENBUFDMX) break; // Kontrola długości } if((DmxStatus0 != DMX_OFFLINE)||(DmxStatus1 != DMX_OFFLINE)) //Nadajemy tylko, gdy jest transmisja na którymś porcie SendDmx( newLen ); else newLen = 0;}
Listing 3. Generowanie sygnałów BREAK i MAB, wysłanie danychvoid SendDmx( word len ){ LenTxRs = len; if ( LenTxRs > LENBUFDMX ) LenTxRs = LENBUFDMX; TxEmpty = FALSE;// Program główny generuje BREAK i MAB po czym wyśle dane (wpis do UDR0) DdrTx(); // Port wyjsciem UCSR0B &= ~(1<<TXEN0); // wyłącz TX UARTA ClrTx(); _delay_us(200); // wygeneruj BREAK SetTx(); _delay_us(88); // wygeneruj MAB UCSR0B |= (1<<TXEN0); // włącz TX UARTA UDR0 = TxBuf0[ PtrTxRs=0 ]; // Wpisz do nadajnika pierwszy znak (start transmisji)}
Listing 4. Obsługa przerwania USART – wysłanie danych// Przerwanie nadawcze od USART#define USART_UDRE_vect _VECTOR(19) /* USART, Data Register Empty */#define USART_TX_vect _VECTOR(20) /* USART Tx Complete */SIGNAL(USART0_TX_vect) // Musi byc ISR lub SIGNAL a nie INTERUPT{ PtrTxRs++; //Wskaźnik na następny znak if (PtrTxRs < LenTxRs) //Jeśli są jeszcze znaki do wysłania UDR0 = TxBuf0[ PtrTxRs ]; // Wpisz do nadajnika else TxEmpty = TRUE; // Wszystkie znaki wysłane (ostatnie IRQ)}
Listing 5. Procedura obsługi impulsatora//Obsługa IRQ od wejścia INT 0SIGNAL( INT0_vect ) // NIEMOZLIWE przerwanie wielopoziomowe (brak instrukcji SEI){ byte data; data = IMPdata; if ( RdImpB ) data++; else data--; data &= IMPdataMASK; // ograniczenie zakresu IMPdata = data;}
Wykaz elementówRezystory: (SMD 1206)R2, R3, R5, R6, R9, R10: 120 VR4, R8: 510 VR7: 10 kVKondensatory:C1, C4: 470 mF/16 V (elektrolit.)Kondensatory SMD 1206:C2, C3, C5…C8, C10, C11: 100 nF (SMD 1206)C9, C14: 15 nF (SMD 1206)C12, C13: 22 pF (SMD 1206)Półprzewodniki:U1: 7805U2, U3, U5: MAX485U4: ATmega1280-16AUD1, D2: SN4007D3: dioda LED żółta, 3 mmD4: dioda LED, zielona, 3 mmInne:P1: 10 kV (PT10LV pot. montażowy)P2: ED1212S-24C24-30F (impulsator z włącznikiem, długa ośka)Q1: 16 MHz (kwarc HC49/HC49S)F1: F63 mA (bezpiecznik 5×20)J1: TB-5.0-PP-2P, TB-5.0-PIN (złącze TB z listwą kołkową)J3: listwa kątowa goldpin 1×20J8: listwa kątowa goldpin 1×10J4, J5: NS25-W3 (gniazdo NS25 3 pin), NS25-G3 (wtyk NS25 3 pin), NS25-T (3 szt. terminali do wtyku NS25)XLR-3G-C: wtyk XRL-3 do obudowyJ6: NS25-W3 (gniazdo NS25 3 pin)NS25-G3: wtyk NS25 3 pinNS25-T: 3 szt. terminali do wtyku NS25XLR-3G-CH: gniazdo XRL-3 do obudowyJP4: IDC10MLP (gniazdo „wannowe” 2×5)JP1: LCD 2×16 (wyświetlacz z listwą goldpin + gniazdo do płytki)TR1: TZ2VA 2×9 V (transformator sieciowy, zalewany 2×9 V/100 mA)PPIN8: podstawka precyzyjna 8 pin (3 szt.)
31ELEKTRONIKA PRAKTYCZNA 12/2014
Merger DMX
Rysunek 5. Przykładowy sposób włączenia mergerów
i wygenerowanie przerwania. Pozostałe dane są wysyłane z wykorzystaniem mechanizmu przerwań (listing 4).
Procedura obsługi impulsatora została zrealizowana z użyciem mechanizmu prze-rwań, dzięki czemu jest nieskomplikowana. Pokazano ją na listingu 5.
Montaż i uruchomienieSchemat montażowy Mergera DMX pokaza-no na rysunku 2. Montaż jest typowy i nie wymaga omawiania. Jeśli płytki wykonu-jemy 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 impulsato-ra montujemy pod kątem 90 stopni w sto-sunku do płyty bazowej, za pośrednictwem goldpina kątowego. Należy zwrócić uwa-gę na jego typ. Szczegóły można zobaczyć na fotografii 3. Złącze J8 zastosowano tylko w celu wzmocnienia mechanicznego płyt-ki. Wyświetlacz montujemy na gnieździe goldpin. Po włączeniu zasilania dioda D4
Fotografia 3. Sposób zamontowania płytek drukowanych
DmxOut
Konsola 1
DmxOutDmxIN1
DmxIN2
Mereger DMX (podział na 32 kanale)
Do urządzeń DMX
DmxOut
Konsola 2
DmxOut
Konsola 3
DmxOut
Komputer z interfejsem DMX
32 kanały (1...32)
32 kanały (1...32)
64 kanały (1...64)
512 kanałów
(1...512)
DmxOutDmxIN1
DmxIN2
Mereger DMX (podział na 64 kanale)
DmxOutDmxIN1
DmxIN2
Mereger DMX (podział na 128 kanale)
64 kanały1...32 – konsola 133...64 – konsola 2
192 kanały1...128 – komputer129...192 – kosola 3
256 kanałów
65...192 – komputer192...256 – konsola 3
1...32 – konsola 133...64 – konsola 2
Rysunek 4. Ustawienie ważniejszych fusebitów
powinna świecić natomiast D3 migać z czę-stotliwością około 1 Hz. Na wyświetlaczu powinien pojawić się ekran powitalny. Jeśli nic nie widać lub kontrast jest za mały, re-gulujemy go potencjometrem P1. Pod układy MAX485 warto zastosować podstawki. Jeśli procesor nie jest zaprogramowany można to zrobić przez złącze JP4 (JTAG). Ustawienie bitów konfiguracyjnych pokazano na rysun-ku 4. Płytka Mergera DMX jest przystosowa-na do zamontowania w obudowie KM-60.
ObsługaPo włączeniu zasilania pojawi się ekran po-witalny, po czym ukaże się ekran roboczy, a na nim komunikat:
1: aaa* 2: bbb*P: ccc N: ddd
Poszczególne symbole oznaczają:aaa – liczba odebranych danych na pierw-szym wejściu DMX, gwiazdka za liczbą oznacza trwającą transmisję (on-line), znak minus, brak transmisji przez co najmniej 1 sekundę (off-line).
bbb – jak wyżej, ale dla wejścia drugiego.ccc – liczba danych, które zostaną wysła-ne 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.
Kręcąc impulsatorem zmieniamy liczbę danych wysyłanych z pierwszego kanału. Tę liczbę można zmieniać z krokiem 16. Aby zapamiętać nastawę należy nacisnąć impul-sator. Przykładowy sposób włączenia mere-gerów można zobaczyć na rysunku 5.
Sławomir Skrzyński, EP
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 da-nych odbieranych w drugim kanale, ,merger będzie wysyłał mniej niż 512 bajtów danych, co zwiększy częstotliwość odświeżania urządzeń odbiorczych.
REKLAMA