|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
PID算法
, C" }( c; p/ ^8 p& f这个是PID 公式:
0 v6 C/ i8 B: Z7 r {U(k+1)= U(k)+( KP"E(k)- KI"E(k-1)+ KD"E(k-2) )
. F1 b( m8 c# \; |+ ?对你的系统而言,
! L/ F) O6 e7 x, a* Q2 x6 }8 mU(k)就是当前占空比。我这里先假定 你的占空比对应 定时 器寄存器设置; l6 {# _9 M8 {5 Y" N2 O
范圈是0-85535.同时假定 定时器设置为 a 的时候,/ d( v$ t7 L+ Y0 @+ P. z
占空比输出为0%, 全部是低电平,完全不加热。65535 的时候,占空比输出100%, 全速加( s, ^" T0 X. P
热。0 I8 m/ z0 o% x% K7 u
E(k)是当前温度和设定温度的误差值* X& d6 e& \ ~+ P' z) V
E(-1)是上次计算时的误差值1 c# X2 E) N( R8 ^# n% m
E(k-2)是上上次计算时的误差值
& ?+ R4 |% }, T' S( ]" m! a2 v* U由于KP,KI, KD三个系数现在都不知道。需要整定,有自动整定,也有手动整定。我们
& p/ I' K8 }2 ?7 \# o' ~, k3 B先采取手动整定的方案。$ H' f# ]$ K2 F# b3 h+ d# G( P
我们现在可以知道温度相差# v' F5 e+ X4 P! _; a9 W( G
40C,显然,需要比较快速的加热。水温在正常系统使用的时: @" s+ M7 W1 `1 D; O
候,显然是0-100C的。
& F& K' `1 u1 n. K/ F! n而你们这里需要目标温度是
5 F( D% r+ J3 s) {2 ^30-60C,故最大加热的差值可以认为是
4 _9 l8 h1 u, K; J! x9 o! ?2 l60-0 = 60. (假定不.
+ d: ?8 g/ T9 Q. `4 G' A9 J是冰,是水开始加热)
: O1 R5 c3 H( C) U5 l+ _我们可以认为,在需 要最大加热差值的时候,
. w% l" k7 s# N) `' H仅用比例控制应当是开启全速加热。: n) {/ s1 h& M/ C) m0 J; d
所以我们
* z& N- i0 [/ C3 \9 h6 U可以得到一个KP 的估计值。7 D" u& Z% n/ _1 m/ K- k
KP = 65535/80= 1000左右。这个意思是 最大温差对 应最快加热速度。
: f2 q; O- E" F: C然后,假设KI=800, KD=300:比例系数Kp=最大寄存器差值- 实际情况巴温度等老最大差值门
6 _) B" u5 |" R; `* W+ G' _, A, E+ w% L注意,系数需要根据实际情况来整定,此为假设。
& x5 r. u: l ^" Q+ R7 |6 o; E好,现在假定设置! h) [* \0 s2 f0 p. r: f
需要温度是60C, 而当前温度是3 H- J# y3 L2 m9 y7 ]2 s/ R$ N: z7 D
20C.那么可以知道2 [! V6 L9 d4 ~, }9 P: E/ ~! h
第一次
) k. O) F+ @5 [1 V: o% E6 AU(k)=0
4 W1 T, L+ v: u5 f9 V* |-最开始是没有占空比输出的。所以是占空比是 0# S$ e* V# u A/ C) f' j
E(k)= 60-20 = 40/ Q; C. i: s+ @; W
-一第一次的误差4 s$ {* N. r* z1 @8 g
E(k-1)=0
( u; X; E! b* d4 X5 J' |- i+ w8 Y( Q- .还没有上次,所以初始化为 05 w6 L1 {& _& L) x0 x6 Z
E(k-2)=03 y8 H9 ~- P. v4 N
-还没有上上次,所以初始化为. V2 c8 A) M0 ^. m! f
由于KP假定是1000, 所以
, D& \1 v3 k# |$ E% K! u5 ?. rU[(k+1)= 40"1000 = 40000
! q2 Z! S3 `% s/ n所以,现在就可以按照
5 r' f& I9 P9 i9 L) {占空比40000 来加热了。
0 n0 A6 O, U" r: [& B' t7 o由于热系统是一个缓慢变化的系统,
- F9 Z( K F: c所以,加热需要- -段时间才可以看到效果,4 V$ j6 H* Q6 O
假设采用固, ]1 o) A0 I Y9 ~; z/ I
定间隔时间来设计。这里取
, z# p ~5 r) I d5秒。3 d9 z, H; @9 u. T7 l* L5 I% w
5秒过后,假定温度上升了2 H9 V9 \- X# F
5C,当前温度为25C.
( J, q; Z! Z: F8 f8 b$ {7 @则计算第二次占空比过程。* @# X9 j' V: u- _" n
第二次
2 @7 y D0 z/ a& V) }/ XU(k) = 400006 U% D* s# b6 V9 a% c, r
E(k)= 60-25=35 _# l' F2 \! Y4 G6 y6 y# k; q
E(k-1)=40" H/ B. s$ x9 s5 l0 R1 a8 o8 o
E(k-2)=0
6 d' R* J% |/ _# x/ @! cU(k+1) = 40000 + 35"1000 - 40*800 + 0 = 43000
( W/ S+ ^0 N. o(加热加速了)
$ y) e! o0 {; ~6 E9 Q& {又过了5秒,假定温度上升了 6C.当前温度为 29C
8 u2 S' j, v& F* K- v4 }1 r0 r I第三次
# V8 x- c: s2 c0 T( u0 e" H$ y3 m" l0 U$ @) H- X* X3 E
/ b& O1 v0 P$ X% i; p' _+ Q |
|