江武志,许娜芬,孙菁
(1.中山职业技术学院,广东中山528404;2.中山市中等专业学校,广东中山 528458)
目前许多高等教育院校采用教育机器人进行课堂教学和培养学生的创新能力。本文设计的教育机器人通过红外光电传感器阵列检测路面信息并利用模糊自整定PID算法将采集的路面信息和电机运行数据进行实时处理,实现教育机器人的智能巡航并将机器人的状态显示输出。
机器人由硬件和软件两部分组成。采用STC12C5A60S2单片机作为系统控制的核心部件,完成路面信息检测、直流电机控制、电机转速检测、数码管显示、蜂鸣器报警以及键盘输入等功能,硬件系统框图如图1所示。
图1 机器人的硬件系统框图、PID
软件部分主要完成路况检测 电机控制、输入输出人机接口,可实现各种机器人巡航动作、智能循迹等功能。
本文采用的STC12C5A60S2单片机是是宏晶科技生产的STC12系列单片机。该单片机是单时钟/机器周期(1T),具有高速、低功耗、超强抗干扰和无法解密诸多优点。指令代码完全兼容传统8051,速度快8-12倍。工作电压为3.3 V~5.5 V(5V单片机),有6个16位定时器,兼容普通8051的定时器或4个外部中断,具有看门狗和EEPROM功能,并且内部集成MAX810专用复位电路[1]。
由于电机在启动瞬间电流很大,要求电源有足够大的驱动能力,因此系统采用双电源供电方式。利用LM7805将12 V锂电池组电压转换为5 V稳压电源给单片机最小系统电路、路面检测电路、数码管显示电路和电机测速电路供电。而电机驱动电路直接由另外一组锂电池输出的12 V电压直接供电。
本系统使用的直流电机额定电压为12 V,额定转速为300 rpm。电机驱动电路采用专用芯片L298N作为电机驱动芯片。用该芯片作为电机驱动,不仅稳定性好,大大地简化驱电路,而且驱动能力大,有利于电机转速的稳定。电机驱动电路如图2所示。
图2 电机驱动电路
红外光电检测电路工作原理是:红外线射到路面并反射,利用红外线在黑线和白线对光的反射系数不同的特点—白色反光线,黑色吸收光线,电路设计一个发射红外光和一个红外光敏二极管,当检测到黑线时,检测电路向单片机发出一个高电平信号。当检测到白色时,检测电路向单片机发出一个低电平信号。
由7组红外光电检测电路排成一排构成一个红外光电传感器阵列模块,安置在机器人的车头位置。在对黑线循迹的过程中,红外光电传感器阵列模块可以求得机器人对黑线轨迹位移偏移量。单片机检测到红外光电传感器阵列模块的信号与机器人的位移偏移量如表1所示。
表1 传感器阵列模块的信号与机器人的位移偏移量
当机器人行驶的状态不一样时,7组传感器输出的值也对应不同,从表中可以得到机器人在巡航过程中机器人所处位置与黑色轨迹的偏移量。
教育机器人系统通过车速检测模块来读取当前车速。采用的方法是在后左右轮上分别粘贴一个均匀分布有黑白条纹的编码盘(见图3(a)),利用图3(b)的检测电路来对编码盘上的黑白条纹进行检测。当车轮转动时,红外接收管接收到的反射光强弱高低变化就会产生与车轮转速相对应的脉冲信号,将该脉冲信号进行放大整形后输入单片机的引脚P3.4和P3.5,记录单位时间内所得到的脉冲数,就能够表示出当前车左右轮子的速度,同时通过累加可以计算出小车所行走的路程[2]。
图3 车速检测模块电路原理
数码管显示电路主要是显示当前机器人的行走速度。采用LED数码管动态显示,段码用PNP三极管驱动。系统显示的距离范围在10米之内,选用4位LED共阳数码管,通过单片机编程实现动态扫描显示。显示字符由单片机P0口送出,P1.6、P1.7、P3.0和P3.1分别控制每一位数码管的动态显示。
报警电路通过单片机P3.7控制蜂鸣器来完成。P3.7输出低电平时,蜂鸣器报警;P3.7输出高电平,蜂鸣器不报警。
单片机的外部中断输入口P3.2和P3.3与地之间分别接入轻触按钮作为系统的启动和停止开关,作为按键输入电路。
系统控制的实现是由软件完成的。软件设计基于keilC51编写的,采用模块化结构设计,各个功能子块独立。在结构上由1个主程序文件 main.c和8个子程序文件(key.c、pid.c、detect.c、seg.c、speed.c 和 motor.c)组成。main.c主程序文件完成一系列任务的初始化工作和处理各个任务工作的协调。key.c文件完成按键中断检测和蜂鸣器报警任务;seg.c文件完成数码管显示;speed.c文件完成电机速度检测;motor.c完成PWM的配置和电机的控制;detect.c文件完成红外光电传感器阵列检测;pid.c文件实现模糊参数自整定PID运算处理。其中定时器T0产生采样周期T秒定时中断,每间隔T秒中断一次,完成一次PID控制计算,同时调用模糊参数自整定PID运算子程序对测试转速和设定转速进行差值计算得到输出值,用于配置PWM的输出,控制电机转速。主程序和定时器T0中断处理流程图如图4所示。
图4 主程序和定时器T0中断处理流程图
PID参数模糊自整定是找出PID中3个参数与e和ec之间的模糊关系,在运行中通过不断检测e和ec,根据模糊控制原理来对3个参数进行在线修改,以满足不同e和ec对控制参数的不同要求,而使被控对象有良好的动稳态性能[3]。从系统的稳定性、响应速度、超调量和稳态精度等方面来考虑,Kp,Ki,Kd的作用如下:Kp的作用是加快系统的响应速度,提高系统的调节精度;Ki用于消除系统的稳态误差;Kd改善系统的动态性能[4]。图5是PID控制器设计结构原理图。
图5 PID控制器设计结构图
由PID各个参数对系统的影响得到:
(1)当误差|e|较大时,说明误差的绝对值较大,不论误差的变化趋势如何,都应该考虑控制器的Kp取较大值,以提高响应的快速性;而为防止因为|ec|瞬时过大,kd应该取较小的值;为控制超调,ki也应该取值很小。
(2)当误差|e|在中等大小时,为保证系统的相应速度并控制超调,应减小Kp,Ki值应增大,Kd应适中。
(3)当误差|e|较小时,为保证系统具有良好的稳态特性,应加大Kp、Ki的取值,同时为避免产生振荡,Kd的取值应该和|ec|联系起来。
教育机器人属于典型的非线性、时变、模型不确定复杂系统。在实际中,机器人行驶道路有直道、大弯道、“S”型小弯道。利用教育机器人在相同的路况下其特性基本不变,可分别确定这3种道路参数下的最佳PID参数。其核心思想是把控制周期内的机器人状态视为不变,只要控制周期较短,就可实现很好的控制效果[5]。在机器人实际的行使中,每10 ms进行1次控制,可满足要求。
模糊PID控制根据系统运行的不同状态,考虑Kp、Ki、Kd三者的关联,根据工程经验并依据各参数的作用,通过大量的测试获得本系统对应路况下的PID参数,实验数据如下:
(1)在直道上系统取kp=3,ki=5,kd=0,测试环境为一条长度5 m的长直道;
(2)在大弯道上系统取kp=10,ki=1,kd=1,测试环境为直道进入一个半径为100 cm的3/4圆;
(3) 在“S”型小弯道上系统取kp=7,ki=4,kd=3,测试环境为3个90度圆弧构成的“S”型小弯道。
用STC12C5A60S2单片机配合红外光电阵列检测模块对直流电机执行参数自整定模糊PID控制器,解决了直流电机在巡航过程中产生抖动前进的控制问题,使得教育机器人在行走的过程中更平稳,且控制方法简单、实用。
[1]宏晶科技有限公司.STC12C5A60S2系列单片机器件手册[EB/OL].[2011].http://www.mcu-memory.com/datasheet/stc/STC-AD-PDF/STC12C5A60S2.pdf.
[2]韩毅,杨天.基于红外传感器的智能寻迹赛车的设计与实现[J].计算机工程与设计,2009,11:2687-2690.
[3]于军.基于STC12C5A60S2的马弗炉温度控制器设计[J].今日电子,2010,6:56-58.
[4]刘金琨.先进PID控制MATLAB仿真[M].北京:电子工业出版社,2005.
[5]刘进.基于视觉的智能车模糊PID控制算法[J].兵工自动化,2008,27(10):67-69.