肖振兴
(柳州铁道职业技术学院电子技术学院,广西 柳州 545616)
机械手臂在工业生产、灾难救援、手术医疗等方面有着重要的应用。当前,国内在先进机械手臂研发和生产上缺乏创新和基础性研究。国际上有ABB、KUKA 两大领头羊,其在机械手臂设计制造和控制方面均有极大造诣。在全球一体化越来越深入的今天,我国如不加强对应专业人才培养,必将在全球一体化浪潮处于下风,甚至会出现关键技术“卡脖子”的状况。
引进机械手臂进入课堂,对提高学生专业学习水平和积累实践操作经验有着重要的帮助。但目前,各机械手臂生产商的机械手臂价格高昂,便宜的十几万一套,高档次的要上百万,给实验室建设和设备操作的普及带来昂贵的经济成本,也制约了机器人专业人才的培养。因此,开发经济、实用、符合机械手臂发展方向的示教型机械手臂,对于机器人专业人才培养具有极大的助力。
本文设计了一款由舵机构成的六自由度的机械臂。它由机械臂和机械手臂控制器构成。如果一个机器人要在一个空间内自由活动或抓取物体,那么机器人必须可以在空间内的X、Y、Z轴平移运动和绕X、Y、Z轴转动[1]。复杂的工业生产机械手臂都要具备六个自由度。为了更好地与实践贴合,本文开发的机械手臂也为六个自由度。
机器人空间内运动坐标如图1 所示。
图1 机器人空间内运动坐标图Fig.1 Coordinate diagram of robot movement in space
机械臂的关节由若干舵机构成。底座由金属云台构成,可以360°旋转;关节之间通过连接杆链接,末端执行器可以360°旋转和夹取。机械手臂分别能够完成机械臂的旋转、前后、左右、末端执行器的开闭、张合动作。机械手臂结构如图2 所示。
图2 机械手臂结构示意图Fig.2 Schematic diagram of mechanical arm structure
机械臂关键器件舵机采用MG996R 型舵机。该型舵机控制方法简单,具有控制精度高、成本低、体积小等特点,并可以根据数量的不同加以灵活应用。产品扭矩为9 kg·cm(4.8 V)、11kg·cm(6 V);产品速度为0.19 s/60°(4.8 V)、0.18 s/60°(6 V);转动角度为180°;工作电压为4.8~6 V;齿轮形式为金属齿轮;死区设定为5 μs;产品重量为55 g;产品尺寸为40.7 mm×19.7 mm×42.9 mm。
从产品的参数可知,扭矩完全可以满足日常教学示教的需求。
从图2 可以看出:关节1、关节3 和关节6 可以控制机械手臂在空间内旋转和左右方向运动;关节2、关节4 和关节5 控制机械臂在坐标轴的前后方向运动;关节7 控制末端执行器的夹取动作。加上末端执行器,可以更好地进行示教教学。它的空间位置与各连杆之间的空间位置的关系,是机械臂空间位置分析的基础[2]。
控制电路板接收来自信号线的控制信号,控制电机转动。电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,在舵盘转动的同时带动位置反馈电位计。电位计输出一个电压信号到控制电路板,进行反馈。然后,控制电路板根据所在位置决定电机转动的方向和速度,从而达到目标并停止。其工作流程为:控制信号→控制电路板→电机转动→齿轮组减速→舵盘转动→位置反馈电位计→控制电路板反馈。转角与输入脉冲的关系如图3 所示。
图3 转角与输入脉冲的关系图Fig.3 Relationship between the angle and the input pulse
舵机的控制信号为脉宽调制(pulsewidth modulation,PWM)信号,周期为20 ms。其中,脉冲宽度为0.5~2.5 ms;相对应的舵盘位置为0~180°,呈线性变化。给舵机提供一定的脉宽,它的输出轴就会保持一定的对应角度,无论外界转矩怎么改变。直到给舵机提供1 个另外宽度的脉冲信号时,它才会改变输出角度。舵机内部有1 个可以产生周期为20 ms、宽度为1.5 ms 的基准信号的基准电路。1.5 ms 的基准信号刚好是90°位置的脉冲宽度值,内部的比较器将对比外加信号与基准信号,判断出方向和大小,从而产生电机的转动信号。
机械臂控制器结构如图4 所示。
图4 机械臂控制器结构图Fig.4 Structure of manipulator controller
舵机驱动电路采用的是PCA9685[3]芯片。该芯片有16 个PWM 输出通道,分辨率为12 bit,与控制器的通信采用内部集成电路(inter-integrated circuit,IIC)方式通信,只需要2 根线即可。芯片介绍如下:①IIC 接口,支持高达16 路PWM 输出,每路12 位分辨率(4096级);②内置25 MHz 晶振,可不连接外部晶振,也可以连接外部晶振,最大50 MHz;③支持2.3~5.5 V 电压,最大耐压值5.5 V,逻辑电平3.3 V;④具有上电复位以及软件复位等功能。
根据其分辨率,舵机控制的脉冲周期理论精度为4.88 μs,对应的角度控制理论精度为0.044°。
PCA9685 有16 路PWM 信号输出。微控制器对外部控制信号进行处理,并经过IIC 总线送至PCA9685 内部,控制PCA9685 实现对应通道的PWM输出,进而控制舵机机械相应地转动。
外部控制设备由矩阵键盘和摇杆开关组成。矩阵键盘可以选定对应的舵机,再通过摇杆开关控制选定的舵机进行转动。通过连续的选定,就可以让机械臂完成不同的操作动作。
限于篇幅限制,本文只介绍软件设计思路,并给出软件设计流程图。机械臂控制主要有单个舵机控制和动作组控制。以下对这2 种控制方法的软件设计思路进行介绍。当然,也有的机械臂采用数字信号处理(digital signal processing,DSP)[4]、现场可逻辑门阵列(field programmable gate array,FPGA)[5]作为控制器,或者使用开源硬件Arduino 作为控制器[6]。这些方法都可以达到设计要求。
单个舵机控制是指对机械臂上的舵机进行单独控制。图2 中有7 个舵机组成了机械臂的关节。每个舵机经过一定角度的转动,可以使末端执行器到达设定的位置。因此,在矩阵键盘选择对应的舵机后,通过摇杆开关控制其转动。连续选定不同舵机后,就可以让机械臂完成不同的操作、到达不同的位置。
按键扫描程序查询外部按键、控制信号的输入。当有按键信号输入时,则选定对应舵机。继而查询摇杆开关的信号输入,以摇杆开关的输入信号作为舵机PWM 设定值,并经过IIC 总线将通道地址和PWM 脉宽设定值送PCA9685 内部,从而完成对舵机的控制。
PCA9685 芯片与微处理器的通信是以IIC 的方式进行的。所以在对PCA9685 进行数据读写时,需要进行IIC 总线初始化、IIC 总线启动、IIC 总线停止信号、IIC 总线应答信号、IIC 读写,以及对PCA9685 芯片读写数据及复位进行初始化和编程。
单个舵机控制程序设计流程如图5 所示。
图5 单个舵机控制程序设计流程图Fig.5 Design flowchart of single steering gear control program
动作组控制程序设计流程如图6 所示。
图6 动作组控制程序设计流程图Fig.6 Design flowchart of action group control program
动作组控制是由多个舵机转动完成一定的操作,按键选定对应舵机,并使之转动一定的角度。此时,微处理器记住舵机转动的角度并保留数据,连续多次设定多个舵机的转动角度,并依次保留舵机转动角度数据。这样,机械臂就有了一套固定的动作。这套固定的动作是由舵机转动完成的。而舵机转动的数据微处理器已经保留并记录,一键调用即可。按照此方法,微处理器可以保留多套动作,通过按键调用演示,能够达到很好的示教效果。机械臂完成一套动作有许多的控制算法,如自适应比例积分微分(proportional integral differential,PID)控制[7],可提高运动精度。
舵机构成的六自由度示教型机械手臂主要由机械臂和控制器构成,能够模仿工业生产机械臂的各种操作动作。示教型机械手臂的引入能够提升课堂学习体验、增强学生学习兴趣,使学生了解机械臂机械结构、机械臂的运动学、机械臂的控制算法。示教型机械手臂制作成本低,为解决由经济成本带来的实验设备缺乏问题提供了设备技术解决方案。机械臂具备六个自由度,能够模仿工业机器人机械手臂的运动特征。在机械臂的驱动控制上,采用PCA9685 芯片作为PWM驱动信号的来源。该芯片能够输出16 路PWM 信号,且脉宽可调。本文设计对于后续的机械臂扩展和升级也留有余地,是很好的示教型机械手臂。最终制作的样机能够在按键及手柄控制下做出不同的动作,并且在空间上可以实现六个自由度运动。学生通过控制手柄的操作,可以直观地观察机械手臂的空间运动状态。