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,结果加负号;
相关推荐
不悔哥30 分钟前
开源 Zephyr:现代嵌入式 RTOS 长什么样
单片机·开源·嵌入式
广州灵眸科技有限公司37 分钟前
瑞芯微(EASY EAI)RV1126B display
开发语言·数据库·人工智能·科技·嵌入式硬件
国产化创客2 小时前
创客开发入门(三)Arduino IDE 开发环境
ide·单片机·嵌入式硬件·课程设计·智能硬件
CedarQR2 小时前
LubanCat-2 (RK3568) Debian 下让 H3C Magic USB 无线网卡(AIC8800)联网全记录
linux·网络·单片机·嵌入式硬件·debian·3568·h3c
芯片人00712 小时前
纯硬件一键开关机ASIC芯片,为什么比 MCU 方案更适合更可靠
人工智能·单片机·嵌入式硬件·物联网·芯片
染予13 小时前
Ka 阵面星历下发与执行逻辑说明
stm32·嵌入式硬件
芯片人00714 小时前
武汉广昇科技的GMUX1308A模拟开关芯片成功导入中国台湾上市企业联昌电子,助力汽车电子供应链自主可控
科技·嵌入式硬件·物联网·汽车·芯片
恒锐丰科技林技术员17 小时前
EG2181D 半桥栅极驱动芯片详解:高压 MOS/IGBT 驱动实用器件
经验分享·嵌入式硬件·硬件工程
国科安芯17 小时前
面向卫星测控应答机的抗辐射MCU信号采集与定时控制研究
单片机·嵌入式硬件·mcu·架构·卫星·商业航天·抗辐射
CC城子17 小时前
EtherNet/IP I/O 丢包排查(linux系统)
linux·单片机·tcp/ip·ethernetip