您的当前位置:首页正文

基于DS18B20的多路温度监测系统设计与仿真

2020-10-15 来源:好走旅游网
基于DS18B20的多路温度监测系统设计与仿真

李萍

【摘 要】提出一种基于DS18B20和AT89C51的多路温度监测系统,详细介绍了系统的硬软件设计。该设计通过DS18B20单总线结构与单片机多路并行输入相结合的硬件改进方式,克服了DS18B20采用单总线结构时温度数据读取慢、单总线驱动能力不足的问题,实现了多路温度实时快速读取和巡回监测。该系统还具有超温报警,与上位机通讯等功能。最后,利用Proteus与Keil C51软件联合仿真实现了设计的仿真调试。%A multi⁃channel temperature monitoring system based on DS18B20 and AT89C51 is presented. The system's hardware and software design methods are described in detail. By the improved mode combining DS18B20 1wire⁃bus structure with multiple parallel input of AT89C51,the deficiencies such as the slow temperature data acquisition and insufficient 1⁃wire bus driving ability were overcome,and then the functions of real⁃time multi⁃channel temperature reading and tour temperature monitoring were realized. The system also has the functions of high⁃temperature alarm and communication with PC. The simula⁃tion debugging was realized by Proteus and Keil C51 softwares. 【期刊名称】《现代电子技术》 【年(卷),期】2013(000)010 【总页数】4页(P122-124,127)

【关键词】温度监测;DS18B20;单总线;AT89C51;Proteus

【作 者】李萍

【作者单位】浙江水利水电专科学校,浙江 杭州 310018 【正文语种】中 文

【中图分类】TN964-34;TP274 0 引言

在实时温度监控系统中,如大棚温度监控、冷库测温、智能建筑温度控制等系统中,经常需要进行多路温度的采集和检测。快速、可靠地采集到高精度温度数据可为控制系统的工作提供可靠的依据。传统上,温度测量方法多以热敏电阻、热电偶等为温度敏感元件,但都存在可靠性差、精度低、需A/D转换以及线路复杂等的缺点。本文提出采用美国Dallas公司生产的单总线数字温度传感器DS18B20和AT89C51单片机构成高精度的多路温度监测系统,在单片机的控制下巡回监测多路温度,高低温度超限报警,并可实现与上位机通讯等功能。 1 DS18B20简介

DSl8B20是Dallas公司推出的1⁃Wire式单总线智能数字温度传感器。与传统的热敏电阻相比,它能够直接读出被测温度,温度测量范围为-55~125℃;可通过编程实现9~12位的转换精度,对应的可分辨温度分别为0.5℃,0.25℃,0.125℃和0.062 5℃,可满足高精度设计要求;在9位分辨率时最多在93.75 ms内把温度转换为数字,12位分辨率时最多在750 ms内把温度值转换为数字;电源供电范围3.0~5.5 V;读取或写入信息到DS18B20仅需要单总线接口(即将地址线、数据线、控制线合成一条信号线);测量结果直接输出数字温度信号,串行传送给CPU同时可传送CRC校验码,具有极强的抗干扰纠错能力;使用DS18B20可使

系统结构简洁,可靠性更高。以上特性使得DSl8B20非常适用于构建高精度的多路温度采集与检测系统[1]。 2 硬件电路设计

系统原理框图如图1所示,系统由多片DS18B20、AT89C51单片机、LED驱动显示电路、温度上下限设定电路、报警提示电路、串行通信接口、时钟电路、复位电路等构成。 图1 系统原理框图

系统采用8片DS18B20构成温度采集电路,8片DS18B20采用单总线与并行输入相结合的方式接至单片机的P1口。单片机巡回采集各路DS18B20送来的温度信息后,通过软件设计算法,将处理后的温度信息及相应的温度路数通过LED数码管显示出来,各路温度值的上下限可通过P3.2~P3.4独立式键盘进行设定。若某路超过温度设定的上下限将进行通过P3.5或P3.6进行报警提示。此外,可通过串行口RS 232模块将各路温度数据送上位机处理。系统采用Proteus仿真软件设计的仿真电路如图2所示,此时LED显示的是第3路温度值。 图2 硬件仿真电路图 2.1 测温电路设计

采用8片DS18B20组成多路测温电路。DS18B20内部均有一个全球惟一的64位产品序列号,单片机通过序列号可对一条总线上的多路DS18B20进行控制,读取其温度。但DS18B20仅由单总线采集多路温度数据时,软件设计算法复杂[2],读取速度慢,无法适用于实时性要求高的测温场合。特别是当单总线上挂接的DS18B20传感器个数大于8个时,采用寄生电源供电方式亦存在总线驱动能力不足等问题[3]。为此,本设计采用“单总线结构+并行I/O口输入”相结合的方式,实时巡回采集多路DS18B20的温度信息。具体做法是:硬件上将8片DS18B20的单总线分别连到单片机的并行P1口引脚,同时各片DS18B20的电源端采用外

部电源供电方式,且每个单总线另接一个4.7 kΩ的上拉电阻到5 V电源以保证达到足够的工作电流;软件上读取多路温度与读取单路温度的操作类似,不需读取读出所用DS18B20的序列号,而只需通过参数传递来循环读取各路温度数据(软件设计中介绍)。

2.2 键盘与LED显示电路设计

LED显示电路设计:P0口输出显示代码经74LS245驱动后接到8位LED数码管的段选线,P2口输出接到LED的位选线。正常情况下,8位LED数码管用于循环显示通道号及该通道的温度值。

键盘输入设计:采用独立式键盘P3.2~P3.4用来修改温度报警的上限与下限值。系统默认的温度报警上限为50℃,下限为-10℃。系统上电后,LED数码管将先后显示温度报警上/下限值。若按P3.2键报警值加1;若按P3.3键报警值减1;P3.4为确定键,用于保存修改值。

此外,当系统检测到当前通道温度值超过设定的上、下限时,将通过P3.6,P3.7进行闪光报警提示。 2.3 串行通信设计

检测系统可通过串行口与上位机进行通信,向上位机传送温度值及相应的通道号。实物中通过RS 232串行接口与上位机连接,上位机的控制界面由VB 6.0编写。当运行Proteus软件时,可以从虚拟终端看到上位机接收到的8个通道的温度数据及相应的通道号。 3 软件设计 3.1 软件总体设计

如图3所示,系统上电复位后,程序主要包括: (1)系统初始化设置。

(2)按键处理子程序:LED数码管显示上限报警温度值并闪烁,若10 s中之内

有按键输入修改温度值,则进行键盘操作直至修改完成,并保存温度上限值;若10 s之内无按键输入或按P3.4“确定”键,则保存上限温度;接着显示下限报警温度值并闪烁,重复上述操作后保存下限报警温度值。

(3)温度报警值设置子程序:实现将8路的报警温度写入DS18B20中,流程图详见图4所示。

(4)读取温度子程序:在对显示路数初始化后,进行温度值读取,这是软件设计的关键,下面将单独介绍。

(5)温度报警处理:读取某路DS18B20温度值及报警上下限值后,进行比较,若超出范围则启动定时器0,驱动上/下限报警提示单元。

(6)显示当前通道温度子程序:取得当前通道号后,根据读取的2字节温度值(温度暂存器格式参考DS18B20技术手册),判断其符号位并分别读取其整数部分和小数部分,通过运算后保存到显示缓冲区,进行动态显示,并刷新显示若干时间。

(7)上位机通信子程序:每采集一路温度数据,通过RS 232串口,将其通道号、温度值发送给上位机,完成相应通道的温度数据采集处理。

(8)循环修改:修改通道号,进行下一路温度数据采集,直至8路温度处理完成,如此循环往复。 图3 主程序流程 3.2 读取温度子程序设计

采用DS18B20进行单路测量时,可直接与单片机相连,不需读取读出器件的64位产品序列号。当采用DS18B20进行多路测温时,在初始化操作后,通常的做法是需要在线逐个地搜索64位ROM编码以确认各个DS18B20所在位置[4],并需对ROM编码进行冗余校验[5],算法设计复杂。且等待多路搜索是否完成需要消耗大量的时间,使程序执行的效率和系统实时性受到了影响。

本设计采用“单总线结构+并行I/O口输入”结合的方式巡回读取多路温度。DS18B20作为单总线芯片,进行信息交换时有严格的读/写时序要求。读取温度子程序流程如图5所示。首先通过参数传递将通道号传给读取温度子程序,接着对DS18B20进行初始化,然后直接执行跳过ROM命令(CCH),即不读取64位ROM编码而直接向DS18B20发出功能命令,节约了时间。之后,再向DS18B20发送温度转换命令(44H),DS18B20启动温度采样与A/D转换,并将转换数据存储在暂存器中。然后再次初始化DS18B20,并在再一次跳过ROM命令后,执行单片机读暂存器命令(BEH),根据传递参数确定的通道号,可将通道号对应的DS18B20高速暂存存储器的9个字节数据读入单片机中,其中第0,1字节分别是温度值低位(LS byte)和高位(MS byte),第2,3字节分别是高温限值(TH)和低温限值(TL),从而完成某通道DS18B20的温度采集。 3.3 软件设计流程

软件设计流程如图4,图5所示。 图4 设置温度报警值子程序流程 图5 读温度子程序流程

4 Keil C51与Proteus联合仿真

软件采用C语言编程,在Keil C51集成开发环境下将编写的程序进行编译、调试[6],并生成目标文件(XX.hex)。同时利用嵌入式仿真软件Proteus绘制出电路仿真原理图,CPU选择AT89C51。双击AT89C51,在出现的对话框中的“Program file”加入已生成的XX.hex文件,并进行仿真调试,调试成功则可以修改温度报警值,及在正常运行时看到循环显示所采集到的温度值、通道号,仿真效果图如图6所示。 5 结语

本设计以Proteus仿真软件作为开发工具,以AT89C51单片机作为控制核心,使

用DS18B20芯片作为温度传感器,加上适当的外围电路,组成了多路温度巡回监测系统。与传统温度传感器相比,可直接输出数字信号而不必考虑A/D转换问题,抗干扰能力与可靠性大大提升。同时,采用单总线与多路并行输入相结合的方法,克服了DS18B20传统上采用单总线结构时所存在的问题,实现多路温度实时读取、巡回监测、与上位机通信等功能,且系统具有结构简洁、精度高、适应性强、维护方便等优点,在多路温度采集与监测领域中有很好的实用价值。 图6 模拟终端接收的数据 参考文献

[1]周茂霞.DS18B20多点温度检测报警系统的设计与实现[J].山东师范大学学报:自然科学版,2009,24(2):66⁃68.

[2]蒋鸿宇,王勇,植涌.由DS18B20构成的多点温度测量系统[J].单片机与嵌入式系统应用,2007(1):59⁃61.

[3]俞绍安.数字温度传感器DS18B20在卫星电源系统中的应用[J].电子元器件应用,2007(8):1⁃3.

[4]潘勇,孟庆斌.基于DS18B20的多点温度测量系统设计[J].电子测量技术,2008,31(9):91⁃93.

[5]韩成浩,李柏峰,高晓红.单总线温度传感器的实用技术及冗余校验[J].制造业自动化,2009,31(9):65⁃68.

[6]彭伟.单片机C语言程序设计实训100例:基于8051+Proteus仿真[M].北京:电子工业出版社,2009.

[7]蔡旭,裴志蕾,卢超.基于GSM温度检测系统的设计[J].电子科技,2011(3):83⁃86.

因篇幅问题不能全部显示,请点此查看更多更全内容