河南理工大学毕业设计说明书
3.3车速的控制
对于车速的控制,我们采用闭环控制,控制量由MC33886给出,而速
度反馈量由编码器测得。编码器输出的脉冲输入到PACN10,通过定时器申请中断,间隔一定时间读取PACN10的值,由于是一定时间内的脉冲数,所以可以看成是电机速度。给定量是根据当前传感器的检测到黑线的位置给出的,我们选择了模糊推理给定,该模糊控制器是一个两输入,一输出。输入黑线位置和黑线位置的变化率,通过模糊推理输出一个当前所需的速度量。在通过一个增量式PID调节器使电机的实际速度尽可能快的接近给定速度。
3.3.1 模糊控制设定速度
因为弯道的分布情况也不能确定,小车可能频繁的进出弯道,不停的调整速度来适应不同轨迹。这样就难以建立精确的数学模型,且赛车对动态性能要求较高,考虑到该款单片机有一套特色指令—模糊控制指令,执行时间只有几十us级(时钟频率为25M),不会影响决策周期,且简单易行,而模糊控制具有处理不明确信号的能力,故最终选定采用模糊控制设定速度:
(1)模糊输入输出量的选取
赛车模糊控制器采用二维模糊控制器,输入变量E、△E分别选为黑线位置distance及其变化率diff,输出变量U选为赛车的速度设定值Vi_Ref。
(2) 隶属函数的确定
MC9S12DG128B的隶属函数的数值描述有固定的数据结构,即起点的坐标值、终点的坐标值、前沿斜率、后沿斜率;且输出的隶属函数须采用单值函数。故设计输出变量的模糊集为T(U)={NB,NS,Z,PS,PB},论域输出U为{90,120,140,150,160};设计输入的隶属函数如图3-2所示:
22
河南理工大学毕业设计说明书
(a)
(a) (b) 图3-2 隶属函数
(3)模糊规则库的建立
确定控制规则是模糊控制器设计的核心工作。控制规则的制定需要大量的实时调试经验。具体可如下实现:首先可以结合自身现有的经验制定出初步规则表,然后结合串口调试工具实时返回数据,对规则进行微调。注意,在进行微调时候切忌一次进行较大的改动,否则改后无法判断到底是那条规则在起作用。见表3-1。
表3-1 模糊规则表
△E E NB Z PB NB NB NS PS NS Z PB PS PB PS PB Z NS PS NS NB NS Z PS PB (4) 模糊推理及解模糊化
在模糊推理过程中,选用了REV 指令。MC9S12DG128B单片机中规定各个前件之间只进行模糊与运算,而如果几个规则的逻辑后件影响到同一个模糊输出,它们之间隐含模糊或运算。即使用MIN-MAX法进行模糊推理。
23
河南理工大学毕业设计说明书
反模糊化采用重心法(COG法)。WAV是解模糊的核心指令,它与EDIV指令配合完成模糊输出到控制输出的变换。
3.3.2 PID控制调整速度
本系统采用的是增量式数字PID控制,它是一个闭环控制系统。闭环控制系统(closed-loop control system)的特点是系统被控对象的输出(被控制量)会反送回来影响控制器的输出,形成一个或多个闭环。闭环控制系统有正反馈和负反馈,若反馈信号与系统给定值信号相反,则称为负反馈( Negative Feedback),若极性相同,则称为正反馈,一般闭环控制系统均采用负反馈,又称负反馈控制系统。闭环控制系统的例子很多。比如人就是一个具有负反馈的闭环控制系统,眼睛便是传感器,充当反馈,人体系统能通过不断的修正最后作出各种正确的动作。如果没有眼睛,就没有了反馈回路,也就成了一个开环控制系统。另例,当一台真正的全自动洗衣机具有能连续检查衣物是否洗净,并在洗净之后能自动切断电源,它就是一个闭环控制系统。 (1)比例控制
比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。
(2)积分控制
在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制
24
河南理工大学毕业设计说明书
器,可以使系统在进入稳态后无稳态误差。 (3)微分控制
在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入 “比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。
PID控制原理图如图3-3所示
比例 E(t) R(t) 积分 U(t) 被控对象 Y(t) _ 微分
25
河南理工大学毕业设计说明书
图3-3 PID控制原理图
通过每一控制周期(10ms)读入脉冲数间接测得小车当前转速vi_FeedBack,将vi_FeedBack与模糊推理得到的小车期望速度vi_Ref比较,由以下公式求得速度偏差error1与速度偏差率d_error。
error1 = vi_Ref– vi_FeedBack; (3-1)
d_error = error1 –vi_PreError;
(3-2)
公式4中, vi_PreError为上次的速度偏差。考虑到控制周期较长,假设按2.5m/s的平均速度计算,则一个控制周期小车大概可以跑过2.5cm,如果按这种周期用上述PID调节速度,则会导致加速减速均过长的后果,严重的影响小车的快速性和稳定性。为了解决这个问题,可以在PID调速控制中加入BANG-BANG控制思想:根据error1的大小,如果正大,则正转给全额占空比;如果负大,则自由停车;否则就采用PID计算的占空比。
程序段如下: void PIDInit(void) { }
unsigned int v_PIDCalc( PID *pp )
26
sPID.vi_Ref = 0 ;
sPID.vi_FeedBack = 0 ; sPID.vi_PreError = 0 ;
sPID.vi_PreDerror = 0 ;
sPID.v_Kp = VV_KPVALUE; sPID.v_Ki = VV_KIVALUE; sPID.v_Kd = VV_KDVALUE;
sPID.vl_PreU = 0 ;