▌01 编码器
在 双旋转轴机械臂 的肩部和肘部安装有 角度编码器 ST-3806-15-RS ,通过角度编码器 STM32F103控制器 来对肩部和肘部的运动进行控制运动补偿。
在 三管脚机械臂控制命令 中总结了第一版测试软件( 机械臂底层通信协议说明 )所呈现的一些基本问题。其中关于运动不连续问题与编码器的读取与调试出现的鼓掌有关系。
本文对于角度编码器的安装、设置、与检测给出总结。
- 将肩部与肘部的角度传感器连接框 调试机械臂一体化控制电路:STM32F103控制器初步调试 对应的端口;
- 根据 角度编码器 ST-3806-15-RS 的方式对角度传感器进行通讯速率设置;
- 调整角度传感器的机械方位,使得 角度传感器极限位置与程序设置一致。
▌02 连接角度传感器
1.电路板连接传感器
电路板上存在两个5PIN的接口,他们位于电路板的下方。如下图所示:
▲ 两个传感器连接到电路板
2.角度传感器接口1
根据 ST-3806系列单圈编码器 说明书 定义了角度传感器引线的功能与对应的颜色:
红 | 黑 | 绿 | 黄 | 白 |
---|---|---|---|---|
DC5V DXC9-30V | GND | 485A+ | 485B- | RESET |
因此,根据控制板的电路板对于接口端口定义,将ST-3806传感器5pin接口颜色序列如下图所示:
▲ 角度传感器SCH设计
两个角度传感器分别对应的通道:
- 通道1:肩部角度传感器;
- 通道2:肘部角度传感器;
▌03 设置波特率
在使用两个角度传感器之前需要设置两个角度传感器 ST-3806-15 的波特率。出厂时的串口默认配置,波特率默认为9600bps,数据位8,无校验,停止位1;波特率可配置范围9600~115200bps,数据位为8 位,校验方式可配置为奇校验、偶校验或无校验,当为奇、偶校验时停止位为1 位,无校验时停止位为2。
为了提高角度传感器读取速度,需要将ST-3806的通讯波特率修改为115200。
下面给出分别设置两个角度传感器的过程,设置的方式、条件基本相同。
1.设置条件
根据ST-3806-15说明,传感器设置需要将其对应的RTC管脚(PIN5)拉高。下面通过一个短路线的电阻连接在对应的端口的PIN5与PIN1(+5V),将RTC的电压拉高。持续时间超过10秒钟,然后将短路线拿开。经过复位之后,ST-3806的通讯波特率恢复到9600,这样便可以通过软件将ST-3806传感器重新设置到115200。
下图显示了对于通道1(肩部角度传感器)进行复位的过程。对于通道2(肘部角度传感器)复位使用相同的方法,都是将短路线短接接口的PIN1(最左),PIN5(最右)两个端口超过10秒钟,然后将短路线拿开。
▲ 对通道1(肩部角度传感器)进行复位
进行复位之后,便可以使用下面的设置方法来改变传感器的波特率了。
■ 说明:在返回的第一版本的电路板,两个读取角度的端口始终出现问题。最后经过检修,更换了MCU(STM32F103),两个MAX485电路才恢复工作。为什么原来的接口电路损坏了呢?
猜测:有可能原来在使用过程出现了高压将原来的接口电路损坏了.
▲ 更换了MCU,两个MAX485接口电路之后重新设置
2.设置方法
(1)使用STM32Bootloader软件
STM32Bootloader软件是单片机软件开发软件。通过它的对话交互式命令设置比较方便,但它需要有对应的STM32Bootloader专用硬件的连接。 如果没有 ,可以参照下面的“使用简易命令”来进行设置。
▲ STM32Bootloader对话框软件界面
在对话框中分别输入:
- sb 1 : 设置第一通道(肩部角度传感器)的波特率
- sb 2 : 设置第二通道(肘部角度传感器)的波特率
(2)使用简易命令2
双轴机械臂串口控制命令开发与测试:STM32F103控制板,简易调试命令集合 是用于开发调试机械臂的命令界面。在其中增加了设置角度传感器的控制命令。详细可以参见 简易调试命令集合 中的定义。
-
命令定义:
-
命令HEX吗:0x07
命令参数:0x00,0x00:对应通道1,肩部角度传感器;0x00,0x01:通道2,肘部角度传感器;
返回数值:0x5a
3.检查角度传感器
在设置角度传感器波特率为115200之后,可以通过以下两个方面来读取相应的角度数值,看是否数值能够随着机械臂的不同位置而改变。如果能够读取改变的数值,说明两个传感器的通讯端口以及波特率设置完成。
(1)使用STM32Bootloader软件
在STM32对话框中输入“angle”命令,回车之后,可以获得当前肩部和肘部的角度传感器数值。
▲ 输入ANGLE命令查询当前的命令
(2)使用简易调试命令
使用双轴机械臂串口控制命令开发与测试:STM32F103控制板,简易调试命令集合中的读取角度命令:
-
命令定义:
-
命令HEX码:0x08
命令参数:0x00,0x00
返回值:四个字节,分别是ah1,al1,ah2,al2
- 第一通道(肩部)角度数值:ah1×0x100+al1
- 第二通道(肘部)角度数值:ah2×0x100+al2
▌04 调整角度传感器机械方位
1.角度传感器的安装位置
由于角度传感器输出的数值是相对于它本身的零点,这与它安装的方位有关系。如果两台机械臂的在固定角度传感器是他们的机械零点不同,则在同样的机械臂的位置,所读出的角度值也不相同。
在 对于STM32F103三轴机械臂控制器进行基本功能测试-关节角度读取 中给出了对于角度值读数进行修正的方法,通过增加修正量来保证机械臂在移动范围之内,读出的值始终保持单调,而不会过零点出现溢出现象。
▲ 两个关节的角度传感器安装的位置
2.检查角度数值
现在程序中已经就肩部和肘部的角度传感器进行修正。要求机械臂的两个关节都处于旋转中心位置的时候读出的数值都是:0x4000=16384。
通过 3.3 读取角度的方法,获得两个管脚的角度值,确认是否关节在运动范围中心位置所读取的数值为16384。
▲ 两个关节都处于运动中心位置
3.角度位置进行复位
如果在机械臂的管染血在运动中心位置,读取的角度不是0x4000(16384),则需要对角度传感器进行置零。根据ST-3806系列单圈编码器 说明书中说明,将ST-3806置零是将接口管脚RTS拉高超过1秒,小于5秒钟即可。
下图显示了对于通道1(肩部角度传感器)角度置零过程:使用短接线将通道1端口的PIN1,PIN5短接两秒钟。
对于通道2(肘部角度传感器)进行置零,通道2接口做同样的操作即可。
▲ 将通道1(角度传感器)角度置零
由于软件内部自动将角度传感器进行补偿 0x4000,所以通过软件反馈的角度传感器的读数为0x4000。
与前面对ST-3806复位过程类似,使用一个短接线将接口的PIN1,与PIN5短接。时间大约1~2秒钟。ST-3806的数值就被置零了。此时重新读取数值,得到的读数就应该是0x4000。此过程需要注意:
- 在将传感器置零时,对应的关节需要处于运动范围中心位置;
- 短接的时间不要超过10秒钟,否则传感器的波特率就会恢复到9600。此时需要按照前面的方式重新设置ST-3806de的波特率。
▌结论
对于机械臂的两个角度传感器(肩关节、肘关节)的电气安装、波特率设置、角度检查进行了总结。
需要按照前面三个步骤逐步完成角度传感器的设置。这样才能够保证机械运动的精度。
■ 相关文献链接:
- 双轴机械臂调试:步进电机42HS348E,BH32角度传感器,MCU:STC8H1K28
- 角度编码器 ST-3806-15-RS
- 调试机械臂一体化控制电路:STM32F103控制器初步调试
- 三关节机械臂控制命令修改
- 机械臂底层通信协议说明
- ST-3806系列单圈编码器 说明书
- 双轴机械臂串口控制命令开发与测试:STM32F103控制板,简易调试命令集合
- 对于STM32F103三轴机械臂控制器进行基本功能测试-关节角度读取