본문으로 건너뛰기

개요

아두이노 보드에서 다이나믹셀과 RC-100을 사용하기위한 쉴드 보드이며 다이나믹셀 제어를 위한 라이브러리를 제공함.

경고

본 제품은 아두이노 보드를 포함하지 않습니다. 아두이노 관련 제품은 별도로 구매를 해야합니다.

제품 사양

항목사양
동작 전압5 V (XL-330) ~ 24 V (PRO / X Series)
허용전류1 A(아두이노), 10 A(터미널 전원 커넥터)
위험

위험 (지시사항을 준수하지 않으면 심각한 부상이나 사망에 이를 수 있습니다.)

  • 제품 주변에 물, 가연성 물질/화기, 용제 등이 담긴 물건을 두지 마세요.
  • 제품이 동작 중일 때 손가락, 팔, 발가락 등 신체 일부를 제품 가까이에 두지 마세요.
  • 제품에서 이상한 냄새, 소음 또는 연기가 발생하면 즉시 동작을 멈추고 전원을 분리하세요.
  • 제품을 어린이의 손이 닿지 않는 곳에 보관하세요.
  • 배선 또는 케이블을 설치하거나 전원을 공급하기 전에 입력 전원의 극성을 확인하세요.
경고

경고 (지시사항을 준수하지 않으면 가벼운 부상이나 제품 손상이 발생할 수 있습니다.)

  • 입력 전압, 전류, 동작 온도 등 제품의 공식 동작 환경 사양을 준수하세요.
  • 제품 동작 중 칼날이나 날카로운 물체를 삽입하지 마세요.
경고

주의 (지시사항을 준수하지 않으면 경미한 부상이나 제품 손상이 발생할 수 있습니다.)

  • 제품을 분해하거나 개조하지 마세요.
  • 제품을 떨어뜨리거나 강한 충격을 가하지 마세요.
  • 전원이 공급되는 동안 DYNAMIXEL 케이블을 연결하거나 분리하지 마세요.

지원되는 다이나믹셀

다이나믹셀 시리즈
AXAX-12WAX-12+/12AAX-18F/18A
RX 1RX-10RX-24FRX-28RX-64
DX 1DX-113DX-116DX-117
EX 1EX-106+
MXMX-12WMX-28, MX-28(2.0)MX-64, MX-64(2.0)MX-106, MX-106(2.0)
XLXL320XL430-W250XL330-M077
XL330-M288
2XL430-W250
XCXC330-T288
XC330-T181
XC330-M288
XC330-M181
XC430-W150
XC430-W240
XC430-T150BB
XC430-T240BB
2XC430-W250
XMXM430-W210XM430-W350XM540-W150XM540-W270
XHXH430-W210
XH430-W350
XH430-V210
XH430-V350
XH540-W150
XH540-W270
XH540-V150
XH540-V270
XDXD430-T210-R
XD430-T350-R
XD540-T150-R
XD540-T270-R
XWXW430-T333-R
XW430-T200-R
XW540-T140-R
XW540-T260-R
PRO HH42-20-S300-RH54-100-S500-RH54-200-S500-R
PRO MM42-10-S260-RM54-40-S250-RM54-60-S250-R
PRO L 1L42-10-S300-RL54-30-S500-RL54-30-S400-RL54-50-S500-RL54-50-S290-R
PRO H(A)H42-20-S300-R(A)H54-100-S500-R(A)H54-200-S500-R(A)
PRO M(A)M42-10-S260-R(A)M54-40-S250-R(A)M54-60-S250-R(A)
PHPH42-020-S300-RPH54-100-S500-RPH54-200-S500-R
PMPM54-060-S250-RPM54-040-S250-RPM42-010-S260-R

1 RX, DX, EX, PRO L 시리즈를 사용하려면 소스 코드에서 별도의 설정이 필요합니다.

각 부 명칭

경고

다이나믹셀 쉴드의 핀 맵은 아두이노 UNO 보드의 핀 맵과 동일하다. 관련된 핀 정보는 아두이노 공식 사이트에서 관련된 보드의 핀정보를 참고할것.

핀 번호핀 이름설명
0HW UART RXDXL_RX
1HW UART TXDXL_TX
7SW UART RX주의2 SoftwareSerial
8SW UART TX주의2 SoftwareSerial
항목핀 이름설명
다이나믹셀 포트TTL, TTL(XL-430), RS485주의3
전원 스위치Power SW (다이나믹셀 포트 전원 스위치)-
UART 스위치UART SW (업로드 또는 다이나믹셀 선택 스위치)주의1
Jumper Cap전원 선택'전원 연결 방법'
  • DXL_RX (0), DXL_TX (1): 다이나믹셀 제어를 위한 시리얼 포트
  • DXL_DIR(2): 방향 제어를 위한 제어핀
  • 다이나믹셀 제어를 위해서 하드웨어 시리얼 포트를 사용하기 때문에 아두이노 핀 7/8번을 이용하여 소프트웨어 시리얼로 RC-100 혹은 LN-101을 연결하여 시리얼 통신 수행
경고

주의1: UART SW(SW_2)를 Upload로 세팅해야, 펌웨어를 USB 포트를 통해서 업로드 할 수 있다. 다이나믹셀로 세팅해야만, 다이나믹셀을 활용할 수 있다. 이 때는, USB 포트를 사용하지 못하므로, 펌웨어를 업로드 할 수 없다.
주의2: SoftwareSerial을 지원하지 않는 보드를 사용한다면, 핀 7번과 8번을 UART 통신으로 사용하지 못한다.
주의3: TTL, TTL (XL-430) and RS485 커넥터들은 병렬로 연결되어 하나의 serial을 사용한다.

시리얼 모니터 사용시 주의사항

아두이노 보드와 다이나믹셀 쉴드와 함께 Serial Monitor를 사용할 때는 보드에 따라 제약조건이 있다.

UNO 및 Mega (8bit MCU)는 USB에서 사용하는 Serial핀이 다이나믹셀에서 사용하는 핀(0, 1)과 동일하기 때문에, USB로 시리얼 모니터를 사용 시, 다이나믹셀의 포트와 충돌하여 데이터가 손상 될 수 있다. 그에 따라 다이나믹셀 쉴드와 아두이노 보드에서 시리얼 모니터 사용 방법을 아래에 나열한다.

시리얼 모니터 사용 방법

해당하는 보드를 확인한뒤, 아래의 방법 중 하나를 택한다.

  1. [추천] #define DEBUG_SERIAL 사용
  • DynamixelShield Examples의 코드에 있는 #define DEBUG_SERIAL 정의를 확인 할것.
  1. 다이나믹셀 쉴드의 UART 포트 사용 (조건: UNO/Mega시리즈를 포함한 아두이노 AVR 8bit 보드)
  • UNO와 Mega를 포함한 아두이노 AVR 8bit 보드는 다이나믹셀 쉴드의 UART라고 표기된 핀(각 부 명칭 참조)을 사용하여 Serial Monitor를 사용할 수 있다.

    노트

    참고: 이 포트는 Serial 핀이 아닌 일반 핀을 사용하기때문에, SoftwareSerial 라이브러리를 반드시 사용 해야 한다. UART포트에 사용하기 적합한 통신 모듈은 BT-210, BT-410, LN-101이 있다.

  1. USB포트 사용
  • UNO 및 Mega 시리즈를 제외한 나머지 아두이노 보드에서는 USB포트를 통해 시리얼 모니터를 사용 할 것.
  1. USB to Serial 장치 사용
  • SoftwareSerial을 사용하는 방법과 HardwareSerial을 사용하는 방법이 있다. 각각은 보드에 따라 사용 가능 여부가 다르므로 각 제품의 관련 링크들을 찾아 보길 바란다.
  1. UART 포트 사용
  • UART로 표기된 포트는 다이나믹셀 쉴드의 7(RX), 8(TX)핀에 연결되어 있다. 이 핀들은 UNO/MEGA시리즈와 같은 AVR 8bit 보드에서만 정상 작동하며, 다른 보드에서 이 포트를 사용하기 위해서는 7(RX), 8(TX)핀 대신에 다른 HardwareSerial 핀을 연결해야만 한다. 사용 가능한 HardwareSerial이 있는지, 그리고 그 핀 번호를 확인하려면 관련 링크를 참조하라.

전원 연결 방법

VIN 전원 공유VIN 전원 분리
  • 전원 입력은 점퍼캡의 설치 유무에 따라 다음과 같이 나뉜다.

    1. VIN 전원 공유 : 아두이노의 SMPS 커넥터를 이용한 전원 사용
    2. VIN 전원 분리 : 다이나믹셀 쉴드의 전원 입력 커텍터를 이용한 전원 사용
  • 아두이노 보드의 USB 전원으로는 다이나믹셀 전원 연결이 되지 않기 때문에 반드시 외부 전원을 연결 해야 한다.

  • 전원 입력 커넥터를 사용할 때는 반드시 전원의 극성을 확인 하고 연결해서 사용해야한다.

스위치

업로드 스위치

  • 다이나믹셀 제어를 위해서 아두이노 보드의 하드웨어 시리얼 포트를 사용하는데 같은 포트로 업로드가 진행 되기 때문에 두 포트가 충돌이 날 수 있다.
  • 따라서 업로드를 위해서는 시리얼 포트 스위치를 이용하여 Upload 위치로 이동 시킨 후 업로드를 한다.
  • 업로드가 완료된 후에는 다이나믹셀 제어를 위해서 스위치를 다이나믹셀 위치로 이동 시켜야한다. 이동 시키지 않는다면 다이나믹셀 구동이 되지 않는다.

다이나믹셀 전원 스위치

  • 다이나믹셀 커넥터의 전원을 별도로 On/Off 할수 있는 스위치이다.

다이나믹셀 쉴드 라이브러리

특징

  • 아두이노 보드 호환
  • 다이나믹셀 프로토콜 1.0/2.0 지원
  • 최대 16개 다이나믹셀 제어 가능(일반적으로 XL-320, XL430-W250은 각 모터당 0.4 ~ 0.6A를 소모함)
  • SynWrite 지원
  • RC100 라이브러리 지원
  • 소프트 시리얼 라이브러리를 이용한 시리얼 통신
  • 다이나믹셀 쉴드 라이브러리 버전 0.1.0부터 DYNAMIXEL2Arduino 라이브러리를 기반으로 사용

라이브러리 설치

아두이노 IDE에서 라이브러리를 추가하는 세가지 방법이 있다.

  • 라이브러리 매니저를 활용하는 방법
  • Zip파일로 압축된 라이브러리를 불러오는 방법
  • 수동으로 설치하는 방법

각각의 방법에 대한 자세한 설명은 Arduino Official Guide에서 찾을 수 있다. 다음은 라이브러리 매니저를 활용하는 예이다.

다이나믹셀 쉴드 라이브러리(v0.1.0 이상)를 사용하기 위해서는 DYNAMIXEL2Arduino 라이브러리를 먼저 설치해야 한다.

라이브러리를 설치하였다면, examples 항목에 DynamixelShield가 생기고 사용 가능한 예제를 볼 수 있다.

경고

라이브러리 API

다이나믹셀 쉴드(v0.1.0 이상)

주의 : 다이나믹셀 쉴드 라이브러리(v0.1.0 이상)를 사용하기 위해서는 DYNAMIXEL2Arduino 라이브러리를 설치해야 합니다.

Dynamixel2Arduino 클래스

Master 클래스

Dynamixel2Arduino 클래스는 Master 클래스로부터 다음의 함수를 상속받습니다.

RobotisRemoteController 클래스

경고

다이나믹셀 쉴드(v0.0.5)

주의 : 이 버전의 API는 더이상 지원되지 않습니다.

bool begin(uint32_t baud_rate = 57600, uint8_t protocol_version = DXL_PACKET_VER_2_0);

bool scan(void);
bool ping(uint8_t id = DXL_GLOBAL_ID);
bool addMotor(uint8_t id, uint8_t model);
bool setProtocolVersion(uint8_t version);
bool write(uint8_t id, uint16_t addr, uint8_t *p_data, uint16_t length, uint32_t timeout);
bool read(uint8_t id, uint16_t addr, uint8_t *p_data, uint16_t length, uint32_t timeout);

uint8_t getDxlCount(void);
uint8_t getDxlID(uint8_t index);
uint32_t getErr(void);
void clearErr(void);

bool reboot(uint8_t id);
bool reset(uint8_t id);

bool setID(uint8_t id, uint8_t new_id);
bool setBaud(uint8_t id, uint32_t new_baud);

bool ledOn(uint8_t id);
bool ledOff(uint8_t id);

bool torqueOn(uint8_t id);
bool torqueOff(uint8_t id);

bool setJointMode(uint8_t id);
bool setWheelMode(uint8_t id);

bool setGoalPosition(uint8_t id, uint32_t position);
int32_t getGoalPosition(uint8_t id);
int32_t getCurPosition(uint8_t id);

bool setGoalSpeed(uint8_t id, int32_t speed);
int32_t getGoalSpeed(uint8_t id);
int32_t getCurSpeed(uint8_t id);

bool setGoalAngle(uint8_t id, int32_t angle);
int32_t getGoalAngle(uint8_t id);
int32_t getCurAngle(uint8_t id);

bool syncWriteBegin(void);
bool syncWriteEnd(void);

참고자료

커넥터 정보

항목TTLRS-485XL-320 (TTL)
핀번호1 GND
2 VDD
3 DATA
1 GND
2 VDD
3 DATA+
4 DATA-
1 GND
2 VDD
3 DATA
다이어그램
하우징
JST EHR-03

JST EHR-04

MOLEX 51065-0300
PCB 헤더
JST B3B-EH-A

JST B4B-EH-A

MOLEX 53253-0370
Crimp 터미널JST SEH-001T-P0.6JST SEH-001T-P0.6MOLEX 50212-8000
다이나믹셀 전선규격21 AWG21 AWG24 AWG

통신 회로

다이나믹셀을 제어하기 위해서는 제어기의 UART 신호를 Half duplex type으로 변환시켜 주어야 합니다. 다음은 권장 회로도입니다.

TTL 통신

TTL 통신회로

노트

참고: 위 회로는 5V 전원을 사용하는 MCU를 사용하거나 IO가 5V tolerant한 경우 사용 가능합니다. 그 외의 경우, Level Shifter를 사용하세요.

RS-485 통신

RS-485 통신회로

노트

참고: 위 회로는 5V 전원을 사용하는 MCU를 사용하거나 IO가 5V tolerant한 경우 사용 가능합니다. 그 외의 경우, Level Shifter를 사용하세요.

XW540-시리즈 커넥터

방수 방진 데이터 케이블

전원은 Pin1(-), Pin2(+)를 통하여 다이나믹셀로 공급됩니다.(다이나믹셀 전용 Controller에는 위의 회로가 내장되어 있습니다.) 위의 회로도에서 TTL Level의 TxD와 RxD는 TX_Enable_5V의 Level에 따라 다음과 같이 Data 신호의 방향이 결정됩니다.

  • TX_Enable_5V =High인 경우: TxD의 신호가 D+, D-로 출력
  • TX_Enable_5V =Low인 경우: D+, D-의 신호가 RxD로 입력

다운로드