基于DS18B20的多点温度检测系统
2015-05-13赵彩霞
赵彩霞
摘 要:该文提出了采用单总线数字式温度传感器DS18B20和单片机组成的新型智能多点温度检测系统。在文中,首先介绍了DS18B20的基本特性,然后给出了相应的硬件接口电路、软件流程及主要程序代码。DS18B20具有直接输出数字信号、单总线接口、成本低等优点。经试验,基于单总线器件DS18B20的多点温度检测系统测量温度准确、测温范围宽、体积小、控制方便。
关键词:单总线 DS18B20 多点测温
中图分类号:TP21 文献标识码:A 文章编号:1674-098X(2015)01(c)-0100-03
Abstract:In this paper,a new multi-spot temperature survey system composed of 1-wire temperature sensor DS18B20 and MCU is designed.This article introduces the basic characteristics of DS18B20,and this article also gives the corresponding hardware interface circuit,software flow diagram and the primary code.DS18B20 has a series of characteristics such as digital output,1-wire interface and low cost.Test show that the multi-spot temperature survey system has the advantages of accurate measurement,wide temperature range,small volume and convenient controlling.
Key Words:1-wire;DS18B20;Multi-spot measuring temperature
在中央空調系统、冷库系统、反季节大棚等多种系统中都需要多点的温度检测。因此,多点温度检测系统的高效率和低成本对实际生活生产具有重要意义。传统的温度检测系统大都以热电阻、热电偶为传感器,将被检测的模拟信号放大、调理及A/D转换,然后将所得的数字信号送入CPU处理,其可靠性相对较差,且处理电路复杂、成本高,对CPU的资源占用较多。而Dallas公司推出的DS18B20是单总线数字温度传感器,它可以将输入的温度模拟信号直接转换为数字信号,转换给CPU,电路简单。系统设计中可以用总线拓扑,在一根I/O线上挂接多个传感器,非常适合温度的多点测量。
1 DS18B20简介
DS18B20是美国Dallas半导体公司生产的单总线数字温度传感器,它将半导体温敏元件、A/D转换器、存储器等做在一个很小的集成电路芯片上,传感器直接输出的是温度信号数字值。它具有微型化、低功率、高性能、抗干扰能力强、电压范围宽、易于与单片机接口等优点,适合于各种温度测控系统。[]DS18B20内部的64位激光ROM用于存储由生产厂家光刻的全球唯一的、且不可更改的64位序列号。CPU通过ROM指令读取总线上挂接的各个传感器ROM识别码以选择单总线上的某一个从器件,未被选中的从器件则忽略CPU的后续指令。即以该序列号为传感器节点的地址。
2 系统的硬件基础
测温系统的主要组成部分有温度传感器DS18B20、EEPROM、人机界面(键盘、LCD显示器)和STC15单片机,结构框图如图1所示。
系统以单总线的形式挂接多个传感器于MCU的某一I/O端口。MCU通过单总线完成于传感器节点的通讯,主要工作包括:节点地址的读取及识别,对选定节点读取或传输数据。EEPROM可以用于对各个传感器64位序列号的存储和简单的温度记录。显示模块选用字符型液晶显示器LCD1602,对测量结果进行显示。
本设计中的EEPROM可以存储各个传感器的64位序列号并进行简单的温度记录。此处选用的是ATMEL公司基于I2C总线接口的24C64。对于24C64,要在I2C总线上连续发送两个器件子地址,其寻址范围可达16KB。
3 多点识别的实现与软件设计
对DS18B20的访问分为3个步骤。(1)初始化:单片机通过单总线,向DS18B20发送一个复位脉冲,单总线上的所有传感器都被复位。(2)序列号访问命令:MCU发送某一个DS18B20的序列号。单总线上所有相连的DS18B20都进行编码匹配,只有编码一致的从芯片才被激活。(3)内存访问命令:MCU对选中的DS18B20发送内存访问命令。
3.1 关于DS18B20的时序
单总线(1-Wire)是美国Dallas公司推出的外围串行扩展总线。所有单总线的器件都挂在这跟线上,即仅通过1条连接线,便可以完成全部的控制、通信甚至是供电。与I2C、SPI等芯片间的通信协议不同,单总线协议中并没有专门的时钟线,所以严格的时序控制是通信得以实现的基础。DS18B20的通信协议主要包括复位和应答脉冲时序、写时序和读时序。
对DS18B20的每一次操作,都是由复位开始的。复位时序如图2。
首先由单片机发送复位脉冲,然后释放之。若总线上有正常工作的芯片,在15-60us后,传感器芯片会发送存在脉冲——60-240us的低电平信号。此时DS18B20的复位与应答已经完成了,适当延时后既可对其进行读写操作。
写时序是单片机主动发出的,其开始是主机将单总线从高电平拉为低电平,时序如图3。
读时序和写时序类似,由主机发起,不同的是主机会进入采样状态,接收数据。
3.2 DS18B20的序列号采集
在系统的实际应用中,需要测温节点的数字地址与物理位置相一致。即用户需要知道所显示的温度是哪个测温节点测出来的,否则一切都没有意义。
当新的DS18B20接入系统时,需要读取其64位序列号,将该序列号与用户赋予的人工编码相对应,并存入EEPROM中。如此一来,即使系统掉电以后,各个传感器芯片的序列号也能得以被保存。
传感器芯片的64位序列号采集流程如图4所示。当单片机发出复位脉冲并受到芯片的应答信号,就对DS18B20发送读ROM命令,即对总线写#33H。此时,传感器芯片会做出发送64位ROM序列号的准备,但是数据的读时序依然是由主机发起。当64位的ROM序列号读取完毕后,就可以将当前单总线器件的序列号存入EEPROM为其开辟的存储空间内。
3.3 主程序设计
模块设计是使程序结构化的有效方法。该测温系统的主程序主要分为DS18B20初始化模块、温度转换模块、数据处理模块、显示模块以及上文提到的传感器ROM序列号采集模块,其中序列号采集模块是独立于温度检测之外的。
初始化模块的主要任务是设置DS18B20的上、下限报警温度及传感器的分辨率,其操作对象是芯片内部高速暂存器RAM的第2、3、4字节。DS18B20内部的高速RAM是由9个字节的高速暂存器和非易失性电擦写EEPROM集成的,其中EEPROM用于存储TH、TL和配置存储器的值。数据是先写入RAM,经校验后在传给EEPROM,这样就可以保证本次设置的参数在下次开机复位之后还会有效。此模块编写为子程序“DS18B20_INT”。
在温度转换模块中,采用了统一转换,逐个读取的算法。系统中,设置DS18B20为12位分辨率,温度转换的时间为750ms(实际的程序延时设置为1s)。所以,如果要等传感器逐一进行温度转换并读取的话,会对影响系统的实时性:第一个传感器和最后一个传感器测得温度的时间差是分钟级的。所以在温度转换模块中,我们先复位所有的DS18B20,然后发送“跳过ROM”命令(#0CCH)和“温度转换”命令(#44H),这就可以实现用一秒的时间使全部传感器完成温度转换,然后再逐一读取并保存,其中最后一步操作只需要极端的时间。此模块编写为子程序“TEMP_RD”,其流程见图5。
DS18B20作为温度传感器,突出特点就是它向主机传输的并不是电压或电流等模拟信号,而是不易失真的数字信号。既然是数字信号,其结果就有特定的格式。在DS18B20内部,测温结果存储在暂存RAM中,其字节1的高5位是符号位,字节0的低4位是小数部分,中间7位是整数部分。
当数据上传到单片机之后,需要经过数据转换才可以存入显示缓冲区供显示子程序读取。数据转换模块的功能是将二进制数据通过查表的方法转换为按十进制位存储的ASCII码,存入显示缓冲区。此模块编写为子程序“DS18B20_DIV”,具体流程见图6。
4 结语
基于DS18B20的单总線多点测温系统具有硬件简单的突出优点,易于扩展,成本低廉。在本课题中,由外接的EEPROM保存单总线器件的独有序列号和物理地址,使用方便。本设计经试验条件下测试,工作稳定,使用带屏蔽的三芯电缆,在80米内可准确传输数据。
参考文献
[1] 梅丽风,王艳秋,汪毓铎,等.单片机原理及接口技术[M].北京:清华大学出版社,2006.
[2] 丁向荣.单片机原理与接口技术—— 基于STC15系列单片机[M].北京:电子工业出版社,2012.
[3] DALLAS公司的DS18B20数据手册.
[4] 杨海波,张玮,刘晓静,等.一种基于数字温度传感器DS18B20的多功能电子温度计设计[J].中国医学物理学杂志,2013,30(1):3890-3893.
[5] 韩雪,蒋国平,马幼军.数字式温度传感器DS18B20在温室环境监测中的应用[J].仪表技术传感器,2002(9):29-31.
[6] 秦芹.一种基于DS18B20的温度采集新方案[J].电子技术,2010(10):62-64.