개요
아두이노 보드에서 다이나믹셀과 RC-100을 사용하기위한 쉴드 보드이며 다이나믹셀 제어를 위한 라이브러리를 제공함.
본 제품은 아두이노 보드를 포함하지 않습니다. 아두이노 관련 제품은 별도로 구매를 해야합니다.
제품 사양
항목 | 사양 |
---|---|
동작 전압 | 5 V (XL-330) ~ 24 V (PRO / X Series) |
허용전류 | 1 A(아두이노), 10 A(터미널 전원 커넥터) |
위험
(심각한 상해 또는 사망에 이르게 할 수 있습니다.)
- 제품 주위에 가연성 물질, 계면활성제, 음료수, 물을 분사하거나 흡입시키지 마세요.
- 작동 중인 제품에 손, 발과 같은 신체 또는 신체의 일부를 넣지 마세요.
- 제품에서 이상한 냄새가 나거나, 연기가 발생하면 전원 연결을 즉시 끊어주세요.
- 아이들이 제품으로 장난치지 않도록 하세요.
- 전원공급 시 극성을 반드시 확인해 주세요.
경고
(상해나 제품 손상의 원인이 됩니다.)
- 제품의 사용 환경을 준수하세요. (전압, 온도 등)
- 작동 중인 제품 내부로 칼날, 압정, 불씨 등을 흡입시키지 마세요.
주의
(상해나 제품 손상의 원인이 됩니다.)
- 제품을 사용자 임의로 분해 또는 개조하지 마세요.
- 제품에 강한 충격을 가하거나 떨어드리지 마세요.
지원되는 다이나믹셀
1
RX, DX, EX, PRO L 시리즈를 사용하려면 소스 코드에서 별도의 설정이 필요합니다.
각 부 명칭
다이나믹셀 쉴드의 핀 맵은 아두이노 UNO 보드의 핀 맵과 동일하다. 관련된 핀 정보는 아두이노 공식 사이트에서 관련된 보드의 핀정보를 참고할것.
핀 번호 | 핀 이름 | 설명 |
---|---|---|
0 | HW UART RX | DXL_RX |
1 | HW UART TX | DXL_TX |
7 | SW UART RX | 주의2 SoftwareSerial |
8 | SW 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로 시리얼 모니터를 사용 시, 다이나믹셀의 포트와 충돌하여 데이터가 손상 될 수 있다. 그에 따라 다이나믹셀 쉴드와 아두이노 보드에서 시리얼 모니터 사용 방법을 아래에 나열한다.
시리얼 모니터 사용 방법
해당하는 보드를 확인한뒤, 아래의 방법 중 하나를 택한다.
- [추천] #define DEBUG_SERIAL 사용
- DynamixelShield Examples의 코드에 있는 #define DEBUG_SERIAL 정의를 확인 할것.
- 다이나믹셀 쉴드의 UART 포트 사용 (조건: UNO/Mega시리즈를 포함한 아두이노 AVR 8bit 보드)
- UNO와 Mega를 포함한 아두이노 AVR 8bit 보드는 다이나믹셀 쉴드의 UART라고 표기된 핀(각 부 명칭 참조)을 사용하여 Serial Monitor를 사용할 수 있다.
참고: 이 포트는 Serial 핀이 아닌 일반 핀을 사용하기때문에, SoftwareSerial 라이브러리를 반드시 사용 해야 한다. UART포트에 사용하기 적합한 통신 모듈은 BT-210, BT-410, LN-101이 있다.
- USB포트 사용
- UNO 및 Mega 시리즈를 제외한 나머지 아두이노 보드에서는 USB포트를 통해 시리얼 모니터를 사용 할 것.
- USB to Serial 장치 사용
- SoftwareSerial을 사용하는 방법과 HardwareSerial을 사용하는 방법이 있다. 각각은 보드에 따라 사용 가능 여부가 다르므로 각 제품의 관련 링크들을 찾아 보길 바란다.
- UART 포트 사용
- UART로 표기된 포트는 다이나믹셀 쉴드의 7(RX), 8(TX)핀에 연결되어 있다.
이 핀들은 UNO/MEGA시리즈와 같은 AVR 8bit 보드에서만 정상 작동하며, 다른 보드에서 이 포트를 사용하기 위해서는 7(RX), 8(TX)핀 대신에 다른 HardwareSerial 핀을 연결해야만 한다.
사용 가능한 HardwareSerial이 있는지, 그리고 그 핀 번호를 확인하려면 관련 링크를 참조하라.
- UART로 표기된 포트는 다이나믹셀 쉴드의 7(RX), 8(TX)핀에 연결되어 있다.
전원 연결 방법
VIN 전원 공유 | VIN 전원 분리 |
---|---|
- 전원 입력은 점퍼캡의 설치 유무에 따라 다음과 같이 나뉜다.
- VIN 전원 공유 : 아두이노의 SMPS 커넥터를 이용한 전원 사용
- 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 클래스
- begin()
- getPortBaud()
- ping()
- scan()
- getModelNumber()
- setID()
- setProtocol()
- setBaudrate()
- torqueOn()
- torqueOff()
- ledOn()
- ledOff()
- setOperatingMode()
- setGoalPosition()
- getPresentPosition()
- setGoalVelocity()
- getPresentVelocity()
- setGoalPWM()
- getPresentPWM()
- setGoalCurrent()
- getPresentCurrent()
- readControlTableItem()
- writeControlTableItem()
Master 클래스
Dynamixel2Arduino 클래스는 Master 클래스로부터 다음의 함수를 상속받습니다.
RobotisRemoteController 클래스
- begin()
- availableData()
- readData()
- availableEvent()
- readEvent()
- flushRx()
- available()
- read()
- peek()
- flush()
- write()
다이나믹셀 쉴드(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);
참고자료
커넥터 정보
항목 | TTL | RS-485 | XL-320 (TTL) |
---|---|---|---|
핀번호 | 1 GND2 VDD3 DATA |
1 GND2 VDD3 DATA+4 DATA- |
1 GND2 VDD3 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.6 | JST SEH-001T-P0.6 | MOLEX 50212-8000 |
다이나믹셀 전선규격 | 21 AWG | 21 AWG | 24 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를 사용하세요.
전원은 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로 입력