找回密码
 注册
关于网站域名变更的通知
查看: 884|回复: 7
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

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

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

该用户从未签到

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 | 只看该作者
    學習學習學習學習
    3 J! o, r! j2 X" S8 w( X% O: W
  • TA的每日心情

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

    [LV.9]以坛为家II

    4#
    发表于 2022-3-24 10:10 | 只看该作者
    66666666666666& S+ D* e0 E+ v

    该用户从未签到

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

    [LV.9]以坛为家II

    6#
    发表于 2023-3-16 15:56 | 只看该作者
    学习学习,谢谢!
    7 w4 w7 z5 Q3 i+ |+ G
  • TA的每日心情

    2025-3-28 15:00
  • 签到天数: 272 天

    [LV.8]以坛为家I

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-14 05:19 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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