基于PID控制的智能寻迹小车*
2018-06-03黄志敏张玉龙蔺绍江
黄志敏 ,张玉龙 ,蔺绍江 ※
(1.武汉纺织大学机械工程与自动化学院,湖北武汉 430200;2.湖北理工学院 机电工程学院,湖北黄石 435003)
0 引言
智能小车一直是飞思卡尔全国大学生智能车竞赛的比赛项目[1]。本文以AT89C52单片机作为控制器核心,设计了一辆能在封闭跑道及连续弯道上行驶的小车。小车行驶主要通过直流电机驱动轮子转动,通过改变PWM(由单片机产生)的占空比可以控制直流电机转子的转速,从而实现对智能小车的直线加速和弯道减速的控制。小车的转向则通过前轮的伺服电机驱动,为了实现小车速度的精确控制,在小车的后轴上方位置处安装有光电编码器,通过获取车轮转速并反馈给单片机处理,从而实现小车速度的闭环控制[2]。小车的避障和轨迹距离检测采用红外传感器和触须传感器两种方案相结合,并通过LCD液晶屏进行距离的实时监控和显示,提高了小车的避障性能和穿越不同轨迹跑道的能力。
1 系统总体结构框图
该系统以AT89C52单片机为控制核心,采用红外传感器和触须传感器两种传感器相结合来检测道路信息,直流电机用来驱动小车进行加减速控制,伺服电机用来对小车遇到障碍物以后和经过弯道路线时进行左右转向控制,光电编码器用来实时测量车轮的转速并将其转换为脉冲个数反馈给单片机进行处理,通过对小车速度的实时检测构成速度的闭环控制系统,LCD用来对障碍物距离和道路信息进行动态显示;软件代码编写和调试采用Keil工具,PC与AT89C52通信采用串口调试助手。该系统总体结构框图如图1所示。
图1 系统结构框图
2 系统硬件设计
2.1 红外传感器
传感器相当于智能小车的眼睛,带有视觉功能,能够良好的捕捉到前方赛道的路况信息,将信号实时反馈给单片机进行处理,对小车进行动态控制。红外传感器探测路面的信息主要是通过其红外发射管发射一定波长的红外线,经过地面反射之后给接收管。由于红外线在白色跑道和黑色引导线上的反射系数不同,在黑色引导线上的光被大部分吸收,而在白色跑道上的光线会被大部分反射回来,所以它们之间接收到的反射光强是不同的,从而导致接收管的变化曲线不同,这样就可以区分黑白路面了。当发射出的红外线没有被反射回来或被反射回来但强度不够大时(即跑道中间黑线),红外接收管一直处于关断状态,此时模块的TTL输出端为高电平,相应指示二极管一直处于熄灭状态;当被检测物体出现在检测范围内时,红外线被反射回来且强度足够大(白色跑道上),红外接收管导通,此时模块的TTL输出端为低电平,指示二极管被点亮。红外探测电路如图2所示。
图2 红外探测电路图
2.2 触须传感器
由于小车在赛道运行过程当中难免会发生碰撞和遇到障碍物体,所以又采用了触须传感器与红外传感器相结合进行检测。触须传感器利用其触须来感知和识别物体表面轮廓,采用了二维PSD作为敏感检测元件,实时检测由于其触须与物体表面接触而在根部所产生的微小位移量,从而获得待测物体的距离、角度、位置等信息[3]。触须同样也相当于一个开关的作用,当小车遇到障碍物产生微小形变后,便会触碰到触须附近的弹片,这样就相当于形状闭合,电路接通后便会送出一个信号到我们小车的单片机上,单片机经过内部处理后,送出一个信号到伺服电机,告诉前方有障碍物,需要转向,这样就完成了小车的避障功能。触须探测电路如图3所示。
2.3 电机驱动模块
图3 触须传感检测电路
电机的驱动模块部分对于电机控制性能的优良具有很重要的意义,本系统采用了官方提供的一种电机驱动芯片MC33886,另外还有其他多种电机驱动芯片可供使用,如L298等。通过改变PWM的占空比可控制电机的转速。单片机通过IN1管脚引入PWM波,以调节MC33886的DNC口的输出电压,通过调节电机转速的快慢对小车进行速度控制,并且在IN2口输入电压以调节电机的反转和制动性能。电机驱动模块原理图如图4所示。
图4 电机驱动模块图
2.4 伺服电机转向控制
小车的转向行走是依靠前轮左右两边的两个伺服电机,伺服电机的工作原理与普通的电机不通,它的动力来源于不同频率的脉冲信号。控制方法如下:给它1.3 ms左右的高电平脉冲时,电机控制舵机正转,如图5所示。给它1.5 ms左右的高电平脉冲时,它就静止,如图6所示。给它1.7 ms左右的高电平脉冲时,电机控制舵机反转,如图7所示。
图5 1.3 ms左右的控制脉冲序列使电机顺时针旋转
图6 1.5 ms的控制脉冲序列使电机静止
图7 1.7 ms的连续脉冲序列使电机逆时针旋转
3 系统软件设计
3.1 电机控制策略
对于智能小车来说,小车的运行速度是主要被控对象。程序算法的输出只能起到对电机输出转矩的控制,但小车由于其机械零部件及电子器件的安装使其具有一定的负载,因此小车在运行过程当中电机的输出转矩与小车的速度变化关系是非线性的。而对于小车来说,小车启动时速度V=0,而电机的输出转矩可能会很大,这样一方面对于小车的运行会产生冲击,电机损耗增加;另一方面,也不利于小车的平稳起步和运行控制。小车正常行驶的时候,电机的输出可能并不是很大。为了减少电机不必要的功率损耗和保证小车速度的平稳起步和控制。因此在小车后轮轴上方位置处安装有光电编码器,通过获取小车车轮转速并转化为单位时间内的脉冲信号并反馈给单片机,构成闭环控制系统对小车的速度进行良好的控制[4-10]。
3.2 PID闭环速度控制算法
通过传感器对跑道的自主识别和检测,若跑道路线为直道,则小车需要进行加速行驶;若跑道是弯道,则小车需要进行减速慢行,而小车通过不同的弯道时其速度也是不一样的,小车控制系统利用光电编码器反馈当前速度值,通过增量式PID算法进行调节。控制系统原理框图如图8所示。
图8 控制系统原理图
PID算法公式如(1)所示:
在增量PID处理的过程中,每次算完△u(k),需要把它赋值给电机控制对应的PWM通道信号,然后判断△u(k)的值,如果小于0,则把PWM信号赋值为0;如果大于PWM信号的最大值,要把PWM信号赋值为该最大值。
3.3 直道速度控制
直道采用匀速控制,速度设定值以后可以以最大速度进入弯道,驶出弯道后进入直道,速度设定值增大。控制规律如公式(2)所示。
其中:Ka补偿效果系数;
Kp调速补偿变量。
3.4 弯道速度控制
在小车进入弯道时,由于受到向心力的作用以及对小车行驶稳定性的考虑,需对小车进行减速控制。小车进行减速的基本原则是在原来的直道速度设定值的基础上,使小车的速度降到低速设定值,以确保小车能安全和平稳的进入弯道和驶出。速度设定方法如公式(3)所示。
其中:Vs(k)为速度闭环设定值;
V为小车全程运动平均速度设定值;
e(k)车体偏离理想轨迹的偏差值;
K1为减速控制比例系数。
同时,通过多次测试小车进入弯道之后的结果,令小车以某一线性规律加速运行可以使小车在不冲出跑道的前提下,以更短的时间通过弯道,控制规律如公式(4)所示。
其中:Ck为弯道加速系数,Cp为弯道加速变量,Ck为常数,初始化设定。Cp入弯时刻初始化为0,每个控制周期累加1。
3.5 反向制动算法
小车通过弯道时由于受到离心力的作用,小车的速度不能太快否则会发生侧翻。因此小车在进入弯道时需要快速把速度降下来,如果仅仅依靠小车与路面的摩擦力显然是不够的,需要引入反向制动算法。而电机驱动芯片MC33886具有反向制动功能。控制算法流程图如图9所示。
4 结束语
通过对小车的速度采用PID闭环进行控制,可以实现小车在直道上的快速加速行驶和弯道上的减速行驶,达到了很好的速度控制效果。同时小车还增加了红外传感器和触须传感器的双重结合保障,使小车的道路信息检测能力也大大增强。在以后的设计过程当中,可以适当选择更多性能优良的传感器,并对单片机控制算法进行适当的改进,提高小车运行的平稳性、可靠性和快速通过跑道的能力。
图9 小车反向制动算法
[1]卓晴,黄开胜,邵贝贝.学做智能车[M].北京:北京航空航天出版社,2007.
[2]胡文华,周新志.智能巡线小车的多模式速度控制系统[J].微计算机信息,2008,2(7):4-5,16.
[3]谷安,谢清华.机器人触须传感器的设计[J].传感器与微系统,2006,25(6):83-84,88.
[4]邵贝贝.单片机嵌入式应用的在线开发方法[M].北京:清华大学出版社,2004.
[5]童诗白,华成英.模拟电子技术基础[M].北京:高等教育出版社,2000.
[6]黄春平,万其明,叶林.基于51单片机的智能循迹小车的设计[J].仪表技术,2011(2):54-56.
[7]胡骏,王先鲜,杜春来.基于光电传感器的飞思卡尔智能车设计[J].数控技术,2012(10):36-36.
[8]张喜红,王玉香.红外寻迹小车寻迹控制策略的改进[J].江汉大学学报,2017,4(2):168-172.
[9]孙维超,陆宝春,孙祥青.基于PID控制的粉末成型机下冲回弹装置设计[J].机电工程,2016(12):1492-1495.
[10]陈志楚.基于AT89C52的电动智能小车系统设计[J].赤峰学院学报,2012,28(9):48-51.