jf050108 发表于 2009-5-16 15:25:10

PID温度控制参数的确定,已经实验3天了,温度控制曲线还是不理想啊。大家帮帮忙

我的毕业设计是对比色皿做温度控制,加热器件是TEC半导体制冷片。使用MAX1968驱动TEC
控制温度范围是20—60度,精度要到0.1
我现在也就做到最好0.5了,比设条件也比较简陋~问问大家这个精度能不能达到啊,给点提高精度建议。
现在确定PID参数很头疼~帮忙看看
开始是温度超过后TEC制冷的,后来发现掉的太多,改成自然冷却效果好了些,不过还是觉得曲线怎么到不了别人的那么好(论坛看见的)

jf050108 发表于 2009-5-16 15:28:37

网速有点卡,学校的网~
下午传图片上来

kalo 发表于 2009-5-16 16:00:36

TEC不能立即反向供电吧。
做个广告http://ourdev.cn/bbs/bbs_content.jsp?bbs_sn=1429786
或者搜索 自动控制的故事

xingcn 发表于 2009-5-16 16:18:52

如果是保温阶段,细心调调参数吧。还有就是你的传感器是否能达到这个精度(0.1度)。升温段降低升温速率,接近设定温度时采用观察加微调(减小P)。

shotstar 发表于 2009-5-16 16:30:01

LZ,外界温度高于设定温度是的时候,是不是要利用制冷片制冷呢?
贴个完整的框框图看看。

jf050108 发表于 2009-5-16 18:37:22

电路就是使用单片机控制D/A使用12位
温度传感器为DS18B20
现在先只做加温的控制,保温条件太差,TEC功率只有10W+估计降不了几度
贴我的温度控制曲线给大家
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_445333.JPG
(原文件名:p=0.3.JPG)

http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_445334.JPG
(原文件名:p=0.3 i=0.1.JPG)

http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_445335.JPG
(原文件名:p=0.4.JPG)

http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_445336.jpg
(原文件名:p=0.45.jpg)

http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_445337.JPG
(原文件名:p=0.5.JPG)

http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_445338.JPG
(原文件名:p=0.65.JPG)

http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_445339.JPG
(原文件名:p=0.7.JPG)

jf050108 发表于 2009-5-16 18:45:07

还有我用的PID控制程序
/**************************************************************/
//函数功能:PID控制程序
//入口函数:DoublePIDCalc
/**************************************************************/



typedef struct
{
    double ProportionalGain;
        double IntegralGain;
        double DerivativeGain;
        double InputErrorK_1;
        double IntegralPortionK_1;
        double PositivePIDLimit;
        double NegativePIDLimit;
}
PIDSING;
PIDSING pid;
float DoublePIDCalc(double GivenValue,double MeasureValue,PIDSING * pp)
{
          float dError,Error;
          Error = GivenValue - MeasureValue;
          pp ->IntegralPortionK_1 = Error + pp->IntegralPortionK_1;
          if(pp->IntegralPortionK_1 > pp->PositivePIDLimit)
          pp->IntegralPortionK_1 = pp->PositivePIDLimit;
          if(pp->IntegralPortionK_1 < pp->NegativePIDLimit)
                  pp->IntegralPortionK_1 = pp->NegativePIDLimit;
          dError = Error - pp->InputErrorK_1;
          pp ->InputErrorK_1 = Error;
          Error = pp->ProportionalGain * Error + pp->IntegralGain * pp->IntegralPortionK_1
                  + pp->DerivativeGain * dError;
          if(Error > pp->PositivePIDLimit)
                  Error = pp->PositivePIDLimit;
          if(Error < pp->NegativePIDLimit)
                  Error = pp->NegativePIDLimit;
          return Error;
}


/****************** PID 初始化 ***************************/
void reset_PID(void)                  //PID参数初始化
{
        pid.ProportionalGain = 5;               
        pid.IntegralGain   = 0;
        pid.DerivativeGain   = 0;
        pid.NegativePIDLimit = 0;
        pid.PositivePIDLimit = 1.5;//MAX1968以1.5V作为制冷和加热的基准,>1.5加热,<1.5制冷

}


这个是别处下的刚刚学习单片机,不怎么能看明白,只是先用着
还有其他参数的图片
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_445345.JPG
(原文件名:p=2 无制冷.JPG)

http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_445346.JPG
(原文件名:p=3.JPG)

http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_445347.JPG
(原文件名:p=3.5.JPG)

http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_445348.JPG
(原文件名:p=5.JPG)

http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_445349.JPG
(原文件名:p=7.JPG)

jf050108 发表于 2009-5-16 18:47:32

所有调节时的温度都设置为37度.
对问下2楼 TEC问什么不能马上反向供电,我直接拿来用的,看他介绍没什么阿

jf050108 发表于 2009-5-16 18:52:06

回复3楼,我的现在做加温呢,降温还没有考虑~想把加温精度调高一些再说

yplin27 发表于 2009-5-16 19:25:33

DS18B20精度没有0.1吧?

ycbx1569 发表于 2009-5-16 19:43:16

关注中

leafing 发表于 2009-5-16 19:49:00

18b20精度不够,建议调小P,稍微增加I,还有一点,PID的控制的周期其实和所控系统的热质量有关的,如果系统温度变化较快的可以适当增加PID计算的频率,反之减少即可

xingcn 发表于 2009-5-16 21:54:49

18b20精度达不到0.1,不要一下子将目标温度设定为37度,由于加热系统存在比较大的惯性,过大的误差会使系统在到达目标温度时刹不住车,你的所有温度曲线都出现了超调,应该有斜率的升温,也就是要给定一个升温斜率,PID按照这条斜率曲线逼近,升温时可以采用PD控制或PID,此时I作用不大,所以系数要小,甚至可以做积分分离,D的加入可最大限度遏制温度超调,弥补系统的滞后。调整方法:先调P,使其尽量逼近升温曲线,由于只有P调节,如果升温过程比较长,你将可以看到曲线出现大周期的振荡,即出现超调,小超调量是P调节比较理想的情况。再通过超调情况调节D(同时要微调P),使曲线处于升温曲线下方,遏制超调,同时将控制曲线转为小周期振荡,但不超调。最后调节I(同时要微调P,D),I的加入将会平滑控制曲线并减小升温过程中出现的静差。
    保温过程用PID,此时I很重要,此时P已经不起什么作用了,对温度来说,干扰也不是常出现,而且加热系统出现的干扰也同样有着惯性,所以此时要较少D而提升I,是它使温度最终趋向恒定,所以,建议用两套PID来控制这两个过程,或采用变参数来处理这两个过程,不要一视同仁。

Vincent007 发表于 2009-5-16 22:24:21

PID针对高精度温控有难度,一般需要加上前馈预测环节。

qxs5264 发表于 2009-5-16 22:47:26

这个没玩过,想要了解一下!

jf050108 发表于 2009-5-17 08:28:54

谢谢大家的指导,今天根据大家的建议,继续实验!

jf050108 发表于 2009-5-18 16:33:45

由于使用的传感器的原因,再加上外部隔热做的不太好,现在的控制精度时37度上下偏差0.25。
呵呵,毕设通过时没有问题了,晚上整理点我的数据资料上来。

Feeling_MCU 发表于 2009-5-18 18:03:03

牛B,到时候不要忘了分享一下啊,大哥向你请教

feng_matrix 发表于 2009-5-18 20:03:15

先量量下加热系统升温一度所需时间
再量量无加热降温一度需要时间
最后再对比下你的PID积分周期

hetao7241 发表于 2009-5-18 20:25:34

希望分享楼主的资料!!谢谢!!!还有要做成楼主的图形不知怎么做.谢谢!

jf050108 发表于 2009-5-20 20:10:23

加热做到精度0.25度,最高温度50度,分别设置42,47度精度为0.25。设置了55度上不去了,保持54.5上不去了,想想应该是使用另外的PID参数了,以后有机会把,=学校的事情忙忙再调。今天刚刚去买了风扇。想把制冷也做做。
这段时间也收获不少,给大家分享哈。
谢谢大家的关心~

zrx737 发表于 2009-5-20 21:17:41

温度是滞后系统确实比较麻烦
上楼说得对,30°和50°的控制参数是不一样的,因为散热速度是不一样的,加热效果也是不一样的

Friendz 发表于 2009-5-20 23:10:26

我用过成品的PID控制器,控制得很好,一般一次振荡以内就可调到0.1度。

楼主应该加保温,使系统受环境变化的影响降到最低。

wochai 发表于 2009-5-21 08:55:59

我以前也做过温度控制,但要求没这么高,05度,但空间较大,采用空气做传导介质
温度控制中,I是必须的

还有lZ的传导介质是什么

electrician 发表于 2009-5-21 09:01:10

PID应用,关注

ba_wang_mao 发表于 2009-5-21 10:56:49

PID调节时间要短

lxq2345 发表于 2009-5-21 11:52:52

PID调节时间要短?温度是大滞后系统啊,我的个人经验由于系统有滞后,所以采样时间最好和滞后时间差不多,然后形成一级预报~然后在用预报的数值做PD条件。在滞后环节中使用I是极其不稳定的,简单的说当你系统的温度超过已有的值,由于滞后,积分仍然在积分负值,这必然造成大量超调然后震荡~~~就像你图中那样。我也是以前仿真的经验,你可以用仿真调试,因为MATLAB调试的控制效果速度比较快。不要一位的改参数。而且MATLAB有自动PID参数的计算功能,很方便~~

jf050108 发表于 2009-5-21 15:05:36

楼上说的对,实验中也证明采样时间应该和之后时间差不多,略微小一点就可以了,这样才能发挥出d的效果。
调节过程中我也觉的I是很难调的,资料都说I可以矫正稳态误差,实验中证明确实可以的。传一个45和37度温度控制曲线。精度0.25。使用同一组PID值。p=0.43 i=0.15 d=11.7

保温是一定要做好的,不过我的条件比较简陋,只用了2cm厚的海绵外加硬纸板做了个小盒子~呵呵
回23楼,我的从上向下是比色皿,TEC半导体制冷片,散热片。
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446639.jpg
(原文件名:控制45度.jpg)
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446640.jpg
(原文件名:37度.jpg)

jf050108 发表于 2009-5-21 15:13:40

i的作用大家可以看看这两个图对比就知道了,设置温度均为37度
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446642.jpg
(原文件名:wu I.jpg)
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446644.jpg
(原文件名:i.jpg)

jf050108 发表于 2009-5-21 15:27:33

分段使用不同的PID是有必要的,我的参数在30-50度是可以的,但是设置到55度时就成了下面这个样子。
但是具体如何分段,还要根据自己的系统来看了。越做月觉得PID就是靠大量数据堆积出来的
以前的PID已经不适合50度以上的温度了~~
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446645.jpg
(原文件名:55du.jpg)

jf050108 发表于 2009-5-21 15:44:44

这个再对比一下 I 调节的作用
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446652.jpg
(原文件名:I的区别.jpg)

anxiangbo 发表于 2009-5-21 15:59:19

记号

jf050108 发表于 2009-5-21 16:18:51

D的调节作用~
有稳定的作用,这里不态明显,但是对前期的温度上升也有影响,会增加系统调节时间
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446653.jpg
(原文件名:d的作用.jpg)

jf050108 发表于 2009-5-21 16:29:29

回复19楼,我的是用串口把温度发出来然后用EXCEl制图就可以了,也是学的别人的,不过是很有用,分析起来清楚多了。呵呵~

707124285 发表于 2009-6-15 15:24:23

大家好!!!我也在弄PID温控。我用的是232通讯,显示的温度都是数字观察震荡不太方便也不直观,想请教一下怎么才能想上面这样用曲线表示出来?需要什么软件和硬件连接?我的qq:735092620.能帮的前辈帮帮忙

deepin 发表于 2009-6-16 09:55:43

MARK

ba_wang_mao 发表于 2009-6-16 11:47:03

程序有没有看见“斜率”,给定必须按照规定的斜率逼迫设置的温度。

  例如:设置“斜率”=37,表示每分钟升37度,也就是1分钟给定从0度上升到37度。

zchaoxinqing 发表于 2010-8-13 20:40:54

能发份资料给小弟不?我很好奇很想研究下啊,谢谢啦我qq是342587582

scat 发表于 2010-8-17 14:27:01

一直以为制冷片不能反接的...原来反接之后冷热面可以颠倒的啊

jordan 发表于 2010-8-18 10:42:09

完全不懂,但是很想学,一点点看吧

amazing030 发表于 2010-8-26 17:31:54

记号,也想做个小的恒温箱来玩

0331631 发表于 2010-8-26 22:38:57

mark有空研究一下PID

xuyongze 发表于 2010-10-18 21:20:22

我也在学习中。。。。可以发个资料给我吗?

xyq4513 发表于 2010-10-18 21:44:44

请问楼主是怎么控制的? PWM 吗?
PWM的话是怎么把计算出来的PID值跟PWM占空比对应起来?

rlogin 发表于 2010-10-18 23:41:01

围观

linyongzhan 发表于 2010-10-25 13:02:24

半导体为介质的温度控制,速度变化快,时变性强,如果想达到好的控制效果,建议加入智能控制.

XA144F 发表于 2010-10-25 13:12:05

用指数来收敛,速度或许快一些。

highnose 发表于 2010-10-25 13:14:55

嗯,学习

justing88 发表于 2011-1-8 16:12:17

楼主的分享精神很令人感动,我深受学习啊。。。。。。还有一个问题就是你的表格用EXCEL做的??如何做的那么好啊???

bluecat322 发表于 2011-5-6 10:15:56

这个不错,线mark一下,正在研究PID温控

neu_blur 发表于 2011-5-6 10:22:57

温度调节是大滞后控制对象,用PID很难调节的

lin2266286 发表于 2011-5-6 11:59:40

mark

FEEDERMC 发表于 2011-5-15 12:03:07

mark

lcmdw 发表于 2011-7-6 15:14:33

MARK

wuhaken 发表于 2011-7-6 15:48:03

mark 学习一下PID大小学的很浅哇

zjy9430 发表于 2011-7-6 16:22:56

mark!

zhanyanqiang 发表于 2011-11-4 12:43:12

制冷片能立即反向供电吗???

zykiss1 发表于 2011-11-8 10:29:29

你用的AD芯片的精度是多少啊?能到0.1吗?
还有就是去看看模糊PID,温度这方面用模糊PID的效果会更好。
我做恒温200度,从室温到200才18分钟,而且不过冲。

pengyouhao 发表于 2011-12-23 09:51:50

mark

tramp1986 发表于 2011-12-23 10:47:14

mark,bucuo

reloaded 发表于 2011-12-23 11:41:12

MAX1968太贵了,,,

nicksean 发表于 2011-12-23 12:37:38

mark

recluse 发表于 2011-12-23 16:10:19

这个图是很好做的。不用excel。太费事了。直接用串口输出后。拿matlab画图就行了。巨方便。

lcmdw 发表于 2012-1-5 21:42:11

mark

along0425 发表于 2012-1-14 12:39:06

mark

dingliming 发表于 2012-1-17 09:24:30

MARK

winterv 发表于 2012-2-7 11:32:11

从开始的图上看楼主标注的参数值,怎么觉得楼主只用了P,没有用I和D,这样只用了比例,没有用积分和微分,曲线一直在震荡,没有收敛的趋势

yangyiooo 发表于 2012-2-7 16:20:34

最近我也想做关于温度控制的,但不知道模糊控制和PID相比,那种控制效果会好一点呢?

dingliming 发表于 2012-2-10 05:54:15

好太好了

idata 发表于 2012-2-12 17:40:34

很棒!谢谢分享。
先保存一下,做个记号!

YYKJ_STM8 发表于 2012-2-22 12:46:53

不错,谢谢分享

avrwoo 发表于 2012-3-4 13:35:56

MARK

dayday 发表于 2012-3-6 19:38:57

学习中

zhuiqiu0 发表于 2012-4-3 13:18:36

PID应用,正要做呢

renxupeng 发表于 2015-11-18 18:05:11

谢谢!学习了
页: [1]
查看完整版本: PID温度控制参数的确定,已经实验3天了,温度控制曲线还是不理想啊。大家帮帮忙