搜索
bottom↓
回复: 145

完全抄袭,PID温控调试过程

  [复制链接]

出0入0汤圆

发表于 2011-1-12 09:37:52 | 显示全部楼层 |阅读模式
最近做一个类似电吹风的案子,需要对风温做闭环控制,开始使用模糊控制的方法,稳态只能做到+-5度;效果不理想,看了fsmcu在本站发表的帖子http://www.ourdev.cn/bbs/bbs_content_all.jsp?bbs_sn=936512后,照猫画虎,通过几次实验确定了PID参数,热风稳态温度误差控制在+-1度左右,效果不错滴,下面把整个过程发上来!

阿莫论坛20周年了!感谢大家的支持与爱护!!

阿莫论坛才是最爱国的,关心国家的经济、社会的发展、担心国家被别国牵连卷入战争、知道珍惜来之不易的和平发展,知道师夷之长,关注世界的先进文化与技术,也探讨中国文化的博大精深,也懂得警惕民粹主义的祸国殃民等等等等,无不是爱国忧民的表现。(坛友:tianxian)

出0入0汤圆

 楼主| 发表于 2011-1-12 09:45:51 | 显示全部楼层
电热丝250W/220VAC,可控硅控制AC导通半波个数,功率分成32级;风机是12VDC,350mA。

出0入0汤圆

 楼主| 发表于 2011-1-12 09:58:55 | 显示全部楼层
按照fsmcu的方法,先用u(t) = kp * e(t)进行功率控制,通过几次实验确定出现临界振荡,得到振荡周期Pc及临界振荡比例因子kc,最后根据Ziegler_Nichols法计算出实际的Kp、Ki、Kd。
u代表功率,e代表每个时刻的温度偏差值(设定温度-实际温度)。

出0入0汤圆

 楼主| 发表于 2011-1-12 10:08:29 | 显示全部楼层
由于电热丝的热惯性小,先使用较小的温度取样/控制周期Ts=0.5秒,kc比例因子选2.625,控制板上显示传感器检测的温度瞬时值以及可控硅的功率等级(1次/秒),用手机拍出并整理成图如下:

(原文件名:T0.5K2.625.png)
可以看出,振荡周期为10s以上,Z_N准则,检测周期应取1/10振荡周期比较合适,后面的Ts增大,继续一次实验。

出0入0汤圆

 楼主| 发表于 2011-1-12 10:15:47 | 显示全部楼层
Ts=1s,Kc=3.0,实验结果如下:

(原文件名:T1K3.0.png)
可以看出Kc=3.0时,振荡比较充分,振荡周期Pc=12.5左右。

出0入0汤圆

 楼主| 发表于 2011-1-12 10:21:08 | 显示全部楼层
Ts=1.25s,Kc=2.2:

(原文件名:T1.25K2.2.png)
振荡有所收敛,比例因子偏小。

出0入0汤圆

发表于 2011-1-12 10:24:25 | 显示全部楼层
不错,顶一下。

出0入0汤圆

 楼主| 发表于 2011-1-12 10:26:15 | 显示全部楼层
Ts=1.25s,Kc=2.6:

(原文件名:T1.25K2.6.png)
这个差不多就是临界振荡了。

出0入0汤圆

 楼主| 发表于 2011-1-12 10:46:09 | 显示全部楼层
最后确定Ts=1.25s,Kc=2.5;2.5=10/4,方便代码中使用整数乘法,用移位避免除法,并舍弃浮点数运算。

用Ziegler_Nichols法,计算出实际可用PID系数:
Kp=0.65*Kc=1.625
Ki=Kp*Ts/Ti=Kp*Ts/(0.5*Pc)=2*Kp*Ts/Pc=0.3125
Kd=Kp*Td/Ts=0.12*Kp*Pc/Ts=2.028;

位置式PID直接用公式:u(t) = kp * e(t) + ki * [e(1) + e(2) + ....+ e(t)] + kd * [e(t) - e(t-1)];这个离散积分的公式[e(1) + e(2) + ....+ e(t)] 让人纠结;所以->

改用增量式PID:⊿u=u(k)-u(k-1)=Kp*[1+T/Ti+Td/T]*e(k)-Kp*[1+2*Td/T]*e(k-1)+Kp*[Td/T]*e(k-2)=A*e(k)+B*e(k-1)+C*e(k-2)
其中:
A=Kp*[1+T/Ti+Td/T]
B=-Kp*[1+2*Td/T]
C=Kp*[Td/T]
进一步
A=Kp*[1+2*T/Pc+0.12*Pc/T]=3.9655
B=-Kp*[1+0.12*Pc/T]=-5.681
C=Kp*[0.12/T]=2.028

程序改用功率增量公式u(t)=u(t-1)+⊿u;温度控制效果如下:

(原文件名:PID.png)

注:图例中的“加权”是相邻温度温度平均值曲线。稳态区温度控制在+-1度,偶尔会到+-2度。

出0入0汤圆

 楼主| 发表于 2011-1-12 11:01:24 | 显示全部楼层
为加快温升/降速度,在温差过大的时候,直接用满/零功率加热,随后会带来一定的温度过冲,实际中可以调整PID温控的范围幅度,在温升速度和过冲幅度之间取一个均衡!
上图中设定+-12度PID范围,最大过冲大约6度

出0入0汤圆

发表于 2011-1-12 11:01:36 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-1-12 11:19:55 | 显示全部楼层
吗日寇

出0入0汤圆

发表于 2011-1-12 12:02:35 | 显示全部楼层
关注,

出0入0汤圆

发表于 2011-1-12 12:07:06 | 显示全部楼层
感谢楼主提供的资料!

出0入0汤圆

发表于 2011-1-12 12:12:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-12 12:14:14 | 显示全部楼层
楼主是怎么将采集的数据做成图片的能否给个说明或给一些资料。谢谢!

出0入0汤圆

发表于 2011-1-12 12:23:18 | 显示全部楼层
mark

出0入8汤圆

发表于 2011-1-12 12:30:43 | 显示全部楼层
也正在搞这个,关注!!!

出0入0汤圆

发表于 2011-1-12 12:34:06 | 显示全部楼层
很实用啊

出0入0汤圆

发表于 2011-1-12 12:35:22 | 显示全部楼层
mark

出0入20汤圆

发表于 2011-1-12 12:36:22 | 显示全部楼层
这个效果不错

出0入0汤圆

发表于 2011-1-12 13:30:02 | 显示全部楼层

出0入0汤圆

发表于 2011-1-12 13:38:15 | 显示全部楼层
感谢

出0入0汤圆

 楼主| 发表于 2011-1-12 13:50:20 | 显示全部楼层
回复【16楼】hetao7241
-----------------------------------------------------------------------

拍成视频,播放一定时间(我的是1s)/暂停,记下N个温度值,填入excel中,点击“图表向导”就可以了。

出0入0汤圆

发表于 2011-1-12 13:58:07 | 显示全部楼层
jh

出0入93汤圆

发表于 2011-1-12 16:56:06 | 显示全部楼层
mark回复【16楼】hetao7241
-----------------------------------------------------------------------

excel就行。

mark算法

出0入0汤圆

发表于 2011-1-12 17:23:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-12 17:32:28 | 显示全部楼层
好东西,收藏

出0入0汤圆

发表于 2011-1-12 17:46:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-12 18:22:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-12 18:52:19 | 显示全部楼层
PID算法 mark

出0入0汤圆

发表于 2011-1-12 18:53:29 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-12 19:17:12 | 显示全部楼层
太清晰明了了,非常好。

出0入0汤圆

发表于 2011-1-12 19:34:11 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-1-12 19:38:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-1 15:47:22 | 显示全部楼层
回复【7楼】feiyue
ts=1.25s,kc=2.6:


(原文件名:t1.25k2.6.png)
引用图片
这个差不多就是临界振荡了。
-----------------------------------------------------------------------

最后公式中:
A=Kp*[1+2*T/Pc+0.12*Pc/T]=3.9655
B=-Kp*[1+0.12*Pc/T]=-5.681
C=Kp*[0.12/T]=2.028

T 是啥?

出0入0汤圆

发表于 2011-2-1 16:55:39 | 显示全部楼层
支持

出0入0汤圆

发表于 2011-2-1 18:14:46 | 显示全部楼层
很好,谢谢

出0入0汤圆

发表于 2011-2-1 23:55:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-2 00:08:07 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-2 11:19:17 | 显示全部楼层
不错

出0入0汤圆

发表于 2011-2-4 22:17:47 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-8 13:42:36 | 显示全部楼层
不错 mark

出0入0汤圆

 楼主| 发表于 2011-2-22 20:18:44 | 显示全部楼层
回复【36楼】wzavr
-----------------------------------------------------------------------

T就是那个测温/控制间隔周期。

出0入0汤圆

发表于 2011-2-22 21:27:26 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2011-2-22 21:39:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-22 22:49:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-22 22:56:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-23 14:47:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-26 15:33:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-28 10:47:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-2 20:15:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-2 20:46:01 | 显示全部楼层
mark 学习

出0入0汤圆

发表于 2011-5-2 21:33:19 | 显示全部楼层
mark

我不歪楼

出0入0汤圆

发表于 2011-5-2 21:36:31 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-5-2 22:01:33 | 显示全部楼层
支持

出0入0汤圆

发表于 2011-5-2 22:30:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-2 22:37:11 | 显示全部楼层
这是我作为自动化学生见到的第一个PID应用,苍天阿。。大地阿。。

出0入0汤圆

发表于 2011-5-3 08:49:42 | 显示全部楼层
强贴

出0入0汤圆

发表于 2011-7-4 16:06:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-4 17:04:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-5 18:06:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-18 17:31:31 | 显示全部楼层
mark

出0入4汤圆

发表于 2011-7-18 17:40:03 | 显示全部楼层
PID温控

出0入0汤圆

发表于 2011-7-18 17:45:55 | 显示全部楼层
建议酷

出0入0汤圆

发表于 2011-7-18 17:48:09 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-30 23:11:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-31 00:00:12 | 显示全部楼层
回复【16楼】hetao7241
楼主是怎么将采集的数据做成图片的能否给个说明或给一些资料。谢谢!
-----------------------------------------------------------------------

可以看出是EXCLE

用MATLAB也可以吧

先用串口采集就行

出0入0汤圆

发表于 2011-7-31 00:28:07 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-31 11:28:57 | 显示全部楼层
MARK   最近准备调PID

出50入0汤圆

发表于 2011-7-31 12:52:09 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-31 15:12:56 | 显示全部楼层
东西好呀
楼主把参考代码放点上来

出0入0汤圆

发表于 2011-8-1 19:49:11 | 显示全部楼层
回复 积累

出0入0汤圆

发表于 2011-8-2 08:46:40 | 显示全部楼层
学以致用,不错啊

出0入0汤圆

发表于 2011-8-5 10:30:45 | 显示全部楼层
不会真要拍成视频慢慢抄吧。。

出0入0汤圆

发表于 2011-11-24 16:38:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-24 16:45:20 | 显示全部楼层
顶PID

出0入0汤圆

发表于 2012-2-1 08:19:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-1 09:17:45 | 显示全部楼层
感谢

出0入0汤圆

发表于 2012-2-1 11:06:21 | 显示全部楼层
准备做个PID的烙铁

出0入0汤圆

发表于 2012-2-1 11:29:40 | 显示全部楼层
感觉这个可以COOL了!!

出0入0汤圆

发表于 2012-2-1 11:38:17 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-2-1 12:26:55 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-1 13:08:34 | 显示全部楼层
写的很详细 顶一个!

出0入0汤圆

发表于 2012-2-2 22:24:52 | 显示全部楼层
关注学习!

出0入0汤圆

发表于 2012-3-5 21:14:43 | 显示全部楼层
顶PID控温

出0入0汤圆

发表于 2012-3-5 22:41:50 | 显示全部楼层
实践帖

出0入0汤圆

发表于 2012-3-5 23:58:56 | 显示全部楼层
MARK!

出0入0汤圆

发表于 2012-3-6 06:18:54 | 显示全部楼层
祝贺

出0入0汤圆

发表于 2013-1-18 11:02:22 | 显示全部楼层
顶一下。

出0入0汤圆

发表于 2013-1-18 20:39:58 来自手机 | 显示全部楼层
不错,学习一下

出0入0汤圆

发表于 2013-1-18 20:56:10 | 显示全部楼层
mark算法

出0入0汤圆

发表于 2013-1-19 12:13:31 来自手机 | 显示全部楼层
mark         

出0入0汤圆

发表于 2013-1-20 11:22:45 | 显示全部楼层
mark   

出0入0汤圆

发表于 2013-2-4 15:49:29 | 显示全部楼层
挺好,,经典,,,

出0入0汤圆

发表于 2013-2-20 19:42:00 | 显示全部楼层
NICE GOING

出0入0汤圆

发表于 2013-2-23 07:19:30 | 显示全部楼层
分析的很头透彻  

出0入0汤圆

发表于 2013-2-23 08:05:06 | 显示全部楼层
做个记号!以后研究!

出0入0汤圆

发表于 2013-2-23 10:03:43 | 显示全部楼层
好,正好有用啊

出0入0汤圆

发表于 2013-3-6 19:56:55 | 显示全部楼层
羡慕楼主,我的水温控制系统振荡都要200多秒,苦逼的系统,精度还要到0.1,只做到0.5
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-16 14:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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