基于单片机的多路舵机平稳驱动方法的设计和实现
柴稳,徐娅萍,黄伟峰,支立纯
(西北工业大学,陕西西安710072)
摘要:实验标定驱动信号的脉冲宽度与舵机角位移之间的对应关系并引入舵机行程响应时间:将舵机大角度行程分成若干中间小行程接力调节。综合响应时间效应利用单片机高频的硬件中断和全局的中断计数进行数据比较来实现各个分步阶段的时问匹配,输出通道硬件使用相应的数据更新产牛各个阶段的PwM信号。该方法直观简便,能够成功实现13路舵机的乎稳驱动.
关键词:PwM;响应时间;脉宽;舵机;单片机
中图分类号:TM383.4 文献标识码:A 文章编号:1004—7018(2IlIl8)12—0043—03
0引 言
微型直流角位移伺服电动机,又称舵机,在航模及机器人相关领域有着广泛应用。舵机分为数字舵机和模拟舵机。常用的模拟舵机是由直流电动机、电压比较器及减速齿轮机构组成,控制则采用基于位置伺服的PwM(脉宽调制)信号进行驱动。电机输出轴的位置与PwM信号的脉宽有确定关系。常见的舵机驱动系统是给出点位控制的PwM信号,在行程较大时舵机在运动过程中不免产生震动、抖动以及较大的电源于扰。本文离散标定舵机轴位和驱动信号的脉宽的关系,测定舵机响应时间的数据指标,并据此设计一种可以实现并行多路舵机较平稳驱动的软件算法,最后利用AVR单片机设计出舵机平稳驱动系统。
1舵机简介
舵机的内部结构包括直流电动机、齿轮减速机构、电位比较器以及控制电路等,直流电动机高速输出后经减速机构以低速大扭矩的形式输出。文中使用的Futuba舵机采用50 Hz的TTL电平PwM信号驱动。0.5~2.5 ms的脉宽对应舵机O~180。的轴位输出。舵机控制原理如图l所示。图l中信号调理电路产牛周期20 ms、脉宽1.5 ms的基准信号,将
输入信号与基准信号比较得到直流偏置电压,该电压与电位器反馈电压相比较,得到纠正电压驱动电机转动.电机转动引起旋转电位器输出变化,直至纠正电压为零电机停止转动。模拟舵机不具有位置保持功能,失去PwM信号和电源信号中的任意一个都会造成位置不确定性。产生舵机所需要的PwM信号有多种方式[3-5]。用单片机来产生多路舵机控制信号,成本低、通用性好,是目前用得较多的方式,只要设计合理紧凑,就能够实现多路舵机精确可靠且稳定的控制。
本文结合AVR 8位单片机ATmega8的特点设计出一种的多路舵机平稳驱动控制方案。
2舵机输入输出的离散标定及响应时间概念
2.1舵机输入输出的离散标定
Futuba舵机资料中的点位关系如
由于模拟舵机的制作精度较低,各元器件的参
数不准,因此大部分的模拟舵机输出轴位和驱动信号的脉宽并不成严格的线性关系,因此在设计舵机的驱动系统之前对舵机轴位和驱动信号的脉宽值作出标定。当脉宽在O.5~2.5 ms范围之外时舵机不是正常的工作状态,因为舵的减速齿轮的最后一级是半圆齿轮,将行程限定在180。范围内。
标定实验中单片机的定时精度采取O.1 ms的分辨率,O.5~2 5 ms计21个标定点,每个标定点都确保相应PwM信号的作用时间至舵机稳定静止。将得到的数据进
行整理,如图2所示。
2.2舵桫响应时间
设舵机从某一初始轴位P。(角度)在期望轴位P1(角度)对应的PwM信号的作用下运动到P1位置,完成该行程s=1|P1一P0|所需的时间,为该行程的响应时问。可测定无论行程5如何,将期望轴位对应PwM信号持续2 s(100个周期),舵机确定达到期望轴位。测试舵机在空载和标称负载两种情况下按表1的点位运动,各个阶段的响应时间,如图2所示.
考虑PwM信号的完整性,测试方法如下:程序控制单片机先从I/O输出初始轴位PwM信号100个周期,后输出期望轴位PwM信号N个周期。通过修改程序中个数N由大到小,得到能达期望轴位的,N的最小值。程序改变PwM信号脉宽的指令占用微秒级时间可忽略不计。
响应时间的决定因素是运动的行程,行程相同的运动响应时间相同。但是响应时间不具有按行程的线性叠加性,如行程S1和s2同方向且S1的终止轴位为s2的起始轴位,s0行程由s1起始轴位至s2终止轴位。s0的响应时间小于s1与s2的响应时间的和。当行程s≤6。时,依据PwM信号的完整性,可测定响应时间为一个信号周期20 ms。
3多路PwM信号的产生和舵机平稳驱动
3.1多路PwM信号产生的方案
利用单片机本身的白带的定时器资源,可以实现4路左右的信号,在严格控制程序的执行时间可以增至6~8路[5]。但所产生的PwM信号精度和分辨率不高。使用快速中断结合软件计数的方法可以产生16路并行信号[2]。使用周期为微秒级的定时器中断,为每路PwM信号分配一软件计数器决该路PwM信号的脉宽,初始全部通道的PwM输出引脚均嚣高电平,每次中断后所有计数器均减1,后与O比较,某一个软件计数器为O时则将相应的PwM输出口拉低。当计时满20 ms时,可选择更改软件计数器的数值来更改各路脉宽产生新的一组波形。
3.2舵机平稳驱动的实现
3.2.l舵机平稳驱动的原理
考虑一个实例:设某一路舵机需从(初始轴位P0)45。运动到(期望轴位P1)90。的位置,行程s为45。。可以采取如下两种方法。
(1)将45。位置的驱动信号直接变化为90。位置的驱动信号,该行程s的响应时间为TR则只要满足T1≥TR(T1为90。位置信号作用时间)条件即可。
(2)行程细分为中间几个位置分别给出中间位置的驱动信号。
方法(a):实际运动时间TR,平均角速度ω=S/TR。运动状况不可调整:
方法(b):将行程s均分成Ⅳ个中间位置,从45。位置到第一位置及以后各个位置之间的所需响应时间分别为:
对于此S=45。的行程,当N≥6时,Tm0=Tml=Tm2=…=TmN=20 ms。有Tsum>TR。
方法(b)较方法(a)有两点不同:
(1)平均角速度降低,实现一种非严格意义的调速。  (2)运动可控性加大,运动过程的可控特征位置较多,运动平稳性提高。
在本文的一个应用一间歇运动并行双驱动五杆机构双摇杆的驱动过程中,每5。一个特征点的分段能有效防止整个过程中的运动干涉冲击现象。
3.2.2多路舵机平稳驱动的实现
ATrTlega8单片机是Atmel公司的高速、低功耗基于RIsc指令结构的8 bit单片机产品。工作于16MHz系统时钟时,速度可达16 MIPs。该单片机包含一个8位和一个16位定时器。定时器的时钟来源可以是系统时钟或其分频信号以及外部时钟源[1]。使用lO MHz的系统时钟时10μs可以执行100条指令,除去4~8条的中断出入栈消耗,有90条指令执行时间可用于中断服务和后续程序。产生脉宽分辨率在O.05 ms左右的PwM信号是可行的。因此限于单片机的工作速度,结合图2对舵机轴位置可以进行5。左右的分度是综合响应时间和PwM精度的较优选择。
在产生PwM信号前将所有PwM通道从初始位置到目标位置进行5。的分度,以****分度数为准,确定整个过程所需要产生PwM信号的阶段数。对于阶段数小于该****分段数的通道,依然是按5。分度达最终位置后继续发最终位置的PwM驱动信号直至所有通道的PwM信号过程完成,原理如图3所示。图3中所列的是并行4路PwM通道****行
程为25。的驱动信号,其中第3路舵机位置没有变化,初始位置即是目标位置,因此该通道的PwM信号是不变的。对于13路PwM信号的原理是相同的;限于篇幅这里使用4路的原理图来表示。
并行13路舵机平稳驱动PwM信号的数据准备工作,设所有舵机当前状态L,运动到状态L2。L1是当前13路舵机的轴位信息,L2是完成某一期望运动过程后的13路舵机轴位信息。
(1)由L1~L2的运动过程得到13路舵机的行程:s1,s2,s3,...s13进而得到****分段数:n=MAx(sm/5。),1≤m≤13,m,n为正整数。
(2)依据图2的对应关系得到13通道各个中间位置所对应PwM信号的脉宽值(时间数据):Pulswidth[1]r 13],Pulswldthf 2][13],….Puls—width[n][13]。二维数组Pulswidth[step][13]中每一行的数据都从小到大存储,按脉宽由小到大排列。
(3)由各中间位置各通道PwM信号脉宽值和所使用定时中断的周期c。,得到各阶段各个通道的脉宽决定的中断click数:
click[z][J]=Pulswidth[i][j]/cy得到click[1][13],click[2][13],...,click[n][13],...,Click数组中Click[step][13]的数据也相应从小到大排列.每个位置的Click数组的值都对应着输出引脚的电平变化的数值依据:PWM[1] [13],PwM[2][13],…,PwM[n][13]。每当中断计数器达到相应得click数组中的值,用PwM数组中同下标位置的值对硬件输出引脚进行输出更新。完成依脉宽由小到大的通道的输出电平依次被拉低。
数据准备要获得S13、Pulswldth[n][13]、cl,ck[n][13]及PwM[n][13],现就他们之间关系作简单叙述。由L1~L2的目标运动得到13路舵机的行程s1,s2,s3,…,s13,5。分度后得到****阶段数(中间位置数)n。由图2得到各中间位置的13路PwM信号的脉宽值(时间量纲)PulswIdlh[n][13],结合所采用的快中断周期得到与脉宽相应的中断数(无量纲)click[n][13]。PwM[n][13]则是13位I/O口电平状态的组合,是产生所有位置每一路PwM的I/0口更新依据。
程序流程图如图4所示。程序以8位并行L/O
口PORTB以及PORTD低五位为PwM输出通道,在每一个新的位置PwM产生最初所用通道全部置高。采用lOμs的定时中断为时间基准,使用全局变量intr_click进行中断计数。在中断服务函数in—terrpt[TIMO—OVF]void timerl—0vf(void)中intr—click自加,并判断是否等于2 000(20 ms/lOμs),如果成立,则这一阶段的PwM信号已经完成,列所有通道引脚置高进行下一阶段的PwM发生过程(step++);前台程序则是比较过程函数:void PwM_imi—ta(void)。函数中如果intr—click大于250(2.5 ms/lOμs),则当前计时达2.5 ms,说明所有的通道正脉宽时间均已结束,不用比较。否则将intr—c1ick与click[N](N为当前PwM阶段)中的所有元素比较,得到相等的,如click[N][j]=intr—click,则将当前输出通道状态更新为PwM[N][J],也即将某一个(或同时几个)输出引脚电平拉低。
对于要求舵机有多个特征位置点的应用,因驱动所需数据较多可以考虑扩展片外的数据存储器件,在程序运行时访问片外设备所需周期较长,应注意时间条件的满足。
4结语
本舵机驱动系统可以实现13路舵机的平滑稳定驱动控制,舵机在运动过程中平稳,动作更加连贯,抖动特征减轻。而且驱动系统是基于数据的,因此在已知舵机的各个特征位置后可快速得到舵机平稳驱动的数据依据,从而使舵机驱动简便易行,通用性较强。
|