以下のDynamixelに共通のコントロールテーブルです。
Dynamixelの機能及び設定は次のメモリマップ上に1バイトないし2バイト(リトルエンディアン)のアイテムとして割り当てられ、インストラクションパケットを使用して操作します。
2バイトに渡るアイテムは1つのインストラクションパケットにおいて同時に書き込まれる必要があります。
Address | Item | Access | Default Value | Range |
0 | Model Number | R | - | uint16 |
1 | ||||
2 | Version of Firmware | R | ? | uint8 |
3 | ID | R/W (NVM) | 1 | uint8 0~253 |
4 | Baudrate | R/W (NVM) | 34 (AXシリーズは1) | uint8 0~254 |
5 | Return Delay Time | R/W (NVM) | 250 | uint8 0~254 |
6 | CW Angle Limit | R/W (NVM) | 0 | uint16 0~1023 |
7 | ||||
8 | CCW Angle Limit | R/W (NVM) | 1023 | uint16 0~1023 |
9 | ||||
10 | (Reserved) | - | - | uint8 |
11 | Highest Limit Temperature | R/W (NVM) | 80 | uint8 10~99 |
12 | Lowest Limit Voltage | R/W (NVM) | 60 | uint8 50~250 |
13 | Highest Limit Voltage | R/W (NVM) | 190 | uint8 50~250 |
14 | Max Torque | R/W (NVM) | 1023 | uint16 0~1023 |
15 | ||||
16 | Status Return Level | R/W (NVM) | 2 | uint8 0~2 |
17 | Alarm LED | R/W (NVM) | 0x24 | uint8 0~127 |
18 | Alarm Shutdwon | R/W (NVM) | 0x24 | uint8 0~127 |
19 | (reserved) | - | - | uint8 |
20 | Down Calibration | R | ? | uint16 |
21 | ||||
22 | Up Calibration | R | ? | uint16 |
23 | ||||
24 | Torque Enable | R/W | 0 | uint8 0~1 |
25 | LED | R/W | 0 | uint8 0~1 |
26 | CW Compliance Margin | R/W | 1 | uint8 0~254 |
27 | CCW Compliance Margin | R/W | 1 | uint8 0~254 |
28 | CW Compliance Slope | R/W | 32 | uint8 1~254 |
29 | CCW Compliance Slope | R/W | 32 | uint8 1~254 |
30 | Goal Position | R/W | [Addr36]value | uint16 0~1023 |
31 | ||||
32 | Moving Speed | R/W | 0 | uint16 0~2047 |
33 | ||||
34 | Torque Limit | R/W | [Addr14]value | uint16 0~1023 |
35 | ||||
36 | Present Position | R | - | uint16 |
37 | ||||
38 | Present Speed | R | - | uint16 |
39 | ||||
40 | Present Load | R | - | uint16 |
41 | ||||
42 | Present Voltage | R | - | uint8 |
43 | Present Temperature | R | - | uint8 |
44 | Registered Instruction | R | 0 | uint8 0~1 |
45 | (reserved) | - | - | uint8 |
46 | Moving | R | 0 | uint8 |
47 | Lock | R/W | 0 | uint8 0~1 |
48 | Punch | R/W | 32 | uint16 0~1023 |
49 |
通信速度を決める分周値で、通信速度は次式で導かれます。
Baudrate[bps] = 2000000[bps] / (Value + 1)
主なBaudrate
Value | Actual Baudrate[bps] | Specified Baudrate[bps] | Error[%] |
1 | 1000000.0 | 1000000 | 0.000 |
3 | 500000.0 | 500000 | 0.000 |
4 | 400000.0 | 400000 | 0.000 |
7 | 250000.0 | 250000 | 0.000 |
9 | 200000.0 | 200000 | 0.000 |
16 | 117647.1 | 115200 | -2.124 |
34 | 57142.9 | 57600 | 0.794 |
103 | 19230.8 | 19200 | -0.160 |
207 | 9615.4 | 9600 | -0.160 |
※ホストとのボーレートの誤差は±2%以下が要求されます。
インストラクションパケットが送られた後、ステータスパケットを返すまでの待ち時間を設定します。
ホストにおいて半二重のバス制御のタイミングに合わせて調整しますが、DXHUBを使用する限りでは0を設定しても問題ありません。
Delay Time [us] = Value * 2 [us]
動作角の範囲です。Goal Positionは以下の範囲に設定する必要があります。
CW Angle Limit <= Goal Position <= CCW Angle Limit
Goal Positionが動作角のリミットを越えると、Angle Limit Errorが起こります。
CW Angle Limit及びCCW Angle Limitを両方0に設定するとEndless Turnモードになります。
Present Temperatureがこの値を超えるとOverheating Errorの該当ビットがONになります。
Temperature [degC] = Value * 1 [degC]
Present Voltageがこの値の範囲を超えるとInput Voltage Errorの該当ビットはONになります。
Voltage [V] = Value * 0.1 [V]
最大出力トルクの初期値です。起動直後にこの値がTorque Limitへコピーされ、以後使用されません。
単位は最大出力に対する割合です。Max Torqueが512なら最大出力対比約50%、1023なら100%が出力の上限となります。
ステータスパケットを返信するインストラクションパケットを選択します。
Value | Instruction to respond |
0 | Ping |
1 | Ping, Read |
2 | Ping, Read, Write, Reg Write, Reset |
対応するビットを1に設定すると、エラーが発生した時にステータスLEDが点滅します。
すべてのビットのOR論理演算に従って動作します。例えば0x05が設定されていたら、Input Voltage ErrorかOverheating Errorが起こったときにLEDが点滅します。
Bit | Name | Description |
7 | - | - |
6 | Instruction Error | 未定義のインストラクションが指定された、もしくはreg_writeなしでactionが指定された |
5 | Overload Error | 指定された最大トルクで現在の負荷を制御できない |
4 | Checksum Error | インストラクションパケットのチェックサムが正しく無い |
3 | Range Error | パラメータの設定範囲を超えた |
2 | Overheating Error | 内部温度が設定温度を超えた |
1 | Angle Limit Error | Angle Limitの範囲外にGoal Positionが指定された |
0 | Input Voltage Error | 電源電圧が指定動作電圧の範囲を超えた |
対応するビットを1に設定すると、エラーが発生した時にTorque Limitを0に設定し、モータの出力を遮断します。
エラーが発生した後、正常状態に戻ってもTorque Limitは0が維持されますので、Torque Limitに値を再設定する必要があります。
Bit | Name | Description |
7 | - | - |
6 | Instruction Error | 未定義のインストラクションが指定された、もしくはreg_writeなしでactionが指定された |
5 | Overload Error | 指定された最大トルクで現在の負荷を制御できない |
4 | Checksum Error | インストラクションパケットのチェックサムが正しく無い |
3 | Range Error | パラメータの設定範囲を超えた |
2 | Overheating Error | 内部温度が設定温度を超えた |
1 | Angle Limit Error | Angle Limitの範囲外にGoal Positionが指定された |
0 | Input Voltage Error | 電源電圧が指定動作電圧の範囲を超えた |
電源を入れた時、出力軸はフリーの状態です。Torque Enableを1に設定するとトルクが有効になります。 Goal Positionを指定した場合も1になります。
Dynamixelはコンプライアンスを設定することで出力軸に柔軟性を持たせます。グラフはポジションと出力の相関を表し、A~Dは各コンプライアンス値です。
A : CCW Compliance Slope
B : CCW Compliance Margin
C : CW Compliance Margin
D : CW Compliance Slope
E : Punch
出力軸が動く際の回転数を指定します。
Velocity [rpm] = Value * 0.111 [rpm]
但し該当モデルの最大回転数以上では動作しません。0に設定すると供給電圧で可能な最大速度になります。
Endless Turnモードで使用する場合はEndless Turn参照。
最大出力の上限値です。
単位は最大出力に対する割合です。Max Torqueが512なら最大出力対比約50%、1023なら100%が出力の上限となります。
電源を入れるとMax Torqueの値を初期値として使用します。
出力軸の現在位置です。出力軸0~300°に対し、0~1023の値をとります。
Endless Turnモードでは300~360°の間は不定値となります。
出力軸の現在の角速度です。10番目のビットは回転方向を表します。
Present Speed [rpm] = Value * 0.111 [rpm]
Endless Turnモードの場合はEndless Turn参照。
Bit | 15~11 | 10 | 9~0 |
Value | 0 | Direction | Speed |
Direction = 0 : CCW, Direction = 1 : CW
出力に基づいて算出された負荷の大きさです。10番目のビットは負荷の方向です。
単位は最大出力に対する割合です。512ならCCW方向に最大出力対比約50%、1023なら100%の負荷となります。
Bit | 15~11 | 10 | 9~0 |
Value | 0 | Direction | Load |
Direction = 0 : CCW, Direction = 1 : CW
CW Angle LimitとCWW Angle Limitを0に設定することで、車輪のような役割として使用できるEndless Turnモードになります。Moving Speedで回転速度を指定します。
Endless TurnモードでのMoving Speed及びPresent Speedは、最大出力に対する出力の割合です。512ならCCW方向に最大出力対比約50%、1023なら100%の出力で制御します。負荷の大きさによって回転速度は変わります。
Moving Speedの設定
Bit | 15~11 | 10 | 9~0 |
Value | 0 | Turn Direction | Speed |
Trun Direction = 0 : CCW, Trun Direction = 1 : CW