|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
PID算法
U8 ]9 m" h: G7 F这个是PID 公式:
5 j2 J0 a0 g* R0 {/ kU(k+1)= U(k)+( KP"E(k)- KI"E(k-1)+ KD"E(k-2) )
+ ~) ?* n% p7 k# `+ }( k0 p$ x g: j对你的系统而言,
& K& q( V& k6 j) I! {0 y4 QU(k)就是当前占空比。我这里先假定 你的占空比对应 定时 器寄存器设置: c/ O( h) m" F1 ^9 r, s
范圈是0-85535.同时假定 定时器设置为 a 的时候,. V1 X9 Q" M( k7 U$ H. A
占空比输出为0%, 全部是低电平,完全不加热。65535 的时候,占空比输出100%, 全速加
8 X; S+ a) R, n- `& ]% L6 X2 I热。: b9 W) m% ^: F' m3 D4 I* v
E(k)是当前温度和设定温度的误差值! Q$ h& N/ L. `( V2 o
E(-1)是上次计算时的误差值
5 w- j: l& e' m# t$ a4 i5 O4 ^E(k-2)是上上次计算时的误差值
' ]! y L+ g) L由于KP,KI, KD三个系数现在都不知道。需要整定,有自动整定,也有手动整定。我们7 V, H/ f4 @9 p) K8 H& }% E* Q
先采取手动整定的方案。" C: K" P, D: @- O( G
我们现在可以知道温度相差
$ M! v7 J3 ]6 z7 {( o40C,显然,需要比较快速的加热。水温在正常系统使用的时; d' h3 K8 [8 {: P8 N% H
候,显然是0-100C的。
; ?" R# d' f+ X! c% M而你们这里需要目标温度是
& k6 o' D! x9 Q( c; n7 A30-60C,故最大加热的差值可以认为是- Z T( n, H0 v3 Y
60-0 = 60. (假定不. _% @ R. v# S
是冰,是水开始加热) }' }% S7 w% \0 W7 X) Y v
我们可以认为,在需 要最大加热差值的时候,
( k3 l. _. j j仅用比例控制应当是开启全速加热。
7 e' p+ D3 B z, `( \: x所以我们/ U8 P* o5 b$ D
可以得到一个KP 的估计值。4 R5 R& `2 Z1 S% u2 p* {+ u
KP = 65535/80= 1000左右。这个意思是 最大温差对 应最快加热速度。
& R0 ~4 z% k B. Y2 B1 ~! b然后,假设KI=800, KD=300:比例系数Kp=最大寄存器差值- 实际情况巴温度等老最大差值门7 I/ g# Q, L: G5 U$ Z
注意,系数需要根据实际情况来整定,此为假设。' ~ {1 _- _" W( @% p
好,现在假定设置
. {7 h* O/ Q5 V2 O( v+ @% E4 Y4 G# c需要温度是60C, 而当前温度是
8 P5 F; `9 Y5 s- }20C.那么可以知道
* J+ N8 k! g1 `) V9 f M! N第一次' B& B) ?0 Z& e, C
U(k)=0
* F0 B6 w4 l/ [- I" o0 W6 s-最开始是没有占空比输出的。所以是占空比是 0
& F* Q8 {0 n2 h* H1 s. V5 wE(k)= 60-20 = 40
9 _. `+ V% P7 S$ Z/ e! Z-一第一次的误差
, R6 k+ v4 d& e# I7 E6 V, sE(k-1)=0
( Z: h+ z* @" z! Y/ L, {- .还没有上次,所以初始化为 0; w9 m" f' E5 F, D) p6 @$ W
E(k-2)=0 [' [) F/ C0 _' P( }
-还没有上上次,所以初始化为
6 R9 ^. D4 f2 d0 N5 Y由于KP假定是1000, 所以8 O* n& C+ V' ]) l
U[(k+1)= 40"1000 = 40000+ a, j' v" b: x2 j: U
所以,现在就可以按照; \, D, H+ D& p1 \% n5 c1 [$ a9 Z
占空比40000 来加热了。
% Y+ x( u3 Z2 d; q6 y" M& M由于热系统是一个缓慢变化的系统,8 G8 C4 g$ j J8 \
所以,加热需要- -段时间才可以看到效果,; k5 b" A/ s1 _7 ]4 @; h1 P
假设采用固# O( G" I- s7 Z& K8 v
定间隔时间来设计。这里取
9 b9 b0 I E3 M0 o5秒。
4 Z% h% C' z- F0 |" U5秒过后,假定温度上升了
* S. q4 @3 e6 m' F) \5 Q5C,当前温度为25C.6 C4 _% G" w, [4 N* A& D" ]9 t5 X
则计算第二次占空比过程。3 k* O* u' w/ B4 E( \
第二次$ d7 ?* k4 M) V. B. F3 Q5 B
U(k) = 40000; D. @: E3 q0 C# h" m' @, |
E(k)= 60-25=35% v' i( H4 H5 `: s
E(k-1)=40
+ Q) s1 s H) P8 i. k8 [E(k-2)=08 ~& Z+ S* i/ Q
U(k+1) = 40000 + 35"1000 - 40*800 + 0 = 430006 ^7 P6 l* z) g: h; |( p5 R
(加热加速了)
3 n: y+ r; T9 U! L0 g. y又过了5秒,假定温度上升了 6C.当前温度为 29C" O3 m7 ?& X& K: P; ~
第三次1 n" \( A, _8 a9 U
& k: S6 k, u% b" w, o: c0 @) E1 s& ~" ~. `: `$ l
|
|