第五章 智能汽车软件设计
第第第第 1111 章章章章
电机控制电机控制电机控制
电机控制
1.1.1.1.1.1.1.1.直流电机控制策略:策略:策略:策略:
针对本文所研究的智能车来说,车体速度是大惯性的被控对象。算法输出的控
制量只能对电机输出力进行控制。而有一定负载时电机的输出力无论对车轮的转速
还是车体的形式速度都是不成正比的,车在刚开始启动的时候速度是零,而电机的
输出可能很大;车在匀速行驶的时候速度很快,而电机的输出可能并不是很大。而
且电池电量、车体重量都会对车速造成影响。因此只有用闭环才能对车速进行良好
的控制。在车轮对地面不打滑的情况下车体的速度和后轮的转动速度是成正比的。
因此我们可以直接用光电码盘对后轮的转速进行控制。
对于这样一个大惯性系统,我们选用 PIDPIDPIDPID 和鲁棒相结合的办法进行速度控制。
回路的设定值由经验值确定。考虑到速度控制通道的时间滞后比较小,因此采用 PID
控制方案,并在进行加减速控制时,引入了“棒棒控制”。
U(kU(kU(kU(k ++++ 1)1)1)1) = U(K)U(K)U(K)U(K) + P1P1P1P1 * e(k) + P2P2P2P2 * (e(k) – e(k - 1)) + P3P3P3P3 * ((e(k) – e(k-1) – (e(k-1) – e(k - 2)));
公式 1 1 PID 的公式
其中第一项为积分项;第二项为比例项;第三项为微分项。考虑到被控对象(车
体速度)本身是一个大的积分环节,公式中可以将第一项省略,即采用 PD 控制。
E 为误差。
同时设定误差门限,在误差比较大的时候采用大输出控制电机,将误差在最短
时间内减小到所要求的范围,这就是鲁棒控制的思想。
电机控制策略,其实就是对模型车速度的控制策略,它是继路径识别之后非常
重要的策略,直接关系到整个模型车比赛的性能。速度控制得当,小车才能以最好
的状态,在最短的时间完成比赛路程。
1.1.1.
1.1.1.
1.1.1.
1.1.1. 弯道速度控制
在模型车入弯时刻出于稳定性考虑做减速控制。减速原则是在原来直道速度设
定值的基础上,减小速度设定值到低速挡,保证模型车可以安全入弯。另一方面,
入弯之后,为了过弯时模型车能够不明显的左右摆动并采用较好的姿态通过弯路,
第五章 智能汽车软件设计
令车速与偏差成线性关系,偏差越大速度设定值越小。
速度设定方法如公式 1 2。
v(k) = v-k*e(k)……………………………………………………………….公式 1 2
1
s
其中: sv(k)为速度闭环设定值;
v 模型车全程运动平均速度设定值;
e(k) 车体偏离理想轨迹的当前偏差值;
1k 为减速控制比例系数。
同时,通过实验发现模型车入弯之后,令模型车以某一线性规律加速运行
可以使车在不冲出轨道的前提下以更短的时间通过弯道。控制规律如.公式 1 3。
sv(k) = v+Ck* Cp…………………………………………………………….公式 1 3
其中:Ck为弯道加速系数;
Cp 弯道加速变量;
Ck为常数,初始化时设定。Cp入弯时刻初始化为 0,每个控制周期累加 1。
1.1.2.
1.1.2.
1.1.2.
1.1.2. 直道速度控制
直道采用匀速控制方案,速度设定在此控制系统下可以控制的最大入弯速度。
在从弯道驶出进入直道后须进行加速控制,增大速度设定值。因速度控制回路有一
定的惯性,所以在提速时为了使速度迅速改变,加入了“棒棒控制”。控制规律如
公式 1 4。
v(k)=v+100- K * k
s
p
a
…………………………………………………………………公式 1 4
其中: aK 补偿效果控制系数;
调速补偿变量。
pK
aK 为常数,初始化时设定。 pK
1.1.3.
1.1.3. PIDPIDPIDPID 闭环控制算法
1.1.3.
1.1.3.
出弯时刻初始化为 0 ,每个控制周期累加1。
根据路径识别的情况,如果当前路径为直道,则需要加速;若是弯道,则需要
降速,而且根据不同的弯道速度也是有所区别。系统利用测速模块反馈的当前速度
值,通过增量式 PID 算法进行调节,从而控制直流电机对当前路径进行快速反应。
增量式 PID 的算式为:
)
(
u k
∆
=
K
P
(
(
e k e k
⎡
−
⎣
−
)
第五章 智能汽车软件设计
)
1
⎤
⎦
+
K
I
⋅
)
(
e k
+
K
D
⎡
⎣
(
)
e k
−
2
(
e k
)
1
− +
(
e k
−
2
)
⎤
⎦
在增量式 PID 处理的过程中,有一个步骤需要注意,即在算完△u (k)后,需要
把它赋值给电机控制对应的 PWM 通道信号 ,这时要判断该△u (k)的值,如果它小
于 0,则把 PWM 信号赋值为 0,如果它大于 PWM 信号的最大值,即大于 PWM 整
个周期所对应的数值时,要把 PWM 信号赋值为该最大值。然后,再存储本次△u (k),
和上次△u (k)。
error=speed_v-infrared_value7;
pwmtemp=PWMDTY23+PID_P*(error-last_error)+PID_I*(error)+PID_D*(error+pre_error-2*last_error);
由上述代码中,speed_v 表示标准速度(期望速度),infrared_value7 表示 ATD1
转换的经公式 4.5 计算出的即时速度值,通过计算它们的差值 error,再利用增量 PID
控制算法计算出 pwmtemp,再对 pwmtemp 进行处理,最后 PID 程序处理的结果是
给出一个 PWM 信号,而这个信号就是驱动电机的,当 error 大,即标准速度和即时
速度相差的比较多时,pwmtemp 的绝对值相对比较大,则给电机的 PWM 信号相对
较大,这样电机转速相对较快;反之,电机转速则相对较慢。由此可以看出, PID
算法主要的功能是,在闭环系统中,利用即时速度的反馈,使得即时速度逼近标准
速度的时间尽量变短,这样小车就可以根据路径识别得出的速度标准值,及时调整
自己的速度,以适应各种路况。例如,小车正在直道上行进,而且直道的时速应该
是各种赛道中最快的,当系统的路径识别算法察觉到前方出现弧度大的弯道后,系
统会根据事先调试的结果,给出大弧度弯道的速度标准值,然后 PID 算法根据速度
标准值 speed_v 和即时速度反馈值 infrared_value7 对电机的输入信号 PWM 进行及时
调整,反映到实际中,就是小车及时减速并顺利通过弯道。
在增量式 PID 处理的过程中,有一个步骤需要注意,即在算完△u (k)后,需要
把它赋值给电机控制对应的 PWM 通道信号,这时要判断该△u (k)的值,如果它小
于 0,则把 PWM 信号赋值为 0,如果它大于 PWM 信号的最大值,即大于 PWM 整
个周期所对应的数值时,要把 PWM 信号赋值为该最大值。
1.2.1.2.1.2.1.2.反向制动算法
反向制动算法
反向制动算法
反向制动算法
要使赛车在较短的时间完成比赛,速度自然越高越好,显然速度太高弯道是过
不去的,如果以弯道的极限速度匀速跑,又浪费了直道的时间。所以最佳的策略是
直道以较高的速度跑,到弯道时再尽快将速度降下来。在入弯减速时如果只靠赛道
的摩擦阻力效果显然是不够理想的。为此我们引入反向制动算法。
由于MC33886芯片集成的H桥驱动电路本身就具有反向制动功能,所以不需再外
第五章 智能汽车软件设计
否
是 否 为
弯 道
是
判 断 曲 率
大 小
当 前 车 速 是 否
超 出 该 曲 率 对 应
极 限 车 速
否
是
反 向 制 动
加 速 到 目 标
车 速
加硬件电路。反向制动流程图如图:
R S 3 8 0
电 机
在制动时,电机反向电动势对整个系统电路造成的冲击,从而引起单片机工作
不稳定,电流过大导致电机过热、电机频繁换向导致电刷打火剧烈导致电机寿命缩
短等一系列问题都是需要考虑的。
1.3.1.3.1.3.1.3.速度控制策略
速度控制策略
速度控制策略
速度控制策略
1、为了达到好的速度控制效果,对速度进行闭环控制是必须的。这里所说的速
度控制策略是指设定速度的确定方法——设定速度主要由道路与直道的偏差来决
第五章 智能汽车软件设计
定,道路越接近直道,设定速度越高,反之越低。
车模行驶中的最低速度是这样确定的:令车模以较低的速度匀速行使,在保证
无犯规行为出现的前提下,逐渐提高匀速行使的速度,直到车模出现犯规行为,此
速度再减去一个安全量,即为所需的最低速度。简单的说,变速行使的最低速度等
于匀速行使的最高速度。
车模行驶中的最高速度是这样确定的:在确定最低速度以后,加入变速策略,
不断提高最高速度的设定值,直到模型车出现犯规行为,此速度再减去一个安全量,
即为所需的最高速度。
车模行驶过程中难免出现“失去道路”的情况,对此需要采取一定的安全策略,
防止赛车“盲跑”而导致犯规。
2、针对本文所研究的智能车来说,车体速度是大惯性的被控对象。算法输出的
控制量只能对电机输出力进行控制。而有一定负载时电机的输出力无论对车轮的转
速还是车体的形式速度都是不成正比的,车在刚开始启动的时候速度是零,而电机
的输出可能很大;车在匀速行驶的时候速度很快,而电机的输出可能并不是很大。
而且电池电量、车体重量都会对车速造成影响。因此只有用闭环才能对车速进行良
好的控制。在车轮对地面不打滑的情况下车体的速度和后轮的转动速度是成正比的。
因此我们可以直接用光电码盘对后轮的转速进行控制。
对于这样一个大惯性系统,我们选用 PID 和棒棒相结合的办法进行速度控制。
回路的设定值由经验值确定。考虑到速度控制通道的时间滞后比较小,因此采用 PID
控制方案,并在进行加减速控制时,引入了“棒棒控制”。
U(k + 1) = U(K) + P1 * e(k) + P2 * (e(k) – e(k - 1)) + P3 * ((e(k) – e(k-1) – (e(k-1) – e(k - 2)));
公式 4 3 PID 的公式
其中第一项为积分项;第二项为比例项;第三项为微分项。考虑到被控对象(车
体速度)本身是一个大的积分环节,公式中可以将第一项省略,即采用 PD 控制。
E 为误差。同时设定误差门限,在误差比较大的时候采用大输出控制电机,将误差
在最短时间内减小到所要求的范围,这就是棒棒控制的思想。
电机控制策略,其实就是对模型车速度的控制策略,它是继路径识别之后非常
重要的策略,直接关系到整个模型车比赛的性能。速度控制得当,小车才能以最好
的状态,在最短的时间完成比赛路程。
第五章 智能汽车软件设计
1.3.1.
1.3.1.
1.3.1.
1.3.1. 弯道速度控制
在模型车入弯时刻出于稳定性考虑做减速控制。减速原则是在原来直道速度设
定值的基础上,减小速度设定值到低速挡,保证模型车可以安全入弯。另一方面,
入弯之后,为了过弯时模型车能够不明显的左右摆动并采用较好的姿态通过弯路,
令 车 速 与 偏 差 成 线 性 关 系 , 偏 差 越 大 速 度 设 定 值 越 小 。 速 度 设 定 方 法
如………………………………………………………………………….公式 4 4。
………………………………………………………………………….公式 4 4
其中:
为速度闭环设定值;
模型车全程运动平均速度设定值;
车体偏离理想轨迹的当前偏差值;为减速控制比例系数同时,通过实验发现模
型车入弯之后,令模型车以某一线性规律加速运行可以使车在不冲出轨道的前提下
以更短的时间通过弯道。控制规律如.公式 4 5。
……………………………………………………………………….公式 4 5
其中: 为弯道加速系数;
弯道加速变量;
为常数,初始化时设定。 入弯时刻初始化为 0,每个控制周期累加 1。
1.3.2.
1.3.2.
1.3.2.
1.3.2. 直道速度控制
直道采用匀速控制方案,速度设定在此控制系统下可以控制的最大入弯速度。
在从弯道驶出进入直道后须进行加速控制,增大速度设定值。因速度控制回路有一
定的惯性,所以在提速时为了使速度迅速改变,加入了 “棒棒控制”。控制规律
如…………………………………………………………………公式 4 6。
…………………………………………………………………公式 4 6
其中:
补偿效果控制系数;
调速补偿变量。
为常数,初始化时设定。 出弯时刻初始化为 ,每个控制周期累加 。
第五章 智能汽车软件设计
1.3.3.
1.3.3.
1.3.3.
1.3.3. 速度及加速度信号采集子程序
当图像数据采集处理完后,我们读取速度传感器和加速度传感器的值,采集这
两个传感器信号的频率也为 60Hz。流程图如图 4.3 所示。
子程序入口
读速度传感器的值
读加速度传感器的值
读两个 16 位脉冲计数器的值
返回主程序
图 4.3 速度及加速度信号采集子程序流程图
1.4.1.4.1.4.1.4.速度速度速度速度 PIDPIDPIDPID 算法算法算法算法
根据偏差的比例(Proportional)、积分(Integral)、微分(Derivative)的线性组合进行反馈控制
(简称 PID 控制),数字 PID 控制算法是电机微机控制中常用的一种基本控制算法[9]。
在连续系统中,模拟 PID 调节器是一种线性调节器,控制系统原理框图如图 5.10。
控制规律为:
图 5.10 PID 控制系统原理框图
ut K et
( )
[ ( )
P
=
+
1
T
I
t
et dt T
( )
D
+
∫
0
第五章 智能汽车软件设计
det
( )
dt
]
(5.1)
式中: pK :比例增益, pK 的倒数称为比例带; IT :积分时间常数; DT :微分
时间常数; ( )ut :控制量; ( )et :偏差,等于给定量与反馈量的差。
在计算机控制系统中,数字 PID 控制算法通常又分为位置式 PID 和增量式 PID。
本次设计中,我们采用增量式 PID。
增量型算法与位置型算法相比,具有以下优点:增量型算法不需要做累加,增
量的确定仅与最近几次偏差采样值有关,计算精度对控制量的计算影响较小,而位
置型算法要用到过去偏差的累加值,容易产生大的累加误差;增量型算法得出的是
控制量的增量,而位置型算法的输出是控制量的全量输出,误动作影响大;采用增
量型算法,易于实现手动到自动的无冲击切换。
在实际应用中,采样的反馈值 ( )yk 即为脉冲累加器中的 PACN32 中的脉冲数,
预设门限值 A在参数整定时根据实际情况调节,输出 ( )u k 并不能直接用来控制电
机,需要将其转换为控制 PWM 占空比,然后用增大或减小 PWM 占空比的方法来
实现对电机的加减速的控制。换句话说,在求偏差量时,实际上用的是每 20ms 电
机转过的齿轮数和实际期望电机转过的齿轮数,通过二者的差值,再乘以相应的系
数,即 KP、KI、KD 的协调控制,计算出相应的 PWM 占空比,实际上用的是 PWMDTY
的值[10]。
本设计中综合考虑各种因素,最后选用的采样周期为 20ms,即每 20ms 对电机
进行一次 PID 调节。由于在程序中,对图像的采集使用的是 PH 口的中断程序,因
此,PID 采样周期的选择实际上是受限制与图像采集,因为每行的扫描周期为 64μs,
有效扫描时间为 52μs,采用的是隔行扫描的方式,即每隔 6 行采集一行图像的信息,
如果在每行之间加入 PID 调节的话,那么处理 PID 子程序的时间必须控制在 64*5
=320μs 之内,另外图像采集只是采集了奇场中的行数,在偶场中没有采集,因此
PID 子程序的执行是不均匀的,并没有达到预期的效果,同时还可能会影响到视频
采集,因此,经过分析,最终决定将 PID 的采样周期定为 20ms,即当进行一次场
采集进行一次 PID 调节。而且经过最终的检验,这样能够满足对速度控制的需要。
电机调速