基于单片机的温度传感器 智能温控系统的设计
智能温控系统的设计
摘 要 : 温度是生产、生活及科学研究等方面中的一个重要参数,在很多场合起着极为关键的作用,需要精确控制。因此,高精度温度控制器具有广阔的市场前景和迫切的应用需求。研究和设计了一个由单片机控制的具有一定智能水平的温度控制系统,能够按照实际需要设定温度控制的范围,并根据在温度调整过程中的温度变化情况,输出智能控制信号,实现温度的精确控制。 0 引言随着社会发展和科技进步,温度的测量及控制在人们的生产、生活和科学研究中发挥着越来越重要的作用[1-3]。在现代社会中,对各种过程的控制要求日趋精密,对于温度的测量和控制要求也进一步提高[4-9]。目前国内的传统温控箱控制精度低,价格高,难以满足高精度温度控制的要求,国外的温度控制箱控制精度高,但价格昂贵,如德国西门子(Siemens)、恩德斯豪斯公司(Endress+Hauser)、美国江森(Johnson)、霍尼韦尔(Honeywell)、罗斯蒙特公司(Rosemount)、英国森威尔(Saswell)、瑞士ABB公司、日本松下公司(Panasonic)等都生产性能优良的温度控制箱,在社会各行业中得到广泛的应用。为满足国内低成本温度控制要求,本文研制了一个采用单片机控制的高精度智能温度控制箱,它具有结构紧凑、工艺简单、智能化等优点。
1 温控系统硬件设计
温度控制的基本原理是在需要进行温度控制的场合用传感器测量其温度值,与控制器内存储的温度值进行比较,当测得的温度高于或低于设定值时,启动加热或降温设备,使温度回归到设定值范围内,其原理如图1所示。
1.1系统总体结构设计
本温控箱以单片机STC89C52作为温控中心,用温度传感器DS18B20作为温度测量单元,将采集的温度值经过串行通信方式传输到温控中心进行判断,并进行智能处理。当测得的温度T低于设定的最低温度Tl时,单片机发出控制信号,启动加热器件;当测得的温度T高于设定的温度Th时,单片机发出控制信号,启动降温器件,将温度保持在设定的范围内,完成温控工作。本温控器带有LCD显示模块和按键输入模块,可显示实时温度值和现场设定温度控制范围。温控系统主要由温度检测模块、单片机控制模块、温度显示模块、温控执行模块(继电器及加热、降温器件)等部分组成。
1.2 温度检测单元设计
为提高测温精度,降低成本,本温控箱采用较成熟的DS18B20温度传感器来完成温控箱内部和外部的温度检测。DS18B20是由Dallas公司生产的一线式数字温度传感器,它将温度感测、信号变换、数据存储、A/D转换等功能集成于一体,其温度检测范围宽,达到-55℃~+125℃,可以用一线总线方式连接微处理器,以编程方式(9~12位)转换精度,测温分辨率达0.062 5 ℃。DS18B20温度传感器的工作电源可从外部输入,也可采用寄生电源方式工作;多个DS18B20可以并联连接到CPU,实现多个DS18B20与CPU的通信,因此连线少,可节省引线和逻辑电路,减少CPU端口的占用,但以增加软件复杂性为代价,对读写的数据位有着严格的时序要求。
DS18B20温度传感器具有体积小、功能强、精度高、连接方便、抗干扰性好等优点,在工业控制、智能家居等环境中得到较广泛的应用。
1.3 温度控制执行部分设计
由于单片机的输出功率较小,不宜直接驱动继电器,否则会造成单片机功耗过大,加重单片机内部电源的负担,易导致单片机工作不稳定。为安全平稳控制继电器,本温控系统采用固态继电器SSR-40DA,固态继电器也称作固态开关SSR(Solid State Relay),它是利用现代微电子技术与电力电子技术相结合而发展起来的一种新型无触点电子开关,集光电藕合、大功率双向晶闸管及触发电路、阻容吸收回路于一体,用于代替传统的电磁式继电器,实现对单相或者三相电动机的正反转控制,或者其他控制。无触点无动作噪音,具有开关速度快、无火花干扰和可靠性高等优点。
1.4 温度显示模块
温度显示模块采用1602C型字符型液晶显示器。1602C型显示器具有功耗低、体积小、显示内容丰富、超薄轻巧等优点,在袖珍式仪表和低功耗应用系统中应用广泛,是一种专门用于显示字母、数字、符号等点阵式的LCD,显示的格式为16×2行。在模块内部已经存储了160个不同的点阵字符图形,这些字符包括:英文字母的大小写、阿拉伯数字、常用的符号等,每一个字符都有一个固定的代码。
1.5 加热/通风执行机构
当单片机检测到温度不在调控范围以内时,需要启动加热或降温器件使温度回到温控范围内。一般加热的方式为电热丝和风扇,本系统用电热丝为加热器件,以风扇为降温器件。为使温度变化过程平稳,通常要对加热或降温器件的功率进行调整。功率调整的方法一般用可控硅,具体的方式有调相和PWM。调相就是调整加在负载上的电压的导通角,PWM是通过调整单位时间内加在负载上的电压次数来改变负载功率。为降低对电网的污染和对其他用电器件的干扰,本系统采用PWM方式对温控器件进行调整。
1.6 报警电路
本温控箱采用声光报警方式进行异常状态报警,以晶体管和蜂鸣器构成声音报警电路,以红、绿色发光二极管构成光线报警电路。在系统正常工作时,只有绿色发光二极管点亮;当系统测得的温度超出设定的温度范围,绿色发光二极管熄灭,红色二极管点亮,同时由单片机控制蜂鸣器发出报警声,10 s后停止声音报警。
2 温控系统软件设计
2.1 控制流程图
智能温控系统控制流程如图2所示。系统开机后首先初始化程序,接着进行温度测量,将测得的温度值通过显示屏显示;检测是否有按键操作,若有则执行按键扫描及处理程序,存储新输入的温度控制范围,若无按键操作则直接显示当前温度及设定值;将测得的温度值与设定值进行比较,若在设定范围内,程序自动返回测量温度,若不在设定范围内,则程序根据测得的温度与设定值,确定调温停止的温度,进行智能处理后输出控制信号,启动报警,运行加热或降温设备进行温度调节。
2.2 软件设计
为实现上述控制流程,达到温度控制目的,本系统设计了温度采集程序、LCD显示程序、按键扫描及处理程序、温度比较及计算程序、智能控制程序、报警程序等,其控制过程如图2所示。
温度采集程序用于将DS18B20所采集的温控箱内部、外部温度通过串行通信送入到指定地址;LCD显示程序用于显示测得的温度值及设定温度等数据;按键扫描及处理程序用于处理按键相关事项,即判断是否有按键行为、记录按键输入值及将输入值送往指定地址等。
传统的温控箱只是简单地将测量得到的实时温度值与设定值进行比较,控制加热器件或降温器件的通断状态进行温度调整。这种控制方式很容易出现过冲现象,对控制精度造成严重影响。同时单片机的功能只使用了一小部分,造成了资源浪费。本系统利用单片机的计算和比较功能对加热和降温过程进行智能控制,能较好地解决过冲问题,减少加热和降温状态的转换次数,实现温度的平稳控制,同时节省能源。
在进行智能控制时,根据设定的温度范围及探测到的系统温度,确定加热或降温时的结束温度,如果环境温度高于设定温度的上限,则降温器件停止工作时的温度由单片机根据公式Th-0.8(Th-Tl)计算出来。当环境温度低于设定温度的下限,则加热器件停止工作时的温度由单片机根据公式Tl+0.8(Th-Tl)计算出来。当环境温度在设定温度的上、下限之间,则降温器件停止工作时的温度由单片机根据公式Tl+0.5(Th+Tl)计算出来,通过此种方式进行温度调控,能有效减少加热或降温器件的启停次数,延长系统寿命,同时也使温度变化过程更平稳。在调温过程中以PID方式对系统温度进行控制,即在控制过程中,将测得实际温度值与设定值进行比较,经单片机计算后得到温度的偏差值、偏差变化率等,根据温度值、偏差值、偏差变化率算出控制增量,以控制加热器件或风扇的导通时间,达到温度控制的目的。
报警程序用于输出报警信号,控制报警电路实现声光报警。
3 总结
本温控箱以单片机作为温控系统的中央控制单元,充分利用了单片机的运算功能对温控过程进行自动控制,实时性强,可实现高精度控制,同时本系统设计合理,结构简单,具有可靠性高、运行稳定、成本较低、操作简便等优点,适用于需要较高控制精度的各种场合。
参考文献
[1] 张瀚文,张博,杜岩,等.多路高精度扩散炉温度控制系统的设计[J].微型机与应用,2013,32(17):83-86.
[2] 刘雷,张高飞,尤政.环境温度对RF-MEMS开关闭合电压影响研究[J].传感器与微系统,2013,32(5):6-8.
[3] SELAK G V, PERICA S, BAN S G, et al. The effect of temperature and genotype on pollen performance in olive[J]. Scientia Horticulturae, 2013,156(1):38-46.
[4] 陈新海,张侃健,魏海坤,等.无人值守的南极科考平台温控系统设计与实现[J].自动化仪表,2013,34(10):23-27.
[5] VITEL G, SURU M G, PARASCHIV A L. Structural effects of training cycles in shape memory actuators for temperature control[J]. Materials and Manufacturing Processes, 2012, 28 (1): 79-84.
[6] 李晓明,冯志书,徐刚,等.基于PC104的某型航空发动机排气温度测试系统[J].微型机与应用,2013,32(11):95-96.
[7] COSTA B A, LEMOS J M, ROSA L G. Temperature control of a solar furnace for material testing[J]. International Journal of Systems Science, 2011,42(8):1253-1264.
[8] 文春明,温志渝,尤政,等.硅基微型超级电容器三维微电极结构制备[J].电子元件与材料,2012,31(5):42-45.
[9] ASTRAIN D, MART?魱NEZ A, GORRAIZ J, et al. Computational study on temperature control systems for thermoelectric refrigerators[J]. Journal of Electronic Materials, 2012, 41 (6): 1081-1090.
单片机小制作,感温彩虹杯垫
有一位波兰爱好者制作了一款感温LED杯垫,如图8.1所示。这款杯垫可以感知杯中的饮料温度,并根据温度驱动板上的LED,发出暖色或冷色的光芒。这个设计创意得到了很多电子爱好者的关注。但是笔者个人认为,原版的设计存在一些可以改进的地方。比如,由于温度测定不需要精确,温度传感器不必使用独立芯片,片内二极管测温即可。另外,原设计中的LED采用并联结构,不能够独立控制颜色,尚有改进余地,于是我设计了这一款改进型的感温彩虹杯垫。
图8.1 波兰爱好者制作的感温杯垫
元件选择
为尽可能减少元件数量,我使用一片ATTINY24单片机,同时完成温度测量以及LED灯的控制。为了减少LED驱动所需元件以及简化布线,LED采用了ST505042。这款LED内置有ST313控制器,可以用串行双极性信号直接驱动,并可直接串联,减小了PCB绘制的难度。此外,由于这款控制器是采用恒流驱动方式,所以不会有闪烁的问题,同时也可以在3~5V下的任一电压处工作良好,不会出现因为电阻限流发生电压改变时出现的偏色问题。因此,无论是干电池、锂电池,还是5V或3.3V电源,都可以使电路良好工作。
设计原理
这个制作的电路结构比较简单,电路原理图如图8.2所示,PCB图如图8.3所示。设计时,为避免电源反接导致电路烧毁,在电源路径上串联了1个肖特基二极管。之后,使用去耦电容来滤除电源上的干扰。
图8.2 彩虹杯垫电路原理图
图8.3 彩虹杯垫PCB图
电路使用单片机内部的PN结测温,通过软件即可读到温度值。单片机使用一个I/O口连接到两个阻值相同的分压电阻,这样当I/O口输出电平时,两个电阻的中点电平为高/低电平,而当I/O口转为高阻状态时,电阻中点电平即可输出1/2VCC,由此可以生成驱动LED所需的双极性信号。
LED内置的ST313控制器使用1.2MHz以下的信号来传输信息,用1/2VCC后接低电平表示逻辑0,用1/2VCC后接高电平表示逻辑1,以此来表达每个LED所需的18bit颜色信号。当数据线闲置60µs以上时,ST313将移位寄存器中的数据锁存至LED的电流控制器中,以改变LED的颜色。由于我们的连线距离很短,所以不用考虑电磁干扰对于数据正确性的影响。但当长距离传输时,由于有1/2VCC的存在,可能会导致LED颜色出现混乱,需要采取措施减少干扰的影响。将LED串行连接,在第1个LED上接入单片机信号,就可以根据单片机输出的电平信号单独控制任何一个LED的RGB颜色了。
编程调试
为了对单片机进行编程,一般使用ISP(在线编程)功能进行程序下载。可是这一功能通常需要6条线,至少也需要除电源线外的4条线。这对于自行制作的单面电路板布线是有一定难度的,而且会部分破坏电路的美观。一种解决方式是使用单片机烧写座进行编程,这种方法的缺点是烧写座价格不菲,而且芯片焊接后较难再次编程。
我采用的解决方案是使用AVR的单线调试功能(debugWIRE)实现程序修改。DebugWIRE是使用单线双向接口的片上调试系统,除电源线外,仅需要1条线就可以实现程序的修改和调试。但是为开启debugWIRE功能,仍然需要焊接飞线来修改芯片的熔丝位。设置熔丝位完成后,即可撤除飞线,仅使用复位线这1条线来控制芯片的程序。这种方式唯一的要求是需要一个原厂的调试工具,如AVR Dragon或MKII。之后就可以在AVR Studio中直接仿真程序,并按需要插入断点,实时查看各变量的值,以调试程序的正确性。
需要注意的是,每次断点的使用都将减少Flash的寿命,所以最好不要用同一块芯片调试过多的程序,但调试完直接使用是没有什么问题的。正常结束调试后,芯片不会在上电时执行程序,在调试运行时拔掉调试线,即可让程序正常运行。使用debugWIRE时,复位线上不要有其他元件。不过,debugWIRE会略微增加休眠功耗,故对功耗要求高的应用最后要将其关闭。
温度标定
使用单片机测定温度时,需要考虑传感器的误差。由于单片机测温是使用片上二极管测温,所以误差比较大。在不经标定的情况下,可能只有±10℃的精度,所以需要使用标定方法来提高精度。对于电子测量来说,我们是用电信号来表达另一个物理量,也就是用电压来表示温度,并用ADC来转换为数字量。因此,我们需要电压与温度的函数关系,才能够用电压值来反推温度值。显然,我们需要知道单片机测量到的真实温度。我们可以用一个较高精度的温度计来获得温度值,市售的玻璃水银温度计、指针温度计或远程温度计均可,也可使用万用表附赠的热电偶,或者是经过激光标定的传感器,比如18B20。如果Geek精神够足,使用冰水混合物等非主流方法亦可。
得知温度后,接下来就是建立电压与温度的函数关系。由于我们最终要由ADC转换为数字量,所以数字量输出和温度的函数关系也是等价的。理想的情况下,我们要取到尽可能多的温度点,使任何一个输出值都被覆盖到,使用查找表即可用输出值反推温度值。但是,这么多温度点的覆盖往往是不现实的,我们只能采集有限个数据点,并拟合出函数曲线。一般来说,函数的次数要低于采样的数据点数,可以使用最小二乘法来拟合曲线。如果只需要结果,excel就能做到这一点。另外,如果想知道穿过所有点曲线的形状,可以尝试使用拉格朗日插值法来获得函数。一般工程上,采用等距离采集多个数据点,然后分段直线拟合就能得到比较不错的效果。
这个制作由于对精度要求不高,而且追求简单,我们假设数字量输出和温度的函数关系是线性的,而且每1℃的变化对应数字输出量变化1。我们只需要1个点就能确定函数的位置。当然,这一点处于待测区间之中会使精度高一些。在这种情况下,只要把待测点的输出值和标定点的输出值求差,并把这个差加到标定点的真实温度值上,就可以求到待测点的真实温度值。虽然精度仍然不高,但对于这个制作绰绰有余。
另外,传感器测定出的温度值可能会有少许的抖动,这会导致系统在临界温度上在两种模式间来回切换。所以,在温度的判定上,我采用了滞回算法,即在温度上升到40℃时切换到高温模式,而下降到35℃才能切换回普通模式。低温也应用类似算法。这样,系统不会被传感器的抖动所干扰,工作较为稳定。
制作方法
为组装整个杯垫,需要将PCB裁为六边形,并裁取一块与之形状一致的有机玻璃板,可以在确定切割线后用钢尺辅助,以钩刀划开。之后,在有机玻璃板中央钻孔,但要注意钻头速度不能太快,进刀量不要太大,以避免温度过高,导致孔边缘熔化。在有机玻璃板中央钻孔。如果有机玻璃板上出现了划伤,可以用热风枪加热损伤部分,有机玻璃的小划痕会在高温下消失。之后在PCB上打上热熔胶,将有机玻璃板粘接在PCB上。最后将导热胶从有机玻璃板开孔处注入,将开口的上表面和单片机连接成一体。这样单片机就可以测量到杯垫表面的温度了。制作出来的实物如图8.4所示。至此,将杯垫连接上电源,整个杯垫就会点亮,发出彩色的光芒,如图8.5所示,并可以根据杯垫上饮料的温度,变换出不同的颜色了。
图8.4 制作出的杯垫实物
图8.5 发光效果
相关问答
温度传感器 怎么与 单片机 连在一起工作?第一要完成温度传感器与单片机的硬件连接:(1)温度传感器是将非电量转换为电量即温度转换成电压(一般电压值较小为毫伏级的)因此需要加一级运算放大电路...
51 单片机的 承受 温度 ?主要实现:实时温度测量及显示,超出温度范围相应的继电器工作,继电器可以驱动相应的加热或制冷负载,上下限温度可通过按键设定等功能。本保温箱的温控系统研...
单片机 、光耦1系统总体结构原理粮食在储藏期间,由于受环境、气候和通风条件等因素的变化,粮仓内温度或湿度会发生异常,这极易造成粮食的霉烂、或发生虫害。那么...
温度传感器 信号如何转化为控制继电器动作的信号?控制继电器想动作,前面输入的是高低电平(开关信号),后端当然是接高压电端了,他的通断来控制电磁阀的吸和与断开。原理是:温度传感器,接单片机进行计算,设置报...
单片机传感器的 工作原理?内部主要有ROM.RAM和温度传感器。DS18B20是使用一根数据线进行通信,首先你要先向它发送一系列脉冲信号。一般我们用的步骤大致为:初始化--跳过ROM操作--启动温...
ds18b20 温度传感器 电路原理?18B20采用的是半导体测温。经过传感器内部的电路直接将温度变换成数字信号。单片机经过传感器上的单线总线对传感器进行设定和测量。传感器的分辨率为0.0625℃...
DS18B20 温度传感器 与 单片机 间的通信线(延长线)可以多长 - Re...18B20单线传输抗干扰能力本来就不高,线最长就几厘米,不管你用什么线延长都没有用的。长距离传输必须是差分线,18B20那里要有一个单片机将温度数据通...
DS18B20 温度传感器 与 单片机 间的通信线(延长线)可以多长 - 15...加电源或者用寄生模式50-100用5V供电没没问题,只接一支DS18B20最远可以达到500m,18B20单线传输抗干扰能力本来就不高,线最长就几厘米,不管你用什...
水温 传感器 怎么接继电器?水温传感器可以接继电器。由于水温传感器一般为模拟信号输出,需要经过模拟转数字转换(ADC)将模拟信号转换成数字信号输入到单片机或控制器中。通过程序控制单...
单片机 怎么控制电热丝 温度 (精确控制)?要单片机控制温度,是完全可以的。要有温度传感器测温度,再去控制电热丝。电热丝也用5V电源吗?那电源的功率是多少,电热功率是多少?用5Ⅴ能使电热丝发热吗?这...