竞赛机器人多舵机控制方法的研究与实现

2016-08-06 02:33韩玉龙申忠宇王欣然
自动化仪表 2016年7期
关键词:舵机编程单片机

韩玉龙 赵 瑾 申忠宇 王欣然

(南京师范大学电气与自动化工程学院,江苏 南京 210014)



竞赛机器人多舵机控制方法的研究与实现

韩玉龙赵瑾申忠宇王欣然

(南京师范大学电气与自动化工程学院,江苏 南京210014)

摘要:针对竞赛机器人中多舵机的运动控制,研究了以Atmega128为主控芯片的多路舵机控制方法的设计与实现。通过单片机内部定时器匹配中断和分时复用的方法,实现了多路舵机精准的位置控制,并实时优化多路舵机的最小步长,满足了多路舵机的速度控制要求。设计了AVR的Bootloader自引导程序,结合Visual Basic 6.0开发了一款简易的多舵机可视化编程调试软件,实现了PC机与AVR之间数据通信、下载、更新动作库等功能。该软件被成功应用于中国机器人大赛中。

关键词:机器人多舵机单片机上位机PWM分时复用VB

0引言

直流伺服电机,也称舵机,是一种位置控制伺服直流电机。舵机的控制信号实际上是一种脉冲宽度调制信号(pulse width modulation,PWM)。对于中国机器人大赛中的具有10个自由度的自由体操机器人而言,10个舵机形成了体操机器人的10个不同运动关节,那么对于多舵机的控制就要产生多路独立的PWM信号[1-3]。利用AVR单片机内部定时器匹配中断和分时复用的方法,通过单片机普通的数字I/O口,实现了多路脉宽可调的PWM波形输出,且精度高[4]、成本低、性能稳定[5]。结合自由体操机器人的动作要求,设计了一款竞赛机器人控制系统电路,以及基于Visual Basic6.0的简易编程调试软件。

1竞赛机器人控制系统电路设计

AVR单片机控制系统普遍应用于中国机器人大赛的自由体操机器人的比赛项目中。要完成比赛项目,首先必须通过AVR单片机产生10路PWM周期信号,其次还要确保脉宽随时可控可调。针对方波的畸变,增加了光耦抗干扰电路设计,使得输出的PWM精准、可靠性高;结合现场比赛规则和AVR单片机的特点,设计使用RS-232接口实现下位机与上位机的通信。竞赛型机器人控制器的硬件均采用模块化和功能化的结构设计方法。控制系统框图如图1所示。

图1 控制系统框图Fig.1 Block diagram of the control system

2电路设计

2.1系统电路设计

自由体操竞赛机器人的控制器采用ATMEL公司的Atmega128单片机作为主控芯片。该款单片机基于RISC结构,具有8位低功耗CMOS微控制器,最大具有48个可编程的I/O口,非常适合控制多自由度的微小型机器人。该单片机中具有2个16位定时器、2个8位定时器、任选2个定时器,可满足舵机最大精度的转角控制。控制器采用外接最高16 MHz的石英晶振来产生系统时钟,使得系统定时更加精准。

2.2光耦抗干扰电路

通过单片机输出的PWM经过光电耦合器,提高了抗干扰能力。但输出的PWM波在传输的过程中被反相了,因此从光耦出来的信号必须由反相器HEF40106施密特进行反相。在施密特反相器中对光耦出来的反相PWM进行恢复、整形,并消除上升沿和下降沿的畸变,产生标准的PWM方波信号。

2.3串口通信电路

AVR单片机接收上位机发送数据,上传、下载应用层代码,以此来完成机器人的动作。内部配有独立的波特率发生率,能方便地与PC机实现串行通信。由于USART使用的是CMOS电平,须通过电平转化才能实现RS-232通信。该电路采用MAX232电平转换芯片。串行通信工作速率为19 200 bit/s,具体配置模式是1位起始位、8位数据位、1位停止位、无奇偶校验等。

2.4电源设计电路

自由体操机器人选用的舵机工作额定电压为7.4 V。在额定电压下,可发挥舵机的最大转速和扭矩。AVR128单片机供电额定电压为3.3 V,须对供电电源进行降压电路设计。本文采用三端稳压器1117。输入端C1、C3电容用来抵消输入、输出线较长的电感效应,防止电路产生自激振荡;C2用来滤除输入电压的高频纹波。

3竞赛机器人多舵机控制方法

对于多路舵机的同时运动,必须考虑对普通I/O数字端口的扩展,分时复用处理。首先利用了两个定时器/计数器:一个是周期定时器,选用8位定时器/计数器T0;另一个是脉宽计数器,选用16位定时器T1。其中T1定时器定时周期设为10 μs,因为舵机的每度转角对应脉宽为(2 500-500)/180=11.11 μs。可以确定的是,采用10 μs定时,可以确保舵机的精度在1°以内。

根据比赛现场的要求,实现了机器人的关节自由度速度配置,即在完成每个动作过程中就可以对每路舵机进行速度调节[6]。对AVR单片机进行了高级应用,对其程序区域固化,能适应自编程更新机制,即进行了自引导程序(bootloader)的实现和验证。另开发了一款基于VB的可视化调试平台,便于PC机与AVR单片机实现上传、下载、更新动作库等。

3.1舵机的组成及工作原理

模拟舵机由金属外壳、一个小型直流电机、一组减速金属齿轮组、一个旋转电位器和一块控制板组成。舵机的控制信号由PWM波决定。当PWM信号输入舵机内部的解调电路,将会获得一个直流偏置电压。舵机内部产生一个周期为20 ms,脉宽为1.5 ms的基准信号,将获得的直流偏置电压与电位器反馈的电压进行差运算,得到差值Ue。将此电压差Ue送入控制电路中,以驱动电机的正反转。通过级联齿轮组降低转速,获得较大的扭矩,且级联齿轮组末端连接电位器旋转,直到Ue等于0,舵机保持稳定状态,励磁停转。

模拟舵机有三根导线,分别是:电源正线、地线、信号线。电源正线、地线为舵机内部直流电机供能,其电压一般在4~7 V之间。方波的标准周期为20 ms。舵机的转动角度在0°~180°之间。脉宽的持续时间决定舵机的转动角度[7]。

3.2多路舵机分时复用控制方法

控制舵机从0°~180°转角的脉宽为0.5~2.5 ms。出于舵机之间的差异性和安全性的考虑,控制舵机实际的脉宽在0.7~2.3 ms之间。由于其工作的脉宽小于周期的1/8,因此可以利用软件定时和定时器硬件中断产生8路稳定的PWM。本方法实际相当于把20 ms的MCU时间作为一个控制周期,将2.5 ms作为每一个时间区间,这样就可以利用每一个时间区间来调整每一路PWM输出的脉宽,从而实现了多舵机不同位置在同一周期的控制。

3.3多路舵机分时复用软件设计

多路舵机分时控制软件实现过程如下: T0定时器用来产生2.5 ms的周期,并且在每个周期到来时,产生定时匹配中断,在中断程序中对应端口配置成高电平;T1定时器用来产生10 μs的定时周期,在每个周期到来时发生匹配中断,用count来计数10 μs的个数。在主程序中不断检测相对应硬件端口脉宽数组中对应的值是否与count相等。如果相等,则拉低该位电平,并完成该端口的脉宽控制,下一次的高电平将在8个2.5 ms之后出现,即完成周期为20 ms的PWM。分时复用软件流程图如图2所示。

图2 分时复用软件流程图Fig.2 Flowchart of the time division multiplexing program

3.4多舵机速度控制软件设计

对于多路舵机的速度控制,按照机器人动作编排顺序,数组a[i]代表每路舵机上一个动作的位置,b[i]代表每路舵机本次动作的位置,c[temp0]是找出舵机最大位置差,c[temp0]/vel的商作为速度控制中舵机所须分段执行的段数,c[i]/temp1为每路舵机最小步长,motion()子函数是调用舵机运动的相关指令。通过分解每个动作中,每路舵机须变化的位移,等分地执行最小步长,并加入延时函数,以此来完成对多路舵机的速度控制。

void setspeed(unsigned int vel)

{

Signed int i,k,m,temp0=0,temp1=0;

For(i=0;i<10;i++)

{

c[i]=b[i]-a[i];

If (fabs(c[temp0]) fabs(c[i]))

temp0=j;

}

temp1=fabs(c[temp0]/vel);

temp1++

for(j=0;j<10;j++)

{c[j]=(c[j]*32)/temp 1;

d[j]=a[j]*32;}

for(j=0;j<10;j++)

{

d[j]=d[j]+c[j];

a[j]=(d[j]/32);

}

motion();启动多路舵机动作

}

}

部分程序和流程图如图3所示。

图3 程序流程图Fig.3 Flowchart of the program

3.5多舵机可视化编程软件设计

综合自由体操机器人的比赛情况,分时复用的方法仅限于AVRstudio等编程环境,采用C语言编程,动作修改难度大、耗时较长。因此,设计了一款针对竞赛机器人的多舵机可视化编程软件。这款可编程软件是基于VisualBasic6.0环境下生成的可执行文件,可在WindowsXP、Win7下运行简易可编程软件,能方便地实现PC机与AVR通信、下载动作指令等。

3.5.1AVR自引导程序软件设计

AVR具备引导加载支持的用户程序自编程功能,它提供了一个真正的由MCU本身自动下载和更新(采用读/写同时“Read-While-Write”进行的方式)程序代码的系统程序自编程更新的机制[8]。利用AVR的这个功能,可以实现在应用编程(IAP)以及系统程序的远程自动更新。IAP的本质就是,MCU可以灵活地运行一个常驻Flash的引导加载程序,以实现对用户应用程序的在线自编程更新。如给出一个实际的BootLoader程序,可以使用RS-232的数据接口和相关的协议读取代码,或者从程序存储器中读取代码,然后将代码写入(编程)到Flash存储器中。

3.5.2VB可编程软件设计

VisualBasic6.0是一款可视化软件开发平台,利用VB提供的MSComm串行控件,可实现与AVR单片机的串口通信,参数初始化为“19 200,N,8,1”,即波特率为19 200,无奇偶校验,8位数据位,1位停止位。水平滚动条HScrollbar配置成舵机0°~180°的转角。Timer定时器提供了各个舵机运动的延时,整体控制时序。比如上位机代码Axis[i](j)指令调用到上位机解析代码,i解析成舵机号,j解析成具体的位置控制。

4结束语

自由体操机器人控制系统是由ATmega128单片机来实现的,其充分利用了单片机内部的定时器、USART等片内资源模块,将分时复用的方法引入到单片机控制中,实现了对多路舵机的变速控制。试验证明,该方法可行、稳定,实现了对机器人的精准控制。下一步是寻求精度更高的控制策略,引入舵机的新型

控制算法[9-10],实现舵机的最优控制等。

参考文献:

[1] 纪浩,吴友强,邹力涵.一种轮式移动机器人运动控制系统的实现[J],自动化仪表,2013,34(11):26-29.

[2] 候华,冯波,宋彬.自适应智能光电循迹系统的设计与实现[J],自动化仪表,2014, 35(3):77-81.

[3] 韩庆窑,洪草根,朱晓光,等.基于AVR单片机的多舵机控制系统设计及仿真[J].计算机测量与控制,2011:19(2):332-334.

[4] 蒋辰飞,刘子龙,胡少凯,等.基于AVR单片机的多舵机控制精度的研究[J].信息技术,2014(3):35-37.

[5] 付丽,刘卫国,尹强.单片机控制多路舵机用PWM波产生方法[J].微特电机,2006(2):28-33.

[6] 柯文德,彭志平,蔡则苏,等.防人机器人相似性运动轨迹跟踪控制研究[J].自动化学报,2014,40(11):2404-2413.

[7] 李霞,苏渊博.基于AVR单片机的电动舵机控制器设计[J].单片机与嵌入式系统应用,2013(5):63-69.

[8] 邵子扬.AVR单片机应用专题精讲[M].2版.北京:北京航空航天大学出版社,2013:76-92.

[9] 吴正兴,喻俊志,苏宗帅,等.仿生机器鱼S形起动的控制与实现[J].自动化学报,2013,39(11):1914-1922

[10]吴正兴,喻俊志,谭明.两类仿鲹科机器鱼倒游运动控制方法的对比研究[J].自动化学报,2013,39(12):2032-2042.

中图分类号:TH-3;TP242

文献标志码:A

DOI:10.16086/j.cnki.issn1000-0380.201607012

Research and Implementation of the Multiple Steering Engine Control Method for Competition Robot

Abstract:In view of the motion control of multi-steering engine in competition robots,the design and implementation of the control method with Atmega128 as the main control chip are studied for multi-steering engine.With the features of timer matching interrupt and time division multiplexing in single chip computer,the precise position control of multi-steering engine is realized,and the minimum step length of multi-steering engine is optimized in real time,which satisfies the speed control for multi-steering engine.The Bootloader for AVR is designed,and the visualized programming and debugging software is developed with help of Visual Basic 6.0 to meet the requirements of implementing functions of data communication between PC and AVR,download and update action library.The method has been applied in China Robocup.

Keywords:RobotMulti-steering engineSinglechipUpper computerPWMTime division multiplexingVB

修改稿收到日期:2015-12-29。

第一作者韩玉龙(1989—),男,现为南京师范大学控制理论与控制工程专业在读硕士研究生;主要从事机器人控制方向的研究。

猜你喜欢
舵机编程单片机
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
含齿隙弹载舵机的全局反步模糊自适应控制
基于单片机的多功能智能插排
基于单片机的便捷式LCF测量仪
基于dsPIC单片机的飞艇舵机控制实现