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 时序
相关推荐
代码游侠2 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
CODECOLLECT5 小时前
京元 I62D Windows PDA 技术拆解:Windows 10 IoT 兼容 + 硬解码模块,如何降低工业软件迁移成本?
stm32·单片机·嵌入式硬件
BackCatK Chen6 小时前
STM32+FreeRTOS:嵌入式开发的黄金搭档,未来十年就靠它了!
stm32·单片机·嵌入式硬件·freertos·低功耗·rtdbs·工业控制
全栈游侠8 小时前
STM32F103XX 02-电源与备份寄存器
stm32·单片机·嵌入式硬件
Lsir10110_9 小时前
【Linux】中断 —— 操作系统的运行基石
linux·运维·嵌入式硬件
深圳市九鼎创展科技11 小时前
瑞芯微 RK3399 开发板 X3399 评测:高性能 ARM 平台的多面手
linux·arm开发·人工智能·单片机·嵌入式硬件·边缘计算
辰哥单片机设计11 小时前
STM32项目分享:车辆防盗报警系统
stm32·单片机·嵌入式硬件
小龙报12 小时前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
范纹杉想快点毕业12 小时前
嵌入式与单片机开发核心学习指南——从思维转变到第一性原理的深度实践
单片机·嵌入式硬件
Industio_触觉智能12 小时前
瑞芯微RK3566开发板规格书,详细参数配置,型号EVB3566-V1,基于RK3566核心板SOM3566邮票孔封装
嵌入式硬件·开发板·rk3568·rk3566·核心板·瑞芯微