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,结果加负号;
相关推荐
橘为己有4417 小时前
51单片机:定时/计数器
单片机·51单片机
杯子不吃紫菜10 小时前
LangGraph 体系实战(下):中断恢复、流式、子图与设计模式
单片机·嵌入式硬件·设计模式
qq_4480111610 小时前
中断服务函数简介
嵌入式硬件
Risehuxyc10 小时前
STM32程序逻辑---入口函数逻辑和NVIC嵌套向量中断控制器初始化
stm32·单片机·嵌入式硬件
【 STM32开发 】10 小时前
CubeMX+STM32】SD卡U盘实现__USB+FATFS (F103 篇)
stm32·单片机·嵌入式硬件
jianqiang.xue11 小时前
3倍向量算力:Arm给最小MCU装上本地AI
arm开发·人工智能·单片机
无敌最俊朗-1 天前
【电感专题2:电感的感抗、电路的阻抗、电流的滞后】
单片机·嵌入式硬件·元器件·电感
wuyk5551 天前
嵌入式故障诊断-Bug002-局部大数组压栈高温必死机
stm32·单片机·嵌入式硬件·mcu·物联网·51单片机·嵌入式实时数据库
Zwawa1 天前
嵌入式OLED表驱动菜单:用一张表、一个栈和一个窗口重写表驱动菜单
c语言·单片机·嵌入式
Dev_XH1 天前
【成品设计】基于沁恒单片机的电动汽车充电站智慧调度系统
stm32·单片机·嵌入式硬件·物联网