DS18B20数字温度传感器操作解析

news2024/10/1 5:31:04

在这里插入图片描述

文章目录

  • 引言
  • 特点
  • 工作原理
  • 引脚说明
  • 配置寄存器
  • 温度寄存器
  • 时序
    • 初始化时序
    • 写时序
    • 读时序

引言

DS18B20 是一种广泛使用的数字温度传感器,具有高精度和易用性。是Dallas Semiconductor公司(现为Maxim Integrated公司)生产的单总线数字温度传感器。

特点

  1. 高精度:温度测量精度为±0.5°C。分辨率可配置为9到12位,默认情况下为12位。
  2. 宽测温范围:温度测量范围为-55°C到+125°C。
  3. 单总线接口:使用1-Wire通信协议,仅需一根数据线进行通信,极大地简化了布线。支持多个传感器连接到同一总线,通过唯一的64位序列号进行识别。
  4. 电源选项:支持寄生电源模式,只需两根引脚(数据和地)即可工作,通过数据线提供电源。
    工作电压范围为3.0V到5.5V,适用于各种微控制器和电源环境。
  5. 低功耗:在非活动状态下功耗极低,适合电池供电的应用。
  6. 内置存储:具有温度上限和下限的报警功能,用户可以设置温度阈值。
    内置非易失性存储器,可存储用户配置。

工作原理

DS18B20 通过1-Wire协议进行通信,只需要一根数据线(以及电源和地线)。每个DS18B20传感器都有一个唯一的64位序列号,使得多个传感器可以同时连接在一条总线上而不会发生地址冲突。

引脚说明

DS18B20 有三根引脚:
在这里插入图片描述

  • VDD(电源): 3.0V到5.5V
  • GND(地): 连接到系统地
  • DQ(数据): 与微控制器的GPIO引脚连接,同时通过一个4.7kΩ的上拉电阻连接到VDD

在这里插入图片描述

配置寄存器

配置寄存器用于设置温度测量的分辨率,以及控制其他功能。它是一个8位的寄存器。低五位全是1,高三位的TM是测试模式位,用来设置DS18B20在工作模式还是测试模式。出厂设置的是0,用户无法进行更改。
在这里插入图片描述
配置寄存器中的R1和R0位用于设置温度测量的分辨率。不同的分辨率会影响测量的精度和转换时间。以下是R1和R0位的组合及其对应的分辨率和转换时间:

R1R0精度最大转换时间
009位(bit)93.75 ms
0110位(bit)187.5 ms
1011位(bit)375 ms
1112位(bit)750 ms

R1 和 R0 位的组合决定了 DS18B20 传感器的温度测量精度(分辨率),精度越高,最大转换时间越长。(注意:默认情况下是12位)

温度寄存器

温度寄存器存储的是当前的温度测量值。它是一个16位的寄存器,由两个字节组成:

  • 高字节(Most Significant Byte, MSB):前五位用于表示符号位。
  • 低字节(Least Significant Byte, LSB)

在这里插入图片描述
其中 S 表示符号位(0 表示正温度,1 表示负温度)。
在这里插入图片描述
温度数据以补码形式存储,具体转换公式如下:

  • 温度 ( ° C ) = R a w T e m p e r a t u r e D a t a 16.0 温度(°C)=\frac{Raw Temperature Data}{16.0} 温度(°C)=16.0RawTemperatureData

例如,读取的原始数据为 0x0191,则温度值为: 温度 ( ° C ) = 0 x 0191 16.0 = 401 16.0 = 25.0625 温度(°C)=\frac{0x0191}{16.0}=\frac{401}{16.0}=25.0625 温度(°C)=16.00x0191=16.0401=25.0625

注意:负温度,需要对数据输出进行取反之后加1,然后按照上面的公式进行计算。

时序

DS18B20 温度传感器通过单总线(1-Wire)协议进行通信。1-Wire 协议使用一根数据线(DQ)进行通信,该协议包括复位、存在检测、命令和数据传输等操作。

初始化时序

在使用 DS18B20 温度传感器时,初始化时序是至关重要的。初始化时序包括总线复位、存在脉冲以及设备初始化的详细步骤。
在这里插入图片描述
初始化时序步骤

  1. 总线复位:主机通过总线复位将数据线拉低至少 480 微秒(µs),以重置总线上的所有设备。此时,所有连接在总线上的 DS18B20 设备都会被复位。

  2. 存在脉冲:DS18B20 响应主机的复位信号,在复位脉冲后的 15-60 µs 内,将数据线拉低 60-240 µs,发送存在脉冲。

  3. ROM 命令:ROM 命令用于选择特定的 DS18B20 设备。在单个设备的情况下,可以使用跳过 ROM(Skip ROM)命令。常见的 ROM 命令包括:

  4. 功能命令:功能命令用于控制 DS18B20 的操作,如温度转换和数据读取。常见的功能命令包括:

    • Convert T (0x44): 启动温度转换。
    • Write Scratchpad (0x4E): 向 Scratchpad 写入数据。
    • Read Scratchpad (0xBE): 读取 Scratchpad 数据。
    • Copy Scratchpad (0x48): 将 Scratchpad 数据复制到 EEPROM。
    • Recall E2 (0xB8): 从 EEPROM 读取数据到 Scratchpad。
    • Read Power Supply (0xB4): 检查设备的电源模式。

写时序

写时段有两种情况:“写1”时段和“写0”时段。主设备通过写1时段来向DS18B20中写入逻辑1以及通过写0时段来向DS18B20中写入逻辑0。每个写时段最小必须有60us的持续时间且独立的写时段间至少有1us的恢复时间。两次写时序均起始于主机拉低总线。
在这里插入图片描述

读时序

仅在读时段期间DS18B20才能向主设备传送数据。因此,主设备在执行完读暂存寄存器(BEh)或读取供电模式[B4h]后,必须及时地生成读时段,这样DS18B20才能提供所需的数据。此外,主设备可以在执行完转换温度(44h)或拷贝EEPROM(B8h)命令后生成读时段,以便获得在“DS18B20功能命令”章节中提到的操作信息。 每个读时段最小必须有60us的持续时间且独立的写时段间至少有1us的恢复时间。读时段通过主设备将总线拉低超过1us再释放总线来实现初始化。当主设备初始化完读时段后,DS18B20将会向总线发送0或者1。DS18B20通过将总线拉至高来发送逻辑1,将总线拉至低来发送逻辑0。当发送完0后,DS18B20将会释放总线,则通过上拉电阻该总线将会恢复到高电平的闲置状态。从DS18B20中输出的数据在初始化读时序后仅有15us的有效时间。因此,主设备在开始改读时段后的15us之内必须释放总线,并且对总线进行采样。
在这里插入图片描述
DS18B20的典型温度读取过程为:复位 → \rightarrow 发SKIP ROM命令(0xCC) → \rightarrow 发开始转换命令(0x44) → \rightarrow 延时 → \rightarrow 复位 → \rightarrow 发送SKIP ROM命令(0xCC) → \rightarrow 发读存储器命令(0xBE) → \rightarrow 连续读出两个字节数据(即温度) → \rightarrow 结束。

数据传输包括命令和数据的写入和读取。常见命令包括:

  • Skip ROM(0xCC):跳过 ROM 操作,直接与总线上唯一的 DS18B20 通信。
  • Read Scratchpad(0xBE):读取 Scratchpad 的内容。
  • Write Scratchpad(0x4E):向 Scratchpad 写入数据。
  • Convert T(0x44):启动温度转换。
  • Copy Scratchpad(0x48):将 Scratchpad 的内容复制到 EEPROM。
  • Recall E2(0xB8):将 EEPROM 的内容读取到 Scratchpad。
  • Read Power Supply(0xB4):检查 DS18B20 是否使用寄生电源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1979735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Typora+PicGo-Core(command line)+Gitee 实现上传图片到图床(看这一文就够)

前言 ​ 对于喜欢写Markdown文档的人来说,Typora无疑是一个写作利器,它有别于其他的Markdown软件,不是一边编辑一边渲染,而是即写即渲染,这样对于浏览md文件也非常友好。此外Typora还支持更换主题,在其官网…

机器学习 第10章-降维与度量学习

机器学习 第10章-降维与度量学习 10.1 k近邻学习 k近邻(k-Nearest Neighbor,简称kNN)学习是一种常用的监督学习方法其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个“邻居”的信息来进行预测。通…

YOLOv5改进 | 多尺度特征提取 | 结合多样分支块及融合的高级设计(CVPR2021)

YOLOv5改进 | 多尺度特征提取 | 结合多样分支块及融合的高级设计) 本文介绍论文原理介绍网络代码多种yaml设置网络测试及实验结果 本文介绍 YOLOv5(You Only Look Once)以其高效、准确的实时目标检测性能被广泛应用。然而,随着视觉…

【保姆级讲解C语言中的运算符的优先级!】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

【Material-UI】使用指南:快速入门与核心功能解析

文章目录 一、快速入门1.1 安装和导入1.2 组件的独立性 二、全局设置2.1 响应式元标签2.2 CssBaseline2.3 默认字体 三、响应式设计3.1 Grid系统 四、最佳实践4.1 组件的一致性4.2 性能优化4.3 可访问性 五、总结 Material-UI是一个功能强大且灵活的React UI框架,为…

数学建模--二分法

目录 二分法的基本原理 应用实例 求解方程根 查找有序数组中的元素 注意事项 Python代码示例 ​编辑 延伸 二分法在数学建模中的具体应用案例有哪些? 如何选择二分法的初始区间以确保收敛速度和精度? 在使用二分法求解方程时,如何…

通过 ACM 论文模版学习 LaTeX 语法 【四、图】

文章目录 一、LaTeX 简介二、ACM 论文模版三、格式四、图和表4.1 图4.1.1. 导言区设置4.1.2. 插入图片的基本语法4.1.3. 设置图片的尺寸和位置4.1.4. 图片浮动体4.1.4.1. figure 环境4.1.4.2. 位置参数4.1.4.3. \centering4.1.4.4. \includegraphics4.1.4.5. \caption4.1.4.6. …

19061 简单加法

这个问题可以通过使用字符串处理和简单的数学运算来解决。我们可以首先将输入的字符串按照""字符进行分割&#xff0c;然后将分割后的每个字符串转换为整数并求和。 以下是使用C的代码实现&#xff1a; #include <iostream> #include <sstream> #inclu…

LeetCode刷题笔记 | 3 | 无重复字符的最长子串 | 双指针 | 滑动窗口 | 2025兴业银行秋招笔试题 | 哈希集合

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 这是一道银行的面试题&#xff0c;就是简单&#xff1f;&#xff01; LeetCode链接&#xff1a;3. 无重复字符的最长子串 1.题目描述 给定一个字符串 s &#xff0c…

live2d C++ sdk 分析

工具函数 首先会加载各种配置文件如model3.json&#xff0c;以字节流的方式读取(fstream) 读取过程中若报错 Stat failed. errno:2 path&#xff0c;很有可能是路径中出现了中文。因为官方用的stat函数判断文件合法性&#xff0c;stat函数貌似无法处理中文名 MatrixManager:…

PS学习笔记(二、换背景图片)

一、如何将人物抠出来 打开照片——选择——主体 CtrlJ复制图层&#xff0c;即可将任务单独拿出 将照片中的人物分层出来 另存为即可实现人物抠图。 二、背景抠图分离 ①选择——主体 编辑——内容识别填充&#xff08;填充——内容识别&#xff09; 图章工具修复 ②选…

C语言的回调函数(详解sqort函数)

在上一篇文章中我们学习了指针与数组之间的关系&#xff0c;学习了指针数组&#xff0c;数组指针变量&#xff0c;函数指针变量和函数指针数组。那么接下来我们要学习的是一个利用函数指针变量去解决和简化各种问题的回调函数。 一、回调函数 回调函数在编程中是一种很常见的…

Linux shell编程学习笔记68: curl 命令行网络数据传输工具 选项数量雷人(上)

0 前言 在网络时代&#xff0c;有经常需要在网络上传输数据&#xff0c;时我们需要通过网络下载文件&#xff0c;为了满足这种时代需要&#xff0c;Linux提供了众多网络命令&#xff0c;我们今天先研究curl命令。例如&#xff0c;我们可以使用 curl 从 URL 下载文件&#xff0…

QT百度智能云API鉴权,查询 文心一言 服务调用情况

百度智能云API鉴权 做了一个利用Qt实现调用文字大模型的API 小软件 AI.xyz。 想通过api直接访问国产语言大模型的调用情况&#xff0c;翻了半天 豆包、通义、文心 的官方文档。最后只找到百度提供通过api读取访问的功能。 一开始只看到 python 的sdk&#xff0c;试了试还可以…

Java常用类和数据结构与算法

1. 其他常用类 1.1. Math类 java.lang.Math提供了一系列静态方法用于科学计算&#xff1b;其方法的参数和返回值一般为double型。如果需要更加强大的数学运算能力&#xff0c;可以使用apache commons下面的Math类库 public class TestMath {public static void main(String[…

python 图片爬虫记录

看了2-3个小时的奥运会&#xff0c; 感觉内心空虚。 写点代码。 不知道做什么&#xff0c;随便搞一下爬虫&#xff0c;积累一点经验&#xff0c; 写篇博客&#xff0c;记录一下。 1. 注意检查响应头 情况描述: 对于这样一个 图片的 url https://blogger.googleusercontent.…

基于FPGA的数字信号处理(20)--半减器和全减器

目录 1、前言 2、半减器 3、全减器 4、减法器 文章总目录点这里&#xff1a;《基于FPGA的数字信号处理》专栏的导航与说明 1、前言 既然有半加器和全加器&#xff0c;那自然也有半减器和全减器了。尽管在电路中减法的实现基本都是 补码 加法 的形式&#xff0c;但是正所谓…

Hadoop搭建集群

Hadoop搭建集群 前言一、环境配置1.配置JDK2.配置Hadoop环境 二、Hadoop本地运行三、Hadoop集群部署1.准备三台服务器2.节点规划3.环境配置4.无秘登录5.配置核心文件1&#xff09;修改core-site.xml2&#xff09;修改hdfs-site.xml3&#xff09;修改yarn-site.xml4&#xff09;…

【linux】【操作系统】内核之sched.c源码阅读

sched.c提供的代码片段包含了与操作系统内核中的进程调度和管理相关的多个函数。schedule函数首先对所有任务&#xff08;进程&#xff09;进行检测&#xff0c;唤醒任何一个已经得到信号的任务。具体方法是针对任务数组中的每个任务&#xff0c;检查其报警定时值alam。如果任务…

Midjourney咒语之手机壁纸国画艺术

手机壁纸 Mountains, surfaces, mysterious landscapes --ar 9:16 Abstract shapes of billowing flowing colorful gauze fabric, --ar 9:16 国画艺术 Peony is