基于DS18B20的温度控制系统设计
2013-07-30孙蔚
孙蔚
(陕西工业职业技术学院信息工程学院,712000)
0 引言
在日常生活及工业生产过程中,经常要用到温度的检测及控制,温度是生产过程和科学实验中普遍而且重要的物理参数之一。随着新技术的不断开发与应用,近年来单片机发展十分迅速,一个以微机应用为主的新技术革命浪潮正在蓬勃兴起,单片机的实际的使用范围已经包含了化工、冶金、电力、机械、食品、建筑等多个行业[1]。传统的温度采集方法不仅费时费力,而且精度差,单片机的出现使得温度的采集和数据处理问题能够得到很好的解决。
1 系统组成
本文以实验室水箱为被控对象,进行了智能温控系统设计,本系统首先将温度采集后发给单片机进行处理,并通过16位矩阵键盘设定上下限温度,当温度超过设定值后,单片机将控制温度控制模块启动,使温度在一定的范围内保持恒定。所有温度数据均通过液晶显示器显示出来,为了防止掉电引起的数据丢失,系统将某些时间点的温度数据和温度上下限的设定值存储在外存储器中。
图1 系统总体框架
系统主要包括单片机控制模块,温度采集模块,温度上下限设定模块、液晶显示模块,温度控制模块,以及外部存储模块等六大部分。系统总体框架如图1所示。
1.1 单片机控制模块
单片机控制模块是整个系统的核心,它控制了温度的采集、温度上下限值的设定、温度超限时加热器的启动。本文选用宏晶科技公司生产的一款型号为STC89C52RC的单片机。STC89C52在I/O 口的数量、RAM 容量、功能实现等多个方面都优于较早型号的单片机,其32个双向I/O 口可用于多路电机转速和转向信号的发送以及限位信号的接收;而512字节RAM 可够用于存储上位机发送来的数据,而不需要存储扩展[2];时钟频率也满足需求。串口可直接下载程序到单片机上并可多次擦除,方便了程序的随时改进和调试。而且此款单片机无读出命令,解密困难,很好地保护了知识产权。
1.2 温度采集模块
对于温度数据采集的主要系统是根据DALLAS 公司制造的一线式的数字温度传感器DS18B20的相关数据来进行采集的。在系统当中具备独特的单总线接口方式,仅需使用1个端口就能实现与单片机的双向通讯,读写和完成温度变换所需的电源可以由数据线本身提供而无需外部电源。温度传感器 DS18B20的温度的理论的测试区间是零下55摄氏度到零上125摄氏度之间,温度测试的分辨率可以达到0.0625摄氏度[3],最后的测试结果通常以9到12位数字量的方式来输出数字温度,把信号通过“一线总线”发送给CPU,并且还可以发送CRC 效验码,在信号发送过程中信号的抗干扰纠错能力是非常强的。
在DS18B20的内部主要有下面几部分组成:温度传感器、64位的ROM 光感刻录、配置寄存器以及温度警报触发器TL 和TH。其中光雕ROM的64位序列号主要是产品出厂前就刻录好,它是每一个DS18B20的地址的序列号。我们通过这个64位序列号就能够使DS18B20的每个功能都不一样,从而真正的实现可以一线上挂接好几个DS18B20的目标。
DS18B20的温度测试的流程如下图中所示。在图中我们可以发现低温的温度的系数晶振基本上不受到温度的影响,同时把产生的频率固定的晶振传输给计数器1。但是高温的温度系数的晶振受温度影响比较明显,振荡率发生改变,并且所产生的晶振信号发送给计数器2。在计数器1中的温度的设置范围在零下55摄氏度的范围内。在计数器1中对于低温的温度系数进行基本加减法运算,假如当计数器1中的预置的值变为0,那么就可以把温度寄存器的结果在加1,这是使得计数器1的预置值被重置,计数器1再次在开始对于低温温度系数的晶振进行信号记录,这时当计数器2的预置值变为0时,可以停止对于温度寄存器的累加,此时的温度寄存器的最终的值就是所得到的温度。在下图当中的斜率累加器主要的作用就在于对于温度测试过程中的非线性数据进行修正和填补,它的结果主要是用于对于计数器1的预置修正。
图2 DS18B20测温原理图
1.3 温度控制模块
在本系统温度控制电路中,单片机通过控制三极管的通断控制继电器,达到控制电热器的目的。当温度低于设定温度下限时,单片机发送低电平信号经过74LS04非门电路后变为高电平,使NPN 型三极管导通,继电器使电源与电热器接通。电热器加热,温度慢慢升高。当温度高于设定温度上限时,单片机发送高电平信号经过74LS04非门电路后变为低电平。使NPN 型三极管截止,继电器使电源与制冷系统接通,制冷系统工作,温度慢慢降低。当继电器突然断电时。会产生很大的反向电流,反接在三极管两端的二极管可将反向电流分流,达到保护三极管的作用[4]。
2 温度检测程序设计
DS18B20和单片机连接方式是通过一条数据线进行连接,信号的传输方式主要是进行串行。对于最终的温度数值的读取,需要根据时序配合关系来对于程序进行编制。在DS18B20的数值传输中具有专门的通信协议来进行完整性限制。在通信协议上对于总线信号进行了多累信号规定。比如影响脉冲、复位脉冲、以及读写信号0和1的信号时序[5]。在对于DS18B20的时序的严格的规定情况下的操作过程,主要就是对于通过各类的软件来进行对于硬件设备的串接。具体操作如下:
2.1 对于数字温度传感器的复位操作过程
复位主要是把时序进行恢复,这一过程是传输过程中的开始阶段。在这个复位的过程上主要是通过主要设备发出相关的复位脉冲来同DS18B20的响应脉冲进行结合。通过在主设备的复位过程当中,通常主设备的拉低的数据线最少到480μS,当这种情况时DS18B20就会接受这一复位的脉冲信号,从而和主设备进行信号传输,在数据线的上拉电阻的影响下,使得数据线的电平被提升,同时使得主设备开始接受信号。这过程当中DS18B20的检测的延时出现到15到60μS,使得拉低的总线延时60到240μS来进行信号的应答。这时主机才能对它进行其他操作。
2.2 对于温度传感器的读的操作过程
基本上所有的DS18B20在产品出厂时都有一个唯一的64位的序列号,在温度传感器被使用以前,都需要把传感器串接到I/O的接口中去,比如:p1.0,然后在对于温度传感器的序列号进行数据读取。只有在DS18B20读取都了设备对于序列号的读取才能够进行数据的发送。因此通常主设备进行数据信号发送后,都需要进行读时序过程,这样方便DS18B20进行数据的传输。基本上任何的读时序都需要有60μS,同时在两个分开的读时序中间需要有最少1μS的时间恢复。读时序过程基本先是主设备发送,在通过数据线的高电平,把数据线进行1μS的拉低,同时对于数据线进行释放。如果主设备进行读时序,那么DS18B20在数据线中的发送数据主要为1和0。如果发送信号为1,那么数据线保持高电平。假如发送信号为0,那么DS18B20进行数据线的拉低,并且在过程后期释放数据线。DS18B20所发送的数据在15μS的时序中是能够保持真实有效的。所以说主设备在进行读时序过程中必须要能够释放数据线,同时保持时序能够在15μS中进行数据线读取。
2.3 对于温度传感器的写的操作过程
写时序主要就包含有对于1和0的写时序。其中1的时序基本是都是主设备对于DS18B20进行数据1写入,0时序主要就是主设备对于DS18B20进行数据0写入。不管是何种写时序都需要最少60μS,同时两个分开的写时序中间需要有最少1μS的时间恢复。这两类的写时序都是从主设备开始来对数据线进行电平拉低。在进行1时序写入时,主设备在对于数据线进行拉低情况下,然后在15μS 以内进行数据线的释放,因为对于电阻上拉使得数据线到了高电平状态;不过在进行0时序的写入时,主设备在对于数据进行拉低的情况下,在时序中保持低电平那么就能够有最少60μS。在进行写时序的15到60μS 之间,DS18B20进行对于数据线电平状态的读取。假如该过程当中的数据线状态为高电平,那么就进行1数据写入,不然的话就是进行逻辑0的写入。
系统软件采用 keil c51编制。
复位子程序:
对于子程序的延时过程void delay(unsigned char time),其中的延时的时间为25us×time
3 结语
微型计算机在智能化电器发展中起着至关重要的作用,而单片机经济实用、开发简便,因而在工业控制、家电智能化等领域占据了广泛的市场。这里针对目前温度控制器现状设计了一种新方案,该方案主要是应用DS18B20来进行温度的测控,在AT89S52的单片机中进行对于温度的控制,这样就能够实现硬件应用方便,温度控制能力强(温度误差控制在2摄氏度之内)、价格不高、功能强并且体积小等的特点,并且在于对于需要对温度进行零下55摄氏度到零上125摄氏度的温度控制的条件下,基本上都能够实现对于温度数据采集、显示和控制过程,这样也是一种十分全面的智能化的温控系统。
[1]黎惠成等一种基于模糊控制的温度控制系统设计[J].计算机技术与发展.2009.19(12):236-239
[2]潘新民.微型计算控制技术[M].清华大学出版社.1999.8
[3]赵鸿图.基于单片机的温度控制系统的设计与实现[J].微计算机信息2008.24(9):54-56
[4]余瑾;姚燕.基于DS18B20测温的单片机温度控制系统[J].微计算机信息.2009.25(03):105-107
[5]黄保瑞等.基于AT89C51单片机的温度测控系统设计[J].现代电子技术.2011.3:78-80