基于STM32的协作机器人机械臂控制系统设计
2017-06-07李以聪戴福全肖明伟陈剑枰
李以聪++戴福全++肖明伟++陈剑枰++陈志伟++吴国安
文章编号:2095-6835(2017)10-0027-02
摘 要:目前,针对协作机器人的柔顺控制、零力控制问题,提出了一种基于以ST公司的STM32为微控制器的协作机器人机械臂控制系统。该系统采用数字PID闭环算法改善机械臂的柔顺运动,增强其稳定、可靠性能,并加上力矩传感器或电流检测电路感知外界的力矩变换情况,补偿机械臂的自重,实现零力控制,为机器人的快速示教奠定基础。实验结果表明,将STM32系列微控制器作为主控制器具有可行性,可以应用于协作机器人的机械臂控制系统中,且具有广阔的应用前景,并最终将其运用于实际工业生产加工中。
关键词:机械臂;协作机器人;PID;STM32
中图分类号:TP242 文献标识码:A DOI:10.15913/j.cnki.kjycx.2017.10.027
一直以来,控制器都是机器人控制系统的核心,但是,国外相关产业公司对我国实行严厉的保密措施。随着微处理器行业的快速发展,市面上陆续出现了高性能、高性价比的32位微处理器,它们的性能能够满足机械臂对控制器的运算需求。针对目前协作机器人控制系统资源匮乏,价格昂贵且工作不稳定等问题,提出了一种改进设计,以满足中小企业对机械臂的控制需求。在设计该控制系统时,首先提出了电机的硬件驱动电路设计方案。主控芯片采用一种抗干扰能力比较强、运算速度快、价格合理的STM32微控制器,相比现在广泛使用的电机控制的DSP,STM32成本比较低,自带能产生电机控制所必须的PWM输出的TIM,且外围电路较为简单,适用于机械臂的电机控制。接着分析机械臂电机伺服控制所需要的PID位置环算法,最后通过实物样机试验机械臂的运动柔顺度,通过Matlab进行电机旋转位置的数据拟合,得出响应曲线,并最终证实了该设计方案的可行性。
1 硬件驱动电路设计
机械臂的电机驱动电路是整个研究的基础,具有良好的启动和调速性能,而其稳定控制也成了重要的研究对象。
1.1 电机的选型
本文研究选用的是直流有刷电机。与无刷直流电机相比,有刷电机具有更好的启动和调速性能以及控制简单、价格低廉等特性,常被应用于对启动和调速有較高要求的场合,例如精密机床和工业机器人装配等场合。
1.2 电机位置传感器的选用
编码器有增量型编码器和绝对型编码器2种。增量型编码器是测量以前一个时刻为基点测角的位移增量,它测量的小角度准,测量的大角度则有误差累计;绝对型编码器是测量从开始工作后的角位移量,它测量小角度不准,但是,测量的大角度没有累计误差。因为机械臂转动角度不大,所以,取舍后采用增量型编码器,以减少小角度的测量误差。
1.3 电机控制电路设计
电机驱动采用的是H桥电路,选用4个常见的功率开关器件MOSFET作为H桥中的4条腿,电机为H中的横杆。另外,采用2块IR2106S作为自举电路的驱动芯片,提供对2对上下桥臂的开断控制。由于单片机输出的PWM信号功率不足以驱动IR2106S,因此,需配合芯片74ACT244的驱动增强电路,将单片机输出信号驱动增强再后引入IR2106S的输入端。驱动电路如图1所示。
2 系统软件算法设计
如果硬件作为控制的基础,那么,软件算法则为控制的核心,控制着机械臂控制系统的中枢神经。机械臂控制主要包括以下3点:①实时性。在控制机械臂时,要想实现实时控制,就需要确保机械臂数据的实时性。只有确保设备的整体实时性,才能确保机械臂不会出现死区等故障。②稳定性。稳定性是判定一个检验程序的重要指标,为了提高其稳定性,在设计程序的过程中,需要考虑运行时可能出现的不正常问题,并加以解决。③可再开发性。好的程序软件不是一次就可以设计调试完成的,需经过多次修改后才能达到系统的设计要求。所以,在开发过程中,要规范程序设计结构,以便多次调试。
系统软件主要由主程序和中断子程序构成,如图2所示。为了控制机械臂电机和检测电机的实时位置,主程序主要完成系统初始化和电机控制参数初始化,包括配置必要的TIM1的互补PWM输出和TIM3的电机编码器捕获模式等。中断服务子程序主要采用了2个中断,即接受电机控制指令的CAN中断和TIM2定时PID运算中断。其中,TIM2定时中断是10 ms一次。在主循环中,等待CAN口接收到控制指令后,进入中断,在中断子程序中判断是否符合控制指令协议,并提取机械臂相关的控制量。等待TIM2进入中断后,提取电机编码器反馈的位置数据,进行PID运算,得出当前PWM控制量,将当前PWM控制量配置如TIM1后,将控制电机转到指定位置。
PID控制器是通过比例、积分、微分3个环节的串联控制系统偏差的控制器,如图3所示。STM32作为一个微控制器,无法直接对偏差做积分、微分,只能通过转换的方法,在一定时间里处理采集到的数据,使系统作出响应,时间分割得越小,系统响应越快,机械臂控制就越流畅。如果要采用PID算法,只需利用微积分思想,把时间分割得很小,将当前的编码器位置减去电机的指定位置做误差,对误差求和来代替积分,对当前误差和上一次误差差分来代替微分。时间分割得越小,系统响应也就越快,电机超调量也就越小,机械臂运动就会越流畅。在程序中,利用TIM2产生10 ms定时中断,在中断中做PID运算,就相当于对时间进行细化分割,再对各项值乘上相应的比例、积分、微分系数。与此同时,需要对积分和PWM控制量限位,防止过饱和造成系统响应滞后。
3 实验调试
实际调试样机为如图4所示的自由度机械臂。为了确定PID各个参数的取定,取单个机械臂系统分析,程序中先给定PID比例系数,积分系数和微分系数先取0,在电脑sscom32串口通讯软件输入指令后,机械臂开始运动,最终旋转稳定后,保存串口窗口返回的位置信息,导入Matlab进行数据拟合,得到拟合后的曲线,并适当增大比例系数,重复多次,观察对比拟合后的曲线,如图5所示。如果曲线出现超调量增大,振荡次数增加,调节时间增加的情况,就需要适当减小比例系数,增大积分系数,从而减小稳态误差。如果PI控制效果不够理想,可以适当增大微分系数,减小超调量,以增强系统的稳定性。如果结合比例、积分、微分后,控制效果始终不理想,可以适当缩短采样时间,也就是TIM2的定时周期,从而提高响应速度。如果最终得到的曲线超调量不大,震荡次数少,则可以确定PID参数大小。
4 结论
实验证明,本文的协作机器人机械臂控制系统设计可行,可以满足中小型协作机器人对机械臂控制的需求,具有控制精准、动作灵活等优点。加入力矩传感器,即可实时检测机械臂的力矩,实现对力矩的限制,并可实现对机械臂的零力控制。一旦力矩超出了预设的力矩值,机械臂则停止工作,以防误伤工作人员。在此过程中,仍然存在一些不足需要改进,主要包括以下2点:①算法的完善。对算法的冗余和处理方面仍需改进,以便后期的参数调试,改善机械臂的运作。②电路的简化。电路板走线布局在满足功率要求的前提下,需要继续简化,改善电路板工作的稳定性。
针对上述问题,相关工作人员要不断改进和完善,逐渐提高机械臂的稳定性和可靠性。
参考文献
[1]王直,丁超.基于STM32的自动涂装机伺服控制系统研究[J].江苏科技大学学报(自然科学版),2000(4).
[2]吴红星.电机驱动与控制专用集成电路及应用[M].北京:中国电力出版社,2006.
[3]王晓明.电动机的单片机控制[M].第二版.北京:北京航空航天大学出版社,2007.
[4]崔更申,李传明,尹鹏,等.基于STM32F4的电机控制系统设计计算机测量与控制[J].计算机测量与控制,2015,23(10):31.
[5]吴大卫.基于开放式运动控制器的数控系统的硬件设计[J].组合机床与自动化加工技术,2006(12).
[6]谢自美.电子线路设计·实验·测试[M].第二版.武汉:华中理工大学出版社,2000.
[7]赵亮亮,马振书,穆希辉,等.危险作业机器人机械臂设计及其运动学分析[J].机械设计与制造,2011(8).
〔编辑:白洁〕