首页 理论教育 基于DS18B20的温度报警器设计方案分享

基于DS18B20的温度报警器设计方案分享

时间:2023-06-30 理论教育 版权反馈
【摘要】:·复位暂存器:用于将暂存器的内容复制到DS18B20的EEPROM,即把温度报警触发字节存入到非易失性存储器里。若在这条命令发出之后发出读时隙,则DS18B20将返回它的供电方式。至此,通信双方已经达成了基本的协议,接下来将是单片机与DS18B20间的数据通信。

基于DS18B20的温度报警器设计方案分享

1.实验任务及要求

任务:利用数字温度传感器DS18B20、蜂鸣器发光二极管等器件设计一款基于51单片机的温度报警器,要求测温范围在-55~125℃,精度大小0.1℃,利用数码管显示温度。设置默认上限报警温度为48℃、默认下限报警温度为5℃(通过程序可以更改默认上下限值)。当温度超过上、下限报警温度时,系统自动发出声光报警。

要求:

(1)熟练掌握51单片机的内部结构及工作原理;

(2)熟悉DS18B20温度传感器采集温度的原理和方法。

2.知识准备

(1)DS18B20简介

温度传感器的种类众多,DALLAS公司生产的DS18B20数字温度传感器具有体积小、抗干扰能力强、精度高、硬件开销小等特点。图3.4.1为DS18B20引脚和封装。关于DS18B20的更多信息请查看其数据手册,以下仅对其中部分内容进行说明。

DS18B20数字温度传感器采用全数字温度转换及输出,提供9~12位摄氏温度测量,而且有一个由高低电平触发的可编程的不因电源消失而改变的报警功能。

DS18B20通过一个单线接口发送或接收信息,因此在MCU和DS18B20之间仅需一条连接线(需加上地线)。它的测温范围为-55℃~+125℃,-10℃~+85℃范围内精度为±0.5℃。DS18B20可采用外部电源3V~5.5V供电,也能直接从单线数据线上摄取能量,除去了对外部电源的需求。DS18B20具有64位光刻ROM,内置产品序列号,每个DS18B20都拥有自己的序列号,这样方便多机挂接。

图3.4.1 DS18B20引脚和封装

(2)1-wire

1-wire即单线总线,又叫单总线,它由美国的达拉斯半导体公司(DALLAS SEMICONDUCTOR)推出。总线采用单根信号线,既可传输时钟,又能传输数据,而且数据传输是双向的。这种单总线技术具有线路简单,硬件开销少,成本低廉,便于总线扩展和维护等优点。

单总线适用于单主机系统,能够控制一个或多个从机设备。主机可以是微控制器,从机可以是单总线器件,它们之间的数据交换只通过一条信号线完成。当只有一个从机设备时,系统可按单节点系统操作;当有多个从机设备时,系统则按多节点系统操作。

(3)DS18B20的ROM操作命令

DS18B20具有64位光刻ROM,表3.4.1所示为其各位定义:前8位是产品类型标号;接着是每个器件的唯一的序列号,共48位;最后8位是前56位的CRC循环冗余校验码。

表3.4.1 64位光刻ROM

DS18B20采用单总线通信,须先建立ROM操作协议才能进行存储和控制操作。对ROM的操作包括:

·读出ROM(33H):用于读出DS18B20的序列号,即64位光刻ROM代码。

·匹配ROM(55H):用于识别(或选中)某一特定的DS18B20进行操作。

·搜索ROM(F0H):用于确定总线上的节点数以及所有节点的序列号。

·跳过ROM(CCH):命令发出后系统将对所有DS18B20进行操作,通常用于启动所有DS18B20转换之前,或系统中仅有一个DS18B20时。

·报警搜索(ECH):主要用于鉴别和定位系统中超出程序设定的报警温度界限的节点。

注意:如果主机只对一个DS18B20操作,则无须读取和匹配ROM,用跳过ROM命令,然后进行温度转换和读取操作。

(4)DS18B20的存储器操作命令

DS18B20内部存储器包括一个高速暂存器RAM和一个非易失性可电擦除的EEPROM。

高速暂存器RAM的结构为9字节的存储器,其结构如表3.4.2所示。前2字节是测得的温度信息,温度数据存储格式如表3.4.3所示。第2、3字节是复制的TH和TL,是易失的,每次上电复位时会被刷新。第4字节为配置寄存器,用于确定温度值的数字转换分辨率。配置寄存器位定义如表3.4.4所示,DS18B20分辨率的定义如表3.4.5所示。第5~7字节是保留的,表现为全逻辑1。第8字节是前面所有8个字节的CRC码。

表3.4.2 高速暂存器RAM及EEPROM

续表

表3.4.3 温度数据存储格式

表3.4.4 配置寄存器结构

表3.4.5 DS18B20分辨率定义及转换时间

以下是对高速暂存器RAM和EEPROM的操作指令:

·温度转换(44H):用于启动DS18B20进行温度测量,温度转换命令被执行后DS18B20保持等待状态。如果主机在这条命令之后跟着发出读时隙,而DS18B20又忙于温度转换,则DS18B20将在总线上输出“0”;若温度转换完成,则输出“1”。(www.xing528.com)

·读暂存器(BEH):用于读取暂存器中的内容,从字节0开始最多可以读取9个字节。如果不想读完所有字节,主机可以在任何时间发出复位命令来终止读取。

·写暂存器(4EH):用于将数据写入DS18B20暂存器的地址2和地址3(TH和TL字节)。可以在任何时刻发出复位命令来终止写入。

·复位暂存器(48H):用于将暂存器的内容复制到DS18B20的EEPROM,即把温度报警触发字节存入到非易失性存储器里。

·重读EEPROM(B8H):用于将存储在EEPROM中的内容重新读入暂存器。

·读电源(B4H):用于将DS18B20的供电方式信号发送到主机。若在这条命令发出之后发出读时隙,则DS18B20将返回它的供电方式。“0”代表寄生电源,“1”代表外部电源。

(5)DS18B20工作时序

初始化

所有对DS18B20的操作都需要先进行初始化,如图3.4.2所示。首先由单片机将单总线拉低且保持至少480μs,然后释放数据总线(单片机将数据线拉高),DS18B20接到复位信号后会在15μs~60μs内回发一个芯片的存在脉冲。至此,通信双方已经达成了基本的协议,接下来将是单片机与DS18B20间的数据通信。如果复位低电平的时间不足或是单总线的电路断路,则都不会接到存在脉冲。

图3.4.2 DS18B20初始化时序

②DS18B20写时隙。

当主机把数据线从逻辑高电平拉到逻辑低电平的时候,写时隙开始。有两种写时隙:写1时隙和写0时隙。写时隙在60μs~120μs之间,两个写周期间应留出至少1μs的恢复时间。每个时隙总线只能传输一位数据。

主机将DQ引脚拉低后,DS18B20在一个15μs~60μs的时间窗口内对DQ引脚进行采样:若DQ引脚是高电平,就是写1;若DQ引脚是低电平,就是写0。

主机要生成一个写1时隙,就必须把数据拉到低电平然后释放,在写时隙开始后的15μs内允许数据线拉到高电平。主机要生成一个写0时隙,就必须把数据线拉到低电平并保持60μs后释放。DS18B20写时隙的时序如图3.4.3所示。

图3.4.3 DS18B20写时隙时序

③DS18B20读时隙

单总线器件仅在主机发出读时隙时,才向主机传输数据。有两种读时隙:读1时隙和读0时隙。每个时隙总线只能传输一位数据。

主机将数据线拉低(保持时间大于1μs即可)后释放数据总线并采样(从单片机拉低数据线开始,在15μs内进行采样):如果读到DQ引脚是高电平,就是1;如果读到DQ引脚是低电平,就是0。DS18B20读时隙的时序如图3.4.4所示。

图3.4.4 DS18B20读时隙的时序

3.实验接线

本设计以单节点DS18B20为例,采用外部电源供电,DS18B20的数据线连接在单片机P3.5引脚,温度显示部分采用学习板上的8位数码管,硬件电路连接如图3.4.5所示。

图3.4.5 单节点DS18B20硬件连接参考电路

4.程序流程图及参考程序

(1)程序流程图

参考程序流程图如图3.4.6所示。主函数主要完成系统初始化、读取温度以及转换温度值的功能。数码管显示采用定时器中断控制,每2ms显示1位数码管,以保证数码管显示无闪烁。

图3.4.6 温度报警器参考程序流程图

(2)参考程序

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈