找回密码
 注册
查看: 760|回复: 7
打印 上一主题 下一主题

PID算法软件编写详解(重点推荐)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-1-19 09:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
PID算法5 M" a2 _7 z0 d- G
这个是PID 公式:, n: ^5 C+ N  `, S7 j, U( G
U(k+1)= U(k)+( KP"E(k)- KI"E(k-1)+ KD"E(k-2) )
. K' \8 J7 m4 V8 v/ L+ i对你的系统而言,  W. k6 p; P' P
U(k)就是当前占空比。我这里先假定 你的占空比对应 定时 器寄存器设置
+ Q+ T1 k# F$ m' G: @范圈是0-85535.同时假定 定时器设置为 a 的时候,
# e$ Y5 o; o, |. X1 p7 ?占空比输出为0%, 全部是低电平,完全不加热。65535 的时候,占空比输出100%, 全速加- x- O) i, t# O
热。/ N% O% U9 }0 c9 s) Z
E(k)是当前温度和设定温度的误差值  p' _) V, S0 ]" c' v0 z! ]
E(-1)是上次计算时的误差值6 d8 \8 B1 w) d! x1 ~7 F& c
E(k-2)是上上次计算时的误差值
: D" J: z8 _. E0 H  N0 R由于KP,KI, KD三个系数现在都不知道。需要整定,有自动整定,也有手动整定。我们4 {0 O( D# M. Q/ d" m
先采取手动整定的方案。. t; F; z- _. q8 @; M1 {; S& W
我们现在可以知道温度相差
6 G! w" @+ m5 R# Q& y( p8 f; V' b40C,显然,需要比较快速的加热。水温在正常系统使用的时% t2 `1 L& W9 M: k1 b
候,显然是0-100C的。0 R7 S1 @  m& c6 F. X7 _1 x
而你们这里需要目标温度是, ?$ w$ d+ S* u
30-60C,故最大加热的差值可以认为是
/ O: g- }# w+ |60-0 = 60. (假定不.
9 Q- Y4 H7 v3 |+ B& b# o是冰,是水开始加热)
' m4 ]2 L- M) E5 G/ g! ~8 f2 x我们可以认为,在需 要最大加热差值的时候,
' ^, [. y5 Z: P) Q; y仅用比例控制应当是开启全速加热。! {; `1 n0 y# [. }) Q" ]
所以我们
! y$ ]9 L' A  @2 M可以得到一个KP 的估计值。
3 n4 i3 i! e# O* B- ?9 s2 ZKP = 65535/80= 1000左右。这个意思是 最大温差对 应最快加热速度。0 A; w1 e; ?# n5 Y) v( n
然后,假设KI=800, KD=300:比例系数Kp=最大寄存器差值- 实际情况巴温度等老最大差值门
5 T9 B: c8 r% h" V$ U注意,系数需要根据实际情况来整定,此为假设。
9 }8 |* j9 L' d6 n5 h  a2 `好,现在假定设置
3 ?/ u+ y! w: b0 {需要温度是60C, 而当前温度是
5 D) `0 K% \, F* X20C.那么可以知道1 A5 p( ^, t9 r0 y- s" U
第一次
0 \" U/ d7 ~$ }U(k)=0
/ L) ?. n  y9 m-最开始是没有占空比输出的。所以是占空比是 0
) T8 K2 e! e8 z7 ~6 t1 y  ]3 fE(k)= 60-20 = 40' o7 O: E" }# Z* S% `
-一第一次的误差
  M$ N) q& c. aE(k-1)=0
. p2 Y* y& w- F5 M- .还没有上次,所以初始化为 0
6 ^) F4 t) [, o- ^& m: X( vE(k-2)=00 ^9 P0 y$ K" ]3 S
-还没有上上次,所以初始化为: H0 ^6 R  i% \! {8 U! C6 T) R
由于KP假定是1000, 所以
0 v* o- Z' Y% U8 d) W$ _U[(k+1)= 40"1000 = 40000
- j7 H5 R3 n7 u. L所以,现在就可以按照
6 P( z1 O. d( B) ]9 X5 `+ Y占空比40000 来加热了。
7 F% V7 M" z1 u6 v由于热系统是一个缓慢变化的系统,* z& W( r1 |- p; m" k
所以,加热需要- -段时间才可以看到效果,
1 W6 y6 o) _9 C1 u' s0 I假设采用固
, F$ x. z1 Z; I2 p9 e定间隔时间来设计。这里取- Z1 u8 \6 p5 F; ]: {0 Y
5秒。2 y3 T, s+ [# K% X. g+ J6 Q
5秒过后,假定温度上升了7 z( i9 N1 S& H" |/ K- q2 d
5C,当前温度为25C.
! E% u" ?7 `0 D( W; N! Q, s  Z7 s则计算第二次占空比过程。
+ ]# v& c9 v- J- @: Y, J* _4 S# j9 R第二次
4 W: P+ ]/ v3 E! ~U(k) = 40000. ^  U- I- Y. n4 P
E(k)= 60-25=35
7 {0 B' Z0 d/ b' c1 C, k) g) m" ^5 Y! [: gE(k-1)=40
( n: _" M3 P7 W. A0 i/ K, nE(k-2)=0
) Y7 `- d$ d! u+ A1 ]- t, v/ EU(k+1) = 40000 + 35"1000 - 40*800 + 0 = 43000
' V9 \- o* v% w% Y(加热加速了)
% d$ u4 z0 s, N3 }1 s8 |1 Y2 C又过了5秒,假定温度上升了 6C.当前温度为 29C
& [1 p# h8 {, j' T- x- q6 w第三次4 `) {+ M: c0 f' Y0 \- m
游客,如果您要查看本帖隐藏内容请回复

5 C* @8 h* V! ^+ Z. ]9 V$ V0 J" p% z" F" i3 o

该用户从未签到

2#
发表于 2020-1-19 16:56 | 只看该作者
U(k+1)= U(k)+( KP"E(k)- KI"E(k-1)+ KD"E(k-2) )
  • TA的每日心情
    开心
    2021-6-16 15:02
  • 签到天数: 68 天

    [LV.6]常住居民II

    3#
    发表于 2020-5-21 08:54 | 只看该作者
    學習學習學習學習
      a& i1 U5 {2 h1 D4 R
  • TA的每日心情

    2024-8-7 15:30
  • 签到天数: 396 天

    [LV.9]以坛为家II

    4#
    发表于 2022-3-24 10:10 | 只看该作者
    66666666666666
    % D9 l" c, o- h2 q- c

    该用户从未签到

    5#
    发表于 2023-3-8 11:27 | 只看该作者
    PID一直运行不好,参考一下这个。谢谢!
  • TA的每日心情
    开心
    2025-3-9 15:00
  • 签到天数: 517 天

    [LV.9]以坛为家II

    6#
    发表于 2023-3-16 15:56 | 只看该作者
    学习学习,谢谢!
    ) h8 ]6 I8 \8 R8 G
  • TA的每日心情

    2025-3-8 15:39
  • 签到天数: 257 天

    [LV.8]以坛为家I

    7#
    发表于 2023-11-18 09:51 | 只看该作者
    1111111111111
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-3-10 10:36 , Processed in 0.093750 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表