杨 进,刘丽华
(广州铁路职业技术学院,广州510430)
智能移动机器人集成了机械、电子、计算机、自动控制、人工智能等多学科的研究成果,在当前机器人研究领域具有突出地位[1]。其执行元件的伺服系统的性能将决定机器人的性能,伺服系统的开发也是机器人开发过程中难度最大的。目前,应用于移动机器人的执行元件有步进电机、有刷直流电机和无刷直流电机。步进电机多建立开环控制,对负载的变化不能做出响应,只适合于开发平地使用的机器人。直流电机具有更好的机械特性,与光电编码器配合使用建立伺服控制闭环能在一定的负载范围内实现自动调节电机电枢电压。
ATmega8L微处理器是一款高性能、低功耗的8位AVR微处理器,采用先进的 RISC结构[2]。ATmega8L具有:8K字节的系统内可编程Flash,擦写寿命达10000次;512字节的EEPROM,擦写寿命达100000次;1K字节的片内SRAM;两个具有独立预分频器的8位定时器/计数器,其中之一有比较功能;一个具有预分频器、比较功能和捕捉功能的16位定时器/计数器;6路10位逐次比较式ADC(PDIP封装);独立振荡器的实时计数器 RTC;三通道PWM;两个可编程的串行USART等[3]。
采用ATmega8L微处理器作为智能移动机器人的控制核心,采用光电编码器、光纤放大器、光电开关等传感器作为信息反馈器件,基于嵌入式分层控制方法,设计出移动机器人的控制系统。采用AVR-GCC编译软件[4]编程,实现该机器人能够在不被干预的情况下,自动找到运行的路径,并在行进的过程中自动避开障碍物,体现出一定的智能性。同时,通过遥控模块还可以实现人工遥控模式的运行方式。下面将详细介绍机器人控制系统的结构重点,并重点介绍机器人执行元件的伺服系统。
移动机器人的控制系统采用嵌入式分层控制[5]的系统结构:主、从控制器都是采用ATmega8L微处理器;主控制器接收控制指令,并采集光纤放大器和光电开关所反馈的环境信息,经过一系列的逻辑处理,得到对应的电机速度控制值;从机则接收主机所传给的速度目标值,并实时控制电机的转动速度;在两级控制间通过DMX512串行通信协议[6],实现数据准确稳定地传输。
如图1所示,左侧结构框图为信息管理层的结构。左侧光纤放大器和右侧光纤放大器分别反馈回一个模拟量信号,该信号将随所探测到的颜色变化而变化。ATmega8L微处理器通过内部10位模数转换器采集这两个信号,并转换成数字量。设定一个阀值,微处理器将分别对高于和低于该阀值的信号赋予一个逻辑量,用于区别轨迹区域和背景区域,从而识别出运行的轨迹。而光电开关将发射红外线,经障碍物反射,被传感器检测到,从而发生开关信号的变化,微处理器将根据逻辑阵列确定障碍物相对机器人的方向,并调用避障子程序躲避该障碍物。另外遥控模块将向主控制器传递遥控指令,主要包括速度的设置和运行模式的切换等。
右侧结构图为伺服控制层,存在一个速度控制闭环。伺服控制系统的执行元件为无刷直流旋转电机,系统的控制量是电机的转速。反馈元件采用旋转式光电编码器,反馈信号为光电编码器的脉冲信号(A、B两相)。以ATmega8L微处理器作为计算控制单元,并在程序中设定速度采样频率为2KHz左右。在每个采样周期内,微处理器计数编码器反馈的脉冲数。通过比较A、B两相脉冲状态的变化并计数脉冲数,得到实时的速度值,再与目标速度数据比较,经过离散PID调解器计算,求得对电机的控制字。该控制字将修改单片机输出的PWM信号的占空比值,并通过OC1A和OC1B引脚输出两路PWM信号。经过对应的两路H桥驱动电路[7]放大后,改变了两路电机的电枢电压有效值,从而实现速度的闭环控制。
图1 机器人控制系统的结构
图2为伺服系统的控制电路。其中,系统供电为12伏直流电源,12伏电压是作为电机的驱动电压。12伏电压通过三端稳压块LM7805[8]可以获得稳定的5伏电压,为ATmega8L微处理器和伺服电机的光电编码器提供额定的工作电压。
ATmega8L微处理器使用8M赫兹晶振作为时钟源,采用上电复位方式。ATmega8L微处理器作为控制核心,通过INT0和PD4引脚接收左侧伺服电机的反馈信号,通过INT1和PD5接收右侧电机的反馈信号;并通过 OC1A和OC1B引脚输出两路PWM信号,通过PC0和PC1输出电机的方向控制信号。并且,微处理器通过RXD、TXD引脚和主控制层的控制器实现串行通信,接收主控制层发送的电机速度目标值,并向主控制层返回电机的运行实时情况。在电路中,每路信号都外接上拉电阻。另外,并设计有ISP接口,可以使用通用的AVR ISP编程器很方便地下载程序。
机器人采用直流电机驱动,并通过相对式旋转光电编码器反馈位置信号。光电编码器采用的是HEDS-5540型号,为500线,输出A、B、Z三相TTL信号,其中A、B两相信号相差1/4周期,如图3所示。左侧光电编码器的A相信号与INT0(INT1)相连,B相信号则与PD4(PD5)连接,右侧光电编码器的A相信号与INT1相连,B相信号则与PD5连接。微控制器通过A相信号上升沿触发外部中断,其外部中断初始化程序为:
MCUCR=0x0f;
GICR=0xc0;
图2 伺服系统的控制电路
图3 编码器TTL信号
外部中断子程序则对反馈的A、B信号进行计数,获得速度值,其流程图如4所示。
图4 定时器0比较中断子程序流程图
速度的采样时间为0.5ms,由八位计时/计数器2的溢出中断设定。每次执行溢出中断子程序,都初始化速度值为0。
微控制器通过串行通信,接收到信息管理层传送的电机速度目标值(V_object)。电机当前速度值(V_current)与目标值的偏差(Δei)作为变量,经过PI调节器的运算,得到电机电枢电压[9]的有效值ui,该值将直接改变输出PWM信号的占空比。
其中,KP为比例增益,KI为积分增益。
本文使用 Ziegler-Nichols方法整定 KP、KI的取值。该方法整定比例增益KP的思想是,首先置KI=0,然后增加KP直至系统开始震荡,并记录系统震荡频率ωm,将所得KP值乘以0.6,即为整定后的比例增益KP。KI的整定公式为:
由于电机最大转速的限制和积分项的存在,在伺服控制中,将出现“饱和”现象[10],控制量被限制在一个有限的范围内,即umin≤u≤umax。积分饱和将导致超调量和系统的调节时间增加。本文中,采用了积分分离法来解决。
积分分离法的基本思路是,当偏差大于某个规定的门限值时,取消积分作用,从而使积分不至于过大。只有当Δei较小时,才引入积分作用,以消除静态误差。其算法公式(1)变换为:
式中,称KL为逻辑系数
按电路图完成系统控制电路的制作。如图5所示,机器人通过车载蓄电池供电,由两块控制电路板控制,一块为按图2所设计的信息控制电路,另一块为伺服控制电路。使用WinAVR软件按流程图编写好程序后,通过ISP下载线将机器码分别下载到两个ATmega8L微处理器中。在图5中,a图为机器人自动沿黄色描绘的迹线运动,b图为机器人自动沿着墙体运行。
基于AVR微控制器开发出一台智能移动机器人,实验结果显示机器人能够可靠地自动避开障碍物并找到自己运行的目标。通过伺服驱动,机器人能平稳较快速地前行,还具有清晰的控制系统结构,而且开发的成本低廉,所以该机器人的技术尤其适用于开发自动化教学设备。同时,该机器人技术还可以广泛应用于其他自动设备的开发。
[1]徐国华,谭民.移动机器人的发展现状及其趋势[J].机器人技术与应用,2001(3):7-14.
[2]徐玉,韩波,李平.基于AVR的舵机控制其设计[J].工业控制计算机,2004(11):38-40.
[3]ATmega8芯片数据官方手册[DB/OL].http://www.atmel.com/.
[4]马潮,詹卫前,耿德根.ATmega8原理及应用手册[M].北京:清华大学出版社,2003.
[5]韩大鹏,韦庆.机器人控制器的一种模块化设计方法[J].微计算机信息,2005(5):3 -4.
[6]赵文峰.控制系统设计与仿真[M].西安:西安电子科技大学出版社,2002.
[7]何希才,姜余祥.电动机控制电路应用实例[M].北京:中国电力出版社,2005.
[8]阎石.数字电子技术基础[M].北京:高等教育出版社,1998.
[9]从爽,李泽湘.实用运动控制技术[M].北京:电子工业出版社,2006.
[10]杨树兴,李擎,苏中,等.计算机控制系统[M].北京:机械工业出版社,2006.