TA的每日心情 | 开心 2020-7-28 15:35 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、PID算法简介" q7 T/ M6 M) Q: `# y& `* I1 A3 _
在智能车竞赛中,要想让智能车根据赛道的不断变化灵活的行进,PID算法
) E* X; @* L$ f: r8 e S. P% O7 T' ?的采用很有意义。
9 Q, j: w$ ]: Q7 l7 p首先必须明确PID 算法是基于反馈的。- -般情况下,这个反馈就是速度传: }& t' p8 ^2 |* c- E* I8 U
感器返回给单片机当前电机的转速。简单的说,就是用这个反馈跟预设值进行比' g/ } |9 s" f# p( ~3 I F
较,如果转速偏大,就减小电机两端的电压:相反,则增加电机两端的电压。; I; X; C9 t% s1 f3 z, m% x4 Y
顾名思义,P指是比例(Proportion ),I指是积分(Integral ),D指微% o) y6 f+ N4 s0 u8 a( f
分(Differential ) 。在电机调速系统中,输入信号为正,要求电机正转时,反! x, h' P& L* r% H
馈信号也为正(PID 算法时,误差=输入-反馈),同时电机转速越高,反馈信号 ^$ O& R" Y$ N, G6 e
越大。要想搞懂PID 算法的原理,首先必须先明白P,I,D 各自的含义及控制规律:
& @* Q/ c- Q8 P* l比例P:比例项部分其实就是对预设值和反馈值差值的发大
: V; _: h* {% H" R% t2 Z' E倍数。举个例子,假如
" w) H# p- M+ w2 g$ ]! U% @原来电机两瑞的电压为U o。 比例P为0.2,输入值是800, 而反馈值是1000, 那么输7 R/ N/ P: `2 m3 }4 I
出到电机两端的电压应变为U o+0.2* (800-1000) .从而达到了调节速度的目的. .
: a. l7 j0 @. y0 P* g5 \3 d' L显然比例P越大时,电机转速回归到输入值的速度将更快,及7 E/ K9 g" a* ? e" E# [
调节灵敏度就越高。0 J% w# L/ j; I G4 F9 w
从而,加大P值,可以减少从非稳态到稳态的时间。但是同时也可能造成电机转速* g, l% W9 }; `8 c% B# @
在预设值附近振荡的情形,所以又引入积分I 解决此问题.2 g* F/ q3 {( Z, B+ J4 H2 R; B
积分1:顾名思义,积分项部分其实就是对预设值和反馈值之间的差值在时间上进' a4 w0 Y3 t6 e' Y7 B
行累加。当差值不是很大时,为了不引起振荡。可以先让电机按原转速继续运行。4 O$ k# ?0 r8 J* P: A* s
当时要将这个差值用积分项累加。当这个和累加到- -定值时,再-次性进行 处理.
1 z% {. I) k# o. P4 G3 o; Q% H从而避免了振荡现象的发生。可见, 积分项的调节存在明显的滞后。而且 1值越大,
5 }% h" M, Y2 ^. L2 M! h. h滞后效果越明星。
& y* R$ I+ s& B+ ?. b$ Z微分D:微分项部分其实就是求电机转速的变化率。7 m3 y u) ]9 Z Z! x0 g) d
也就是前后两次差值的差而已.
; X1 O& [6 o( p6 Z0 R, e8 k也就是说,微分项是根据差值变化的速率, 提前给出一个相应的调节动作。: \+ |9 _" X3 c% B
可见微分项的调节是
, V/ o( t/ z) Y ?超前的。并且D值越大,超前作用越明显。可以在- -定
* \+ t9 E9 @9 S+ ?, s8 b程度上缓冲振荡。& s5 T. i p4 u) m
比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分" @7 x" {! ~7 {* D& L2 K1 i
项",它能预测误差变化的趋势
; N1 |+ v# Z) o: G C# f, P这样,具有比例+微分的控制器,就能够提前使抑制, d) A6 _2 ` V
误差的控制作用等于零,甚至为负值,从而避免了被控量的严巫超调。0 ~3 R% y0 a* A3 w: g# O
6 |4 i8 @6 U4 g4 p! {- N
6 X# D: U2 ^7 O- \; ]- E |
|