|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
PID算法解释) S& H* ]$ e4 e. g5 Q- o p7 x
很多同学都不清楚PID 是个什么东西,因为很多不是自动化的学生。他们开口就要资料,要程序。* I* b$ ?+ A; f5 j3 c8 M9 q
这是明显的学习方法不时,起码,首先, 你要理解
- o& y& W& |& ]4 }PID是个什么东西。2 ~5 i* D+ U q
本文以通俗的理解,以小车级向控制举例说明
" ]; m& V5 Y% j8 IPID的一些理解。
( [: q% i( }" F, o4 A/ |( U5 _首先,为什么要做PID 98 M: p/ V/ j! _# I
由于外界原因,小车的实际速度有时不稳定,这是其一,% }4 H. p7 N" ^; \8 ~0 y" z
要让小车以最快的时间达达到既定的目标速度,这是其二。2 M1 @/ |/ q8 Z6 i7 ~0 m3 R. \6 S) P
速度控制系统是闭环,才能满足整个系统的稳定要求,必竟速度是系统参数之- -,这是其三
( i) v# X6 P7 u4 H3 K小车调速肯定不是线性的,外界因素那么多,没人能证明是线性的。如果是线性的。直接用8 A4 E+ x [! I
P就可以了。, K; B0 r8 I; _6 J
比如在PWM=80% 时, 速度是2M/S ,那么你要它3MS ,就把PWM提高到90% .因为90/60=3/2 , 这样% f8 S$ `, h& b6 V
一来太完美了。% ?" b$ `+ S( x- z+ c1 I9 { i
完美是不可能的.8 w0 K0 F" K: l6 s( }
那么不是线性的,要怎么怎么控制
7 P" h7 n% ]4 Y/ W- ]8 CPWM使速度达到即定的速度呢?即要快,又要准,又要狠。(即快准狠- b b L0 j- } A$ V; A
)系统这个速度的调整过程就必须通过某个算法调整,- -般
6 a* ]9 ~0 [) ^+ h( R% G8 ?PID就是这个所用的算法。
, p$ W; g# o: }: x! t可能你会想到,如果通过编码器测得现在的速度是
@. ^" D9 G5 b- a: H: U2.0m/s.要达到 2.3m/s 的速度, 那么我把pwm增大一
1 }' Q0 M! f: A: _点不 l! t. k. y$ a6 X+ u5 p! F. y
就行了吗?是的。增大pwm 多少呢? 必领要通过算法。因为PWM 和速度是个什么关系,对于整个系统来说,
+ Q! F! D8 m3 Y. t. z5 S谁也9 c+ g& K( l8 i# I# p2 J
不知道。要- 一点-一点的试,加个 1%,不够,再加1%还是不够,那么第三次你还会加 1% 吗?很有可能就加2%1 N4 w' u/ |5 x+ m/ ?
了。
/ C4 w0 R3 h: o4 `2 @4 c, c6 r通过PID 三个参数得到-一个表达式:△PWM=a’ OV1+b" △V2+c' OV3,abc 是通过PID的那个长长的
, a2 [! g$ W+ j6 e% ~" ~* O公式展开/ y# R8 x- n: n- Y. U
然后的简后的数字,△V1 ,△V2,△V3此前第一次调整后的速度差
" l1 l2 [0 P+ w0 x$ R L% v,第二次调整后的速度差. 第三次。.
: c" W( J/ B8 a5 ~3 N) y Y. ^- -句话, PID要使当前速度达到目标速度最快,置要建立如何调整
" j( Q$ [" p Cpwm和速度之间的关系。3 p1 y5 S! g5 q( J0 g$ n
输入输出是什么: .3 u) t j2 T8 X3 r0 Q
输入就是前次速度,前前次速度,前前前次速度。
, L) R N) t2 C. m输出就是你的PWM 应该增加或减小多少.9 [8 g5 h) V* }( F+ N7 K
* E! t5 t8 l& P, R1 G! `0 E& M0 K2 F) `
|
|