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

在这里插入图片描述

文章目录

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

引言

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.rhkb.cn/news/391689.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关爱提示器-不要久坐

关爱提示器-不要久坐 最近身体不适腰疼脖子疼的,去医院检查,大夫提示注意身体不要久坐多运动等等之类的,哎,生活所迫,披星戴月兢兢业业的,到头来还要被批判躺平不努力。哎,先关爱自己吧&#xf…

Java | Leetcode Java题解之第322题零钱兑换

题目&#xff1a; 题解&#xff1a; public class Solution {public int coinChange(int[] coins, int amount) {int max amount 1;int[] dp new int[amount 1];Arrays.fill(dp, max);dp[0] 0;for (int i 1; i < amount; i) {for (int j 0; j < coins.length; j)…

Dynamo修改共享参数绑定的分组——群问题整理005

Hello大家好!我是九哥~ 今天继续给大家分享一些短平快的小教程,是来自群里面的问题。 问题005:Dynamo修改共享参数绑定的分组 今天看到群里询问如何修改参数所在的分组,查了下API,项目参数是不行的,不过共享参数是允许ReInsert()的,那么就好办了。 然后在Document下…

JavaEE 第4节 线程安全问题

小贴士&#xff1a; 本节题目所述的主题其实非常的庞大&#xff0c;如果要细讲起来&#xff0c;一篇博客远远不够&#xff0c;本篇博客只会每个方面的内容做一个简要描述&#xff0c;详细的内容在后续同专栏博客中都会涉及到的&#xff0c;如果有需要可以一步到本专栏的其他博客…

python运行js之execjs基本使用

python运行js之execjs基本使用 现在大部分网站都使用JS加密和JS加载的情况&#xff0c;数据并不能直接被抓取出来&#xff0c;这时候就需要使用第三方类库来执行JS语句。 官网&#xff1a;https://pypi.org/project/PyExecJS/ 使用前提&#xff1a;电脑需要安装 Node.js 一、安…

最新口型同步技术EchoMimic部署

EchoMimic是由蚂蚁集团推出的一个 AI 驱动的口型同步技术项目&#xff0c;能够通过人像面部特征和音频来帮助人物“对口型”&#xff0c;生成逼真的动态肖像视频。 EchoMimic的技术亮点在于其创新的动画生成方法&#xff0c;它不仅能够通过音频和面部关键点单独驱动图像动画&a…

【星闪开发连载】WS63E 星闪开发板和hi3861开发板的对比

此次星闪开发者体验官活动使用的开发板都是NearLink_DK_WS63E开发板&#xff0c;它和NearLink_DK_WS63开发板的区别在于具有雷达感知功能。从开发板的照片也可以看到WS63E有一个雷达天线接口。 我们把WS63E开发板和hi3861开发板的功能做了简单的对比&#xff0c;见下表。 参数…

用户看广告获取密码访问网页内容流量主模式源码

简介&#xff1a; 全开源付费进群流量主模式&#xff0c;用户看广告获取密码访问网页内容&#xff0c;网站生成内容&#xff0c;用户需要浏览内容跳转至小程序&#xff0c;观看广告后获取密码&#xff0c;输入密码查看网页内容。 与之前得9.9付费进群区别就是内容体现在了网页…

iPhone苹果手机Safari浏览器怎么收藏网页?

iPhone苹果手机Safari浏览器怎么收藏网页? 1、iPhone苹果手机上找到并打开Safari浏览器&#xff0c;并访问要收藏的网页&#xff1b; 2、打开网页后&#xff0c;点击导航上的更多功能&#xff1b; 3、在更多里&#xff0c;找到并点击添加到个人收藏&#xff0c;完成储存即可添…

JavaSE面试篇章——一文干破Java集合

文章目录 Java集合——一文干破集合一、集合的理解和好处1.1 数组1.2 集合 二、集合的框架体系三、Collection接口和常用方法3.1 Collection接口实现类的特点3.2 Collection接口遍历元素方式1-使用Iterator(迭代器)3.2.1 基本介绍3.2.2 迭代器的执行原理3.2.3 Iterator接口的方…

java基础 之 equals和==的区别

文章目录 浅谈“”特点比较基本类型比较引用类型 浅谈“equals”背景和使用重写equals自定义类为什么需要重写equals方法 总结附录代码及文章推荐 前言&#xff1a; 1、8大基本数据类型&#xff0c;它们的值直接代表了某种数据&#xff0c;不是对象的实例&#xff0c;不能使用n…

关于企微群聊天工具功能的开发---PHP+JS+CSS+layui (手把手教学)

文章目录 前言准备工作PHP代码示例前端代码示例 主要是js踩的小坑&笔记最终达成的效果总结 前言 公司要求开发企微群聊天工具。首先一个客户一个群&#xff0c;其余群成员都是公司销售、设计师、工长、售后等人员。要求开发一个群聊天工具&#xff0c;工长点击进来以后就可…

ReentrantLock源码分析

文章目录 一、AQS1、state属性2、等待队列3、条件变量 二、ReentrantLock1、非公平锁实现原理1.1 获取锁1.2 释放锁1.3 可重入原理1.4 可打断原理不可打断可打断 1.5 公平锁实现原理1.6 条件变量原理awaitsignal 一、AQS AQS全称是 AbstractQueuedSynchronizer&#xff0c;是阻…

Python面试宝典第27题:全排列

题目 给定一个不含重复数字的数组nums&#xff0c;返回其所有可能的全排列 。备注&#xff1a;可以按任意顺序返回答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]] 示例 2&#xff1a; 输…

FPGA开发——数码管的使用(二)

一、概述 在上一篇文章中我们针对单个数码管的静态显示和动态显示进行了一个设计和实现&#xff0c;这篇文章中我们针对多个数码管同时显示进行一个设计。这里和上一篇文章唯一不同的是就是数码管位选进行了一个改变&#xff0c;原来是单个数码管的显示&#xff0c;所以位选就直…

详细说明Java中Map和Set接口的使用方法

Map与Set的基本概念与场景 Map和set是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例化子类有关。以前常见的搜索方式有&#xff1a; 1. 直接遍历&#xff0c;时间复杂度为O(N)&#xff0c;元素如果比较多效率会非常慢。 2. 二分查找&#x…

WordPress网站被入侵,劫持收录事件分析

7.15&#xff0c;网站被入侵&#xff0c;但是直到7月17日&#xff0c;我才发现被入侵。 16日&#xff0c;17日正常更新文章&#xff0c;17日查询网站收录数据时&#xff0c;在站长资源平台【流量与关键词】查询上&#xff0c;我发现了比较奇怪的关键词。 乱码关键词排名 起初…

JavaDS —— AVL树

前言 本文章将介绍 AVL 树的概念&#xff0c;重点介绍AVL 树的插入代码是如何实现的&#xff0c;如果大家对 AVL 树的删除&#xff08;还是和二叉搜索树一样使用的是替换删除法&#xff0c;然后需要判断是否进行旋转调整&#xff09;感兴趣的话&#xff0c;可以自行去翻阅其他…

关于Unity转微信小程序的流程记录

1.准备工作 1.unity微信小程序转换工具&#xff0c;minigame插件&#xff0c;导入后工具栏出现“微信小游戏" 2.微信开发者工具稳定版 3.MP微信公众平台申请微信小游戏&#xff0c;获得游戏appid 4.unity转webgl开发平台&#xff0c;Player Setting->Other Setting…

市场主流 AI 视频生成技术的迭代路径

AI视频生成技术的迭代路径经历了从GANVAE、Transformer、Diffusion Model到Sora采用的DiT架构&#xff08;TransformerDiffusion&#xff09;等多个阶段&#xff0c;每个阶段的技术升级都在视频处理质量上带来了飞跃性的提升。这些技术进步不仅推动了AI视频生成领域的快速发展&…