DS18B20数字温度传感器快速上手

DS18B20温度传感器

①介绍

DS18B20数字温度传感器提供9到12-Bit摄氏温度测量精度和一个用户可编程的非易失性且具有过温和低温触发报警的报警功能。DS18B20采用的1-Wire通信即仅采用一个数据线(以及地)与微控制器进行通信。该传感器的温度检测范围为-55℃至+125℃,并且在温度传感器的超过-10℃至85℃之外时还具有±0.5℃的精度。此外,DS18B20可以直接由数据线供电而不需要外部电源供电。

在工作时,DS18B20将外部的温度信息转换成数字信号,存放到其内部的Scratchpad中,Scratchpad内存分布如下图1所示。可见,Scratchpad中共有9个字节,使用单片机读出其中的温度,即读取器前两个字节Byte0和Byte1。

                                                            图1 DS18B20内存分布图

 

在Byte0和Byte1中储存着温度的信息,通过了解Byte0和Byte1的存储信息的格式,可以将其中内部的存储信息转换为我们想要的温度信息。Byte0和Byte1存储信息的格式如下图2所示。由此可知,在LSB(byte0)中包括了八位二进制的温度数据。在MSB(byte1)中的高五位存放符号信息,第三位接LSB(byte0)存放剩余的三位二进制温度数据。要注意的是,温度信息在该寄存器中以补码形式存储,所以当温度为负值时,应考虑到转换关系。

                                                                     图2 温度寄存器格式图

 

②使用流程

在使用DS18B20传输温度数据的过程中,其主要操作便是通过发送指令对温度传感器进行操作并读取数据。传输的顺序可以分为三步骤,下图3所示为DS18B20文档中对于其传输序列的解释。第一步是对其进行初始化,然后要在数据交换前输入ROM指令。最后对DS18B20传输指令并进行后续读取操作。

                                                                图3 DS18B20数据传输顺序

以实验中用到的读取温度值的函数进行介绍,函数主体如下所示。

short DS18B20_Get_Temp(void)
{
    u8 temp;
    u8 TL,TH;
	short tem;
    DS18B20_Start ();  			// ds1820 start convert
    DS18B20_Rst();
    DS18B20_Check();	 
    DS18B20_Write_Byte(0xcc);	// skip rom
    DS18B20_Write_Byte(0xbe);	// convert	    
    TL=DS18B20_Read_Byte(); 	// LSB   
    TH=DS18B20_Read_Byte(); 	// MSB  
	    	  
    if(TH>7)
    {
        TH=~TH;
        TL=~TL; 
        temp=0;					//温度为负
    }else temp=1;				//温度为正  	  
    tem=TH; 					//获得高八位
    tem<<=8;    
    tem+=TL;					//获得低八位
    tem=(float)tem*0.625;		//转换
	if(temp)return tem; 		//返回温度值
	else return -tem;    
}

首先应进行初始化。在DS18B20上电时,处于一种不工作的状态,如果在此时对其存储器进行读取数据,此时读到的是DS18B20的默认值,为85℃。如果想要DS18B20开始读取环境的温度,需要对其发送一个CONVERT T指令。同样,在发送CONVERT T指令时也应该遵循以上的三个步骤。以下为DS18B20的初始化函数。

void DS18B20_Start(void) 
{   						               
    DS18B20_Rst();	   
	DS18B20_Check();	 
    DS18B20_Write_Byte(0xcc);	// skip rom
    DS18B20_Write_Byte(0x44);	// convert
} 

在对DS18B20发送了CONVERT T指令后,其开始测量温度。测量需要一段时间,故需要有一段时间的延时处理,等待DS18B20测量温度。可通过调用DS18B20的初始化函数实现延时的功能。

此后先后对DS18B20传输”0xcc”(skip rom)指令以及”0xbe”指令。再使用”DS18B20_Read_Byte()”函数读取两个字节的信息(即LSB和MSB)。此后将TH于TL转换为u8数据temp,并返回温度值。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 基于DS18B20数字温度传感器温度计设计,需要以下步骤: 1. 准备硬件DS18B20数字温度传感器、Arduino开发板、面包板、杜邦线等。 2. 连接硬件:将DS18B20数字温度传感器连接到Arduino开发板上,可以使用面包板和杜邦线进行连接。 3. 编写代码:使用Arduino开发环境编写代码,读取DS18B20数字温度传感器温度数据,并将数据显示在串口监视器上或者LCD屏幕上。 4. 调试测试:将代码上传到Arduino开发板上,进行调试测试,确保温度计能够正常工作。 5. 优化改进:根据实际需求,可以对温度计进行优化改进,例如添加报警功能、数据存储功能等。 总之,基于DS18B20数字温度传感器温度计设计是一个简单而有趣的项目,可以帮助我们更好地了解数字温度传感器的工作原理和应用。 ### 回答2: DS18B20数字温度传感器是一种基于数字信号的高精度温度传感器,它具有体积小、精度高、稳定性好、抗干扰能力强等优点,因此被广泛应用于各种温度测量和控制场合。本文将介绍基于DS18B20数字温度传感器温度计设计。 1. 硬件设计方案 硬件设计方案主要包括传感器电路、控制电路和显示电路。 (1)传感器电路 DS18B20电路如下: 在上述电路中,DS18B20数字温度传感器作为温度检测电路的核心元件,其输出可以直接连接至微控制器的数字输入引脚。电路中的电阻和电容用于提供稳定的电源和交互信号。 (2)控制电路 控制电路主要包括单片机和相关逻辑电路,其主要功能是控制DS18B20传感器实现温度检测和处理。 (3)显示电路 显示电路主要用于将温度值可视化,可以采用常见的LED数码管和LCD显示屏等显示设备。 2. 软件设计方案 (1)系统初始化 系统初始化主要包括对单片机IO口、外围设备的初始化设置。 (2)温度检测 在温度检测过程中,需要先发送温度转换命令,然后等待DS18B20温度转换完成,最后读取温度值。其中,温度转换命令和读取温度值的具体操作可以参考DS18B20的相关应用手册。 (3)温度处理和显示 在温度处理和显示过程中,需要对采集到的温度值进行处理和显示,具体操作可以根据需要进行编写。 3. 应用场合和注意事项 基于DS18B20数字温度传感器温度计适用于各种需要进行温度检测和控制的场合,例如室内温度控制、温室温度控制、水族箱温度控制等。同时,在使用过程中,需要注意保护DS18B20传感器,避免受到过高电压或电流的损坏。此外,要时刻注意电路布线的良好接触和连接,避免引发干扰和故障。 ### 回答3: DS18B20是一种数字温度传感器,它具有高精度、低成本、数字输出和单线接口等特点,因此在工业控制、温度检测等领域得到了广泛的应用。下面将介绍如何基于DS18B20设计一个低成本、高精度的温度计。 设计方案: 硬件设计: 硬件方案采用封装为TO-92的DS18B20数字温度传感器,通过单一的引脚(DQ)与主处理器相连,主要由数码管模块、单片机模块、DS18B20模块、串口通信模块构成。 软件设计: 因为温度传感器采用的是数字信号,所以我们可以通过开发软件程序的手段来读取温度值。主要分为以下步骤: 1.初始化DS18B20传感器,配置好引脚和分辨率。 2.读取DS18B20传感器的温度值,该步骤需要依据DS18B20传感器的特殊通信方式进行命令发送,再读取传感器反馈的数据。 3.将读取的温度数据转换成人能够识别的形式,例如将读取的数字结果处理为十进制或其他合适的格式。 4.将转换后的温度值显示在数码管上,让用户可以直观地观察温度变化。 5.设计一个简单的串口通信协议,将读取到的温度数据通过串口发送给上位机进行数据处理。 总结: 以上是基于DS18B20数字温度传感器温度计设计方案。该设计方案具有低成本、高精度、易于实现的特点,适用于各类温度检测应用场合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值