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 时序
相关推荐
guygg8810 分钟前
基于STM32的贪吃蛇游戏实现(OLED屏)
stm32·嵌入式硬件·游戏
BackCatK Chen16 分钟前
STM32保姆级入门教程|第4章:GPIO输入+外部中断 实现按键控制LED(手把手全流程)
stm32·单片机·外部中断·按键控制 led·stm32cubeid·gpio 输入
悠哉悠哉愿意1 小时前
【单片机学习笔记】第十二届国赛经验复盘
笔记·单片机·嵌入式硬件·学习
rit84324991 小时前
STC8单片机模拟AD转换程序(NTC测温)
单片机·嵌入式硬件
szxinmai主板定制专家1 小时前
基于 STM32 + FPGA 船舶电站控制器设计与实现
arm开发·人工智能·stm32·嵌入式硬件·fpga开发·架构
我不是程序猿儿2 小时前
【嵌入式】编码器计数倍频,机械一格与电气计数
stm32·单片机·嵌入式硬件·学习
Hello World . .2 小时前
51单片机基础外设:GPIO(以LED、按键、数码管为例)
单片机·嵌入式硬件
Flamingˢ2 小时前
基于ARM的裸机程序设计和开发(三):C编程基础与Zynq裸机开发常用方法
c语言·arm开发·单片机
Crazyong4 小时前
FreeRTOS-CPU使用率统计
单片机·嵌入式硬件
_Ningye11 小时前
STM32 — 6.1 TIM定时中断
stm32·单片机·嵌入式硬件