温度传感器技术

DS18B20温度传感器连接到MCU

DS18B20温度传感器知识介绍
DS18B20是常用的数字温度传感器. 它输出数字信号, 具有体积小的特点, 硬件开销低, 抗干扰能力强, 高精准度, 并被广泛使用.

DS18B20 数字温度探头提供 9 到 12 少量

DS18B20 数字温度探头提供 9 到 12 少量

防水 DS18B20 传感器探头

防水 DS18B20 传感器探头

TPE 包覆成型 IP68 防水 DS18B20 传感器

TPE 包覆成型 IP68 防水 DS18B20 传感器

DS18B20温度传感器简介
技术特点:
①. 独特的单线接口模式. 当 DS18B20 连接到微处理器时, 仅有的 1 需要一根线来实现微处理器与DS18B20之间的双向通信.
②. 温度测量范围-55℃~+125℃, 固有测温误差1℃.
③. 支持多点联网功能. 只需三根线即可并联多个 DS18B20, 且最多为 8 可并联实现多点测温. 如果数量太大, 电源电压会太低, 导致信号传输不稳定.
④. 工作电源: 3.0~5.5V/直流 (可以使用数据线寄生电源).
⑤. 使用过程中无需外围元件.
⑥. 测量结果以9~12位数字形式串行传输.
⑦. 不锈钢保护管直径为Φ6.
⑧. 适用于DN15~25各种介质工业管道温度测量, DN40~DN250及狭小空间设备.
⑨. 标准安装螺纹 M10X1, M12X1.5, G1/2”可选.
⑩. PVC电缆直连或德式球型接线盒连接, 方便与其他电器设备连接.

DS18B20读写时序及测温原理:
DS18B20测温原理如图 1. 图中低温度系数晶振的振荡频率受温度影响很小, 并用于产生固定频率的脉冲信号发送至计数器 1. 高温度系数晶振的振荡频率随温度变化明显, 产生的信号作为计数器的脉冲输入 2. 柜台 1 温度寄存器预设为-55℃对应的基值. 柜台 1 减去低温度系数晶体振荡器产生的脉冲信号. 当计数器的预设值 1 减少为 0, 温度寄存器的值将增加 1, 和计数器的预设 1 将被重新加载. 柜台 1 重新开始对低温度系数晶振产生的脉冲信号进行计数, 并且循环继续直到计数器 2 计数到 0, 停止温度寄存器值的累加. 此时, 温度寄存器中的值是测量的温度. 斜率累加器用于补偿和校正温度测量过程中的非线性, 其输出用于校正计数器的预设值 1.

数字 1 如下:

DS18B20与MCU连接电路图

DS18B20与MCU连接电路图

2. DS18B20与MCU连接图

DS18B20引脚参数定义

DS18B20引脚参数定义

3. DS18B20引脚定义:

数据Q: 数据输入/输出. 漏极开路 1 线接口. 当用于寄生电源模式 VDD 时,它还可以为器件提供电源: 正电源GND: 电源地 4. DS18B20内部分析介绍:

DS18B20内部结构分析介绍

DS18B20内部结构分析介绍

上图为DS18B20的框图, 64位ROM存储设备唯一的序列号. 缓冲存储器包含 2 存储温度传感器数字输出的温度寄存器字节. 此外, 缓冲存储器提供对 1 字节上限和下限报警触发寄存器的访问 (TH 和 TL) 和 1 字节配置寄存器. 配置寄存器允许用户设置温度数字转换的分辨率 9, 10, 11, 或者 12 位. TH, TL, 配置寄存器是非易失性的 (EEPROM), 所以当设备断电时它们会保留数据. DS18B20采用Maxim独特的1线总线协议, 它使用控制信号. 控制线需要弱上拉电阻,因为所有设备都通过三态或开漏端口连接到总线 (DS18B20 的 DQ 引脚). 在该总线系统中微处理器 (掌握) 每个设备使用唯一的 64 位代码. 因为每个设备都有唯一的代码, 一根总线上可寻址的设备数量实际上是无限的.

温度寄存器格式

DS18B20温度寄存器格式图

DS18B20温度寄存器格式图

温度/数据关系

DS18B20 温度-数据关系

DS18B20 温度-数据关系

操作警报信号

DS18B20执行温度转换后, 它将温度值与存储在 1 字节 TH 和 TL 寄存器中的用户定义的二进制补码警报触发值进行比较. 符号位表示该值是正还是负: 正S=0, 负S=1. TH 和 TL 寄存器是非易失性的 (EEPROM) 因此当设备断电时不会丢失. TH和TL可以通过字节访问 2 和 3 记忆的.
TH 和 TL 寄存器格式:

DS18B20配置寄存器

DS18B20配置寄存器

使用外部电源给DS18B20供电示意图

使用外部电源给DS18B20供电示意图

使用外部电源给DS18B20供电示意图

64-位激光只读存储器代码:

DS18B20 64位激光只读存储器代码

DS18B20 64位激光只读存储器代码

每个 DS18B20 都包含一个存储在 ROM 中的唯一 64 位代码. 最不重要的 8 ROM 代码位包含 DS18B20 的单线系列代码: 28小时. 下一个 48 位包含唯一的序列号. 最有意义的 8 位包含循环冗余校验 (CRC) 字节, 这是从第一个计算出来的 56 ROM 代码位.

DS18B20内存映射

DS18B20内存映射

DS18B20内存映射

配置寄存器:

数字 2

DS18B20配置寄存器

DS18B20配置寄存器

字节 4 存储器包含配置寄存器, 其组织如图所示 2. 用户可以使用位R0和R1设置DS18B20的转换分辨率,如下表所示 2. 这些位的上电默认值是 R0 = 1 且 R1 = 1 (12-位分辨率). 请注意,分辨率和转换时间之间有直接关系. 少量 7 和位 0 到 4 配置寄存器中的内容保留供设备内部使用,不能被覆盖.

桌子 2 温度计分辨率配置

DS18B20温度计分辨率配置

DS18B20温度计分辨率配置

CRC生成

CRC 字节是 DS18B20 64 位 ROM 代码的一部分,在暂存器的第 9 个字节中提供. ROM 代码 CRC 从第一个计算 56 ROM 代码的位并包含在 ROM 的最高有效字节中. 暂存器 CRC 是根据暂存器中存储的数据计算的, 所以当暂存器中的数据改变时它也会改变. CRC 为总线主机提供从 DS18B20 读取数据时进行数据验证的方法. 验证数据读取正确后, 总线主机必须根据接收到的数据重新计算 CRC,然后将该值与 ROM 代码 CRC 进行比较 (用于 ROM 读取) 或暂存器 CRC (用于暂存器读取). 如果计算出的 CRC 与读取的 CRC 匹配, 数据已正确接收. 比较 CRC 值并继续进行的决定完全由总线主控决定. DS18B20 内部没有电路可以阻止命令序列的执行,如果:
DS18B20 CRC (ROM 或暂存器) 与总线主控生成的值不匹配.
CRC 的等效多项式函数为:
CRC = X8 + X5 + X4 + 1
总线主机可以重新计算 CRC 并将其与 DS18B20 的 CRC 值进行比较::
多项式生成器如图所示 3. 该电路包括移位寄存器和异火门, 并且移位寄存器的位被初始化为 0. ROM 代码的最低有效位或字节的最低有效位 0 暂存器中的内容应一次移入移位寄存器. 位移位后 56 来自 ROM 或字节的最高有效位 7 从暂存器, 多项式生成器将包含重新计算的 CRC. 下一个, 暂存器 DS18B20 中的 8 位 ROM 代码或 CRC 信号必须移入电路. 在此刻, 重新计算的CRC是否正确, 移位寄存器将全为 0.

数字 3: CRC 发生器

DS18B20 CRC发生器流程图

DS18B20 CRC发生器流程图

V. 访问 DS18B20:
访问DS18B20的顺序如下:
步 1. 初始化;

步 2. ROM命令 (随后进行任何必要的数据交换);

步 3. DS18B20功能命令 (随后进行任何必要的数据交换);

笔记: 每次访问 DS18B20 时都会遵循此顺序, 因为如果序列中的任何步骤丢失或乱序,DS18B20将不会响应. 此规则的例外是搜索 ROM [F0h] 和报警搜索 [埃赫] 命令. 发出这两个 ROM 命令后, 主持人必须返回步骤 1 按顺序.
(以上介绍翻译自官方手册)

ROM命令
1, 读取ROM [33小时]
2, 匹配ROM [55小时]
3, 跳过ROM [CCh]
4, 报警搜索 [埃赫]

DS18B20功能命令
1, 转换温度 [44小时]
2, 写便签本 (记忆) [4呃]
3, 阅读便签本 (记忆) [贝赫]
4, 复制便签本 (记忆 [48小时]
5, 重新唤醒E2 [B8小时]
6, 读取功率 [B4h]

(以上命令的详细说明, 看官方手册)

六、. 访问DS18B20时序
初始化过程中, 总线主机发送复位脉冲 (TX) 通过拉动 1-Wire 总线将低电平保持至少 480μs. 然后, 总线主控释放总线并进入接收模式 (接收). 释放总线后, 5kΩ上拉电阻将1-Wire总线拉高. 当DS18B20检测到这个上升沿时, 它等待 15μs 至 60μs,然后通过将 1-Wire 总线拉低 60μs 至 240μs 来发送存在脉冲.

初始化时序:

写时隙有两种类型: “写1” 时段和 “写0” 时段. 总线使用写 1 编写逻辑的时隙 1 到 DS18B20 和写入 0 编写逻辑的时隙 0 到 DS18B20. 所有写入时隙的持续时间必须至少为 60μs,各个写入时隙之间的恢复时间至少为 1μs. 两种类型的写时隙均由主机将 1-Wire 总线拉低来启动 (见图 14). 生成写入 1 时隙, 将 1-Wire 总线拉低后, 总线主机必须在 15μs 内释放 1-Wire 总线. 释放总线后, 5kΩ上拉电阻将总线拉高. 生成一个
写 0 时隙, 将 1-Wire 线拉低后, 总线主控器必须在时隙持续时间内继续将总线保持在低电平 (至少 60μs). 在主机启动写时隙后,DS18B20 在 15μs 至 60μs 的窗口内对 1-Wire 总线进行采样. 如果采样窗口期间总线处于高电平, 一个 1 写入DS18B20. 如果线路低, 一个 0 写入DS18B20.
笔记: 时隙是专用于单个通道的时隙信息的串行自复用的一部分.
数字 14 如下:

DS18B20写时隙由主机驱动,将1-Wire总线拉至低电平

DS18B20写时隙由主机驱动,将1-Wire总线拉至低电平

读取时隙:
DS18B20只有在主机发出读时隙时才能向主机发送数据. 所以, 主机发出读存储器命令后必须立即生成读时隙 [贝赫] 或读取电源 [B4h] 命令以便 DS18B20 提供所需的数据. 或者, 主机可以在发出 Convert T 后生成读时隙 [44小时] 或召回E2 [B8小时] 命令来查明状态. 所有读取时隙的持续时间必须至少为 60μs,时隙之间的最小恢复时间为 1μs. 读时隙由主机将 1-Wire 总线拉低以使其保持低电平至少 1μs,然后释放总线来启动 (见图 14). 主设备发起读时隙后, DS18B20 将开始在总线上发送 1 或 0. DS18B20 发送一个 1 通过保持总线高电平并发送 0 将总线拉低. 当一个 0 已发送, DS18B20通过将总线保持在高电平来释放总线. 时隙结束,总线被上拉电阻拉回到高空闲状态.

DS18B20主机详解 1 时隙

DS18B20主机详解 1 时隙

DS18B20推荐主机读取 1 时隙

DS18B20推荐主机读取 1 时隙