【常用传感器】DS18B20温度传感器原理详解及例程代码 | 您所在的位置:网站首页 › 3470温度传感器 › 【常用传感器】DS18B20温度传感器原理详解及例程代码 |
数字温度传感器(DS18B20)
DS18B20是一款常用的高精度的单总线数字温度测量芯片。具有体积小,硬件开销低,抗干扰能力强,精度高的特点。 测温范围为-55℃到+125℃,在-10℃到+85℃范围内误差为±0.4°。 返回16位二进制温度数值 主机和从机通信使用单总线,即使用单线进行数据的发送和接收 在使用中不需要任何外围元件,独立芯片即可完成工作。 掉电保护功能 DS18B20 内部含有 EEPROM ,通过配置寄存器可以设定数字转换精度和报警温度,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。 每个DS18B20都有独立唯一的64位-ID,此特性决定了它可以将任意多的DS18b20挂载到一根总线上,通过ROM搜索读取相应DS18B20的温度值 宽电压供电,电压2.5V~5.5V DS18B20返回的16位二进制数代表此刻探测的温度值,其高五位代表正负。如果高五位全部为1,则代表返回的温度值为负值。如果高五位全部为0,则代表返回的温度值为正值。后面的11位数据代表温度的绝对值,将其转换为十进制数值之后,再乘以0.0625即可获得此时的温度值。 传感器引脚及原理图DS18B20传感器的引脚及封装图如下:
单个DS18B20接线方式: VDD接到电源,DQ接单片机引脚,同时外加上拉电阻,GND接地 注意这个上拉电阻是必须的,就是DQ引脚必须要一个上拉电阻 DS18B20上拉电阻首先我们要知道什么是漏极开路: 首先看一下 场效应管(MOSFET) 漏极开路:MOS管的栅极G和输入连接,源极S接公共端,漏极D悬空(开路)什么也没有接,直接输出 ,这时只能输出低电平和高阻态,不能输出高电平。 那么这个时候会出现三种情况: 图a为正常输出(内有上拉电阻):场效应管导通时,输出低电位输出低电位,截止时输出高电位。 图b为漏极开路输出,外接上拉电阻:场效应管导通时,驱动电流是从外部的VCC流经电阻通过MOSFET到GND,输出低电位,截止时输出高电位。 图c为漏极开路输出,无外接上拉电阻:场效应管导通时输出低电位,截止呈高阻态(断开)。 总结: 开漏输出只能输出低电平,不能输出高电平。漏极开路输出高电平时必须在输出端与正电源(VCC)间外接一个上拉电阻。否则只能输出高阻态。 DS18B20 是单线通信,即接收和发送都是这个通信脚进行的。 其接收数据时为高电阻输入,其发送数据时是开漏输出,本身不具有输出高电平的能力,即输出0时通过MOS下拉为低电平,而输出1时,则为高阻,需要外接上拉电阻将其拉为高电平。 因此,需要外接上拉电阻,否则无法输出1。 外接上拉电阻阻值: DS18B20的工作电流约为1mA,VCC一般为5V,则电阻R=5V/1mA=5KΩ, 所以正常选择4.7K电阻,或者相近的电阻值。 DS18B20寄生电源DSl8B20的另一个特点是不需要再外部供电下即可工作。当总线高电平时能量由单线上拉电阻经过DQ引脚获得。高电平同时充电一个内部电容,当总线低电平时由此电容供应能量。这种供电方法被称为“寄生电源”。另外一种选择是DSl8B20由接在VDD的外部电源供电 主要由以下3部分组成: 64 位ROM,高速暂存器,存储器 64 位ROM存储独有的序列号 ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。这样就可以实现一根总线上挂接多个DS18B20的目的。 高速暂存器包含: 温度传感器一个字节的温度上限和温度下限报警触发器(TH和TL)配置寄存器允许用户设定9位,10位,11位和12位的温度分辨率,分别对应着温度的分辨率为:0.5°C,0.25°C,0.125°C,0.0625°C,默认为12位分辨率,存储器:由一个高速的RAM和一个可擦除的EEPROM组成,EEPROM存储高温和低温触发器(TH和TL)以及配置寄存器的值,(就是存储低温和高温报警值以及温度分辨率) 高速暂存器由9个字节组成 字节0~1 是温度存储器,用来存储转换好的温度。第0个字节存储温度低8位,第一个字节存储温度高8位字节2~3 是用户用来设置最高报警和最低报警值(TH和TL)。字节4 是配置寄存器,用来配置转换精度,可以设置为9~12 位。字节5~7 保留位。芯片内部使用字节8 CRC校验位。是64位ROM中的前56位编码的校验码。由CRC发生器产生。![]() DS18B20采用16位补码的形式来存储温度数据,温度是摄氏度。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。 高字节的五个S为符号位,温度为正值时S=1,温度为负值时S=0 剩下的11位为温度数据位,对于12位分辨率,所有位全部有效,对于11位分辨率,位0(bit0)无定义,对于10位分辨率,位0和位1无定义,对于9位分辨率,位0,位1,和位2无定义 对应的温度计算: 当五个符号位S=0时,温度为正值,直接将后面的11位二进制转换为十进制,再乘以0.0625(12位分辨率),就可以得到温度值; 当五个符号位S=1时,温度为负值,先将后面的11位二进制补码变为原码(符号位不变,数值位取反后加1),再计算十进制值。再乘以0.0625(12位分辨率),就可以得到温度值; 例如: +125℃的数字输出07D0(00000111 11010000) 转换成10进制是2000,对应摄氏度:0.0625x2000=125°C -55℃的数字输出为 FC90。 首先取反,然后+1,转换成原码为:11111011 01101111 数值位转换成10进制是870,对应摄氏度:-0.0625x870=-55°C
|
CopyRight 2018-2019 实验室设备网 版权所有 |