TA的每日心情 | 开心 2020-7-28 15:35 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、PID算法简介" }( Z: `2 D# r% Z# ^$ m6 D2 j
在智能车竞赛中,要想让智能车根据赛道的不断变化灵活的行进,PID算法5 W9 U. U/ h( e5 \
的采用很有意义。
- k8 C" g, ]) U- \; S首先必须明确PID 算法是基于反馈的。- -般情况下,这个反馈就是速度传/ ~ W3 \, c1 ~0 p% y
感器返回给单片机当前电机的转速。简单的说,就是用这个反馈跟预设值进行比: a( \6 j. ?1 q) u" |/ @7 E* t
较,如果转速偏大,就减小电机两端的电压:相反,则增加电机两端的电压。
o7 H8 W1 {3 e' F3 e3 d) H; e顾名思义,P指是比例(Proportion ),I指是积分(Integral ),D指微) Y- W, c# b# |. c) z3 v" y
分(Differential ) 。在电机调速系统中,输入信号为正,要求电机正转时,反
6 ~% k, T! M9 [' Z( B% E, A$ A g馈信号也为正(PID 算法时,误差=输入-反馈),同时电机转速越高,反馈信号
# Z/ t8 D. [5 f; V4 P/ [; a越大。要想搞懂PID 算法的原理,首先必须先明白P,I,D 各自的含义及控制规律:8 d# R b9 d& c: \
比例P:比例项部分其实就是对预设值和反馈值差值的发大
* h9 n2 r: ?9 A倍数。举个例子,假如2 D* |. B* g! O4 _3 M
原来电机两瑞的电压为U o。 比例P为0.2,输入值是800, 而反馈值是1000, 那么输
* }5 P0 V. v7 h4 Q9 p: p出到电机两端的电压应变为U o+0.2* (800-1000) .从而达到了调节速度的目的. .7 n1 V7 E+ p! _
显然比例P越大时,电机转速回归到输入值的速度将更快,及0 P& } I' f/ W/ Z: y/ U+ x# ], G
调节灵敏度就越高。
+ F4 ]' Z) m5 v m从而,加大P值,可以减少从非稳态到稳态的时间。但是同时也可能造成电机转速 @# _; w' Z* x6 U3 h
在预设值附近振荡的情形,所以又引入积分I 解决此问题., T( l+ a* k4 a0 [7 m9 l" h- `6 S
积分1:顾名思义,积分项部分其实就是对预设值和反馈值之间的差值在时间上进( r1 e4 i) s" X' z& x8 ?
行累加。当差值不是很大时,为了不引起振荡。可以先让电机按原转速继续运行。1 ]% v5 z6 k7 h, x& e
当时要将这个差值用积分项累加。当这个和累加到- -定值时,再-次性进行 处理.3 H* l2 K) F& \1 Y. K, A
从而避免了振荡现象的发生。可见, 积分项的调节存在明显的滞后。而且 1值越大,
( @- d8 ^& c- h7 a H" g滞后效果越明星。. ]9 }) M$ X) G6 R0 }4 O/ k J/ y
微分D:微分项部分其实就是求电机转速的变化率。
/ o* v1 @9 q* D: }1 F也就是前后两次差值的差而已.
; s* M# L o, E5 o: v3 D也就是说,微分项是根据差值变化的速率, 提前给出一个相应的调节动作。8 e9 m! i; j, x& q4 s5 S! y( x+ M. H6 y
可见微分项的调节是
& [+ v. U: ?6 f" l超前的。并且D值越大,超前作用越明显。可以在- -定8 ~: M2 ]8 u$ L
程度上缓冲振荡。" f. J; B& ?: ?0 B* C8 j1 ?# h
比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分
+ Q+ x# `3 O; J* ` Q8 e5 ]项",它能预测误差变化的趋势. Z6 u2 x" _ p0 g, F0 }1 J
这样,具有比例+微分的控制器,就能够提前使抑制) }! @9 g& X0 o
误差的控制作用等于零,甚至为负值,从而避免了被控量的严巫超调。3 {; n/ r ]) N% ~$ P
4 w: E4 @3 {' f7 z/ H* B
4 ]8 P+ T6 ~9 t- i2 E1 X( S5 P6 W8 H4 Z |
|