Dynamixel RX28舵机用户手册.docx
《Dynamixel RX28舵机用户手册.docx》由会员分享,可在线阅读,更多相关《Dynamixel RX28舵机用户手册.docx(29页珍藏版)》请在冰点文库上搜索。
DynamixelRX28舵机用户手册
DynamixelRX-28舵机用户手册
1摘要
1-1RX-28概述及特点
1-2主要规格
2Dynamixel操作
2-1机械组装
2-2连接器组装
2-3Dynamixel连线
3通讯协议
3-1通讯概述
3-2指令包
3-3状态包
3-4控制表
4指令设置和实例
4-1WRITE_DATA
4-2READ_DATA
4-3REGWRITEandACTION
4-4PING
4-5RESET
4-6SYNCWRITE
5示例
附录
1DynamixelRX-28
1-1RX-28概述及特点
DynamixelRX-28Dynamixel系列机器人执行器是一个聪明的、模块化的驱动器。
它将一个齿轮减速装置、一个高精密直流电机和一个具有联网功能的控制电路集于一个单一封装中。
尽管它体积比较小,但是它可以产生很大的扭矩。
它由高品质的材料制成用于提供必要的强度和能够忍受大的外力的结构韧性。
它也有检测诸如内部温度和电源电压的变化并采取相应应对措施的能力。
精密控制舵机位置和转动速度是可以用1024步的分辨率进行控制
服从驱动服从的等级可以调节并且可以指定在控制位置。
反馈具有角位移、角速度和负载转矩的反馈。
报警系统当参数偏离用户定义范围后(比如内部温度、扭矩电压等等),Dynamixel系列机器人执行器可以报警给用户,并且也可以自动处理这些问题(比如关闭扭矩)。
通讯类似链条的连接使得接线容易,支持最高1Mbps的通讯速度。
分布式控制位置、速度、遵从程度和扭矩可以用一个命令包进行设置。
这样就可以使主控器利用很少的资源就可以控制很多个Dynamixel单元。
工程塑料舵机的主体是由高质量的工程塑料制成,使得它可以承受很高的扭矩负载。
轴轴承输出轴用轴承用于保证在高的外界负载下没有效率丢失。
状态指示灯这个LED可以向用户指示错误状态。
框架一个铰链框架和侧装框架支持选项
1-2主要规格和性能
RX-28
重量(g)
72
齿轮减速比
1/193
输入电压(V)
At12V
At16V
最大堵转扭矩(kgf.cm)
28.3
37.7
Sec/60degree
0.167
0.126
最小精度:
0.3°
工作角度:
300°,无边界旋转
电压:
12V–16V
最大电流:
1200mA
工作温度:
-5℃-+85℃
命令信号:
数据包格式
协议类型:
RS485异步串行通讯(8数据位,1停止位,无校验位)
连接:
RS485多路总线
ID:
254ID
通讯速度:
7343bps~1Mbps
反馈:
位置,温度,负载,输入电压等
材料:
全金属齿轮,工程塑料
电机:
MaxonRE-MAX
2Dynamixel操作
2-1机械装配
选项框
2-2连接器装配
连接器的组装如下图所示,用正确的压线工具将电线和接头连接到一起,如果你没有工具
就将电线头和接头焊接到一起以保证在使用时不会松动。
2-3Dynamixel接线
引脚分配连接头的引脚分配如下所示。
两个连接头是引脚对应连接的,所以只要
接上一个连接头就可以操作RX-28。
(注意:
连接头边缘切掉一段的针脚号是PIN1)
接线按照下图所示将RX-28执行器针脚对针脚连接起来。
许多RX-28执行
可以按照如下所示组成单个总线来控制。
主控器为了操作Dynamixel执行器,主控器必须支持RS485串行通讯。
一个专有
控制器就可以控制,但是强烈建议使用CM-2PLUSDynamixel控制器。
串口连接为了控制数字舵机,主控器需要将自己的串行信号转换成485类型。
推荐的电路原理图如下所示。
主控器通过Molex3P的PIN1和PIN2给舵机供电。
(上面介绍的电路用
于解释485串行协议的用法,CM-2PLUS控制器已包含上述的电路,所以
数字舵机可以直接连接上它。
)
TTL电平的TXD、RXD数据信号的方向取决于DIRECTION485引脚的电平
,如下所示
当DIRECTION485为高电平:
TXD信号输出为D+、D-。
当DIRECTION485为低电平:
D+、D-输入转化为RXD。
RS485串口将多个舵机执行器连接到一个节点的多分枝方法是可以通过RS485串行通
讯实现的。
所以当控制这些舵机时,一个不允许在同一时间有多个传输的
总线协议是需要存在的。
警告当连接舵机线路时要确保引脚配置都正确。
当上电时要检查电流消耗。
一
个单独的舵机在待机模式下的电流不会大于50mA。
连接状态验证
当通电时,LED闪烁两次来确认已经连接。
检查当上述操作不成功时,就检查连接头连线是否正确还有电源的电压电流最大限
3通讯协议
3-1通讯概述
数据包主控器通过发送数据包和接收数据包和舵机单元通讯。
有两种类型的数据
包,指令包(主控器发送给舵机单元),状态包(舵机发送给主控器)。
通讯如下所示连接,如果主控器发送一个ID为N的指令包,只有ID为这个值
的舵机单元会发送检查状态包给主机并且执行相应的指令。
唯一的ID如果多个舵机拥有同样的ID,同时发送多个数据包就会发生碰撞,造成通讯问题,因此,确保没有相同ID的舵机连接在同一个网络中就至关重要。
协议舵机执行器通过拥有8位数据位,1位停止位和无校验的异步串行通讯协议通讯。
3-2指令包
指令包是主控器发送给舵机单元命令的数据包。
指令包的结构如下所示
指令包0XFF0XFFIDLENGTHINSTRUCTIONARAMETER1……PARAMETERNCHECKSUM
0XFF0XFF两个0XFF0XFF字节表明一个输入数据包的开始。
ID一个舵机的唯一ID,总共有254个可用的ID值,从0X00到0XFD
广播IDID为0XFE为广播地址,表示所有的连接的舵机单元,一个ID为这个值的数据包适用于所有连接的舵机,所以包含广播ID的数据包是不会返回任何状态数据包的。
长度数据包的长度,它的值为:
参数个数+2
指令舵机需要执行的指令。
参数。
。
N用于除了指令本身还需要发送附加信息的情况。
检验和校验和的计算方法如下所示:
CheckSum=~(ID+Length+Instruction+Parameter1+….+ParameterN)
如果计算的值超过255,最低八位的值将会被认为是CheckSum值。
~是“按位取反”逻辑运算。
3-3状态包(返回包)
状态包是舵机接收指令包后返回给主控器的应答包。
返回包的构成如下:
0XFF0XFFIDLENGTHERRORPARAMETER1PARAMETER2…PARAMETERNCHECKSUM
每个包内字节的意义如下所示:
0XFF0XFF数据包的开始。
ID返回数据包的舵机的唯一的ID。
初始缺省值是1。
LENGTH数据包长度值为:
参数个数+2
ERROR舵机发出的表示错误类型的字节。
每个位的意义如下所示:
位
名字
细节
Bit7
0
Bit6
指令错误
如果一个没有定义的指令被发送或者一个Action指令被发送却没有一个REG_WRITE指令,这些情况下该位都会置为1
Bit5
过载错误
如果指定的最大负载都不能控制这个外部负载该位就会置为1
Bit4
校验错误
如果指令包的校验和不正确该位就会置为1
Bit3
范围错误
如果发送的指令超出定义范围该位就会置为1
Bit2
过热错误
如果内部温度超过控制表中定义的温度时就会该位置为1
Bit1
角度限制错误
如果目标位置超过CWAngle和CCWAngle限定的范围,该位就会置为1
Bit0
输入电压错误
如果工作电压超过了控制表中定义的电压范围,该位就会置为1
Parameter0..N用于需要加入附加信息的场合。
校验和校验和的计算方法如下所示:
CheckSum=~(ID+Length+Instruction+Parameter1+….+ParameterN)
如果计算的值超过255,最低八位的值将会被认为是CheckSum值。
~是“按位取反”逻辑运算。
3-4控制表
地址
项目
访问
初始值
0(0x00)
模型号码(L)
RD
28(0x1C)
1(0x01)
模型号码(H)
RD
0(0x00)
2(0x02)
硬件版本号
RD
?
3(0x03)
ID
RD,WR
1(0x01)
4(0x04)
波特率
RD,WR
34(0x22)
5(0x05)
返回延时时间
RD,WR
250(0xFA)
6(0x06)
CW角度极限(L)
RD,WR
0(0x00)
7(0x07)
CW角度极限(H)
RD,WR
0(0x00)
8(0x08)
CCW角度极限(L)
RD,WR
255(0xFF)
9(0x09)
CCW角度极限(H)
RD,WR
3(0x03)
10(0x0A)
保留
-
0(0x00)
11(0x0B)
最高温度
RD,WR
85(0x55)
12(0x0C)
最低电压
RD,WR
60(0X3C)
13(0x0D)
最高电压
RD,WR
240(0xF0)
14(0x0E)
最大扭矩(L)
RD,WR
255(0XFF)
15(0x0F)
最大扭矩(H)
RD,WR
3(0x03)
16(0x10)
状态返回等级
RD,WR
2(0x02)
17(0x11)
报警灯
RD,WR
4(0x04)
18(0x12)
报警关闭
RD,WR
4(0x04)
19(0x13)
保留
RD,WR
0(0x00)
20(0x14)
RD
?
21(0x15)
RD
?
22(0x16)
RD
?
23(0x17)
RD
?
24(0x18)
RD,WR
0(0x00)
25(0x19)
RD,WR
0(0x00)
26(0x1A)
RD,WR
0(0x00)
27(0x1B)
RD,WR
0(0x00)
28(0x1C)
RD,WR
32(0x20)
29(0x1D)
RD,WR
32(0x20)
30(0x1E)
RD,WR
[addr36]value
31(0x1F)
RD,WR
[addr37]value
32(0x20)
RD,WR
0
33(0x21)
RD,WR
0
34(0x22)
RD,WR
[addr14]value
35(0x23)
RD,WR
[addr15]value
36(0x24)
RD
?
37(0x25)
RD
?
38(0x26)
RD
?
39(0x27)
RD
?
40(0x28)
RD
?
41(0x29)
RD
?
42(0x2A)
RD
?
43(0x2B)
RD
?
44(0x2C)
RD,WR
0(0x00)
45(0x2D)
-
0(0x00)
46(0x2E)
RD
0(0x00)
47(0x2F)
RD,WR
0(0x00)
18(0x30)
RD,WR
32(0x20)
49(0x31)
RD,WR
0(0x00)
控制表控制表包含关于状态和操作的信息。
操作数字舵机就是通过向控制表写
据来完成的,并且它的状态就是通过读取控制表的数值来实现。
RAM和EEPROM
任何刚开始上电的时候,RAM区域中的数据值都会被赋予缺省值。
但是EEPROM区域中的数值却不改变,依然和上次断电时一样的数值。
初始值控制表的最右侧一列显示了EEPROM区域的出厂设置值和RAM区域中的数据每次上电时的初始值。
地址0x000x01模型号码,对于RX-28,这个值为0x001C(28)。
地址0x02硬件版本号
地址0x03ID,为了辨别这些舵机,分配给它们唯一的ID号,在同一个网络中不同的ID需要给每个舵机分配。
地址0x04波特率。
决定通讯速率。
这个计算由下列算式决定。
Speed=2000000/(address4+1)
主要的几个波特率对应的数据值
地址0x04
hex
设置波特率
目标波特率
误差
1
0x01
1000000.0
1000000.0
0.0000%
3
0x03
500000.0
500000.0
0.0000%
4
0x04
400000.0
400000.0
0.0000%
7
0x07
250000.0
250000.0
0.0000%
9
0x09
200000.0
200000.0
0.0000%
16
0x10
117647.1
115200.0
-2.1240%
34
0x22
57142.9
57600.0
0.7940%
103
0x67
19230.8
19200.0
-0.1600%
207
0xCF
9615.4
9600.0
-0.1600%
注意最大波特率误差不超过3%是在USART通讯的容忍范围内。
警告波特率的初始设置值为34(57600bps)
地址0x05返回延时时间。
舵机从收到指令包到返回状态包所耗费的时间值。
这个延时时间的值是决定于2us*地址0x05的数值。
地址0x060x070x080x09
转角极限。
设置舵机的转角范围。
目标位置需要在这个范围以内:
CW角度极限<=目标角度<=CCW角度值。
如果目标位置超出转角极限规定的范围就会产生一个角度越界错误。
地址0x0B最高极限温度。
舵机操作温度的上限。
如果舵机内部温度超过这个值,温度过高位(状态包的第2位)将要返回一个1,并且在地址17、18出现一个警告。
这个值是以摄氏度为单位。
地址0x0C,0x0D
最高和最低供电电压。
工作电压的最低和最高极限。
如果当前电压(地址42)超出指定的范围,供电电压错误(返回包的第0位)将会返回一个1,并且在地址17、18处产生一个警告,这个值是实际电压的10倍。
比如说,如果地址12的值为80,那么最低电压极限设置为8V。
地址0x0E0x0F0x220x23
最大扭矩。
舵机的最大扭矩输出。
当这个值被置为0的时候,舵机进入自由转动模式。
定义这个最大值的位置有两个地址;在EEPROM(地址0X0E,0X0F)和RAM(地址0X22,0X23)。
当电源刚供电时,EEPROM中定义的最大扭矩值被复制到RAM中的地址。
舵机的扭矩输出由RAM(地址0x22,0x23)中的数值来限制。
地址0x10状态返回等级。
决定舵机是否在收到一个指令包后返回一个状态包。
地址16
返回状态包
0
不对任何指令做应答
1
只对READ_DATA指令做应答
2
对任何指令都做应答
在接收到一个应用广播地址的指令包的情况下,不管地址0x10是什么数值都不返回状态包。
地址0x11报警灯。
如果相应位置1,当错误发生时,LED闪烁。
Bit
返回状态包
Bit7
0
Bit6
如果置为1,指令错误时闪烁
Bit5
如果置为1,过载错误时闪烁
Bit4
如果置为1,校验和错误时闪烁
Bit3
如果置为1,范围错误时闪烁
Bit2
如果置为1,过热错误时闪烁
Bit1
如果置为1,角度极限越界错误时闪烁
Bit0
如果置为1,输入电压越界错误时闪烁
这个功能在进行按位与运算后开始起作用。
例如,当这个值被设置为0x05,当输入电压错误或者过热错误发生时LED灯会闪烁。
当从一个错误的状态返回到一个正常的状态,LED将会闪烁2S后停止。
地址0x12报警关闭。
如果相应位置1,当错误发生时,舵机的扭矩将关闭。
Bit
返回状态包
Bit7
0
Bit6
如果置为1,指令错误时扭矩关闭
Bit5
如果置为1,过载错误时扭矩关闭
Bit4
如果置为1,校验和错误时扭矩关闭
Bit3
如果置为1,范围错误时扭矩关闭
Bit2
如果置为1,过热错误时扭矩关闭
Bit1
如果置为1,角度极限越界错误时扭矩关闭
Bit0
如果置为1,输入电压越界错误时扭矩关闭
这个功能在进行按位与运算后开始起作用。
但是,和报警LED不同的是,当返回到一个正常的状态后,它仍然处在扭矩关闭状态。
想要恢复,就需要将扭矩开启(地址0x18)复位为1。
地址0x14~0x17
校准。
用于补偿舵机中电位器误差的数据。
用户不能改变这些数据。
以下(从地址0x18)是在RAM区域。
地址0x18扭矩使能。
当是第一次供电时,舵机进入自由运行状态(扭矩为0)。
设置在地址0x18中的这个值为1就开启了扭矩。
地址0x19LED。
当置为1的时候LED点亮。
反之,置为0LED灭。
地址0x1a~0x1d
斜坡和边缘顺从性。
舵机的顺从性是由顺从斜坡和边缘来定义。
这个特性可以吸收输出轴的冲击。
下图显示了每一个符合值(A,B,C,D的长度)如何被位置误差和施加的扭矩。
地址0x1E0x1F目标位置。
舵机执行器输出将要移动到的期望位置。
设置这个值到0x3ff将移动这个输出轴到300°的位置。
地址0x200x21转动速度。
设置输出轴移动到目标位置的角速度。
设置这个最大值到0x3ff将使输出达到最大的移动速度,这个最大速度的具体数值取决于电池电压和舵机种类。
(最低的速度是该值被置为1。
当它被置为0时,角速度将以电源电压允许的最大速度移动。
就像没有速度控制被应用于舵机。
)
地址0x240x25当前位置。
当前舵机输出的角度位置。
地址0x260x27当前速度。
当前舵机输出的角速度。
地址0x280x29当前负载。
正在运行的舵机的负载大小。
BIT10是负载的方向。
地址0x2A当前电压。
当前舵机的供电电压。
这个值是实际电压的10倍。
例如,10V的电压用100(0x64)表示。
地址0x2B当前温度。
以摄氏度为单位的舵机当前内部温度。
地址0x2C注册指令。
当一个指令被REG_WRITE分配后该地址的数值置为1。
当舵机通过Action指令完成被分配的指令后该地址的数值被清零。
地址0x2E正在转动。
当舵机在电源的供应下移动,该处置1
地址0x2F锁住。
当该处为1,只有0x18到0x23能够被执行写操作,而其他地方不可以。
一旦被锁住,只能通过断电解锁。
地址0x300x31
冲击。
电机工作时供应的最小电流值。
初始值为0x20而它的最大值是0x3ff。
无边际旋转如果顺时针角速度和逆时针角速度都置为0,一个无限旋转模式将会通过设置目标速度来实施。
这种特性可以用来实施一个持续旋转的车轮。
目标速度设置
位
15~11
10
9
8
7
6
5
4
3
2
1
0
值
0
旋转方向
速度值
范围每个数据都有一个合理的最大和最小值。
写指令时超出这些合理范围将会导致返回一个错误。
以下的表格总结了各个寄存器的数据范围。
16位数据寄存器表明两个字节。
两个字节需要在一个数据包中同时被写入。
4指令设置和示例
以下为可用的指令
指令
功能
值
参数数量
PING
无动作,用于获取一个状态返回包
0x01
0
READDATA
读取控制表的数值
0x02
2
WRITEDATA
向控制表写数据
0x03
2~
REGWRITE
同WRITE_DATA很相似,但是保持在待机模式直到给出ACTION指令
0x04
2~
ACTION
出发被REG_WRITE指令注册的指令
0x05
0
RESET
将控制表的所有值恢复到出厂设置值
0x06
0
SYNCWRITE
用于在同一时间控制多个舵机
0x83
4~
4-1WRITE_DATA
功能:
向舵机的控制表中写数据。
长度:
N+3(N是需要向控制表中的数据个数)
指令:
0x03
参数1:
需要被写数据的存储器首地址。
参数2:
将要写的第一个数据。
参数3:
将要写的第二个数据。
参数N+1:
将要写的第N个数据。
例1:
设置一个连接的舵机ID为1
向控制表的地址3写入数据1。
这个ID通过广播地址0xfe来传输。
指令包:
0XFF0XFF0XFE0X040X030X030X010XF6
4-2READ_DATA
功能:
从控制表中读取数据。
长度:
0x04
指令:
0x02
参数1:
需要被读出数据的存储器首地址。
参数2:
将要读取数据的长度。
例2:
读取一个ID为1的舵机的内部温度。
读取控制表地址0x2B的1个字节。
指令包:
0XFF0XFF0X010X040X020X2B0X010XCC
返回状态包如下所示:
状态包:
0XFF0XFF0X010X030X000X200XDB
读取的值为0x20。
所以当前舵机的内部温度为大约为32℃(0x20)。
4-3REG_WRITE和ACTION
4-3-1REG_WRITE
功能:
REG_WRITE指令和WRITE_DATA指令很相似,但是执行时间却不同。
当指
令包被接收时这些值被存在缓存区中并且写操作处于待机模式。
这时,注
册指令寄存器(地址0x2C)被置为1。
当Action指令包被接收,已经寄存
的写指令将被最终被执行。
长度:
N+3(N是需要向控制表中的数据个数)
指令:
0x04
参数1:
需要被写数据的存储器首地址。
参数2:
将要写的第一个数据。
参数3:
将要写的第二个数据。
参数N+1:
将要写的第N个数据。
4-3-2ACTION
功能:
触发被REG_WRITE指令寄存的动作。
长度:
0x02
指令:
0x05
参数:
NONE。
这个ACTION指令在多个舵机需要同时动作的场合很有用。
当控制多个舵
机时,从第一个舵机收到到最后一个接收到指令会出现稍微的时间延迟。
所以,Dy