温度传感器技术

使用 DS18B20 数字温度传感器制作数字温度计

DS18B20 温度传感器数字温度计探头 + 带线组的端子适配器模块

介绍: 本文详细讲解了定制DS18B20数字温度传感器在构建数字温度计中的应用. 包括工作原理, 硬件连接, 软件编程与仿真实现. 提供完整的protes仿真图, C源代码及结果分析,帮助读者深入理解和实践DS18B20的使用.

参数信息: 电源: 3.0V – 5.5V; 分辨率可调: 9 – 12 少量; 温度范围: -55 ℃ 至 +125 ℃; 输出 : 红色的 (电压控制电路), 黄色的 (数据), 黑色的 (接地);
你得到什么: 你会得到 4 DS18B20温度传感器, 4 适配器模块和 4 母对母跳线; 适配器模块带有上拉电阻, 无需外接电阻即可兼容Raspberry Pi;
DS18B20温度传感器: 不锈钢外壳的尺寸约为. 6 x 50 毫米/ 0.2 x 2 英寸, 数字温度热电缆的总长度约为. 1 米/ 39.4 英寸, 足够长可以满足您的需求;
优质材料: 探头采用优质不锈钢材料制成, 这是防水的, 防潮不易生锈, 以免发生短路;
应用广泛: 该 DS18B20 温度传感器与 Raspberry Pi 兼容, 广泛应用于电缆沟温度监测, 锅炉, 什么, 农业温室, 洁净室, ETC.

DS18B20温度传感器 -55 到 +125 摄氏度, 兼容树莓派

DS18B20温度传感器 -55 到 +125 摄氏度, 兼容树莓派

表面贴装 DS18B20 数字温度传感器防水探头

表面贴装 DS18B20 数字温度传感器防水探头

DS18B20 温度传感器数字温度计探头 + 带线组的端子适配器模块

DS18B20 温度传感器数字温度计探头 + 带线组的端子适配器模块

1. DS18B20传感器特性
DS18B20传感器在现代温度监测领域发挥着关键作用. 它可以高精度测量温度, 其分辨率可根据需要调整, 从而实现不同精度的温度监测. 此外, DS18B20的小尺寸使其适合在空间有限的环境中使用, 其简单易用的特点降低了从初学者到专业人士的技术门槛.

在进一步探究DS18B20的性能参数之前, 有必要先了解一下它的工作原理. DS18B20通过数字信号传递温度数据, 为温度数据的采集带来方便. 与传统模拟温度传感器相比, DS18B20等数字传感器可以提供更准确的读数,并且对信号传输过程中的噪声不太敏感.

为了充分利用DS18B20的这些优点, 我们必须深入了解它的性能参数. 这些参数包括温度测量范围, 准确性, 解决, 和电源电压. 这些参数不仅决定了DS18B20是否能够满足特定应用的需求, 还会影响整个系统的性能和可靠性.

在本章中, 我们详细介绍一下DS18B20的性能参数, 分析其工作原理, 并探讨其在不同应用中的优势. 通过这些内容, 读者将对DS18B20传感器有更深入的了解,为后续更复杂的应用和编程打下坚实的基础.

2. DS18B20的1-Wire通信协议详解
DS18B20传感器之所以被广泛应用,很大程度上得益于其独特的通信协议 – 1-有线通讯协议. 该协议简化了对硬件连接的要求,提供了一种有效的数据传输方式. 本章将深入剖析1线通信协议的工作机制和数据交换过程,为后续的编程实践打下坚实的基础.
2.1 1-Wire 通信协议基础知识
2.1.1 1-Wire 通信协议的特性:
DS18B20 1-Wire 通信协议也称为 “单总线” 技术. 它具有以下特点: – 单总线通讯: 仅使用一根数据线进行双向数据传输, 与传统的多线传感器通信方式相比,大大降低了布线的复杂性. – 多设备连接: 支持在一根数据总线上连接多个设备, 并通过设备识别码进行识别和通信. – 低功耗: 沟通过程中, 设备在不参与通信时可以处于低功耗待机状态. – 高精度: 数据传输时间更短, 减少外界干扰,提高数据准确性.
2.1.2 1-wire通信的数据格式和时序分析
1-wire通信协议的数据格式遵循特定的时序规则. 它包括初始化时序, 写时序和读时序:
初始化时序: 主机首先启动存在检测计时 (存在脉冲) 通过将总线拉下来一段时间, 然后传感器发送存在脉冲作为响应.
写入时序: 当主机发送写时序时, 它首先将总线拉下来大约 1-15 微秒, 然后释放总线, 并且传感器拉低总线 60-120 微秒响应.
读取时序: 主机通过拉低总线并释放来通知传感器发送数据, 传感器会在一定的延迟后将数据位输出到总线上.

3. 温度计硬件连接方法
硬件连接是构建数字温度计的第一步也是最重要的一步. DS18B20传感器与单片机的正确连接将保证数据的准确传输,为进一步的软件编程和数据处理提供坚实的基础. 本章将详细介绍DS18B20与单片机的接口设计原理以及电路连接的具体步骤, 并涵盖电源和信号调理的相关内容.
3.1 DS18B20与微控制器之间的接口
3.1.1 接口电路设计原则
DS18B20的接口电路设计需要遵循几个核心原则,以保证器件稳定高效的运行:
供电稳定: DS18B20可以从数据线获取电源 “数据Q” (被称为 “寄生功率模式”), 或可由外部电源独立供电. 无论使用哪种方法, 供电必须稳定,防止供电波动造成数据传输错误.
信号完整性: 由于DS18B20通过单线传输数据, 信号完整性尤为关键. 需要考虑信号的抗干扰能力以及信号电气特性的匹配.
电路保护: 过流保护和静电放电 (静电放电) 电路设计中应包含保护措施,以避免损坏传感器或微控制器.

3.1.2 电路连接具体步骤
将 DS18B20 连接到微控制器通常遵循以下步骤:
电源连接: 将DS18B20的VDD引脚连接到3.3V或5V电源 (取决于微控制器的电压水平), GND 引脚连接到地线.
数据线连接: DQ 引脚连接到微控制器的数字 I/O 引脚. 为了保证数据传输的稳定性, 数据线和电源之间可以加上拉电阻, 典型值为4.7kΩ至10kΩ.
复位和存在脉冲引脚处理: 通常情况下, 复位引脚 (快速恢复时间) 和存在脉冲引脚 (光合有效辐射) DS18B20的不需要外部连接, 它们是内部使用的信号.

在这个部分, 我们设计了一个基本电路,通过该电路可以将 DS18B20 温度传感器连接到微控制器. 以下是基于Arduino Uno的示例电路图以及相应的说明:

流程图LR
DS18B20 — |电源电压| 5V
DS18B20 — |接地| 接地
DS18B20 — |数据Q| 2
数据Q — |引体向上| 5V

他们之中, DS18B20代表数字温度传感器, 5V 是微控制器的功率输出, GND是地线, 和 2 代表Arduino的引脚号. 2, 用于数据传输. DQ与5V的连接代表上拉电阻.


3.2 电源和信号调理
3.2.1 供电方式的选择
DS18B20提供两种供电方式:
寄生功率模式: 在此模式下, 数据线 (数据Q) 不仅可以传输数据, 还为 DS18B20 供电. 此时, 数据线上的高电平电压至少为3.0V,以保证足够的供电电流. 该模式通常用于总线长度较短且数据传输不太频繁的情况.

外部供电方式: 在此模式下, DS18B20具有独立电源输入VDD. 采用外接电源供电,可以增强传感器的信号强度,提高抗干扰能力, 适用于长距离传输或频繁数据传输.

3.2.2 信号滤波和稳定
为了保证信号稳定和数据读取准确, 信号需要经过适当的过滤和稳定:
上拉电阻: 数据线与电源之间添加上拉电阻,保证空闲时数据线处于高电平状态.
去抖动电路: 为了消除因线路干扰或瞬时电压波动引起的错误读数, 信号可以在微控制器端进行软件去抖动.
静电放电保护: ESD保护元件 (如TVS二极管) 添加到传感器和微控制器的端口,以防止静电放电造成的损坏.

本节以表格形式进一步阐述了选择电源和信号调理时应考虑的因素:
| 项目 | 寄生功率模式 | 外接电源模式 | 描述 | | — | — | — | — | | 适用场景 | 短线, 不常见的数据 | 排长队, 频繁数据 | 根据实际应用场景选择 | | 供电稳定性 | 降低 | 更高 | 对于长线或高频,建议使用外部电源 | | 成本 | 降低 | 更高 | 外部电源需要额外的电源管理组件 | | 抗干扰 | 较弱 | 更强 | 外置电源更适合高干扰环境 |

上述连接方法和信号处理策略可以有效地将DS18B20温度传感器集成到任何微控制器系统中. 下一章将介绍如何使用C语言:


DS18B20的函数式编程实践:
4. DS18B20数字温度计C语言编程
4.1 编程基础及环境准备
4.1.1 方案设计思路及框架搭建
在开始编写DS18B20数字温度计的C语言程序之前, 首先需要建立程序设计的基本思路. DS18B20传感器通过1-wire通信协议与微控制器进行通信. 所以, 程序主要任务是实现1-wire通信协议的相关操作, 包括初始化DS18B20, 发送指令, 读取温度数据, 并将读取的数据进行转换和显示.

程序框架大致分为以下几个部分:
初始化: 初始化微控制器和DS18B20传感器.
主循环: 包含一个连续读取传感器数据的循环.
1-有线通讯函数库: 包含用于实现单线通信协议的函数.

数据处理: 将传感器返回的原始数据转换为可读的温度值.
显示输出: 将处理后的温度数据显示在液晶屏上或通过串口输出到计算机.

不锈钢防水 DS18b20 温度探头 1-Wire 1, 2, 5 米

不锈钢防水 DS18b20 温度探头 1-Wire 1, 2, 5 米

DS18B20 1-Wire 数字温度传感器

DS18B20 1-Wire 数字温度传感器

DS18B20 温度传感器模块套件 1 m-3.2 英尺防水数字不锈钢探头

DS18B20 温度传感器模块套件 1 m-3.2 英尺防水数字不锈钢探头

4.1.2 开发环境搭建及配置
为了编程和开发DS18B20数字温度计, 您需要准备开发环境并进行适当配置. 以下是开发的基本步骤:

选择开发环境: 选择合适的集成开发环境 (集成开发环境) 根据微控制器的类型, 例如基于ARM Cortex-M系列微控制器的开发. 您可以使用Keil MDK或STM32CubeIDE.

配置编译器: 根据使用的IDE, 配置编译器,保证C语言代码能够正确编译.
搭建硬件开发板: 选择合适的单片机开发板, 比如基于STM32, ESP32, ETC.
连接开发板: 通过1-wire通讯协议将DS18B20传感器连接到单片机的指定引脚.
编写代码: 在IDE中新建一个C语言项目,开始编写程序代码.
编译和调试: 使用IDE工具编译代码并在开发板上运行进行调试.

#包括 <stdio.h>

// DS18B20一线通讯函数库声明
无效 DS18B20_Init();
无效DS18B20_重置();
无效 DS18B20_WriteByte(无符号字符数据);
无符号字符 DS18B20_ReadByte();
int DS18B20_ReadTemperature();

整型主() {
// 初始化DS18B20传感器
DS18B20_热();
// 主循环
尽管(1) {
// 读取温度值
int 温度 = DS18B20_ReadTemperature();
// 输出温度值到串口或其他显示设备
打印函数(“当前温度: %dn”, 温度);
}
返回 0;
}


4.2 DS18B20温度读取程序实现
4.2.1 单线通信函数库的构建
从而实现DS18B20的温度读取, 首先需要建立一个单线通信函数库. 下面是几个关键功能的实现方法:

DS18B20_热(): 初始化单线通信时序.
DS18B20_复位(): 重置传感器并检测其脉冲.
DS18B20_WriteByte(无符号字符数据): 向传感器写入一个字节的数据.
DS18B20_读字节(): 从传感器读取一个字节的数据.
DS18B20_读取温度(): 读取温度并进行转换.

DS18B20的单线通信函数库的实现相当复杂,因为需要精确控制引脚电平变化以遵循单线通信协议. 下面是一个函数实现的例子:
无效DS18B20_重置() {
// 单线通讯复位序列, 包括拉下数据线, 延迟, 释放总线, 并检测存在脉冲
// …
}

该函数的目的是向DS18B20发送复位脉冲. 重置成功后, DS18B20将返回存在脉冲.


4.2.2 温度读取算法的实现
读取DS18B20传感器的温度值是一个比较复杂的过程, 因为需要在一定的时机向传感器发送特定的指令并正确读取返回的数据. 读取温度值的算法如下:

重置传感器.
发送 “罗马船” 命令 (0xCC).
发送 “转换温度” 命令 (0x44).
等待转换完成.
发送 “读寄存器” 命令 (0乙醚).
读取两个字节的温度数据.

下面的代码展示了如何读取DS18B20的温度值:

int DS18B20_ReadTemperature() {
无符号字符 temp_low, 温度高;
无符号整型温度;

// 重置传感器并跳过 ROM 指令
DS18B20_复位();
DS18B20_WriteByte(0xCC); // 跳过 ROM 命令
// 发送转换温度指令
DS18B20_WriteByte(0x44);
// 等待转换完成. 这里需要根据DS18B20的转换时间等待
// …

// 重置传感器并读取温度数据
DS18B20_复位();
DS18B20_WriteByte(0xCC); // 跳过 ROM 命令
DS18B20_WriteByte(0乙醚); // 读寄存器命令

// 读取两个字节的数据
temp_low = DS18B20_ReadByte();
temp_high = DS18B20_ReadByte();
// 将两个字节的数据组合成一个16位整数
温度= (温度高 << 8) | 温度低;
// 返回温度值, 根据DS18B20的分辨率进行适当转换
返回温度;
}


4.2.3 程序调试和异常处理

编写DS18B20读取程序时, 程序调试和异常处理非常重要. 调试时, 可能需要使用串口调试助手检查输出温度值是否正确, 或者用逻辑分析仪监控一线通讯的信号时序. 异常处理需要考虑硬件故障, 通讯错误, DS18B20的异常反应.

以下是一些调试和异常处理策略:

数据验证: 每次读取数据后, 使用校验和或校验位来确认数据的正确性.
异常捕获: 给程序添加异常捕获机制, 比如超时重试机制, 重置传感器, ETC.
调试信息: 为程序添加足够的调试信息输出,帮助定位问题.
整型主() {
// 初始化DS18B20传感器
DS18B20_热();
// 主循环
尽管(1) {
内部温度;
// 读取温度并检查是否有错误
温度 = DS18B20_ReadTemperature();
如果 (温度 < 0) {
打印函数(“温度读取错误!\n”);
// 您可以选择重试或其他错误处理机制
} 别的 {
打印函数(“当前温度: %dn”, 温度);
}
}
返回 0;
}

本章介绍DS18B20数字温度计的C语言编程基础和环境准备, 以及温度读取程序的执行, 并强调了程序调试和异常处理的重要性. 通过本章的介绍, 读者应该能够搭建开发环境, 了解一线通讯函数库的重要性, 并编写一个基本的温度读取程序. 后续章节将进一步深入探讨Proteus仿真环境的搭建和使用, 为实际硬件组装提供模拟测试方法.


5. Proteus仿真图及仿真结果分析
5.1 Proteus仿真环境搭建
5.1.1 Proteus软件基本操作
在开始构建DS18B20数字温度计的仿真模型之前, 首先需要了解并掌握Proteus软件的基本操作. Proteus是一款功能强大的电子电路仿真软件,不仅可以设计电路原理图, 还可以设计电路PCB布局并提供仿真功能. 以下是帮助您开始使用 Proteus 的一些关键步骤:

打开Proteus软件,新建一个工程.
在元件库中搜索并选择需要的元件, 例如 DS18B20 传感器, 微控制器, 电源, 连接线, ETC.
将选中的元件拖到设计区域,用鼠标进行放置和布局.
使用接线工具将各元件的引脚连接起来,形成完整的电路.
双击元件或电线以修改其属性, 比如电阻值, 电源电压, ETC.

确保所有组件均正确连接并检查是否有错误或遗漏.

5.1.2 创建DS18B20仿真项目
创建DS18B20数字温度计仿真工程的步骤如下:

启动Proteus并选择 “新项目” 创建一个新项目.
设置项目名称和位置后, 点击 “下一个”.
选择项目模板, 例如 “基于微处理器”, 然后单击 “下一个”.
在 “项目项目” 选项卡, 查看 “包括默认组件” 并选择一个微控制器 (例如PIC, 调压器, ETC。) 和一个 DS18B20 传感器.
点击 “结束” 完成项目创建.

下一个, 创建电路原理图:
选择 “选择设备” 工具, 在元件库中查找并选择微控制器和DS18B20传感器.
使用 “放置设备” 用于将选定组件放置在设计区域中的工具.
使用 “金属丝” 连接微控制器和DS18B20传感器相关引脚的工具.
完成连接后, 使用 “文本” 为电路图添加注释的工具,以便于理解和修改.

5.2 模拟测试及数据分析
5.2.1 设置模拟参数和条件
开始模拟之前, 您需要设置模拟运行的参数和条件:
双击单片机组件进入属性设置界面.
选择之前编写的程序文件路径为 “程序文件”.
设置电源参数,确保单片机和DS18B20传感器都有正确的供电电压.
下一个, 设置模拟的时间参数:
在模拟控制面板中, 选择 “全局设置”.
调整模拟速度和最大模拟时间.
在仿真过程中设置适当的断点来分析数据.

5.2.2 模拟并读取温度数据
运行仿真并模拟温度数据:
单击 “玩” 模拟控制面板中的按钮开始模拟.
使用 “调试” 查看程序运行状态和变量值的工具.
模拟DS18B20传感器读取温度值, 通常是通过修改仿真环境中的虚拟温度计来实现.

读取模拟中的温度数据, 您可以参考以下步骤:
在DS18B20组件的属性中找到温度模拟设置.
修改温度值,测试不同温度条件下系统响应.
观察单片机程序如何处理温度数据.

5.2.3 结果分析及故障排除
分析仿真结果并确认温度计的性能:
监视输出窗口中的数据,检查温度读数是否准确.
使用逻辑分析仪工具监控数据通信过程是否正常.
检查是否有异常信号或不稳定的输出.

进行故障诊断和调试:
如果温度读数不准确或有错误, 检查DS18B20的连接方法和配置.
分析程序代码,确保一线通信和数据转换算法正确实现.
使用 “停止” 仿真软件暂停仿真并观察系统当前状态的功能.