|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
PID算法解释7 x' U( {( B, c% J
很多同学都不清楚PID 是个什么东西,因为很多不是自动化的学生。他们开口就要资料,要程序。
/ _, p. X% G8 I3 h3 D这是明显的学习方法不时,起码,首先, 你要理解
- l. k `1 @% q; k; g* @2 c% j7 [PID是个什么东西。
9 S8 g0 [1 L% [* K) O' v+ D2 W本文以通俗的理解,以小车级向控制举例说明
4 {4 V3 b4 z6 MPID的一些理解。
- w- U. J+ h$ w8 G, l首先,为什么要做PID 9
( i/ v$ V5 u* {由于外界原因,小车的实际速度有时不稳定,这是其一,
% r1 f9 `5 }/ T/ f9 C要让小车以最快的时间达达到既定的目标速度,这是其二。
6 P$ j' q& d8 g8 q; U: _( j6 _3 a速度控制系统是闭环,才能满足整个系统的稳定要求,必竟速度是系统参数之- -,这是其三
6 x z) w2 h/ j" u% Q) ^小车调速肯定不是线性的,外界因素那么多,没人能证明是线性的。如果是线性的。直接用& l: o' V) F' ?% }9 G/ H' a9 z' d. y
P就可以了。
& b4 X1 O3 o( {3 C$ l9 Y$ s+ W比如在PWM=80% 时, 速度是2M/S ,那么你要它3MS ,就把PWM提高到90% .因为90/60=3/2 , 这样
8 s8 U f: a4 X$ E* }一来太完美了。
4 v8 g V* A- @8 s完美是不可能的./ V* [9 d: x. p
那么不是线性的,要怎么怎么控制6 V8 k% C! p3 R
PWM使速度达到即定的速度呢?即要快,又要准,又要狠。(即快准狠7 P4 G* M# [1 s, f
)系统这个速度的调整过程就必须通过某个算法调整,- -般" `7 U' g8 o# i/ M, z& ~
PID就是这个所用的算法。
: I6 \1 V3 p8 m" w/ \! s可能你会想到,如果通过编码器测得现在的速度是
4 P4 e) ?% q' E y& h% y. [2.0m/s.要达到 2.3m/s 的速度, 那么我把pwm增大一* @5 V) K: @! [1 P: W& C7 N2 {6 P) q- R
点不
) A0 d# k2 B$ w* u+ N( `# R" w就行了吗?是的。增大pwm 多少呢? 必领要通过算法。因为PWM 和速度是个什么关系,对于整个系统来说,
7 S$ O2 i, t8 H' O4 Z谁也
$ }0 C+ Q" e1 H ]. Q不知道。要- 一点-一点的试,加个 1%,不够,再加1%还是不够,那么第三次你还会加 1% 吗?很有可能就加2%# _! _1 o- I. y$ b7 b
了。+ @! |0 D- b7 m3 J; W
通过PID 三个参数得到-一个表达式:△PWM=a’ OV1+b" △V2+c' OV3,abc 是通过PID的那个长长的$ ?* x5 ^8 ]" j) U2 r1 H
公式展开' V# ?/ l K( E* F/ d1 r* q2 s& O
然后的简后的数字,△V1 ,△V2,△V3此前第一次调整后的速度差9 r" F6 _8 O) E4 _& l' j
,第二次调整后的速度差. 第三次。.
, Z0 [: o5 r! ?% D$ ~- -句话, PID要使当前速度达到目标速度最快,置要建立如何调整; F+ N/ l8 O" w. W
pwm和速度之间的关系。' g; Y% R& V0 Y @' a& [
输入输出是什么: .* T. U7 ?9 t5 j0 N4 {7 R3 _+ Y
输入就是前次速度,前前次速度,前前前次速度。
# `, h: Z% r3 T输出就是你的PWM 应该增加或减小多少.+ i7 D6 A' a" _9 R5 ?, G$ o4 u% i
2 h9 ?' X: H! C% u& M0 f- d3 j
% m# I2 Q; Z' u" p, |' Q |
|