DS18B20电气摘要
- 供电电压3-5.5V
- 待机电流750nA,活动电流1mA
- 一线通信方式,信号引脚为开漏结构
- 硬件供电方式有两种接法。常规供电或总线总线
测量相关特性
-
精度±0.5℃,大测量范围时精度±2℃
-
最大测量范围-55℃ ~ +125℃
-
分辨率四挡可调9-12bit。每档对应的增量是0.5°C、0.25°C、0.125°C和0.0625°C。
-
虽然分辨率可以做到0.0625℃,但是还是会受制于物理精度0.5℃。只能说在高分辨率下,起对温度更敏感。但是测量误差依然是0.5℃
-
上电默认是12bit精度,
-
负温度的表示方法,在温度数据的2字节数据里的S位表示正负号,S=0表示正数,1表示负数。
-
DS手册也举了结果对应的读到的数值例子,如下所示
-
不同测量分辨率下,转换时间是不同的,12bit精度下,转换时间为750ms。
不常用特性
-
每个设备在板载ROM中存储有唯一的64位序列码。可以用这个序列号来唯一确定温度sensor。这64bit数据的含义如下:
-
报警设置的能力,通过报警搜索命令可识别温度超出编程限制的设备。
通信时序
通信步骤:
1.发送初始化脉冲
2.ROM指令
3.功能指令
-
每次通信都必须按照这个发送顺序发送。否则IC不给回应。
-
ROM指令工5个,用于确定是给哪个设备发送命令。
-
如果总线上只有一个设备,可以用0x33这个read ROM来简化ROM搜索的过程。
-
关于ROM指令的详细,可以参考Application Note 937: Book of iButton® Standards.
-
功能指令有如下这些
-
启动测量发送0x44指令
-
读取温度等数据0xbe指令
发送初始化脉冲
- 主机拉低信号线,最小拉低480μs。然后释放总线后,DS18B20就会也- 拉低总线回应主机。可以通过这个过程了解DS18B20是否通信正常。
抓时序
启动测量
读取数据
芯片数据存放位置
1.芯片的配置都是存放在内部的EEPROM里面。里面的数据存放规则是这样的。下面对里面的常用的几个字节做下笔记:
2.Byte4是配置字节,用于配置分辨率,里面的R0,R1决定了4个分辨率档位,其他bit是固定的,必须原样保留。
ESP32操作DS18B20
在esp-idf的组件库里面,已经有DS18B20的组件库。因此直接拿来主义,重点记录怎么使用这个组件库。
库的首页
https://components.espressif.com/components/espressif/ds18b20
1.先安装依赖
打开terminal输入命令idf.py add-dependency “espressif/ds18b20^0.1.1”
安装成功后会在工程目录下多一个目录espressif__ds18b20、espressif__onewire_bus,和一个文件idf_component.yml