Don't think! Just do it!

종합 IT 기술 정체성 카오스 블로그! 이... 이곳은 어디지?

임베디드 소프트웨어/Protocol

DMX512-2

방피터 2012. 8. 31. 10:24

DMX512 두 번째 입니다.

직장일을 병행하다 보니 생각보다 글 쓰기가 쉽지가 않네요. 일단 아닥하고 시작! 하려니 생각 정리도 잘 안되네요. ^^;;

아무튼 시작!

DMX512에 관해 대략적인 면을 살펴보았는데요. -> 2012/08/29 - [Protocol] - DMX512

오늘은 회로도를 완성해볼까 합니다. 일단 준비물이 필요한데 사용하려는 MCU와 75176의 데이터시트입니다.

MCU는 8051, AVR, PIC, Cortex M0, Cortex M3 등등 종류야 다양하죠? 요세는 M4도 나오고 있습니다.

개인적으로는 8비트 8051, AVR과 PIC을 사용하는 것을 전혀 권장하지 않습니다. 가성비가 너무 좋지 않습니다.

(MCU 고르는 방법은 따로 포스팅하겠습니다.)

제가 선택한 MCU는 STM32F103ZE인데요. Cortex M3입니다. -> http://www.st.com/internet/mcu/product/164495.jsp

네이버에 검색해보니 싸고 상당히 많이 사용하고 계시더군요. 스팩에 관한 내용은 따로 설명드리지 않겠습니다.

75176은 표준 IC라서 많은 회사에서 판매하고 있습니다. 검색해보니 SN75176BDR이 있군요 TI 제품입니다.

그럼 주요 IC 두개는 끝났군요. 기타 회로에 들어가는 IC들은 DMX512에 집중하기 위해 패스하겠습니다.

자, 그럼 MCU는 MCU고 75176이 뭐냐? 라고 하는 분들이 있을 수 있겠죠?

75176 데이터 시트를 보시면 DIFFERENTIAL BUS TRANSCEIVERS라고 설명이 되어 있습니다.

 

보통 차동차동 많이 거리는데 그냥 A와 B의 차이로 데이터의 0과 1을 결정한다는 뜻입니다. 이렇게 하는 이유는

데이터 선에 끼어 들 수 있는 외부 노이즈 때문인데요. 이론상 설명드리면

A와 B의 전압차로 0과 1을 결정한다고 했으니 A-B라고 하겠습니다. 같은 선상이니깐 같은 노이즈가 끼어들테고

그 노이즈를 N이라고 부르겠습니다. 그럼 원래 시그널 A에 노이즈 N이 합쳐지면 B도 마찬가지겠죠?

공식으로 만들면 (A+N) - (B+N) 가 되는데 풀면 A-B가 되죠. 결국 노이즈가 없어졌네요.

아래 테이블에서 보면 A-B의 차이가 0.2 볼트 이상이거나 -0.2볼트 이하일 때, H나 L가 결정되는 군요!!

RS-485가 이런 방식으로 데이터를 주고 받기 때문에 232보다 노이즈에 강하고 멀리 전달할 수 있는 거죠.

그럼 다시 DMX회로로 넘어가서 75176에 있는 8핀에 대한 걸 볼까요? VCC와 GND는 다 아실거에요? 그쵸? 제발...

그리고 A랑 B도 위에서 설명했으니 Output이나 Input이 되겠죠? 그럼 나머지 R,D,RE,DE를 보겠습니다.

R은 Receive, D는 Data input, RE는 Receive Enable, DE는 Data input Enable입니다. 참고로 RE에 윗줄

반대라는 뜻입니다. 즉, RE가 0이면 Enable이라는 뜻이고, 1이면 Disable이라는 뜻입니다.

 

R은 받는 거니깐 MCU의 UART RX에 연결하면 되겠고, D는 주는 놈이니깐 MCU의 TX에 연결하면 되겠습니다.

그리고 RE하고 DE는 어떻게 할까요? Receive 동작만 하고 싶다면 RE는 0에 DE는 0로 해버리면 될거에요. 반대면

둘다 1로 묶어버리면 되겠네요. 둘다 하고 싶다면 RE와 DE를 한 라인에 묶어서 MCU의 일반 IO에 연결해주면

프로그램으로 양쪽동작 모두 할 수 있겠네요. IC마다 케페시터는 버릇처럼 붙여줍시다. ^^

A와 B는 일반 커넥터를 사용해도 무방하지만 FM으로 갑시다. DMX에는 XLR 커넥터라는 것이 사용됩니다.

 

<출처: http://www.neutrik.com >

위에 보이는 것들이 XLR 커넥터 들입니다. 오프라인으로 국내에서 구하려면 상당히 고가입니다. 마우저 등을 이용하시는게

정신건강에 좋습니다. 

<출처: https://commons.wikimedia.org/wiki/File:XLR5_pinouts.svg#globalusage>

XLR은 3 Pin 또는 5Pin으로 사용하고 있습니다. 현재 규정은 XLR 5Pin으로 3Pin은 예전 규격입니다.

Pin description

1: Shield : 쉴드 라인입니다.

2: Data - : 데이터 -라인입니다. 75176 B에 연결합니다.

3: Data + : 데이터 +라인입니다. 75176 A에 연결합니다.

4: Spare - : 스페어 라인입니다.

5: Spare + : 스페어 라인입니다.

그럼 마저 회로도를 완성해 보도록 하죠.

XLR 커넥터가 두개가 있네요? 그리고 단순히 같은 라인끼리 연결만 되어 있을 뿐이네요. DMX 장비는 두개의 XLR 커넥터를

가지고 있어야 합니다. DMX Male 커넥터는 input이고 DMX Female 커넥터는 output인데 첫번째 장비의 Input에 DMX

컨트롤러로부터 시그널이 들어왔다면 두번째 장비의 시그널은 첫번째 장비의 XLR Female output으로부터 받는 거죠.

아래 그럼처럼 말이죠.

 

DMX 장비는 어떤 전송이나 증폭을 할 수 없게 되어 있습니다. 링크되어 있는 중간의 장비가 고장나버리면 뒤에 있는

장비들에게는 신호가 하나도 가지 않게 되기 때문이죠. 그래서 단순하지만 강력한 링크가 완성되는 것입니다.

그리고 간혹 2번과 3번 핀 사이에 120옴을 넣어두는 분들이 계신데 절대 넣으시면 안됩니다. 120옴을 넣는 이유는 보통

터미네이션의 용도인데 터미네이션이라는 것은 신호가 라인 끝에서 저항을 통해 소모되어 반사되지 않도록 하는 것입니다.

만약 터미네이션이 장비마다 들어가 있고 병렬로 120이 주륵주륵 붙는다고 생각해보시면 어떻게 될지는 뻔할 것이라고

생각됩니다. 또 Shield를 GND에 붙이는 회로도 많은데 절대 권장하고 싶지 않습니다.

장비들간의 거리가 길면 장비들 간의 전위차로 인해 GND를 통해 전류가 흐를 수 있습니다. 그라운드 루프라는 것인데요.

보통 음향장비에서 쉴드를 통해 그라운드가 붙어 있으면 심한 노이즈를 들을 수 있는데 같은 이유입니다. 또한,

장비간 연결하는 케이블의 커넥터에 납땜이 잘 못 되어있다면 장비들은 계속 리셋이 될 수도 있는 일입니다.

따라서 저는 쉴드를 어스에 붙이는데요. 위 회로도의 커넥터에서 각각 6번과 7번은 볼트를 통해 케이스와 접촉되는 부분인데

이 부분을 통해 쉴드로 어스로 붙입니다.

결국은 가장 간단하게 연결하는 것이 DMX 시스템에 있어서 가장 중요한 포인트인 것이죠!! -_-+

쓰다보니 상당히 길어졌군요. MCU는 따로 언급을 하지 않았습니다. UART RX와 TX에만 붙이면 되는 일이니까요.

더 자세한 문의 사항이 있으면 댓글 달아 주시구요. 다음에는 DMX 프로토콜과 프로그램 뼈대, 그리고 샘플 코드까지!

진행해보도록 하겠습니다.

긴글 읽어 주셔서 감사합니다. 많은 도움이 되었으면 좋겠습니다.

(추가)

한 가지 더 말씀드릴게 있는데요.

4번,5번 스페어 라인은 뭐에다 쓰는 거냐! 라고 하실 분들이 있을 것 같아서 말씀드립니다.

4번5번 핀은 DMX512 프로토콜의 추후 업데이트 버전에 사용될 예정이었으나 DMX장비 제조사들이 해당 핀을 데이터 리턴

이나 전원으로 사용하는 등 임의로 써버렸습니다. 그래서 4번핀과 5번핀은 이러지도 저러지도 못하고 있는 실정이라고

어딘가에서 읽은 기억이 있습니다. 따라서 저의 결론은 사용하지 않겠다!!!! 입니다. ^^ 감사합니다.

반응형

'임베디드 소프트웨어 > Protocol' 카테고리의 다른 글

USB.03  (0) 2012.10.05
USB.02  (0) 2012.10.04
USB.01  (2) 2012.09.28
DMX-3  (1) 2012.09.10
DMX512  (0) 2012.08.29