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

目录

1.DS18B20介绍:

2.引脚定义

3.单总线通信协议

[3.1DS18B20 模块命令](#3.1DS18B20 模块命令)

3.2DS18B20时序

3.2.1初始化(复位)

3.2.2写时序0/1

3.2.3读时序

4.温度数据格式与温度计算


1.DS18B20介绍:

  • **功能:**温度采集
  • 测温范围:-55℃ ~ +125℃,在 - 10℃~+85℃范围内精度可达 ±0.5℃;
  • 精度:±0.5℃
  • 工作电压:3v ~ 5.5v
  • 可编程的分辨率: 9~12 位 (传感器对温度变化的敏感程度 / 精度):
    • 9位:0.5℃ ------最多在 93.75ms 内把温度转换为数字
    • 10位:0.25℃ ------最多在 375ms 内把温度值转换为数字,
    • 11位:0.125℃ ------最多在 187.5ms 内把温度值转换为数字,
    • 12位(默认):0.0625℃ ------最多在 750ms 内把温度值转换为数字,
  • 通信方式:单总线、半双工(优势:大大提高抗干扰能力)
  • 温度数字量转换时间:典型值200ms
  • 特点:①每片芯片有唯一编码(64 位唯一 ROM 序列号(出厂光刻))支持联网寻址,多只DS18B20可以同时连接在一根单总线上,实现单总线多设备组网。------因此,每一个总线上的器件都必须是漏极开路或三态输出。
  • 供电方式:支持外部供电(3.0V~5.5V)和寄生供电(从数据线取电)(当多只DS18B20同时连接在一根单总线上时,数据线给电太慢,此时需从 VDD 引脚接入一个外部电源,);
  • 使用注意:①DS18B20的IO引脚是开漏的,使用时需要外接上拉电阻(阻值4.7kΩ~10kΩ)(∵有个默认的高电平就行了,阻值太小耗能多)

2.引脚定义

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

电路要求

  • 上拉电阻:DQ 引脚必须串联 4.7kΩ~10kΩ 上拉电阻至 VCC,确保总线空闲时为高电平,避免信号失真;

  • 供电选择: 优先采用外部供电(VCC 接电源),稳定性优于寄生供电;寄生供电时需在温度转换期间保持总线高电平,必要时添加强上拉电路;

  • 抗干扰 :长距离传输(超过 10 米)需使用屏蔽线,屏蔽层接地,避免电磁干扰。

3.单总线通信协议

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

3.1DS18B20 模块命令

  • 操作ROM命令 :成功进行一次 ROM 操作后,就可以对 DS1820 进行特定的操作,总线控制器可以发出六个存储器和控制操作命令中的任一个。
    • 1.读ROM (0x33)
    • 2.搜索ROM (0xF0)
    • 3.匹配ROM (0x55)
    • 4.跳过ROM (0xCC)
    • 5.报警搜索 (0xEC)
  • ds18b20采集温度完整流程 :
    • 1.复位 ds18b20_reset();
    • 2.发送0xCC,跳过ROM write_ds18b20(0xCC);
    • 3.发送0x44,开启温度转换 write_ds18b20(0x44);
    • 4.延时1s
    • 5.复位 ds18b20_reset();
    • 6.发送0xCC,跳过ROM write_ds18b20(0xCC);
    • 7.发送0xBE,读取温度 write_ds18b20(0xBE);
    • 8.读取两个字节温度

3.2DS18B20时序

3.2.1初始化(复位)

时序图:

  • 主机拉低总线大于 480μs 小于960us(复位脉冲)
  • 主机拉高总线,转换输入模式
  • DS18B20 在 15~60μs 去检测是否出现上升沿
  • DS18B20 在 60~240μs 内拉低总线(存在脉冲)
  • ds18b20最终释放总线,总线为高电平

3.2.2写时序0/1

时序图:

  • 写0时序:
    • 主机将总线拉低大于60us,小于120us
    • ds18b20在60us内进行采样,如果采到低电平,代表主机发送了一个0
    • 主机释放总线,将引脚拉高
  • 写1时序:
    • 主机将总线拉低大于1us
    • 主机释放总线,将引脚拉高
    • ds18b20在45us内进行采样,如果采到高电平,代表主机发送了一个1

3.2.3读时序

时序图:

  • 主机将总线拉低大于1us,释放总线,引脚变为高电平
  • 主机再15us内进行采样,若采到一个高电平,代表读到1,若采到低电平,代表读到0
  • 最终ds18b20释放总线

4.温度数据格式与温度计算

  • 温度数据格式:温度数据以 16 位带符号二进制补码形式存储在暂存器第 0 字节(低字节)和第 1 字节(高字节),格式如下(12 位分辨率):
  • 温度计算
    • 先读到温度低位字节,再读到温度高位字节
    • 合并高、低字节:将高字节左移 8 位,与低字节按位或,得到 16 位完整数据;
    • 数据处理------符号判断与转换:
      • 正温度(S=0):直接用 16 位数据 ×0.0625(12 位分辨率);
      • 负温度(S=1):先对 16 位数据取反加 1(补码转原码),再 ×0.0625,结果加负号;
相关推荐
’长谷深风‘2 小时前
51单片机入门(4温度采集:DS18B20)
单片机·嵌入式硬件·51单片机·ds18b20·温度采集
yugi9878382 小时前
51单片机控制8×8点阵显示汉字(上下左右滚动)
单片机·嵌入式硬件·51单片机
LCG元6 小时前
STM32项目开发:基于CAN总线的多节点通信与数据采集系统
stm32·单片机·嵌入式硬件
12.=0.7 小时前
【stm32_2.1】【快速入门】自举模式、Flash闪存、LED点灯——对二极管PN结解析
stm32·单片机·嵌入式硬件
辰哥单片机设计7 小时前
STM32智能风扇(机智云)
stm32·单片机·嵌入式硬件
【 STM32开发 】7 小时前
【STM32 + CubeMX】低功耗 -- SLEEP 睡眠模式
stm32·单片机·低功耗·sleep·睡眠模式
芯芯点灯8 小时前
LIS2DW12驱动,功耗,数据可视化
驱动开发·单片机
Nice__J8 小时前
Mcu架构以及原理——2.Cortex-M流水线与指令集
单片机·嵌入式硬件·架构
小白橘颂8 小时前
【C语言】基础概念梳理(一)
c语言·开发语言·stm32·单片机·mcu·物联网·51单片机