快速掌握单片机基础(4)(ds18b20)

二、ds18b20

1.传感器基础概念

传感器:将物理量转换为电信号的器件。此处特指数字温度传感器 DS18B20(用于设备温度、环境温度采集)。

1)传感器指标参数

(1)量程(温度测量范围):-55℃ ~ 125℃

(2)精度(传感器测量温度与实际温度值之间允许的最大误差):±0.5℃

举例:实际温度值25℃,传感器采集温度值应在 24.5 ~ 25.5℃ 之间。

(3)分辨率(对温度变化敏感程度,分辨率越高,能察觉的微小温度变化越小,读数越细腻):

9位:0.5℃

10位:0.25℃

11位:0.125℃

12位:0.0625℃(最高分辨率)

(4)工作电压:3V ~ 5.5V

2.通信方式与硬件连接

1)通信特点

51单片机与DS18B20通信属于:半双工、异步、串行。

采用 GPIO One-Wire 单总线 协议,传感器通过一根GPIO信号线与单片机通信。

2)硬件连线

单片机 P3.7 引脚接 DS18B20 的 DQ (数据信号线)。

单片机 VCC 接 DS18B20 VCC。

单片机 GND 接 DS18B20 GND。

3)线与特性(关键点)

核心规则:

引脚拉高,不能直接决定引脚电平(受对方影响)。

拉高:释放总线。

你作为数据的接收方时,需要释放总线(写1或读数据前)。

数据格式:

读取的数值为16位,采用符号位扩展,二进制补码形式存储。

3.DS18B20内部结构

64-BIT ROM:存储唯一ID,用于多器件挂载。

单线端口:连接外部DQ总线。

内部电源:寄生电源或外部供电(框图显示内部电源电路)。

存储器逻辑控制模块:协调其他模块工作。

暂存器(SCRATCHPAD):存放温度数据、高温触发阈值(TH)、低温触发阈值(TL)及参数配置。

8位CRC生成器:用于数据校验。

4.DS18B20采集温度流程

由于DS18B20转换温度需要时间,通常分为"启动转换"和"读取温度"两个步骤。

步骤一:启动温度转换

ds18b20_reset():复位DS18B20。

write_ds18b20(0xCC):发送0xCC,跳过ROM(跳过64位ID匹配,直接操作单节点)。

write_ds18b20(0x44):发送0x44,开启温度转换。

延时750ms(等待转换完成)。

步骤二:读取温度数据

ds18b20_reset():复位DS18B20。

write_ds18b20(0xCC):发送0xCC,跳过ROM。

write_ds18b20(0xBE):发送0xBE,读取温度(读取暂存器)。

读取2个字节温度(共16位,包含符号位和小数部分)。

5.通信时序

所有操作均以主机拉低总线开始。

1)复位时序(初始化)

(1)主机拉低总线 480us - 960us(发送复位脉冲)。

(2)主机释放总线,需要延时 15 - 60us。

(3)DS18B20拉低总线 60 - 240us(回复响应脉冲)。

(4)DS18B20释放总线,总线呈现高电平,初始化过程结束。

2)写时序

(1)写'0'时序:

1.主机将总线拉低 至少60us,最多不超过120us。

2.DS18B20在 15us - 60us内进行采样,若总线此时为低电平,则代表主机发送了'0'。

3.主机释放总线。

(2) 写 '1' 时序

1.主机将总线拉低 小于15us,释放总线。

2.DS18B20在 15us - 60us内进行采样,若总线此时为高电平,则代表主机发送了'1'。

注:发送指令 0xCC(二进制 1100 1100)就是遵循上述写时序逐位发送。

3)读时序

(1)读'1'时序

1.主机拉低总线,大于1us,然后释放总线。

2.DS18B20释放总线,总线呈现高电平。

3.主机在 15us内采样电平,此时总线为高电平,代表主机读到'1'。

(2)读'0'时序:

1.主机拉低总线,大于1us,然后释放总线。

2.DS18B20在主机释放总线后,主动拉低(代表要传输'0')。

3.主机在 15us内进行采样,此时总线为低电平,代表主机读到'0'。

相关推荐
myy-learn2 小时前
ARM-I2C 驱动优化与 LM75 温度传感器读取实践
arm开发·单片机·嵌入式硬件
元器件BOM超人2 小时前
R7FA6M3AH3CFC#AA0 瑞萨RA6M3系列MCU解析
单片机
..Dauntless..3 小时前
【stm32】I2C(二)——Master和Slave之间的协议
stm32·单片机·嵌入式硬件
硅基手札3 小时前
【串口技术系列文档 04】UART协议深度解析
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
sramdram3 小时前
预付费电能表BLE蓝牙MCU方案
单片机·嵌入式硬件·ble蓝牙·蓝牙mcu·蓝牙mcu方案
意法半导体STM325 小时前
【官方原创】LAT1724 STM32CubeIDE for VSCode 修改链接文件中的起始地址无效?
vscode·stm32·单片机·嵌入式硬件·mcu·stm32cube
BSD_HY6 小时前
嵌入式薄膜开关中断去抖:中断优先级分层实战策略
单片机·嵌入式硬件·薄膜开关·源头工厂·薄膜按键
comyccccc18 小时前
LM2596电源PCB布局布线全解析学习笔记
单片机·嵌入式硬件
qq_4017004120 小时前
FreeRTOS 堆内存管理源码剖析:释放一块内存,空闲块数量反而变少了?
单片机·freertos
新晨单片机设计21 小时前
S017C-基于STM32汽车防酒驾系统(心率、血氧、短信)【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus·防酒驾报警系统