【申精】答网友问:加热系统的PID算法方案!

2020-03-07 17:52发布

收到网友的邮件,让我分析以下 关于加热系统的 PID算法。这里初步给了一个方案,请各位参考参考,由于很久没有做PID这一方面的工作了,有错误难免存在!若有问题,欢迎批评指正。谢谢!
***************************************************求救邮件*******************************************
emailli你好,我在维库电子市场的一个关于pid的帖子里看到你对楼主的回复,表示了自己对pid的理解,我现在也越到了一个关于pid          计算结果输出值与需要控制的量之间对应关系的问题,想了很长时间了都没有想明白,希望你能够有时间帮我指点一下。谢谢……

       我要做的是用一个温度传感器采集水温,经过一个arm芯片(stm13)控制水温。水温要求是在30-60度之间随意设定,然后能在设定温度处保持,精度要求是上下一度。。。要求用pid算法进行处理,我看了一些pid的介绍,能够理解它的两种数字pid算法的推导公式。。我用采集到的真实温度与设定温度进行比较,得出误差e,这个误差经过pid算法之后,得出输出值out,然后再根据这个out值控制加热设备(现在的初步向想法是控制加热的占空比),但是我用了好几天也没有找出这个out的变化规律和e的变化规律之间有什么关系,也就是无法得出如何用out值去调节占空比。。。比如,当out是多大的时候给大的占空比加热,当out是多大的时候就应该停止加热。
      这个问题我现在已经想了很长时间了,但是还没有想出来,可能是我在哪个方面理解有问题,请你指教。。。谢谢。
--乾坤
******************************************求救邮件*******************************************
|
|

*********************************************答复方案****************************************
这个是PID公式:
U(k+1) = U(k) + ( KP*E(k) - KI*E(k-1) + KD*E(k-2) )
对你的系统而言,U(k)就是当前占空比。我这里先假定 你的占空比对应 定时器寄存器设置范围是 0-65535.同时假定 定时器设置为0的时候,
占空比输出为0%,全部是低电平,完全不加热。65535的时候,占空比输出100%,全速加热。
E(k)是当前温度和设定温度的误差值
E(k-1)是上次计算时的误差值
E(k-2)是上上次计算时的误差值


全文请移步:
http://blog.21ic.com/user1/3407/archives/2011/85193.html
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
20条回答
yoyobluefish
2020-03-08 10:22
4楼的公式U(k+1) = U(k) + ( KP*E(k) - KI*E(k-1) + KD*E(k-2) )有点问题,PID公式是U(k) = U(k-1) +  {KP*[E(k)-E(k-1)] + KI*E(k) + KD*[E(k)+E(k-2)-2*E(k-1)]}整理一下是U(k) = U(k-1)+aE(k)-bE(k-1)+cE(k-2),其中,a=KP+KI+KD ,b=KP+2KD,c=KD;大家发现和4楼的公式差不多,有木有。调整a,b,c值也就是调整KP,KI,KD值,但还是不要混为一谈,毕竟KP,KI,KD通常都是分别代表比例项,积分项,微分项系数。后面整定的思路是根据KP,KI,KD的意义来整定的,而不是a,b,c,这也是不要混淆的原因。

一周热门 更多>