一、DS18B20 数字温度传感器的功能特性
(一)芯片主要功能
DS18B20 是一种的“一线总线”接口的温度传感器。与传统的热敏电阻等测温元件相比,它是一种新型的体积小、适用电压宽、与微处理器接口简单的数字化温度传感器。
- 一线总线:用一根总线实现主设备对从设备的控制。所有的数据和命令都在这根线上传送,首先传送的是最低位。为了使其他设备也能使用这根线,一根总线协议采用了一个三态门,使得每一个设备在不传送数据时空出该数据线给其他设备。一根总线在外部设备需要一个上拉电阻器,所以总线空闲时总是高水平。为了保证信号的完整性,一根总线协议定义了以下几种信号:复位脉冲、存在脉冲、读写0或1。除存在脉冲外,其他的信号均由主设备初始化。
(二)芯片特点
1.DS18B20的内部结构由四部分构成:
64位ROM、温度传感器、非挥发的温度报警传感器TH和TL、配置寄存器
配置寄存器是来配置不同的位数来选择温度检测精度的。占用8个字节,如下图所示。
![]()
低5位固定为1,TM固定是1表示可以开始工作,R0和R1用来设置DS18B20的精度,可设置为9,10,11或12位,对应的分辨率温度是0.5℃,0.25℃,0.125℃和0.0625℃。
![]()
2.独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
3.支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。
4.DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。
5.适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电 。
- 寄生电源是一种供电方式,通过数据线供电,输出端近似恒压电源,但是输出电流是非常小的。
6.在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。
7.测量结果直接输出数字温度信号,以"一根总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。
8.负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。
(三)性能参数
1.供电电压:3~5.5V 工作电流1.5mA
2.测量范围:-55℃~+125℃ 测量精度为±0.5℃(-10℃~85℃)
3.对应的可分辨温度分别为0.5℃、0.25℃、0.125℃ 和0.0625℃,0.0625℃为最小分辨率
4.不锈钢管尺寸:常用630mm、650mm(其他尺寸可定做)
5.连接线常用PVC普通导线
6.可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃ 和0.0625℃,可实现高精度测温,这里的分辨率位数选择由内部配置寄存器控制选择
(四)引脚
VCC:外部电源,如果使用寄生供电模式,该端接地。
DQ:数据引脚,需要上拉电阻拉高
GND:接地端,提供参考低电平
(五)典型电路连接方法
1、寄生供电电路
所谓寄生供电指的是DS18B20只需要两根接线,一根数据线,一根接地线。需要给DQ提供一个5KΩ的弱上拉电阻,在DS18B20在工作时需要给DQ提供一个强上拉。如果DS18B20工作在超过100℃的环境下,漏电流会比较大,寄生供电的工作方式可能无法正常为DS18B20供电,此时需要设计为独立供电模式。
2、独立供电电路
需要给DQ提供一个5KΩ的弱上拉电阻
二、DS18B20所需的OneWire库和DallasTemperature库的安装与使用
(一)在Arduino IDE中安装库
1.菜单栏【项目】-【加载库】-【管理库】。
2.查找“OneWire”或者“DallasTemperature”,选择版本进行安装。
3.验证。【项目】-【加载库】若有DallasTemperature或者OneWire则说明安装成功。
(二)通过网络下载手动安装库
1.【文件】-【首选项】找到项目文件夹的位置。
2.按照第一步的路径,找到项目文件夹位置,打开“libraries”文件夹。将已经下载完成的OneWire文件夹拷贝到此处。
备注:项目文件夹中的libraries文件夹是arduino IDE存放第三方库的文件夹。
3.验证。【项目】-【加载库】若有OneWire则说明安装成功。
备注:如果arduino IDE在手动添加库的过程中是打开的,那么一定先重新启动arduino IDE。
因为arduino IDE在启动时才会检查用户手动安装的第三方库,所以只有重启arduino IDE后才能让刚刚安装好的第三方库生效。
三、DS18B20+四位数码管显示温度值
(一)DS18B20串口监视器显示环境温度值
1.安装OneWire库和DallasTemperature库。
2.按照原理图连接电路。
DS18B20的VCC、DQ、GND分别连接到nano开发板的5V、A0(代码设置)、GND。——独立供电电路
10K电阻一段连接VCC,另一端连接DQ,上拉电阻用于提高I/O口的驱动能力。
3.copy如下代码。
4.上传后,打开【工具】-【串口监视器】。
DS18B20串口监视器显示环境温度值代码
- 函数Serial.begin(speed)完成串口的初始化,这种方式只能配置串口的波特率。
- 函数Serial.begin(speed,config)还可以配置数据位、校验位、停止位。
- 如Serial.begin(9600,SERIAL_8E2)是将串口波特率设置为9600,数据位是8,偶校验,停止位2。
Arduino 的输出基本就用两个函数 print 和 println,区别在于后者比前者多了回车换行。
(二)DS18B20+四位数码管显示温度值——硬件电路图
(三)DS18B20+四位数码管显示温度值——原理图
(四)DS18B20+四位数码管显示温度值——代码
备注:由于代码过长,故代码在下方百度网盘链接中,提取码:6v8n
[DS18B20+四位数码管显示温度值——代码] (https://pan.baidu.com/s/1uKqaRGag5ftU_aB_kg9v2g)
四、温度报警功能
(一)硬件电路图
(二)原理图
(三)代码
备注:由于代码过长,故代码在下方百度网盘链接中,提取码:2xrm
[温度报警](https://pan.baidu.com/s/1MDQHdkNpXsfDVGZ9EHlpMw )
(四)实验结果
备注:实验结果视频在百度网盘链接中,提取码:6hvj
[温度报警实验结果视频] (https://pan.baidu.com/s/1JyqhIpo5koy5r5gLa3MJhw )
网友评论