[아두이노] 로보티즈 다이나믹 셀 MX-12W를 Arduino로 제어하기 (without 3 state buffer)
- Link
- https://blog.naver.com/nanotoly/22191025256082
- https://forum.pjrc.com/threads/33427-Rs485-halfduplex-for-Dynamixel-with-Teensy-3-1-without-external-Buffer-chip69
몇달 전부터 말벌 인식 및 타격 시스템을 만들기 시작 하였다.
CCTV에서 사용되는 팬틸트를 사용하다 보니 덩치가 크고 느리게 작동 되어 여러가지 고민 중 헬 박사님이 로보티즈 다이나믹 셀을 추천해 주셔서 연동을 진행 하게 되었다.
연동 대해서 구글 검색을 통하여 확인 하였으며, 다이나믹 셀 아두이노 쉴드를 사용 하는 방법이 가장 손쉬워 보였으나, 해당 모듈은 Hardware Serial을 사용하여 다아니믹 셀과 통신 하도록 설계되어 외부 기기와 통신에 불편한 점이 보였다.
당장 관련 쉴드가 없어 특별한 부품 없이 로보티즈 다나믹 셀의 연동 할수 있는 샘플 코드로 작업 해보았다.
우선 다이나믹 셀의 통신 속도가 초기값 1Mbps => 57600bps 변경은 로보티즈 U2D2와 설정 프로그램 사용
(설정 프로그램 통신 속도, 관절 / 바퀴 모드, 동작 각도 등 세부 변경이 가능)
다이나믹 스타터 세트를 구매 후 다아니믹 셀과 연결
PC제어 S/W에서 필자는 2개의 다이나믹 셀을 사용 하고 있어 가각 ID를 1과 2를 부여, Baud Rate와 CW, CCW의 동작 각도 변경
아두이노 회로 연결 8번 핀을 Half Duplex 통신 (RS485통신)
필자는 처음 아두이노 나노 연동 하였으나 미묘한 설정 문제인지 실패하여 아두이노 우노 연동 하였으며 문제 없이 동작 하는 것을 확인 하였다.
문제는 통신이 1개의 선을 사용하여 Half Duplex 통신을 하고 있어 데이타를 보내고 받기를 동시할 경우 문제가 예상되며 1~2개 정도 저속으로 연동하는 것은 큰 문제는 없어 보이나 수십개를 연동할 경우 안정성이 떨어지는 문제가 예상된다. 그래서 다이나믹 셀 초기 설정 1M 속도에서 57600bps 낮추 것이 아닌지 추측 되며 초기 설정으로 테스트는 추후 필요해 보인다.
다이나믹 셀과 통신 시 중간 모듈 (74LVC2G241 / NC7WZ241등)이 보내는 데이타 받는 데이타 중간에 버퍼 역할을 해주면서 DIRECTIO_PORT를 통하여 TxD와 RxD를 구분한다. 실제 로보티즈에서 제작한 쉴드 S/W에서 DIRECTIO_PORT 사용 부분이 확인 되고 있다.
중간 모듈 없이 다이믹셀과 RS-485 통신시 오류를 최소화 하기 위한 방법으로 Teensy 3.1에서는 Rx/Tx에 100옴 저항을 넣는 방법도 검색 되고 있으나 추가는 테스트는 아직 해보지 않았다.
아두이노 나노와 우노의 미묘한 설정 차이로 동작하지 않는 부분에 대해서 한가지 추측은 사용 전압이 상이한부분이 있지 않나 의심 되며 Teensy 3.1에서 Poll up 저항 22k 연결 내용이 있어 추가 확인이 필요하다.
(테스트 시 U2D2 로보티즈 제어기를 연결 해두면 아두이노 나노에서 동작이 확인 된다.)
지금 까지는 중간 모듈이 없을때 쓰는 편법 이고 정석은 RS-232 에서 RS-485변환 모듈 사용을 사용해서 안정석을 확보해야 한다.
헬 박사님이 만드신 로보티즈 용 RS-232 <-> RS-485 변환기기 (택배로 현재 배송 중)
헬박사님으로 전달 받은 회로도
RE / DE 는 신호에 평소엔 Low로 수신모드로 놓고 제어 데이터 보내기 직전 H로 만드시고 보내고 난후 즉시 (약 1m초 후) Low로 보내기 프로그램 제작 하면 된답니다.
MX-12W 팬틸트 제작 후 동작 시 1~2도 정도의 유격이 발생되어 로보티즈에 기술 문의 결과 상위 제품군 사용에 대한 답변을 받았으며, 제작 비용의 문제로 다른 대안에 대한 고민이 필요한 상황이다.
사용하시는 MX-12W 제품은 플라스틱 기어이며, 보급형 다이나믹셀 특성상 백래시(Backlash)가 큽니다. XM, XH 시리즈 등 금속 기어를 사용하는 다이나믹셀을 사용하시면 유격을 줄일 수 있습니다. |