PID温度控制参数的确定,已经实验3天了,温度控制曲线还是不理想啊。大家帮帮忙
我的毕业设计是对比色皿做温度控制,加热器件是TEC半导体制冷片。使用MAX1968驱动TEC控制温度范围是20—60度,精度要到0.1
我现在也就做到最好0.5了,比设条件也比较简陋~问问大家这个精度能不能达到啊,给点提高精度建议。
现在确定PID参数很头疼~帮忙看看
开始是温度超过后TEC制冷的,后来发现掉的太多,改成自然冷却效果好了些,不过还是觉得曲线怎么到不了别人的那么好(论坛看见的) 网速有点卡,学校的网~
下午传图片上来 TEC不能立即反向供电吧。
做个广告http://ourdev.cn/bbs/bbs_content.jsp?bbs_sn=1429786
或者搜索 自动控制的故事 如果是保温阶段,细心调调参数吧。还有就是你的传感器是否能达到这个精度(0.1度)。升温段降低升温速率,接近设定温度时采用观察加微调(减小P)。 LZ,外界温度高于设定温度是的时候,是不是要利用制冷片制冷呢?
贴个完整的框框图看看。 电路就是使用单片机控制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) 还有我用的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) 所有调节时的温度都设置为37度.
对问下2楼 TEC问什么不能马上反向供电,我直接拿来用的,看他介绍没什么阿 回复3楼,我的现在做加温呢,降温还没有考虑~想把加温精度调高一些再说 DS18B20精度没有0.1吧? 关注中 18b20精度不够,建议调小P,稍微增加I,还有一点,PID的控制的周期其实和所控系统的热质量有关的,如果系统温度变化较快的可以适当增加PID计算的频率,反之减少即可 18b20精度达不到0.1,不要一下子将目标温度设定为37度,由于加热系统存在比较大的惯性,过大的误差会使系统在到达目标温度时刹不住车,你的所有温度曲线都出现了超调,应该有斜率的升温,也就是要给定一个升温斜率,PID按照这条斜率曲线逼近,升温时可以采用PD控制或PID,此时I作用不大,所以系数要小,甚至可以做积分分离,D的加入可最大限度遏制温度超调,弥补系统的滞后。调整方法:先调P,使其尽量逼近升温曲线,由于只有P调节,如果升温过程比较长,你将可以看到曲线出现大周期的振荡,即出现超调,小超调量是P调节比较理想的情况。再通过超调情况调节D(同时要微调P),使曲线处于升温曲线下方,遏制超调,同时将控制曲线转为小周期振荡,但不超调。最后调节I(同时要微调P,D),I的加入将会平滑控制曲线并减小升温过程中出现的静差。
保温过程用PID,此时I很重要,此时P已经不起什么作用了,对温度来说,干扰也不是常出现,而且加热系统出现的干扰也同样有着惯性,所以此时要较少D而提升I,是它使温度最终趋向恒定,所以,建议用两套PID来控制这两个过程,或采用变参数来处理这两个过程,不要一视同仁。 PID针对高精度温控有难度,一般需要加上前馈预测环节。 这个没玩过,想要了解一下! 谢谢大家的指导,今天根据大家的建议,继续实验! 由于使用的传感器的原因,再加上外部隔热做的不太好,现在的控制精度时37度上下偏差0.25。
呵呵,毕设通过时没有问题了,晚上整理点我的数据资料上来。 牛B,到时候不要忘了分享一下啊,大哥向你请教 先量量下加热系统升温一度所需时间
再量量无加热降温一度需要时间
最后再对比下你的PID积分周期 希望分享楼主的资料!!谢谢!!!还有要做成楼主的图形不知怎么做.谢谢! 加热做到精度0.25度,最高温度50度,分别设置42,47度精度为0.25。设置了55度上不去了,保持54.5上不去了,想想应该是使用另外的PID参数了,以后有机会把,=学校的事情忙忙再调。今天刚刚去买了风扇。想把制冷也做做。
这段时间也收获不少,给大家分享哈。
谢谢大家的关心~ 温度是滞后系统确实比较麻烦
上楼说得对,30°和50°的控制参数是不一样的,因为散热速度是不一样的,加热效果也是不一样的 我用过成品的PID控制器,控制得很好,一般一次振荡以内就可调到0.1度。
楼主应该加保温,使系统受环境变化的影响降到最低。 我以前也做过温度控制,但要求没这么高,05度,但空间较大,采用空气做传导介质
温度控制中,I是必须的
还有lZ的传导介质是什么 PID应用,关注 PID调节时间要短 PID调节时间要短?温度是大滞后系统啊,我的个人经验由于系统有滞后,所以采样时间最好和滞后时间差不多,然后形成一级预报~然后在用预报的数值做PD条件。在滞后环节中使用I是极其不稳定的,简单的说当你系统的温度超过已有的值,由于滞后,积分仍然在积分负值,这必然造成大量超调然后震荡~~~就像你图中那样。我也是以前仿真的经验,你可以用仿真调试,因为MATLAB调试的控制效果速度比较快。不要一位的改参数。而且MATLAB有自动PID参数的计算功能,很方便~~ 楼上说的对,实验中也证明采样时间应该和之后时间差不多,略微小一点就可以了,这样才能发挥出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) 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) 分段使用不同的PID是有必要的,我的参数在30-50度是可以的,但是设置到55度时就成了下面这个样子。
但是具体如何分段,还要根据自己的系统来看了。越做月觉得PID就是靠大量数据堆积出来的
以前的PID已经不适合50度以上的温度了~~
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446645.jpg
(原文件名:55du.jpg) 这个再对比一下 I 调节的作用
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446652.jpg
(原文件名:I的区别.jpg) 记号 D的调节作用~
有稳定的作用,这里不态明显,但是对前期的温度上升也有影响,会增加系统调节时间
http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_446653.jpg
(原文件名:d的作用.jpg) 回复19楼,我的是用串口把温度发出来然后用EXCEl制图就可以了,也是学的别人的,不过是很有用,分析起来清楚多了。呵呵~ 大家好!!!我也在弄PID温控。我用的是232通讯,显示的温度都是数字观察震荡不太方便也不直观,想请教一下怎么才能想上面这样用曲线表示出来?需要什么软件和硬件连接?我的qq:735092620.能帮的前辈帮帮忙 MARK 程序有没有看见“斜率”,给定必须按照规定的斜率逼迫设置的温度。
例如:设置“斜率”=37,表示每分钟升37度,也就是1分钟给定从0度上升到37度。 能发份资料给小弟不?我很好奇很想研究下啊,谢谢啦我qq是342587582 一直以为制冷片不能反接的...原来反接之后冷热面可以颠倒的啊 完全不懂,但是很想学,一点点看吧 记号,也想做个小的恒温箱来玩 mark有空研究一下PID 我也在学习中。。。。可以发个资料给我吗? 请问楼主是怎么控制的? PWM 吗?
PWM的话是怎么把计算出来的PID值跟PWM占空比对应起来? 围观 半导体为介质的温度控制,速度变化快,时变性强,如果想达到好的控制效果,建议加入智能控制. 用指数来收敛,速度或许快一些。 嗯,学习 楼主的分享精神很令人感动,我深受学习啊。。。。。。还有一个问题就是你的表格用EXCEL做的??如何做的那么好啊??? 这个不错,线mark一下,正在研究PID温控 温度调节是大滞后控制对象,用PID很难调节的 mark mark MARK mark 学习一下PID大小学的很浅哇 mark! 制冷片能立即反向供电吗??? 你用的AD芯片的精度是多少啊?能到0.1吗?
还有就是去看看模糊PID,温度这方面用模糊PID的效果会更好。
我做恒温200度,从室温到200才18分钟,而且不过冲。 mark mark,bucuo MAX1968太贵了,,, mark 这个图是很好做的。不用excel。太费事了。直接用串口输出后。拿matlab画图就行了。巨方便。 mark mark MARK 从开始的图上看楼主标注的参数值,怎么觉得楼主只用了P,没有用I和D,这样只用了比例,没有用积分和微分,曲线一直在震荡,没有收敛的趋势 最近我也想做关于温度控制的,但不知道模糊控制和PID相比,那种控制效果会好一点呢? 好太好了 很棒!谢谢分享。
先保存一下,做个记号! 不错,谢谢分享 MARK 学习中 PID应用,正要做呢 谢谢!学习了
页:
[1]