后方格智能化观察网
首页 > 资讯 > 多舵机控制在仿人机器人上的应用

多舵机控制在仿人机器人上的应用

导语:舵机是机器人的重要部件。采用一种新颖的利用单片机产生多路控制舵机用PWM的方法,利用单片机内部定时器,分时复用技术,在不增加任何硬件电路的前提下,用单片机实现多达24路PWM输出。

北京科技大学信息工程学院 梁锋王志良解仑徐文学

舵机是机器人的重要部件。采用一种新颖的利用单片机产生多路控制舵机用PWM的方法,利用单片机内部定时器,分时复用技术,在不增加任何硬件电路的前提下,用单片机实现多达24路PWM输出。该方法取代了传统的使用分立元件产生PWM波的方法,大大减少了分立元器件数目及电路连线,改善了系统可靠性,提高了控制精度,并成功用在17自由度仿人机器人的控制系统中。

1 前言

小型仿人机器人由于控制结构简单,扩展性好,在仿人机器人研究和其他领域正在得到广泛的重视和应用。舵机是小型仿人机器人常用的输出执行机构。它接收一定的控制信号,输出相应的角度。

2 舵机的构造和控制方法

从图1可以看出,舵机主要是由外壳、一个小型直流电机、一组减速齿轮、一个用于检测转角位置的检测电位器和一块控制电路板组成。其中,高速转动的直流电动机提供了原始动力,经过减速齿轮组减速后,通过输出轴对外提供转距,齿轮组的减速比越大,舵机的输出力矩也越大。 标准的舵机有3条导线,分别是:电源线、地线、控制线,如图2所示。电源线和地线用于提供舵机内部的直流电机和控制线路所需的能源,电压通常介于4~7.2 V,控制线的输入是一个宽度可调的周期性方波脉冲信号。当方波的脉冲宽度改变时,舵机的角度发生改变,角度变化与脉冲宽度的变化成正比。机器人用的舵机型号是GM995,其输出轴转角与输入信号的脉冲宽度之间的关系可用图3来表示。

舵机标称方波脉冲信号的周期为20ms,事实上舵机角度控制对信号的周期要求很宽松18~20ms均可,实验中发现,在周期为40ms时舵机仍然能够稳定工作。

图1 舵机的内部结构
图2 舵机接口
图3 GM995舵机输出转角与输入信号脉冲宽度的关系
图4 舵机控制原理

3 舵机的设计

舵机的控制信号实质是一个脉冲宽度调制信号(PWM)。可由FPGA、模拟电路或单片机来产生。采用FPGA或CPLD产生PWM波已经在很多重要的场合得到应用,依靠FPGA或CPLD特有的并行处理能力和大量的I/O接口,可以同时控制几十甚至上百个舵机同时工作,这种方法可靠、控制精度高,但是FPGA/CPLD用于产生PWM波时,并不具备事务处理能力,实际中还需要MCU协同工作,所以成本较高,适合于重要场合。用模拟电路实现较复杂,不适合多路输出,同时产生的脉冲频率和宽度往往不是很准确,很难做到对舵机的精确控制。由于单片机具有性能稳定、编程灵活、精度较高、价格低廉等特点,一般采用单片机作为舵机。

最直接的方法就是用单片机本身所带的PWM口产生波形,但该方法受到MCU内部资源的限制,仅能实现2~6路PWM的输出,不适合需要空控制多路舵机的场合。文献《机器人的创意设计与实践》给出一种利用555振荡器产生的脉冲信号进行计数来产生PWM信号的方法。文献《基于AT89C2051的多路舵机设计》给出一种利用定时器中断来产生PWM波信号的方法。文献《用单片机产程7路舵机控制PWM波的方法》分时复用的思想,用单片机产生了7路舵机控制PWM信号,其控制脉冲的周期为14590,控制脉宽为1200~1800,将一个周期均匀划分为7份,在每一个时段控制其中一路输出。缺点占用MCU的许多计算时间,优点是换了控制的高精度。

3.1 舵机硬件电路设计

本文综合以上方案,采用分时复用技术,将一个PWM信号周期(20ms)分成8个时段,每一个时段并行产生3路PWM信号,则一共可以产生24路PWM信号,并且在以PIC16F877A单片机为核心,晶振频率为20M的条件下,所产生的PWM信号控制舵机的最大误差<1°。

图4为舵机的原理图。该系统是一个典型的集中式控制方式,单片机作为控制的核心部分,完成与上位机通讯,实现对机器人的智能控制;通过IIC总线与EEPROM(24C512)进行数据存取操作实现读写仿人机器人的行为数据;产生24路PWM信号控制舵机;检测机器人的电池电压以及通过LED显示机器人的工作状态。

需要注意的是,舵机在工作的时候会吸入较大电流,多路舵机同时工作时对电源电压造成的波动很大,而舵机的信号电平最好是不要抖动的,因此图4中采用稳压电路对电源Vs进行稳压,否则,实验中发现个别舵机偶尔会产生振荡。

3.2 实现多路PWM信号及舵机调速原理

本文以MICROCHIP公司生产的增强型RISC内载Flash的高性能8位单片机PIC16F877A为主控芯片,晶振频率取值20MHz,则单片机每条指令执行时间为200ns。从图3可以看出,舵机角度变化一度时,脉宽改变为2000/180°=11.1/°,单片机能执行11.1/0.2/条≈55条指令,但是用C语言很难实现在55条指令内一次比较判断完24路舵机的PWM信号。

多路PWM信号产生的机理如图5所示。为了产生精确的时间信号,占用了一个16位硬件计数器,计数基准设为200ns,同时用24个16位匹配寄存器保存每一路PWM信号的计数匹配值,该匹配值正比于舵机的期望角度。24路PWM信号分为8组,每组3路进行分时控制。程序开始时,将第一组PWM信号相应的引脚全置高电平,并且将计数器清零。然后不断查询计数器的值是否与大于或等于匹配寄存器的值,若是的话,将该路PWM信号的引脚置为低电平。每一组PWM信号占用的时隙均为2.5ms(不足2.5ms的延时到2.5ms),这样保证每一路PWM信号的周期。

这种分时控制的方法的最大有点是保证每一路PWM信号的时间误差最小,且不会产生波形的抖动,对于处理速度不是很快的单片机,如MSC-51系列和PIC的中档系列单片机也能产生精确的多路PWM波形;缺点是占用CPU的资源较多,需要一定编程技巧对系统的其他任务进行处理,使得能够在0.5ms~1ms内完成。而事实上,对于PIC16F877A单片机在20M的系统时钟下,1ms内能执行5000条单周期指令,足以处理很多系统的事务,而且上文已经证实PWM的周期可以大于20ms。

图5 多路PWM信号产生机理
图6 程序流程图
图7 舵机速度控制示意图

4 软件设计

图6给出了多路PWM信号的发生流程图。PA、PB、PC、PD、PE的24个端口均为PWM输出端口,16位定时器1用来和每组的3路PWM信号匹配寄存器进行比较,基准为200nS。

设PIC16F877A的系统时钟频率为f,计数器对系统时钟的分频比为PS,PWM信号的高电平最长时间为Th,对应的最大角度为Amax,则可以的出比例系数:

则对于角度Ad,对应的比较寄存器的数值为:

舵机是一个位置伺服系统,可以对转角进行精确控制,事实上还可以用通过软件生成速度的梯形图,对舵机转动的角速度进行控制。该仿人机器人的行为数据由一组组的“关键帧”数据组成,要求控制各个关节的舵机必须在同一时刻到达行为数据设定的角度,所以对舵机的速度控制提出了比较高的要求。

由于比较寄存器的数值T正比于PWM波的高电平时间,即脉宽。舵机的角度从0度变化到180度,则T的值也应由小变大,因此改变T变化的步进量,则可以改变舵机转动的速度。

假设舵机的目标角度从Ad变化到Ad’,则对应的比较寄存器的数值也从T变化到T’, 程序以PWM的周期,即20ms为一个控制周期,并且以步进量Inc递增或递减比较寄存器的数值,从而控制PWM波的脉宽,因此改变步进量Inc的大小,就改变了舵机转动速度的快慢。即

(3)式中,Inc为步进量,取值从1到255,即舵机的速度有1到255个等级。步进量越大, 需要的控制周期N越小,则在更少的时间内舵机转到期望的角度。

5 结束语

本文成功实现了24路舵机用PWM波的产生,不仅控制精度高,而且实现了对舵机速度的控制。该应用在17自由度小型人形机器人上,达到较好的控制效果,并且具有很好的通用性。

标签:

上一篇 目录 下一章

猜你喜欢

智能化资讯 如何在智能交通...
在全球范围内,随着科技的飞速发展和人口城市化进程的加快,对于高效、安全、高质量的出行需求日益增长。智能交通系统作为解决这些问题的一种关键技术,其展览会不仅...
智能化资讯 北京测试空间测...
在北京这个繁华的城市中,有一家专注于测试空间技术的公司,那就是北京测试空间测评技术有限公司。这里不仅仅是普通的测试环境,它是一个集成了最新科技和专业人员的...
智能化资讯 凡猫软件测试培...
在软件行业中,测试工作就像一只守护者,它们确保每一次代码提交都是安全可靠的。然而,成为一名优秀的软件测试工程师并不容易。要想掌握这一技能,你需要接受专业的...
智能化资讯 企业人才测评系...
为什么需要人才测评? 在现代竞争激烈的商业环境中,一个公司的成功很大程度上取决于其员工队伍的质量。企业人才测评不仅能够帮助管理层了解每个员工的工作表现和职...

强力推荐