1-1. Overview and Characteristics of DX-113, 116, and 117 Page 2
1-2. Main Specifications Page 3
2. Dynamixel Operation
2-1. Mechanical Assembly Page 4
2-2. Connector Assembly Page 4
2-3. Dynamixel Wiring Page 5
3. Communication Protocol
3-1. Communication Overview Page 8
3-2. Instruction Packet Page 9
3-3. Status Packet Page 9
3-4. Control Table Page 11
4. Instruction Set and Examples
4-1. WRITE DATA Page 18
4-2. READ DATA Page 19
4-3. REG WRITE and ACTION Page 19
4-4. PING Page 20
4-5. RESET Page 21
5. Examples Page 22
Appendix Page 28
1
DYNAMIXEL
DX-Series
1. Dynamixel DX-Series
1-1. Overview and Characteristics of the DX-Series
Dynamixel DX-Series The Dynamixel robot actuator is a smart, modular actuator that incorporates a gear
reducer and a control circuitry with networking functionality, all in a single package.
Despite its compact size, it can produce large torque and is made with special
materials to provide the necessary strength and structural resilience to withstand
large external forces. It also has the ability to detect and act upon internal
conditions such as changes in internal temperature or supply voltage. There are
three models (DX-113, DX-116, and DX-117) in the DX series of the Dynamixel
robot actuator family and they have many advantages over similar products.
Precision Control Position and speed can be controlled with a resolution of 1024 steps.
Compliance Driving The degree of compliance can be adjusted and specified in controlling position.
Feedback Feedback for angular position, angular velocity, and load torque are available.
Alarm System The Dynamixel series robot actuator can alert the user when parameters deviate
from user defined ranges (e.g. internal temperature, torque, voltage, etc) and can
also appropriately handle the problems by itself.
CommunicationWiring is easy with daisy chain connection, and it support communication speeds
up to 1M BPS.
High-performance Motors Models DX-116 and DX-117 use the RE-MAX Series Coreless DC Motors, which
are the top of the line Swiss Maxon motors, allowing them to produce large output
torques and high accelerations.
Distributed Control The actuation schedule can be set with a single command packet, thus enabling
the main processor to control many Dynamixel units even with very few resources.
Engineering Plastic The main body of the unit is made with high quality engineering plastic which
enables it to handle high torque loads.
2
DYNAMIXEL
Metal Gear All gears are made with metal to ensure durability.
Axis Bearing A bearing is used at the final axis to ensure no efficiency degradation with high
Status LED The LED can indicate the error status to the user.
DX-Series
external loads on the output shaft.
1-2. Main Specifications
DX-116 DX-117 DX-113
Weight(g) 66 66 58
Gear Reduction Ratio 142.5 192.6 192.6
Input Voltage 12 16 12 16 12
Final Max Holding Torque(kgf.cm) 21.38 28.50 28.89 38.52 10.20
Sec/60degree 0.127 0.095 0.172 0.129 0.150
Resolution 0.35°
Operating Angle 300°
Voltage DX116,117 : 12V~16V(Recommended voltage: 14.4V)
DX113 : 12V
Max. Current 1200mA
Operating Temp. -5 ~ +85℃℃
Command Signal Digital Packet
Protocol Type Half duplex Asynchronous Serial Communication (8bit,1stop,No Parity)
Link (Physical) RS 485 Multi Drop(daisy chain type Connector)
ID 254 ID (0~253)
Communication Speed 7343bps ~ 1 Mbps
Feedback Position, Temperature, Load, Input Voltage, etc.
Material Full Metal Gear, Engineering Plastic Body
Motor Swiss MAXON Motor (DX-116, DX-117). DX-113 uses a cored motor
3
DYNAMIXEL
DX-Series
2. Dynamixel Operation
2-1. Mechanical Assembly
Follow the figure below for the mechanical assembly of the Dynamixel actuator.
Nut(8EA)
The 8 sets of screws and nuts are only used for attaching the Dynamixel actuator to
other parts.
Horn
Screw for Horn
Screw for mount(8EA)
2-2. Connector Assembly
Assemble the connectors as shown below. Attach the wires to the terminals using the
correct crimping tool. If you do not have access to a crimping tool, solder the terminals
to the wires to ensure that they do not become loose during operation.
4
DYNAMIXEL
DX-Series
2-3. Dynamixel Wiring
Pin Assignment
Pin 1 : GND
Pin 2 : +12V~18V
Pin 3 : D+ (RS485 Signal)
Pin 4 : D- (RS485 Signal)
Wire Link
Main Controller To operate the Dynamixel actuators, the main controller must support RS485. You can
PC LINK A PC can be used to control the Dynamixel actuator via the CM-2 controller.
The connector pin assignments are as the following. The two connectors
on the Dynamixel actuator are internally connected to each other.
Pin 1
2
3
4
Pin 4
3
4
1
Connect the pins to pins that have the same number as shown below.
Main
1 2 3 4
Controller
design and build your own controller, but the use of the CM-2 Dynamixel controller board is
recommended.
RS485
Level
Dynamixels
PC
RS232
Level
CM-2
5
DYNAMIXEL
Stand Alone The CM-2 board can be directly mounted on a robot that is built with Dynamixel
DX-Series
actuators.
For usage details, please refer to the CM-2 manual.
Connection to UART To control the Dynamixel actuators, the main controller needs to convert its UART
signals from TTL level to RS485 level. The recommended circuit diagram for this is
shown below.
전원은 Main Controller의 Molex4P Connector의 Pin1,Pin2를 통하여 Dynamixel로
공급되어진다.
CM-2 Board on Robot
6
DYNAMIXEL
RS485 The communication protocol used by the Dynamixel actuator, RS485 (IEEE485), uses
DX-Series
The direction of data signals on the TTL level TxD and RxD depends on the
DIRECTION485 level as the following.
• When the DIRECTION485 level is High: the TxD signal is outputted as D+, D-
• When the DIRECTION485 level is Low: the D+, D- signal is inputted to RxD
the multi-drop method of connecting multiple terminals on a single node. Thus a protocol
that does not allow multiple transmissions at the same time should be maintained on a
RS485 network.
Note Please ensure that the pin assignments are correct when connecting the Dynamixel
actuators. Check the current consumption after the wiring is completed. The current
consumption of a single Dynamixel actuator unit in standby mode should be no larger
than 50mA.
Connection Status Verification
When power is applied to the Dynamixel actuator, the LED blinks twice to confirm its
connection.
Inspection If the above operation was not successful, check the connector pin assignment and the
voltage/current limit of the power supply.
Main
Controller
[RS485 Multi Drop Link]
7
r
r
DYNAMIXEL
DX-Series
3. Communication Protocol
3-1. Communication Overview
Packet The Main Controller communicates with the Dynamixel by sending and receiving data
packets. There are two types of packets, the Instruction Packet (Main Controller to
Dynamixel) and the Status Packet. (Dynamixel to Main Controller)
Communication For the system connection below, if the main controller sends an instruction packet with
the ID set to N, only the Dynamixel with this ID value will return its respective status
packet and perform the required instruction.
Unique IDCommunication problems will arise if multiple Dynamixel's have the same ID value. This
will cause multiple packets to be sent simultaneously resulting in packet collisions. It is
imperative that ID values are unique within each data network.
Protocol The Asynchronous Serial Communication word consists of 8 bits, 1 Stop bit and
no parity.
Instruction Packet(ID=N)
Main
Controlle
Main
Controlle
Instruction Packet
Status Packet
ID=0ID=1ID=N
Status Packet(ID=N)
8
DYNAMIXEL
DX-Series
3-2. Instruction Packet
The structure of the Instruction Packet is as follows:
Instruction PacketOXFF 0XFF ID LENGTH INSTRUCTION PARAMETER1 …PARAMETER N CHECK
SUM
The packet byte definitions are as follows.
0XFF 0XFF Two 0XFF bytes indicate the start of an incoming packet.
ID Unique ID of a Dynamixel. The ID can range from 0X00 to 0XFD (254 IDs are available)
Broadcasting ID ID ID 0XFE is the Broadcast ID which is assigned to all of the connected Dynamixel’s.
Status packets will not be returned with a broadcasting ID.
LENGTH The length of the Status Packet. The value is “Parameter number (N) + 2”
INSTRUCTION The instruction for the Dynamixel to perform.
PARAME T ER0…N Used if there is additional information to be sent other than the Instruction.
CHECK SUM The calculation method for the ‘Check Sum’ is as follows:
Check Sum = ~( ID + Length + Instruction + Parameter1 + … Parameter N )
If the calculated value is bigger than 255, the lower byte becomes the checksum.
~ represents the Not or complement operation
3-3. Status Packet
The Status Packet is the response packet from the Dynamixel to the Main Controller
after receiving an instruction packet. The structure of Status Packet is as follows :
OXFF 0XFF ID LENGTH ERROR PARAMETER1 PARAMETER2… PARAMETER N
CHECK SUM
The meaning of each byte within the packet is as follows :
9
DYNAMIXEL
0XFF 0XFF Two 0XFF bytes indicate the start of a packet.
ID ID of the Dynamixel which is returning the packet.
LENGTH The length of the Status Packet. The value is “Parameter number (N) + 2”.
ERROR Dynamixel communication error flags. The meaning of each bit is as follows:
PARAME T ER0…N Used when additional information is required.
CHECK SUM SUM Calculation method of ‘Check Sum’is as follows:
DX-Series
BitNameDetails
Bit 70-
Bit 6Instruction Error
Bit 5Overload Error Set to 1 if the specified torque can't control the load.
Bit 4Checksum Error
Bit 3Range ErrorSet to 1 if the instruction is out of the usage range.
Bit 2
Bit 1Angle Limit Error
Bit 0
Check Sum = ~( ID + Length + Instruction + Parameter1 + … Parameter N )
If the calculated value is bigger than 255, the lower byte becomes the checksum.
~ represents the Not or complement operation
Overheating
Error
Input Voltage
Error
Set to 1 if an undefined instruction is given without the
reg_write instruction.
Set to 1 if the checksum of the intruction packet is
incorrect
Set as 1 if the internal temperature of Dynamixel is out of
the operative range as set in the control table.
Set as 1 if the goal position is set outside of the range
between CW Angle Limit and CCW Angle Limit
Set to 1 if the voltage is out of the operative range set in
the control table.
10
DYNAMIXEL
3-4. Control
Table
EEPROM
Area
RAM
Area
DX-Series
AddressItemAccessInitial Value
0(0X00)Model Number(L)RD
1(0X01)Model Number(H)RD
2(0X02)Version of FirmwareRD
3(0X03)IDRD,W R
4(0X04)Baud RateRD,W R
5(0X05)Return Delay TimeRD,W R
6(0X06)CW Angle Limit(L)RD,W R
7(0X07)CW Angle Limit(H)RD,W R
8(0X08)CCW Angle Limit(L)RD,WR
9(0X09)CCW Angle Limit(H)RD,W R
10(0x0A)(Reserved)11(0X0B)the Highest Limit TemperatureRD,W R
12(0X0C)the Lowest Limit VoltageRD,W R
13(0X0D)the Highest Limit VoltageRD,W R
14(0X0E)Max Torque(L)RD,W R
15(0X0F)Max Torque(H)RD,W R
16(0X10)Status Return LevelRD,W R
17(0X11)Alarm LEDRD,W R
18(0X12)Alarm ShutdownRD,W R
19(0X13)(Reserved)RD,W R
20(0X14)Down Calibration(L)RD
21(0X15)Down Calibration(H)RD
22(0X16)Up Calibration(L)RD
23(0X17)Up Calibration(H)RD
24(0X18)Torque EnableRD,WR
25(0X19)LEDRD,W R
26(0X1A)CW Compliance MarginRD,W R
27(0X1B)CCW Compliance MarginRD,W R
28(0X1C)CW Compliance SlopeRD,W R
29(0X1D)CCW Com pliance SlopeRD,W R
30(0X1E)Goal Position(L)RD,W R
31(0X1F)Goal Position(H)RD,WR
32(0X20)Moving Speed(L)RD,W R
33(0X21)Moving Speed(H)RD,W R
34(0X22)Torque Limit(L)RD,W R
35(0X23)Torque Limit(H)RD,W R
36(0X24)Present Position(L)RD
37(0X25)Present Position(H)RD
38(0X26)Present Speed(L)RD
39(0X27)Present Speed(H)RD
40(0X28)Present Load(L)RD
41(0X29)Present Load(H)RD
42(0X2A)Present VoltageRD
43(0X2B)Present TemperatureRD
44(0X2C)Registered InstructionRD,W R
45(0X2D)(Reserved)-
46[0x2E)MovingRD
47[0x2F)LockRD,WR
48[0x30)Punch(L)RD,W R
49[0x31)Punch(H)RD,W R
116(0x74)
0(0x00)
?
1(0x01)
34(0x22)
250(0xFA)
0(0x00)
0(0x00)
255(0xFF)
3(0x03)
0(0x00)
85(0x55)
60(0X3C)
190(0xBE)
255(0XFF)
3(0x03)
2(0x02)
4(0x04)
4(0x04)
0(0x00)
?
?
?
?
0(0x00)
0(0x00)
0(0x00)
0(0x00)
32(0x20)
32(0x20)
[Addr36]value
[Addr37]value
0
0
[Addr14] value
[Addr15] value
?
?
?
?
?
?
?
?
0(0x00)
0(0x00)
0(0x00)
0(0x00)
32(0x20)
0(0x00)
11
DYNAMIXEL
Control Table
RAM and EEPROM The data values for the RAM Area will be set to the default initial values on power on.
Initial Value The Initial Value column of the control table shows the Factory Default Values for the
Address 0x00,0x01 Model Number. In the case of the DX-116, the value is 0X0074(116).
Address 0x02 Firmware Version.
Address 0x03 ID. Unique ID number to identify the Dynamixel. Different ID’s are required to be
Address 0x04 Baud Rate. Determines the Communication Speed. The Calculation method is:
Note A maximum Baud Rate error of 3% is within the UART communication tolerance.
The Control Table consists of data for conditions and movement of the Dynamixel. By
DX-Series
writing the values in the control table, you can move the Dynamixel and detect the
condition of the Dynamixel.
The data values for the EEPROM Area are non-volatile and will be available next power
on.
case of EEPROM Area Data. For the RAM Area Data, the initial value column gives the
power on data values.
Please note the following meanings for data assigned to each address in the control
Address 0x0C,0x0D the Lowest (Highest) Limit Voltage. Setting the operative upper and lower limits of the
Address 0x0E,0x0F, 0x22,0x23
Max Torque
Address 0X10 Status Return Level. To determine whether the Dynamixel will return the Status Packet
Return Delay Time. The time taken after sending the Instruction Packet, to receive the
the Highest Limit Temperature. The upper limit of the Dynamixel’s operative
DX-Series
requested Status Packet. The delay time is given by 2uSec *Address5 value.
. Set the operating angle to restrict the Dynamixel’s angular
range. The Goal Position needs to be within the range of:-
CW Angle Limit <= Goal Position <= CCW Angle Limit
An Angle Limit Error will occur if this relationship is not satisfied.
temperature. If the Dynamixel’s internal temperature is higher than this value, an Over
Heating Error Bit (Bit 2 of the Status Packet) will be set. An alarm will be set in Address
17,18. The values are in Degrees Celsius.
Dynamixel’s voltages.
If the present voltage (Address42) is out of the specified range, a Voltage Range Error
bit will be set in the Status Packet and an alarm executed will be set in Address’s 17,18.
The values are 10 times the actual voltages. For example, if the Address 12 value is 80,
then the lower voltage limit is set to 8V.
. The max torque output for the Dynamixel. When it is set to ‘0’, the
Dynamixel enters a Torque Free Run condition. The Max Torque (Torque Limit) is
assigned to EEPROM (Address 0X0E,0x0F) and RAM (Address 0x22,0x23) and a power
on condition will copy EEPROM values to RAM. The torque of a Dynamixel is limited by
(Address0x22,0x23) of RAM.
after the transmission of an Instruction Packet.
Address16Return of Status Packet
0Do net respond to any instruction
1Respond only to READ_DATA instruction
2Respond to all instructions
13
DYNAMIXEL
Address 0X11 Alarm LED
Address 0X12 Alarm Shutdown
Address 0x14~0x17 Calibration
DX-Series
In the case of an instruction which uses the Broadcast ID (0XFE), regardless of
the Address 0x10 value, the Status Packet will not be returned.
. When an Error occurs, if the corresponding Bit is set to 1, then the LED
blinks.
BitFunction
Bit 70
Bit 6
If set to 1, LED blinks when Ins truction Error occurs
Bit 5
If set to 1, LED blinks when Overload Error occurs
Bit 4
If set to 1, LED blinks when Checksum Error occurs
Bit 3
If set to 1, LED blinks when Range Error occurs
Bit 2
If set to 1, LED blinks when Overheating Error occurs
Bit 1
If set to 1, LED blinks when Angle Limit Error occurs
Bit 0
If set to 1, LED blinks when Input Voltage Error occurs
This function operates as the logical “OR”ing of all set bits. For example, when the
register is set to 0X05, the LED will blink when a Voltage Error occurs or when an
Overheating Error occurs. Upon returning to a normal condition from an error state, the
LED stops blinking after 2 seconds.
Dynamixel will shut down (Torque off).
BitFunction
Bit 70
Bit 6
If set to 1, torque off when Ins truction Error occurs
Bit 5
If set to 1, torque off when Overload Error occurs
Bit 4
If set to 1, torque off when Checksum Error occurs
Bit 3
If set to 1, torque off when Range Error occurs
Bit 2
If set to 1, torque off when Overheating Error occurs
Bit 1
If set to 1, torque off when Angle Limit Error occurs
Bit 0
If set to 1, torque off when Input Voltage Error occurs
This function operates as the logical “OR”ing of all set bits. However, unlike the Alarm
LED, after returning to a normal condition, it maintains a torque off status. To remove this
restriction, Torque Enable (Address0X18) is required to be set to 1.
. Data used for compensating for the differences between Robotis products.
Users cannot change this area.
. When an Error occurs, if the corresponding Bit is set to a 1, then the
14
DYNAMIXEL
DX-Series
From Address 0x18 in the RAM area.
Address 0x18 Torque Enable. When power is first applied the Dynamixel enters the Torque Free Run
condition. To allow torque to be applied Address 0x18 must be set to 1. (Torque Enabled
Condition)
Address 0x19 LED. LED is on when set to 1 and LED is off if set to 0.
Address 0x1A~0x1D Compliance Margin and Slope. The Dynamixel controls Compliance by setting the
Margin and Slope. If used well Compliance will absorb the shocks. The following graph
demonstrates the use of Compliance values (length of A,B,C & D) relative to Position
Error and applied torque.
CW
Goal Position
CCW
CCW
Y axis:Output Torque
A : CCW Compliance Slope(Address0x1D)
B : CCW Compliance Margin(Address0x1B)
C : CW Compliance Margin(Address0x1A)
D : CW Compliance Slope (Address0x1C)
E : Punch(Address0x30,31)
BA CD
E
E
X axis:Position Error
CW
Address 0X1E,0x1F Goal Position
. Requested Angular Position for the Dynamixel to move to. If this is
set to 0x3ff, then the goal position will be 300°.
(Goal Position = 0x1ff)
150°
(Goal Position = 0x3ff)
300°
300~360°
Invalid Angle
0°
(Goal Position = 0)
15
DYNAMIXEL
Address 0x20,0x21 Moving Speed. The angular speed to move to the Goal Position. If set to the maximum
Address 0x24,0x25 Present Position
Address 0x26,0x27 Present Speed
Address 0x28,0x29 Present Load
Address 0x2A Present Voltage. The voltage applied to the Dynamixel. The value is 10 times the actual
Address 0x2B Present Temperature. Current internal Dynamixel temperature (Degrees Celsius).
Address 0x2C Registered Instruction. Set to 1 when a REG_WRITE instruction is made. After an
Address 0x2E Moving. Set to 1 when the Dynamixel moves by its own power.
Address 0x2F Lock. If set to 1, only Address 0x18 ~ Address 0x23 can be written to. Other areas are
Address 0x30,0x31 Punch. Minimum current being supplied to the motor during an action. The minimum
DX-Series
values of 0x3ff, it moves at 70RPM.
. Current position of the Dynamixel.
. Current Speed of the Dynamixel
. Load size on the Dynamixel in action. Bit 10 is the direction of the load.
BIT 15~11109876543210
Value0Load DirectionLoad Value
Load Direction = 0 : CCW Load, Load Direction = 1: CW Load
voltage. For example, 10V is read as 100(0x64).
Action instruction and an action it is reset to 0.
not permitted. Once locked, it can only be unlocked by powering down.
value is 0x20 and the maximum value as 0x3ff.
16
DYNAMIXEL
Range Each Register has an operative range. Write instructions made outside of these ranges
DX-Series
will return an error. The following table summarises the data range for each register. 16
bit data registers are indicated as (L) and (H), two bytes. Each byte of a two byte register
can be written to independently.
Write
Address
3(0X03)ID10
4(0X04)Baud Rate10
5(0X05)Return Delay Time10
6(0X06)CW Angle Limit20
8(0X08)CCW Angle Limit20
11(0X0B)the Highest Limit Temperature10
12(0X0C)the Lowest Limit Voltage150(0x32)
13(0X0D)the Highest Limit Voltage150(0x32)
14(0X0E)Max Torque20
16(0X10)Status Return Level10
17(0X11)Alarm LED10
18(0X12)Alarm Shutdown10
19(0X13)(Reserved)10
24(0X18)Torque Enable10
25(0X19)LED10
26(0X1A)CW Compliance Margin10
27(0X1B)CCW Compliance Margin10
28(0X1C)CW Compliance Slope11
29(0X1D)CCW Compliance Slope11
30(0X1E)Goal Position20
32(0X20)Moving Speed20
34(0X22)Torque Limit20
44(0X2C)Registered Instruction10
47(0X2F)Lock11
48(0X30)Punch20
Writing Item
Length
(bytes)
MinMax
253(0xfd)
254(0xfe)
254(0xfe)
1023(0x3ff)
1023(0x3ff)
150(0x96)
250(0xfa)
250(0xfa)
1023(0x3ff)
2
127(0x7f)
127(0x7f)
1
1
1
254(0xfe)
254(0xfe)
254(0xfe)
254(0xfe)
1023(0x3ff)
1023(0x3ff)
1023(0x3ff)
1
1
1023(0x3ff)
[Control Table Data Range and Length for Writing]
17
DYNAMIXEL
DX-Series
4. Instruction Set and Examples
The following Instructions are available.
InstructionFunctionValue
PING
READ DATARead the values in the Control table.0x022
WRITE DATAWrite the values to the Control Table.0x032 ~
REG WRITE
ACTIONStart the action registered by REG W RITE.0x050
RESET
No action. Used to obtain a Dynamixel Status
Packet.
Similar to WRITE DATA, but stay in standby
mode until write upon the action instruction.
Change the values of the Dynamixel in the
control table back to the Factory Default Values
0x010
0x042 ~
0x060
Number of
Parameter
4-1. WRITE_DATA
Function Write data into the control table of the Dynamixel
Length
Instruction 0X03
Parameter1
Parameter2 1st Data to write
Parameter3
Parameter N+1 Nth Data to write
Example 1 Set ID of connected Dynamixel as 1
Start Address of the Area to write Data
N+3 (Writing Data is N)
2nd Data to write
Write 1 into the Address 3 of the Control Table. The ID is transmitted using Broadcasting
Instruction = WRITE_DATA, Address = 0x2F, DATA = 0x01
If trying to access other data areas whilst locked, an error will be returned.
Range Error
Instruction = WRITE_DATA, Address = 0x30, DATA = 0x40, 0x00
27
DYNAMIXEL
DX-Series
Appendix
RS-485
Return Delay Time The time it takes for the Dynamixel actuator to return the Status Packet after receiving
485 Direction
SerialTxDBuffer = bData; //data load to TxD buffer
For RS-485, the timing to change the direction to receiving mode right after the ending
RS-485 is a protocol used for serial communication which operates by forming a bus
with multiple clients connected to a single line. Thus, transmission and reception cannot
occur at the same time, and while one client is transmitting, all the other clients need to
be in input mode. The Main Controller that controllers the Dynamixel actuators sets the
RS485 communication direction to be input mode, and only when it is transmitting an
Instruction Packet, it changes the direction to be output mode.
RS485 Direction Output Duration
Instruction PacketStatus Packet
Return Delay Time
an Instruction Packet. The Default Value is 160 uSec and can be changed via the
Control Table at Address 5. The Main Controller needs to change the RS485
communication direction during the Return Delay Tim after sending an instruction packet.
of the transmission is important. The bit definitions within the register that indicates
UART_STATUS are as the following.
TXD_BUFFER_READY_BIT: Indicates that the transmission DATA can be loaded into
the Buffer. Note that this only means that the SERIAL TX BUFFER is empty, and does
not necessarily mean that the all the data transmitted before has left the CPU.
TXD_SHIFT_REGISTER_EMPTY_BIT: Set when all the Transmission Data has
completed its transmission and left the CPU.
The TXD_BUFFER_READY_BIT is used when one byte is to be transmitted via the
serial communication channel, and an example is shown below.
TxDByte(byte bData)
{
while(!TXD_BUFFER_READY_BIT); //wait until data can be loaded.
}
28
DYNAMIXEL
LINE 1 PORT_485_DIRECTION = TX_DIRECTION;
LINE 2 TxDByte(0xff);
LINE 3 TxDByte(0xff);
LINE 4 TxDByte(bID);
LINE 5 TxDByte(bLength);
LINE 6 TxDByte(bInstruction);
LINE 7 TxDByte(Parameter0); TxDByte(Parameter1); …
LINE 8 DisableInterrupt(); // interrupt should be disable
LINE 9 TxDByte(Checksum); //last TxD
LINE 10 while(!TXD_SHIFT_REGISTER_EMPTY_BIT); //Wait till last data bit has been sent
LINE 11 PORT_485_DIRECTION = RX_DIRECTION; //485 direction change to RXD
LINE 12 EnableInterrupt(); // enable interrupt again
Please note the important lines between LINE 8 and LINE 12. Line 8 is necessary since
Byte to Byte Time The delay time between bytes when sending an instruction packet. If the delay time is
DX-Series
When changing the direction of RS-485, the TXD_SHIFT_REGISTER_EMPTY_BIT
must be checked.
The following is an example program that sends an Instruction Packet.
an interrupt here may cause a delay longer than the return delay time and corruption to
the front of the status packet may occur.
over 100ms, then the Dynamixel actuator recognizes this as a communication problem
and waits for the next header (0xff 0xff) of a packet again.
Byte To Byte Time
The following is the source code of a program (Example.c) that accesses the Dynamixel
actuator using the Atmega 128.
29
DYNAMIXEL
DX-Series
C Language Example : Dinamixel access with Atmega128
/*
* The Example of Dynamixel Evaluation with Atmega128
* Date : 2004.7.20
*/
#define BIT_LED_M0 0x08 //Port E
#define BIT_LED_M1 0x10 //Port E
#define BIT_LED_M2 0x40 //Port E
#define BIT_LED_E0 0x80 //Port E
#define BIT_LED_E1 0x01 //Port B
TxDString("\r\n\n Example 6. Go 0x200 with Speed 0x100 -- Any Key
to Continue."); RxD8();
gbpParameter[0] = P_GOAL_POSITION_L; //Address of Firmware Version
gbpParameter[1] = 0x00; //Writing Data P_GOAL_POSITION_L
gbpParameter[2] = 0x02; //Writing Data P_GOAL_POSITION_H
gbpParameter[3] = 0x00; //Writing Data P_GOAL_SPEED_L
gbpParameter[4] = 0x01; //Writing Data P_GOAL_SPEED_H
bTxPacketLength = TxPacket(bID,INST_WRITE,5);
bRxPacketLength = RxPacket(DEFAULT_RETURN_PACKET_SIZE);
TxDString("\r\n TxD:"); PrintBuffer(gbpTxBuffer,bTxPacketLength);
TxDString("\r\n RxD:"); PrintBuffer(gbpRxBuffer,bRxPacketLength);
TxDString("\r\n\n Example 7. Go 0x00 with Speed 0x40 -- Any Key to
Continue."); RxD8();
gbpParameter[0] = P_GOAL_POSITION_L; //Address of Firmware Version
gbpParameter[1] = 0x00; //Writing Data P_GOAL_POSITION_L
gbpParameter[2] = 0x00; //Writing Data P_GOAL_POSITION_H
gbpParameter[3] = 0x40; //Writing Data P_GOAL_SPEED_L
gbpParameter[4] = 0x00; //Writing Data P_GOAL_SPEED_H
bTxPacketLength = TxPacket(bID,INST_WRITE,5);
bRxPacketLength = RxPacket(DEFAULT_RETURN_PACKET_SIZE);
TxDString("\r\n TxD:"); PrintBuffer(gbpTxBuffer,bTxPacketLength);
TxDString("\r\n RxD:"); PrintBuffer(gbpRxBuffer,bRxPacketLength);
TxDString("\r\n\n Example 8. Go 0x3ff with Speed 0x3ff -- Any Key to
Continue."); RxD8();
gbpParameter[0] = P_GOAL_POSITION_L; //Address of Firmware Version
gbpParameter[1] = 0xff; //Writing Data P_GOAL_POSITION_L
gbpParameter[2] = 0x03; //Writing Data P_GOAL_POSITION_H
gbpParameter[3] = 0xff; //Writing Data P_GOAL_SPEED_L
gbpParameter[4] = 0x03; //Writing Data P_GOAL_SPEED_H
bTxPacketLength = TxPacket(bID,INST_WRITE,5);
bRxPacketLength = RxPacket(DEFAULT_RETURN_PACKET_SIZE);
TxDString("\r\n TxD:"); PrintBuffer(gbpTxBuffer,bTxPacketLength);
TxDString("\r\n RxD:"); PrintBuffer(gbpRxBuffer,bRxPacketLength);
TxDString("\r\n\n Example 9. Torque Off -- Any Key to Continue.");
RxD8();
gbpParameter[0] = P_TORQUE_ENABLE; //Address of LED
gbpParameter[1] = 0; //Writing Data
bTxPacketLength = TxPacket(bID,INST_WRITE,2);
bRxPacketLength = RxPacket(DEFAULT_RETURN_PACKET_SIZE);
TxDString("\r\n TxD:"); PrintBuffer(gbpTxBuffer,bTxPacketLength);
TxDString("\r\n RxD:"); PrintBuffer(gbpRxBuffer,bRxPacketLength);
TxDString("\r\n\n End. Push reset button for repeat");
while(1);
}
31
DYNAMIXEL
/*
About Register and value of bits, vide Mega128 Data Sheet.
*/
void PortInitialize(void)
{
DDRA = DDRB = DDRC = DDRD = DDRE = DDRF = 0; //Set all port to
//TurnOff LED
LED_M0_OFF; LED_M1_OFF;LED_M2_OFF;LED_E0_OFF;LED_E1_OFF;
}
/*
TxPacket() send data to RS485.
TxPacket() needs 3 parameter; ID of Dynamixel, Instruction byte,
Length of parameters.
TxPacket() return length of Return packet from Dynamixel.
/*
SerialInitialize() set Serial Port to initial state.
Vide Mega128 Data sheet about Setting bit of register.
SerialInitialize() needs port, Baud rate, Interrupt value.
//Gloval variable number
byte gbpInterruptRxBuffer[256+MEMORY_SPARE]; //485 RxD Data Buffer
byte gbRxBufferReadPointer,gbRxBufferWritePointer; //Pointers for access the gbpInterruptRxBuffer
Should wait until last data bit transmission is
completed.
Note.: ‘Shift register empty’ is differ from ‘Tx
Ready’. Tx Ready just means you can load the
data to CPU UART TxD Register. There can be
several Tx Buffering registers as what kind of
36
DYNAMIXEL
{
TxD8Hex(bpPrintBuffer[bCount]);
TxD8(' ');
}
}
DX-Series
Result
0xFE is BROADCAST_ID, so Dynamixel does not return status packet.(First 2 Instruction Packet)
Set ID to 3
Motor Torque Enable
37
DYNAMIXEL
Connector Company Name : Molex
Pin Number: 4
Model Number
Temperature range : -40°C to +105°C
Contact Insertion Force-max : 14.7N (3.30 lb)
Contact Retention Force-min : 14.7N (3.30 lb)
Female Connector
Male Connector
DX-Series
Molex Part NumberOld Part Number
Male22-03-50455267-04
Female50-37-50435264-04
www.molex.com
or www.molex.co.jp for more detail information
Pin No.1
38
DYNAMIXEL
Dimension
Motor Curve(No reduction gear state)
DX-Series
39
DYNAMIXEL
DX-Series
Optional Frame Application Example
OF116H
OF116S
OF116B
Body to Body Mount
40
DYNAMIXEL
Full Option frame
DX-Series
The CM-2 Board
- A dedicated board designed for controlling Dynamixel actuators
- Available optional parts: Blue-tooth module, RS232 UART, and 6-button blue-tooth
remote controller
- Can be directly mounted on a multi-degrees of freedom robot.
41
DYNAMIXEL
Dynamixel Application Example
DX-Series
CYCLOIDⅡ
42
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.