| 
 | 
	
    
 
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册  
 
x
 
PID算法解释 
% Z1 F$ A1 ]; l8 Z) r# r# [2 F1 D很多同学都不清楚PID 是个什么东西,因为很多不是自动化的学生。他们开口就要资料,要程序。1 H2 B8 m# |) f5 X3 S 
这是明显的学习方法不时,起码,首先, 你要理解8 ]6 D* g& ^4 {! [$ J 
PID是个什么东西。) C9 t$ P) A) g7 L( M: o: t6 _! w% | 
本文以通俗的理解,以小车级向控制举例说明/ @2 G6 ]1 _2 L& [$ ~ 
PID的一些理解。+ U, `) V; r- ?# g. A% e 
首先,为什么要做PID 9 
0 e9 K3 u8 L4 E& R& C/ A由于外界原因,小车的实际速度有时不稳定,这是其一, 
* n1 l  @) E/ j' R要让小车以最快的时间达达到既定的目标速度,这是其二。 
. G( }' K( u; `" x; H9 i速度控制系统是闭环,才能满足整个系统的稳定要求,必竟速度是系统参数之- -,这是其三  S, L& V( b# L( {: j 
小车调速肯定不是线性的,外界因素那么多,没人能证明是线性的。如果是线性的。直接用3 O9 |9 B$ _: C% | 
P就可以了。 
/ Q+ p6 c1 B! w比如在PWM=80% 时, 速度是2M/S ,那么你要它3MS ,就把PWM提高到90% .因为90/60=3/2 , 这样* }! s8 |* M" V$ `# V) K 
一来太完美了。 
- p) ]+ f; p, c+ \完美是不可能的.. M5 C8 O4 H: ~1 [ 
那么不是线性的,要怎么怎么控制! B& B, `9 w6 O3 p 
PWM使速度达到即定的速度呢?即要快,又要准,又要狠。(即快准狠  L. F# a& W. @! y0 I2 L* Y7 j/ a 
)系统这个速度的调整过程就必须通过某个算法调整,- -般- O! M; x9 J, z5 O5 R& q$ P 
PID就是这个所用的算法。 
6 M6 I2 Y+ C: [可能你会想到,如果通过编码器测得现在的速度是) w7 f# A3 A* g: \ 
2.0m/s.要达到 2.3m/s 的速度, 那么我把pwm增大一 
! e% C0 [' s; G点不 
2 r% R9 F+ i0 b( X6 b! R就行了吗?是的。增大pwm 多少呢? 必领要通过算法。因为PWM 和速度是个什么关系,对于整个系统来说,4 F5 j# K9 }1 ^0 |/ I 
谁也; B1 g. V' }+ |3 ]+ N5 Y 
不知道。要- 一点-一点的试,加个 1%,不够,再加1%还是不够,那么第三次你还会加 1% 吗?很有可能就加2%. F: q' A/ o  e: i$ i3 E+ T 
了。9 F( J' h# v0 H9 E( S$ \; A2 a 
通过PID 三个参数得到-一个表达式:△PWM=a’ OV1+b" △V2+c' OV3,abc 是通过PID的那个长长的 
3 v' c0 H# a" D. h% `/ o4 z公式展开* ]4 K- L& L' b# t 
然后的简后的数字,△V1 ,△V2,△V3此前第一次调整后的速度差 
7 E; \$ t, z( b4 A,第二次调整后的速度差. 第三次。. 
$ R% U' a% w  y4 u6 ?% N6 I- -句话, PID要使当前速度达到目标速度最快,置要建立如何调整  [% _7 D1 [. @) E 
pwm和速度之间的关系。 
' A6 J4 w% w8 S4 I" _输入输出是什么: .& D( |/ r9 \, T2 w 
输入就是前次速度,前前次速度,前前前次速度。 
6 z9 Y- L4 _+ G3 i! |输出就是你的PWM 应该增加或减小多少.- D4 r% |$ y# J6 x 
' @$ k2 C8 H& I* P/ g3 k* Z 
 
4 |- ^" `9 ~& ? |   
 
 
 
 |