|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
PID算法解释
5 j5 N0 \1 u9 K$ w# H( i( s( @2 J" N* A很多同学都不清楚PID 是个什么东西,因为很多不是自动化的学生。他们开口就要资料,要程序。
1 ?4 W8 G' B$ g. k0 ~5 o这是明显的学习方法不时,起码,首先, 你要理解" G% D4 M3 H4 ~6 Q, C; x
PID是个什么东西。' Q% W7 k. _, g6 c8 u' Q! c& Y
本文以通俗的理解,以小车级向控制举例说明8 f0 W7 C! \! \. v! Y
PID的一些理解。 i- e9 r5 k* S/ N( l
首先,为什么要做PID 9. ]* j% i( c0 ^
由于外界原因,小车的实际速度有时不稳定,这是其一,
( r# x& g4 l k& U) j要让小车以最快的时间达达到既定的目标速度,这是其二。4 Z% d# ~: C# `: z4 ^9 ~" x
速度控制系统是闭环,才能满足整个系统的稳定要求,必竟速度是系统参数之- -,这是其三
, H D& D8 q0 T/ I: s6 ~小车调速肯定不是线性的,外界因素那么多,没人能证明是线性的。如果是线性的。直接用/ Q% B8 ^: M& |/ z. g8 @
P就可以了。& M! H! M. }; Z+ s# f
比如在PWM=80% 时, 速度是2M/S ,那么你要它3MS ,就把PWM提高到90% .因为90/60=3/2 , 这样2 p* [8 _5 ?8 z& i$ j; F
一来太完美了。
( b$ f f) {9 j# P: S完美是不可能的.
& s$ z* l+ o0 w那么不是线性的,要怎么怎么控制
6 U% I& r+ B4 d3 `PWM使速度达到即定的速度呢?即要快,又要准,又要狠。(即快准狠$ g: Y* S6 w( o$ o; Y3 l8 J( E# L
)系统这个速度的调整过程就必须通过某个算法调整,- -般
$ a, S3 M( u3 h5 ^& ^: q% jPID就是这个所用的算法。
- `# F1 F }7 r) C可能你会想到,如果通过编码器测得现在的速度是
% X, T/ N. I* W- a+ m2.0m/s.要达到 2.3m/s 的速度, 那么我把pwm增大一/ x0 e6 F) c; R. a/ {& e
点不
+ Q" L$ I/ D2 i就行了吗?是的。增大pwm 多少呢? 必领要通过算法。因为PWM 和速度是个什么关系,对于整个系统来说,
1 G( G/ u1 M- ^( g. i/ `谁也# l. |+ G2 _$ g+ ]1 L
不知道。要- 一点-一点的试,加个 1%,不够,再加1%还是不够,那么第三次你还会加 1% 吗?很有可能就加2%
2 a& p+ C) W# N8 [了。
& o6 B0 h0 M+ K m通过PID 三个参数得到-一个表达式:△PWM=a’ OV1+b" △V2+c' OV3,abc 是通过PID的那个长长的
0 a* e3 E) x" T7 J @4 k公式展开7 n r ?" {" G0 z& D
然后的简后的数字,△V1 ,△V2,△V3此前第一次调整后的速度差
9 B! g' i( G- s, x, z+ w. d2 z,第二次调整后的速度差. 第三次。.7 C: d v7 H% i B1 X
- -句话, PID要使当前速度达到目标速度最快,置要建立如何调整8 |9 }; @0 ?5 C8 w5 E
pwm和速度之间的关系。/ d4 T/ G% K* d) F9 U, Z( V
输入输出是什么: .
1 ?+ C+ N* @( d( ^! a输入就是前次速度,前前次速度,前前前次速度。' i! [" L, g& V5 b
输出就是你的PWM 应该增加或减小多少.
- s! u _- b$ _" K) W$ m# w$ E
; g$ B7 D2 f* `, a6 m4 J' L. k p" n
|
|