基于IAP15W 的六轴机械手驱动模块研究与设计
2020-11-10徐操喜董斯特李成章
徐操喜, 冯 建, 董斯特, 李成章
(广东交通职业技术学院 信息学院, 广州510800 )
0 引 言
在机械手控制系统中,工业计算机采用摄像头对目标物体进行识别并三维定位,根据三维坐标及每个机械臂长度,逆运算出各控制舵机与水平面夹角[1]。 由于各机械手臂互相连接,上层只考虑每个机械臂相对于水平线的角度,而对于底层驱动,由于机械臂水平夹角互相影响,改变其中任何一个夹角,其余机械臂水平夹角也随之牵连变化,从而要求底层驱动要在控制上进行调整,定位到设定的三维空间位置。
系统包括了软件控制系统以及电路控制系统两部分。
1 硬件设计
硬件系统包括MCU 核心控制系统、电源降压模块、多路舵机控制模块。
1.1 MCU 核心控制模块选择
MCU 采用宏晶公司的IAP15W4K58S4,此芯片采用8051 内核,兼容传统8051 指令系统,一个时钟周期可以执行一条单字节指令,相比传统12T,效率提高了12 倍,能满足大部分小型系统控制要求,也完全能满足本设计控制要求。
1.2 多路舵机控制模块设计
一个机械手有多个机械臂,每个机械臂由1 个舵机控制。 本控制机械手模型如图1 所示。 由于每个舵机需要采用1 路PWM 控制,而MCU 本身资源有限,通过软件产生多路PWM 难度比较大,因此本方案采用舵机控制专用芯片PCA9685,PCA9685 可以输出16 路舵机控制信号,采用I2C 总线与MCU通信交换数据,每路输出频率可编程配置,从40 Hz到1 KHz,占空比从0%到100%。
图1 机械手模型Fig. 1 Manipulator model
1.3 电源模块
为了隔离舵机电磁噪声对MCU 的干扰,系统对舵机及MCU 独立供电,舵机电源转换芯片采用DCDC 转换芯片LM2575-5.0,MCU 供电采用LM2576-5.0 降压到5 V,再采用线性降压芯片AS1117-3.3 V降到3.3 V 后提供给MCU。 LM2576 采用PWM 控制方式输出电压,转换效率根据输入电压可达75%~88%,输出电流3 A,满足系统电源功率要求。 为了兼顾电源转换效率以及电源纹波干扰对MCU 的影响,LM2576-5.0 稳压到5 V 之后,采用线性稳压芯片AS1117-3.3 V 将5 V 降低到3.3 V,一方面提高电源转换效率,另一方面纹波也得到控制,电源供电方案如图2 所示。
图2 电源供电方案Fig. 2 Power supply scheme
2 软件设计
软件控制系统包括了串行通信程序设计、双机通信协议设计、控制命令合理性检测、各舵机夹角关系分析、舵机控制程序设计。
2.1 串行通信程序设计
上位机与机械手模块采用串行异步方式通信,上位机按双方约定协议把控制参数传到MCU,MCU收到数据后对数据进行校验,无误后按控制参数对舵机进行控制。
IAP15W4K58S4 串行通信配置步骤:
(1)通过寄存器P_SW1 配置使用IO 引脚;
(2)通过定时器配置串行通信口的波特率;
(3)开中断;
初始配置代码如下:
ACC = P_SW1;
ACC &= ~(S1_S0 | S1_S1); / /配置发送接收对应IO 引脚 P_SW1 = ACC; / /通过ACC把配置参数写入P_SW1
SCON = 0x50; / /数据位为8 位,可变波特率
AUXR = 0x40; / /定时器1 为1T 模式
TMOD = 0x20; / /定时器1 为模式2(8 位自动重载)
TL1 = (256 - (FOSC/32/BAUD)); / /设置波特率重装值
TH1 = (256 - (FOSC/32/BAUD));
TR1 = 1; / /定时器1 开始工作
ES = 1; / /使能串口中断
EA = 1;/ /开总中断
2.2 双机通信协议设计
通信协议是两个系统正确通信的基础,通信协议字长设置为10 个字节,包括起始字节以及结束字节。 中间包括有效数据位12,一个CRC 校验位,其结构如图3 如示。
图3 通信协议Fig. 3 Communication protocol
其中,start 位为起始位0x55,end 为结束位0xAA,CRC 为data1 ~data12 的CRC 校验位,data1、data2 为舵机1 的16 位水平夹角(高8 位为data1 ,低8 位为data2),其余类推为data3、data4 为舵机2的16 位水平夹角,……data11、data12 为舵机6 的16 位水平夹角。
2.3 控制命令合理性检测
机械手运动由6 个舵机控制[3], 实物如图4 所示。 标注1 为机械臂1,2 为机械臂2,3 为机械臂3,4 为机械臂4。 舵机1 控制机械手在Y 轴方向转动,舵机2 控制机械臂2 绕机械臂1 转动,舵机3 控制机械臂3 绕机械臂2 转动,舵机4 控制机械臂4 原位置转动,改变机械手姿态,不改变空间坐标。 舵机5 控制机械臂4 绕机械臂3 转动。 舵机6 改变机械手姿态,不改变空间位置。
图4 机械手实物Fig. 4 Manipulatormaterial object
对转动角度进行测量标定,得到数据如表1 所示。
表1 每个机械手测量标定结果Tab. 1 Measurement and calibration results
2.4 各舵机夹角关系分析
机械手各机械臂是一个串连控制结构,由机械结构分析可得知,它们水平夹角会传递影响,夹角α改变会引起夹角β、γ 改变,夹角β 改变会引起γ 改变。 MCU 在接收到上位机发送过来的角度时,一方面需要考虑到夹角之间大小关系导致计算方法,另一方面需要考虑到水平夹角的传递影响。
设4 个夹角机械臂与水平面初始角度值为x,y,z,w,预定目标角度为x1,y1,z1,w1,舵机2,舵机3,舵机5 实际所需要转的角度为x2,y2,z2。 具体运算方法如下:
2.5 舵机控制程序设计
MG996 舵机是一种位置伺服的驱动器,需要周期为20msPWM 信号控制,适用于那些需要角度不断变化并可以保持的控制系统,1.5ms 为基准信号[2]。 其信号控制要求如图5 所示。 MG996 将获得的直流偏置电压与电位器的电压比较,获得电压差输出。 最后,电压差的正负输出到电机驱动芯片,决定电机的正反转。 当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。
图5 舵机的控制要求Fig. 5 Steering gear control
舵机控制芯片PCA9685 对6 个舵机进行控制,PCA9685 可以控制16 路舵机,与MCU 通信采用I2C 总线。 每路输出频率可编程配置,从40 Hz 到1 KHz,占空比从0%到100%。 其最小核心板如图6所示。 其中板上A0~A5 为PCA9685I2C 地址设置,默认设置(右上角A0~A5 都不焊)地址为0X80,OE引脚为使能脚,低电平有效,VCC 为芯片电源,3.3 V~5 V。
图6 PCA9686 舵机控制电路板Fig. 6 Steering gear control circuit board
V +为舵机供电电源引脚,5 V ~5. 5 V。PCA9685 每个输出通道拥有4 个控制寄存器LEDx_ON_L、LEDx_ON_H、LEDx_OFF_L、LEDx_OFF_H。控制寄存器为8 位,储存输出通道高电平时间和低电平时间。
PCA9685 程序设计包括两个关键步骤:
步骤1配置PCA9685 的PWM 输出为50 Hz,此频率刚好对应MG996 的控制信号要求。 其关键代码如下[3]:
f *= 0.92; / /频率设置中的过冲校正
prescal= 25000000;
prescal/ = 4096;
prescal / =;
prescal -= 1;
pres = floor(prescal+0.5);
begin();
mode1 = I2C_read(PCA9685_MODE1);
mode2 = (mode1&0x7F) | 0x10;
I2C _write(PCA9685_MODE1, mode2);
I2C _write(PCA9685_PRESCALE, pres);
I2C _write(PCA9685_MODE1, mode1);delayms(2);
I2C _write(PCA9685_MODE1,mode1 | 0xa1);
步骤2编 写 函 数PCA9685 _ SET _ PWM(unsigned int n, unsigned int on, unsigned int off)用于设定不同通道的占空比,方便主函数对其调用控制,其中n 为所要控制通道,on 为信号高电平时间,off 为信号低电平时间,其关键代码如下所示:
I2C _write(LED0_ON_L+4*n,on&0xff);
I2C _write(LED0_ON_H+4*n,on>>8);
I2C _write(LED0_OFF_L+4*n,off&0xff);
I2C _write(LED0_OFF_H+4*n,off>>8);
2.6 程序流程图
程序运行过程如下:开始运行,控制机械臂转到初始位置,记录机械臂之间夹角。 等待上位发送控制命令,收到控制命令之后,计算得到实际转动角度,把实际转动角度与机械臂夹角进行转换运算,判断是否在机械臂夹角范围内,如果在夹角允许范围内,则输出实际控制命令,如果不在允许范围内,则返回错误信息至上位机。 程序流程如图7 所示。
图7 程序流程图Fig. 7 Programme flow diagram
3 测试结果及分析
测试前设置机械手初始位置,设机械臂初始水平角度为x=90,y=0,z=0。 机械臂1&2 夹角为o,机械臂2&3 夹角为p,机械臂3&4 夹角为q。 在初始位置数据如表2 所示。
表2 机械手初始值化各参数Tab. 2 Initial value of manipulator parameters
测试4 组数据,如表3 所示。 前两组数据是普通常规值测试,后两组接近连界测试,测试结果机械手都达到了预定角度,验证了系统设计可行性。
表3 测试数据Tab. 3 Test result
4 结束语
本文讨论了使用舵机的驱动模块设计,舵机在应用上具有低成本,控制简单,在一些低端的AGV搬运机器人、教学仪器、果园采摘上也有广泛应用,但由于设计局限,其精度低,难以适应精度要求高的场合,在这些高精度要求场合一般要求步进电机加上减速箱。