51单片机——温度传感器DS18B20的原理、通信时序及检测周围环境温度

本文详细介绍了DS18B20温度传感器的通信原理,包括初始化序列、写时序、读时序,以及如何通过编程实现环境温度采集。通过Pertous仿真和Keil波形分析验证了通信过程的正确性,强调了时序在传感器操作中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、DS18B20

1.DS18B20简介

DS18B20 是美信公司的一款温度传感器,单片机可以通过 1-Wire 协议与 DS18B20 进行通信,最终将温度读出。1-Wire 总线的硬件接口很简单,只需要把 DS18B20 的数据引脚和单片机的一个 IO 口接上就可以了。

2.DS18B20引脚排列及说明

二、DB18B20通信时序

1.初始化序列

        DS18B20的所有通信都由由复位脉冲组成的初始化序列开始。该初始化序列由主机发出,后跟由DS18B20发出的存在脉冲(presence pulse)。当发出应答复位脉冲的存在脉冲后,DS18B20通知主机它在总线上并且准备好操作了。 

初始化过程“复位和存在脉冲” 

         在初始化步骤中,总线上的主机通过拉低单总线至少480μs来产生复位脉冲。然后总线主机释放总线并进入接收模式。

        当总线释放后,5kΩ的上拉电阻把单总线上的电平拉回高电平。当DS18B20检测到上升沿后等待15到60us,然后以拉低总线60-240us的方式发出存在脉冲。

2.写时序

读/写时序

读写时隙

主机在写时隙向DS18B20写入数据,并在读时隙从DS18B20读入数据。在单总线上每个时隙只传送一位数据。

 写时间隙
        有两种写时隙:写“0”时间隙和写“1”时间隙。总线主机使用写“1”时间隙向DS18B20写入逻辑1,使用写“0”时间隙向DS18B20写入逻辑0。

  所有的写时隙必须至少有60us的持续时间。相邻两个写时隙必须要有最少1us的恢复时间。所有的写时隙(写0和写1)都由拉低总线产生。

      

### 温度传感器DS18B20工作原理 DS18B20是一种数字温度传感器,能够提供9至12位摄氏温度测量值。该设备具有独特的单总线接口协议,允许多个传感器连接到同一根数据线上[^2]。 #### 单总线通信机制 DS18B20通过一根信号线完成所有的控制命令传输以及温度读取操作。主机(通常是微控制器)发出初始化序列后,可以向从机发送指令来启动转换过程、获取寄存器中的温度数值等。这种简单而高效的通讯方式极大地简化了硬件布线复杂度并降低了成本。 #### 测量范围与精度 此款传感器支持-55°C 至 +125°C 的宽广测温区间,在典型应用条件下可达到±0.5°C 的高精度水平。用户还可以设置分辨率参数以平衡速度和准确性之间的需求;默认出厂配置为12位模式下每750毫秒更新一次温度样本[^3]。 #### 内部结构概述 内部集成了温度敏感元件用于感知环境变化,并经过模数转换电路转化为对应的二进制编码形式存储于暂存RAM内等待查询访问。此外还配备有非易失性的EEPROM用来保存自定义报警阈值和其他配置选项以便长期稳定运行期间调用[^1]。 ```c // C语言示例代码片段展示如何初始化并读取DS18B20温度值 void ds18b20_init(void); float read_temperature_from_ds18b20(void); ds18b20_init(); float temperature = read_temperature_from_ds18b20(); printf("Current Temperature: %.2f °C\n", temperature); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值