当前位置: 首页 > ds >正文

FPGA学习笔记——DS18B20(数字温度传感器)

目录

一、DS18B20简介

二、DS18B20特点

三、DS18B20内部结构

(1)64位光刻ROM编码

(2)高速缓存器

四、温度测量

五、配置寄存器

六、DS18B20实现温度转换

(1)ROM命令

(2)功能命令(RAM命令)

七、初始化时序

八、写时序

九、读时序


一、DS18B20简介

        DS18B20是DALLAS半导体公司生产的单总线数字温度传感器,其输出的是数字信号,具有体积小功耗低抗干扰能力强精度高的特点。

GND:

DQ:数据输入/输出

Vdd:供电电压

NC:无连接


二、DS18B20特点

(1)采用单总线接口方式

(2)测温范围宽、测量精度高

(3)无需外围元件

(4)支持多点组网功能,可实现多点测温

(5)可进行温度报警设置

(6)供电方式灵活

(7)测量分辨率可调节,采集精度转换时间短

(8)负压特性

(9)掉电保护功能


三、DS18B20内部结构

(1)64位光刻ROM编码

        每个DS18B20的片内ROM都存有一个独一无二64位编码。

        在该ROM编码的低8位保存有DS18B20的分类编码:28h;中间的48位独一无二序列号最高8位是前面56的CRC循环冗余校验码

        因为每个DS18B20的序列号都不一样,所以一条总线上可以控制多个DS18B20。

(2)高速缓存器

9个byte组成(1byte=8bit)高速缓存器。

byte0、byte1用来存储温度测量值;(低位先发)

byte2:超过设置的温度就报警

byte3:小于或等于设置的温度就报警

byte4:用来配置分辨率

byte5、byte6、byte7:保留

byte8:CRC校验


四、温度测量

        DS18B20中的温度传感器可完成对温度的测量,它的温度转换精度用户可以自定义9、10、11、12位,(如果没有进行位宽的设置,默认为12位)精度分别为0.5°C、0.25°C、0.125°C、0.0625°C分辨率

        符号标志位(S)表示温度的正负极性:若S=0,则为正数,若S=1,则为负数

温度测量值以二进制补码的形式存储在寄存器中。

在进行温度计算的时候要将补码传化成原码:

如果温度测量值是正数原码和补码是一样的。

如果温度测量值是负数,原码有两种计算方式:

1.除符号位以外减一再取反

2.除符号位以外取反再加一

温度值如何计算?

如果温度测量值是正数

        将输出的二进制除符号位以外,转换成十进制,然后乘以精度(分辨率)(这里是12位,所以精度是0.0625),以+125°C为例:

二进制转成十进制:111 1101 0000-------->    2000

乘以精度(分辨率):2000x0.0625=125

如果温度测量值是负数:

        将输出的二进制除符号位以外,先转成原码,然后转成十进制,最后乘以精度(分辨率)这里是12位,所以精度是0.0625),以-25.0625°C为例:

补码转原码:110 0110 1111 ----->001 1001 0001

二进制转十进制:001 1001 0001 ------>401

乘以精度(分辨率):401x0.0625=25.0625


五、配置寄存器

高速缓存器中第五个字节即为配置寄存器,用户通过改变R1和R0的值来配置DS18B20的分辨率

如果配置成11位:那么温度低8位中的最低为无效,精度也就变成了0.125。


六、DS18B20实现温度转换

主机控制DS18B20完成温度转换必须经过三个步骤

每一次读写之前都要对DS18B20进行初始化操作,

初始化成功后发送一条ROM命令,

最后发送功能命令(RAM命令),

这样才能对DS18B20极性预定的操作。

1.初始化

        单总线上的所有操作必须以初始化为开始。初始化序列由总线上的主设备发出的复位脉冲以及紧跟着从设备回应的存在脉冲构成。该存在脉冲式让总线主设备知道DS18B20在总线上并准备好运行。

2.ROM命令

搜索ROM[F0h]、读ROM[33h]、匹配ROM[55h]、跳过ROM[CCh]、警报搜索ROM[ECh]。

3.功能命令(RAM命令)

温度转换[44h]、写入暂存器[4Eh]、读取高速缓存器[BEh]、复制高速缓存器[48h]、召回EEPROM[B8h]、读供电模式[B4h]。

(1)ROM命令

搜索ROM[F0h]:主设备通过排除法获取ROM编码,该过程需要执行多次搜索ROM周期,直到所有设备都被识别。

适用于:多点

读ROM[33h]:允许总线主控设备直接读取从设备的ROM编码。

适用于:单点

匹配ROM[55h]:通过发送匹配ROM后跟着ROM编码,总线主控器可以在单点或多点总线上寻址特定的设备,只有完全匹配该ROM编码的从设备,才会响应主控器发出的功能指令,其它从设备等待复位脉冲触发。

适用于:单点或多点

跳过ROM[CCh]:主设备同时寻址总线上的所有从设备,而无需发送ROM编码。

适用于:单点或多点

警报搜索ROM[ECh]: 仅对设置了报警标志的从设备进行响应。

适用于:单点或多点

(2)功能命令(RAM命令)

简单的温度读取过程:


七、初始化时序

DS18B20所有的通信都是由初始化开始的,初始化由主设备发出的复位脉冲以及从设备响应的存在脉冲组成。

        主设备看:首先主设备发出480us---960us的低电平脉冲,然后,释放,总线变成高电平(上拉电阻造成的),随后,主设备在480us---960us对总线进行检测,如果在检测时间内有低电平出现,就表示总线上有器件响应,反之,则没有。

        从设备看:首先,检测总线上是否出现480us---960us的低电平,如果有,总线变成高电平后,DS18B20等待15us---60us,然后,总线被拉低,低电平保持60us---240us,表示从设备做出响应存在脉冲。如果没有检测到低电平就一直等待。


八、写时序

主设备通过写时序将命令写入DS18B20中,写时序有两种情况:写“1”和写“0”时序。

当主设备将总线从高电平拉低,启动写时序,所有的写时序最少为60us,

每个写时序的回复时间最少为1us,

写“0”时序:主设备将总线拉低,然后保持低电平,低电平保持时间最少为60us,当总线被拉低之后,从设备在15us---60us进行采样。

写“1”时序:主设备将总线拉低,然后释放总线,允许总线在写时序15us内拉至高电平,当总线被拉低之后,从设备在15us---60us进行采样。


九、读时序

发送完读取共带你模式[B4h]或读高速缓存器[BEh]命令时,必须及时的生成读时序,只有在读时隙从设备才能向主设备传送数据。

每个读时序最少持续60us,读时序的间隔至少为1us。

读“0”时序:主设备将总线拉低,表示启动读时序,总线由从设备控制,从设备将总线拉,表示DS18B20向主设备发送“0”。读时序完成以后,总线拉高表示空闲状态

读“1”时序:主设备将总线拉低,表示启动读时序,总线由从设备控制,从设备将总线拉,表示DS18B20向主设备发送“1”。读时序完成以后,总线拉高表示空闲状态

从设备输出的数据在启动读时序之后的15us内有效,主设备必须在启动读时序后15us内释放总线,然后对总线进行采样,采到高电平表示“1”,采到低电平表示“0”.


以上就是DS18B20的一些简要介绍。(如果有不对的地方,还请指出来,谢谢!)

http://www.xdnf.cn/news/17759.html

相关文章:

  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘lightgbm’问题
  • 【C++】封装哈希表模拟实现unordered_set和unordered_map
  • 简单的身份验证中间件Tinyauth
  • 学习日志31 python
  • AI入门学习--如何写好prompt?
  • PyCharm(2025.1.3.1)绑定 Conda 环境
  • 类和对象(中上)
  • 加载模型使用torch_dtype参数来显式指定数据类型
  • 智能双行框!百度全量上线AI搜索,是革新浪潮还是昙花一现?
  • CICD部署流程详解文档笔记
  • 剑桥大学最新研究:基于大语言模型(LLM)的分子动力学模拟框架,是MD的GPT时刻还是概念包装?
  • QT 高分屏不同缩放比例的自适应处理
  • RK3568-RTL8852BS驱动框架
  • Java多线程并发控制:使用ReentrantLock实现生产者-消费者模型
  • MySQL杂项
  • 【网络运维】Linux:LNMP 项目实践
  • redis常见的性能问题
  • 用Python实现Excel转PDF并去除Spire.XLS水印
  • [Ubuntu] xrdp共享连接 Ubuntu 屏幕 | xfce4
  • 数据结构 双链表与LinkedList
  • 【排序算法】⑦归并排序
  • Python笔记之`getattr`和`hasattr`用法详解
  • (二)vscode搭建espidf环境,配置wsl2
  • 【Altium designer】一键添加多个器件参数的“备注”
  • GPT-5越狱与零点击AI代理攻击:云与IoT系统面临新型威胁
  • 如何在 Ubuntu 24.04 LTS Linux 上安装和使用 Flatpak
  • 使用dockge 安装 photoprism
  • Nacos添加权限
  • Springboot-vue 地图展现
  • C++多态是如何实现