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 时序
相关推荐
chao1898442 小时前
基于51单片机的红外遥控器实现方案
单片机·嵌入式硬件·51单片机
电子工程师-C513 小时前
基于51单片机的可燃气体监测系统
单片机·嵌入式硬件·51单片机
阿钱真强道3 小时前
04 ubuntu20下 OpenHarmony-3.0-LTS qemu mps2-an386 运行 liteos_m
linux·嵌入式硬件·ubuntu·harmonyos
电子小白1233 小时前
第13期PCB layout工程师初级培训-5-生产制造
笔记·嵌入式硬件·学习·制造·pcb·layout
小李做物联网3 小时前
【单片机毕设】38.1基于单片机stm32智能空气处理毕业设计
stm32·单片机·嵌入式硬件·物联网
brave and determined3 小时前
工程设计类学习(DAY6):PCB可制造性设计规范全解析
网络·嵌入式硬件·学习·pcb设计·设计规范·嵌入式设计·设计工艺
Jason_zhao_MR3 小时前
米尔RK3576成功上车!ROS2 Humble生态系统体验
linux·嵌入式硬件·物联网·ubuntu·嵌入式
Xx香菜3 小时前
单片机—3
单片机·嵌入式硬件
VekiSon13 小时前
51单片机——UART 串口通信
单片机·嵌入式硬件·51单片机