51单片机——DS18B20 温度传感器

目录

一、核心特性与内部结构

[1.1 核心参数](#1.1 核心参数)

[1.2 内部结构](#1.2 内部结构)

二、接线与电路要求

[2.1 引脚定义](#2.1 引脚定义)

[2.2 关键电路要求](#2.2 关键电路要求)

三、单总线通信协议

[3.1 DS18B20 温度采集流程](#3.1 DS18B20 温度采集流程)

[3.2 DS18B20 操作时序](#3.2 DS18B20 操作时序)

[3.2.1 复位时序](#3.2.1 复位时序)

[3.2.1 写时序](#3.2.1 写时序)

[3.2.2 读时序](#3.2.2 读时序)

四、温度数据格式与计算

[4.1 数据存储格式](#4.1 数据存储格式)

[4.2 温度计算方法](#4.2 温度计算方法)

五、重点内容


一、核心特性与内部结构

1.1 核心参数

  • 测温范围:-55℃ ~ +125℃,在 - 10℃~+85℃范围内精度可达 ±0.5℃;
  • 分辨率(传感器对温度变化的敏感程度 / 精度):
    • 9位:0.5℃
    • 10位:0.25℃
    • 11位:0.125℃
    • 12位(默认):0.0625℃
  • 通信方式:单总线(1-Wire),双向数据传输,仅需 1 根 I/O 线;
  • 供电方式:支持外部供电(3.0V~5.5V)和寄生供电(从数据线取电);
  • 存储特性:内置 64 位唯一 ROM 序列号(出厂光刻),支持单总线多设备组网。

1.2 内部结构

  • ROM(只读存储器):存储 64 位唯一地址,格式为 "8 位家族码 + 48 位序列号 + 8 位 CRC 校验码",用于多设备区分;
  • 高速暂存器(9 字节):第 0~1 字节存储温度数据(低字节 + 高字节),第 2~3 字节为报警阈值(TH/TL),第 4 字节为配置寄存器(控制分辨率);
  • EEPROM:非易失性存储,用于保存 TH、TL 和配置寄存器数据,掉电不丢失。

二、接线与电路要求

2.1 引脚定义

引脚排列图 原理图

引脚序号 引脚名称 核心功能 连接说明
1 GND 接地 接单片机 GND,确保共地
2 DQ 数据引脚 接单片机任意 I/O 口(如 P3.7),需上拉电阻
3 VCC 电源引脚 外部供电时接 3.0V~5.5V,寄生供电时接地

2.2 关键电路要求

  • 上拉电阻:DQ 引脚必须串联 4.7kΩ~10kΩ 上拉电阻至 VCC,确保总线空闲时为高电平,避免信号失真;
  • 供电选择:优先采用外部供电(VCC 接电源),稳定性优于寄生供电;寄生供电时需在温度转换期间保持总线高电平,必要时添加强上拉电路;
  • 抗干扰:长距离传输(超过 10 米)需使用屏蔽线,屏蔽层接地,避免电磁干扰。

三、单总线通信协议

DS18B20 的所有通信都依赖单总线协议,需严格遵循**"初始化→ROM 命令→功能命令"**的流程,时序精度直接决定通信成败。

3.1 DS18B20 温度采集流程

温度采集流程

3.2 DS18B20 操作时序

3.2.1 复位时序

  1. 主机拉低总线大于 480μs(复位脉冲)
  2. 主机拉高总线,转换输入模式
  3. DS18B20 在 15~60μs 去检测是否出现上升沿
  4. DS18B20 在 60~240μs 内拉低总线(存在脉冲)

复位时序

3.2.1 写时序

  • 写0:
  1. 主机将总线拉低至少 60μs
  2. DS18B20 在 60μs 内去采样,采到低电平,则代表主机向 DS18B20 发送了一个 bit'0'
  3. 最后主机将总线拉高
  • 写1:
  1. 主机将总线拉低大于 1μs
  2. 主机释放总线,将总线拉高
  3. 主机延时至少 45μs,确保 DS18B20 能够采样到一个高电平

写时序

3.2.2 读时序

  1. 主机将总线拉低大于 1μs
  2. 主机立刻释放总线,将总线拉为高电平(DS18B20控制总线)
  3. 主机大约在 15μs 左右去采样
  4. 采到低电平,代表读到了 0,采到高电平,代表读到 1

读时序

四、温度数据格式与计算

4.1 数据存储格式

温度数据以 16 位带符号二进制补码形式存储在暂存器第 0 字节(低字节)和第 1 字节(高字节),格式如下(12 位分辨率):

  • S:符号位,S=0 表示正温度,S=1 表示负温度;
  • bit7~bit0:低字节数据,其中 bit3~bit0 为小数部分,bit7~bit4 为整数部分低 4 位;
  • 高字节 bit11~bit8:整数部分高 5 位(12 位分辨率时)。

输出示例

4.2 温度计算方法

  • 合并高、低字节:将高字节左移 8 位,与低字节按位或,得到 16 位完整数据;
  • 符号判断与转换:
    • 正温度(S=0):直接用 16 位数据 ×0.0625(12 位分辨率);
    • 负温度(S=1):先对 16 位数据取反加 1(补码转原码),再 ×0.0625,结果加负号;
  • 公式:

五、重点内容

  1. DS18B20 传感器量程、精度、分辨率、工作电压
  2. DS18B20 接口(GPIO 单总线)
  3. DS18B20 采集流程
  4. DS18B20 时序
相关推荐
熙芯XiChip13 小时前
CAN与CANopen的本质区别
单片机
lilihewo14 小时前
Altium Designer 封装库的创建(分享pcb 3D封装库)
嵌入式硬件·51单片机
神罚天下ET15 小时前
典型arm位单片机启动流程(从上电到main.c)
c语言·arm开发·单片机
碧海银沙音频科技研究院15 小时前
蓝牙耳机使用WSDF5361锂保芯片进入船运模式实现方法
嵌入式硬件·算法
Zevalin爱灰灰16 小时前
模拟信号链电路——基于TL431的电压基准电路
单片机·嵌入式硬件
csdn杰哥17 小时前
瑞萨单片机开发教程[二十七] DTC 外部中断触发传输实验
单片机·嵌入式硬件·mongodb·瑞萨·ra6m5
zcmodeltech17 小时前
农业教学实训沙盘物联网控制系统设计:基于STM32与Modbus RTU的“感知-控制-实训”一体化方案
分布式·stm32·嵌入式硬件·物联网
Hello_Damon_Nikola18 小时前
LIS3DH从入门到精通_三轴加速度计实战指南
单片机·嵌入式硬件·3d
zcmodeltech19 小时前
化工装置沙盘模型多设备协同控制系统设计:基于STM32与Modbus RTU的装置-流程-安全联动方案
大数据·stm32·嵌入式硬件·安全·unity·制造
coward9119 小时前
千兆以太网卡(Ethernet)驱动初始化完成,但是无法udhcpc获取ip
服务器·网络·嵌入式硬件·tcp/ip