搜索
bottom↓
回复: 29

只有继电器,没用可控硅,能否做精确的温度调节?急~

[复制链接]

出0入0汤圆

发表于 2011-6-20 17:31:51 | 显示全部楼层 |阅读模式
硬件已经不能更改了,mcu为atmage128,用一个IO控制继电器,继电器控制加热系统;用ADC采集温度现在要进行恒温控制,波动范围能做到多精确?开始没见到硬件时,打算是用PID调节的,后来发现是继电器控制!而PID调节需要快速切换加热系统状态,但是继电器的切换频率很低的,才几十赫兹,肯定不能用PID调节。我现在要求温度控制在正负1℃,设定温度在40-100℃,请问有谁有高招?急~

出0入0汤圆

发表于 2011-6-20 17:53:34 | 显示全部楼层
和你的加热系统的热容量和加热功率等有关。
一般情况下,温度控制系统的温度变化比较慢,继电器完全可以满足。
但是对于温度变化很快的系统,不建议用继电器。

出0入0汤圆

 楼主| 发表于 2011-6-20 18:02:19 | 显示全部楼层
回复【1楼】gx_huang  
-----------------------------------------------------------------------

我所要控制的对象是一个粉笔盒大小的保温箱,加热速度大概在每1.5秒上升0.1℃(平均情况),之前在网上看到的PID算法方案都是用PWM控制的,而现在的硬件决定了我只能用IO控制,而PID算法是一个逐步逼近的过程,我担心随着逼近会导致很频繁的切换继电器,如果频繁切换继电器就麻烦了。我现在用的是用简单的非PID调节,发现有问题,不能很好的恒定温度。程序很大,不方便粘贴。求简单的控制算法。急~

出0入96汤圆

发表于 2011-6-20 18:19:58 | 显示全部楼层
通过实验,预算出不同温差需要开启的加热时间,然后定周期调节,
比如温差1℃时,开启继电器3min,那么如果设定温度比目前高的时候,就一次性开3分钟,保持2分钟,再一次判断温差,直到稳定,具体的和你的保温效果,加热功率,加热设备的热惯性有关,

出0入0汤圆

 楼主| 发表于 2011-6-20 18:52:38 | 显示全部楼层
回复【3楼】gallle  
-----------------------------------------------------------------------

哈哈,“英雄所见略同”,只能这么办了,正在修改。多谢~~~

出0入0汤圆

发表于 2011-6-20 20:27:07 | 显示全部楼层
回复【4楼】rkernel
回复【3楼】gallle   
-----------------------------------------------------------------------
哈哈,“英雄所见略同”,只能这么办了,正在修改。多谢~~~
-----------------------------------------------------------------------

回复【3楼】gallle
通过实验,预算出不同温差需要开启的加热时间,然后定周期调节,
比如温差1℃时,开启继电器3min,那么如果设定温度比目前高的时候,就一次性开3分钟,保持2分钟,再一次判断温差,直到稳定,具体的和你的保温效果,加热功率,加热设备的热惯性有关,
-----------------------------------------------------------------------

这种控制方式和模糊控制方法比较相近,其实,对于这种温度变化较缓慢的量,用模糊控制感觉比PID效果要好,关键是模糊量的定义要把握好。

出0入0汤圆

 楼主| 发表于 2011-6-22 10:28:05 | 显示全部楼层
回复【5楼】tome001  
-----------------------------------------------------------------------

昨天做了个实验,测试结果蛮理想,不过在处理过冲的时候要取提前量,这个提前量是与加热前系统当前温度有关的,所以在不同的环境温度下有不同的过冲量,不过基本满足设计要求,谢了各位了~

出0入0汤圆

发表于 2011-6-22 12:18:24 | 显示全部楼层
回复【楼主位】rkernel
硬件已经不能更改了,mcu为atmage128,用一个io控制继电器,继电器控制加热系统;用adc采集温度现在要进行恒温控制,波动范围能做到多精确?开始没见到硬件时,打算是用pid调节的,后来发现是继电器控制!而pid调节需要快速切换加热系统状态,但是继电器的切换频率很低的,才几十赫兹,肯定不能用pid调节。我现在要求温度控制在正负1℃,设定温度在40-100℃,请问有谁有高招?急~
-----------------------------------------------------------------------

lz实际对PID或模糊控制的精髓还是没有掌握。

通常书本和理论学习PID,都是模拟的计算和推导,便于理解概念。

在实际应用中,采用计算机或MCU控制时,一定是数字化的PID或模糊控制,这里就需要把时间离散化,间隔为t,这个t的大小是根据实际系统决定的。

按你的条件,在全程加热过程中,温度变化1度最小需要多少时间,这个时间就是t,一般应用中的恒温系统,在20ms的时间里温度变化不会超过1度,所以继电器是可以用的(不考虑寿命问题)

至于能比较好的解决过冲、振荡等问题,需要做2阶PID的控制的。

在温度控制中,一阶PID是控制温度变化的速度,二阶是控制温度变化的加速度(温度变化速度的速度)。

这个题目是全国大学生电子竞赛的题目(好象是第2届),我带的一组获上海一等奖。但由于扩展的打印机部分没有连通(这个部分是纯交给学生做的,主要部分wo......)。

今年又有比赛了,所以多说几句。不过我早就洗手了,原因在我编写教材的前言中说过。

出0入0汤圆

 楼主| 发表于 2011-6-22 12:55:57 | 显示全部楼层
回复【7楼】machao  
-----------------------------------------------------------------------

多谢马老师,恒温系统温度上升1℃需要5秒钟,也就是说,可以将这5秒钟分成5份,每份为0.2℃,然后用PID调节,不知道思路是否正确。

出0入0汤圆

发表于 2011-6-22 17:11:34 | 显示全部楼层
回复【7楼】machao
-----------------------------------------------------------------------

可能是第三届

出0入0汤圆

发表于 2011-6-22 18:10:44 | 显示全部楼层
it is quite simple:

1) turn on the relay / heater if the temperature is below the lower limit;
2) turn off the relay / heater if the temperature is above the upper limit.

the upper limit > the lower limit. the wider the gap, the less frequently the relay will kick in / out.

the temperature will fluctuation between the lower limit and the upper limit.

出0入0汤圆

 楼主| 发表于 2011-6-22 21:27:40 | 显示全部楼层
回复【10楼】millwood0  
-----------------------------------------------------------------------
the method you say that is what I did. now, temperature-control was meet the requirements.
thanks for your reply.

出0入0汤圆

发表于 2011-6-23 17:06:03 | 显示全部楼层
上面可以说体现了PID的基本原理,适合简单应用和要求不高的场合。因为如何定义以下这些东西,不清楚。

lower limit、upper limit、尤其是the less frequently the relay will kick in / out。

后面看似采用了PWM,那么PWM的频率多少?在the upper limit > the lower limit. the wider the gap之间的使用的占空比又应该是多少?如果占空比为20%,那么PWM一个周期为100ms,还是10分钟?大家马上明白,若为10分钟,肯定不行的。

如果是高手,做过这样的DD,有经验,会采用经验数据,稍微调整一下就可以了。

但从学习的角度,还是应该掌握理论,这样才能真正掌握和知道如何正确的选择数据。

================================================================================
如果你的系统,热容量(热惯性)大,就可能发生过冲或抖动现象。

比如,现在的温度是10度,要求加热到80度,允许范围在79-81度。

如果你全部打开继电器,从10度加热到79度,此时就是关掉继电器,由于热惯性的作用,此时温度可能会继续上升,一直到83度,才会开始下降。这个就是过冲了。

实际上,应该加热到75度后,在75-80度之间,就需要采用PWM方式来控制继电器的关断,当然,越接近80度,打开的时间就越少。实际就是温度到达80度(甚至是81),继电器还是有打开的一段时间(当然,到了81是最短的时间,或关闭)。打开时间所加的热量应该与系统散发的热量相等(系统肯定自己要散发热量的,否则就不会降温了),这样保证了温度的不变。

这里,PWM的频率,不同温度点时的PWM的占空比应该取多少,就是PID计算的过程。计算过程的参数与实际系统相关。

那次大学生电子竞赛的温度控制要求大概如下:

控制对象:500W电炉,上面有1个1.5升的搪瓷杯,里面有1升水。


1。从10度能以最快的速度加热到80度
2。要求过冲温度最小
3。能稳定在80度(正负0.5度)不动(基本没有抖动现象),或看稳定时间保持最长为优

上面3个条件平等的,综合评价。

4。然后,在一米外增加一个电风扇吹向该系统(改变系统参数了),此时,系统温度掉下80度最小的,并能尽快回到80度,并继续保持。

完成前3点,采用一阶PID可以,但要做到第4点,就需要二阶PID。道理是,如果发现温度下降的过快(比如原来是2分下降1度,现在1分下降1度),就需要调整PWM加热的占空比,使其加热的时间比正常降温速度下的加热时间要长。

出0入0汤圆

 楼主| 发表于 2011-6-23 17:13:43 | 显示全部楼层
回复【12楼】machao  
-----------------------------------------------------------------------

基本明白了,这其中的原理确实挺多的,长见识了。
多谢马老师。

出0入0汤圆

发表于 2011-6-23 17:45:20 | 显示全部楼层
"后面看似采用了PWM,那么PWM的频率多少?"

this is an application with a (mechanical) relay. so you cannot use PWM or your relay's contacts burn up in no time.

"如果你的系统,热容量(热惯性)大,"

there is no such thing as 热惯性: if you turn off the heater, the device starts to cool off and its temperature drops.

"就可能发生过冲或抖动现象。 "

overshoots happen in a pid because the i- or d- term dominates the p- term. in a binary control (as it is here), you don't have that issue.

出0入0汤圆

发表于 2011-6-23 21:31:43 | 显示全部楼层
here is a quick experiment.

I rewrote my pid routines to incorporate the control logic I laid out earlier. the process to be controlled is a heated oven, with natural temperature-dependent decay.

the relay controls a heater that heats up the oven when turned on. otherwise, the oven dissipates heat, more at higher temperature.

the target temperature is set at 128c, with a range of +/- 1 degree. I routed the temperature to the output on a 5v dac so the temperature should read around 2.5v.


(原文件名:50. relay control 1.PNG)


as you can see, the relay kicks in / out about 14 timers per "simulated" second.

出0入0汤圆

发表于 2011-6-23 21:34:59 | 显示全部楼层
identical process, identical code, except that the temperature limits were set to 128.1 and 127.9.


(原文件名:51. relay control 2.PNG)



the temperature still holds at around 2.5v, but within a much tighter tolerance and the relay kicks in / out much more frequently.

the lesson here is that a relay  based solution is possible, if you are willing to accept a wider range of errors.

出0入0汤圆

发表于 2011-11-10 08:57:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-13 15:15:38 | 显示全部楼层
努力学习中

出0入0汤圆

发表于 2012-2-10 05:49:56 | 显示全部楼层
好文

出0入0汤圆

发表于 2012-3-9 10:27:29 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-3-9 13:56:58 | 显示全部楼层
进来听课

出0入0汤圆

发表于 2012-3-9 14:25:19 | 显示全部楼层
继电器当然可以作为PID的执行部件。

出0入0汤圆

发表于 2012-3-9 17:36:58 | 显示全部楼层
精确调温你的继电器寿命够不?

出10入0汤圆

发表于 2012-10-20 21:59:10 | 显示全部楼层
进来听课                        

出0入8汤圆

发表于 2012-10-20 22:39:50 | 显示全部楼层
精华帖。。。。

出0入0汤圆

发表于 2012-11-21 12:46:30 | 显示全部楼层
用PID控制继电器占空比调节,可以做到0.2度。

出0入0汤圆

发表于 2012-12-15 16:55:07 | 显示全部楼层
mark  了解了解 PID

出0入0汤圆

发表于 2013-7-12 15:15:40 | 显示全部楼层
长见识了。

出200入0汤圆

发表于 2013-7-12 15:52:44 | 显示全部楼层
我做的一个产品也是用继电器,用控制加热时间来调节
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-19 08:20

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

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