![本文作者:豆面 本文作者:豆面](http://dn-qiniu-avatar.qbox.me/avatar/b70a46f09148634901fa6e442fca8201.png?s=60&d=mm&r=G)
如何正确使用DS18B20传感器进行温度测量?
一、DS18B20简介
DS18B20是美国DALLAS半导体公司推出的一种改进型智能温度传感器,它能够直接输出数字信号,无需复杂的模拟信号处理电路,其测温范围为55℃至+125℃,固有测温分辨率为0.5℃(可通过编程实现9至12位的分辨率)。
二、测量原理
![如何正确使用DS18B20传感器进行温度测量?](https://www.jerry.net.cn/zb_users/upload/post_aigc_pic/category_1/d440833ddc23c4fdf58fd1581e33e4b0_0.png)
DS18B20内部主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器,其测温原理基于低温度系数晶振和高温度系数晶振的组合,低温度系数晶振产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,产生的信号作为减法计数器2的脉冲输入。
每次测量前,首先将55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1对低温度系数振荡器产生的时钟脉冲后进行计数,当预置值减到0时,温度寄存器的值将加1,计数器1的预置重新被装入,重新开始计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
三、测量步骤
1、初始化:先将数据线拉高电平“1”,延时(该时间要求不严格,但应尽量短),然后将数据线拉到低电平“0”,再延时750微秒(该时间范围可以从480到960微秒),最后将数据线拉到高电平“1”并延时等待,如果初始化成功,在15到60微妙时间内会产生一个由DS18B20返回的低电平“0”,据该状态可确定其存在,但应注意不能无限等待,需进行超时控制。
2、发送命令:主设备必须向DS18B20发送温度转换命令[44h]才能开始温度转换,对于DS18B20,常用的命令包括跳过ROM指令[CCh]、匹配ROM指令[55h]、搜索ROM指令[F0h]、读暂存器指令[BEh]等。
3、读取数据:如果DS18B20是由外部供电,当发送完温度转换命令后,主设备可以执行“读数据时序”,若此时温度转换正在进行,DS18B20会响应“0”;若温度转换完成,则会响应“1”,如果DS18B20是由“寄生电源”供电,则此响应技术不可使用,因为在整个温度转换期间,总线必须强制拉高,当温度转换完成后,就可以读取温度寄存器中的数据了,读取时,先读取低位字节,再读取高位字节,两个字节合成16位温度数据。
四、数据处理
读取到的温度数据是以16位补码形式存储的,其中高5位是符号位,正数时S=0,负数时S=1,对于正温度,直接将16进制数转换成10进制即可得到实际温度;对于负温度,需要将16进制取反后加1,再转换成10进制。
读取到的温度数据为0x550H,转换为二进制是0101010100000000B,由于符号位为0,表示正数,直接将剩余的11位二进制数转换为十进制数,得到85,即当前温度为+85度,若读取到的温度数据为0xFC90H,转换为二进制是1111110010010000B,符号位为1,表示负数,先将16进制取反得到0000001101010000B,再加1得到0000001101010001B,转换为十进制数得到55,即当前温度为55度。
通过上述介绍,可以清晰地了解DS18B20如何精确地测量温度,从初始化到数据处理,每一步都至关重要,确保测量结果的准确性和可靠性。
作者:豆面本文地址:https://www.jerry.net.cn/articals/30455.html发布于 2025-02-10 18:59:07
文章转载或复制请以超链接形式并注明出处杰瑞科技发展有限公司