使用DS18B20温度传感器测温
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第11章使用DS18B20温度传感器测温
11.1 概述
现实生产生活中,小到测量体温的温度计,大到航天飞机的温控系统,处处都离不开温度测量。工业生产中的三大指标(流量、压力、温度)之一就是温度,温度测量可以说是无处不在,遍布了我们生活生产的方方面面。
DS18B20温度传感器是美国DALLAS半导体公司生产的数字化温度传感器,它与以往模拟量温度传感器不同,数字化是其一大特点,它能将被测环境温度直接转化为数字量,并以串行数据流的形式传输给单片机等微处理器去处理。DS18B20温度传感器的另一个主要特点是它是单总线的,即它与单片机等微处理器连接时,只需占用一个I/O管脚,并且不再需要其它任何外部元器件,这大大简化了它与但单片机之间的接口电路。
11.2 DS18B20温度传感器介绍
目前,使用最普遍的DS18B20温度传感器是三脚TO-92直插式封装这一种,这种封装的DS18B20实物如图11-1所示。可以看到它体积很小,只有三只管脚,外形与一般的三极管极其相似。图11-2是其三脚TO-92直插式封装图,表11-1列出了DS18B20各个引脚的定义。
如图11-1 如图11-2
表11-1 DS18B20引脚定义。
1、DS18B20温度传感器特性简介
◆独特的单总线(一条线)接口,与微处理器通信只需一个I/O管脚,且硬件连接无需其它外部元件;
◆测量结果直接输出数字量,可直接与微处理器通信;
◆供电电压范围3.0V~5.5V;在寄生电源方式下可有数据线供电;
◆测温范围-55℃~+125℃;在-10℃~+85℃范围内,测量精度可达±0.5℃;
◆可编程的9~12位测温分辨率,对应的可分辨温度值分别为0.5℃,0.25℃,0.125℃,
0.0625℃;12位分辨率时的温度测量转换最长时间(上限)只有750ms;
◆每一片DS18B20都有自己独一无二的芯片号码;多片DS18B20可以并联在一条数据总线上实现不同地点的多点组网;
◆应用范围包括温度调控,工业现场测温,消费类产品,温度计及热敏系统等。
2、DS18B20温度传感器测温工作原理
DS18B20的核心功能就是测量被测环境温度并直接转换成为数字量。我们使用DS18B20测温,就是要将DS18B20转换成的数字量温度值从DS18B20内部读出,送入单片机进行处理,所以了解DS18B20内部的存储器的结构和组成是必要的。另外,控制DS18B20测温和读取温度值的指令也是必不可少的。以下就从这两个方面逐个说明。
⑴DS18B20内部的存储器
笼统而言,可以说DS18B20内部的存储器有三个。一个是64位光刻ROM;另一个是中间结果暂存RAM;第三个是E2RAM。
①64位光刻ROM
前面已经提及,每一片DS18B20都有一个独一无二的号码,用于唯一标识当前这片DS18B20。这个号码是DS18B20的生产厂家DALLAS公司在生产该片DS18B20时固化在其内部ROM中的,共有64位,所以称为64位光刻ROM号码,其数据格式如图11-3所示。
图11-3 64位光刻ROM数据格式
这64位号码由三部分组成,分别是64位号码中的最低8位,64位号码中的中间48位和64位号码中的最高8位。其中,64位号码中的最低8位对每一片DS18B20而言都相同,其值是0x28H,称为家族代码。这个值是专门分配给DS18B20家族的,用以区别不同的单总线设备家族。64位号码中的中间48位是唯一标识当前这片DS18B20的产品序列号。任意两片DS18B20的家族代码都是0x28H,但它们的48位产品序列号绝对不相同,这48位一般称为48位序列号。64位号码中的最高8位是从前面的56位(8位+48位=56位)计算出的CRC码,这8位一般不大用,所以此处一笔带过,读者可以不予理睬。
②中间结果暂存RAM
中间结果暂存RAM共有8个字节,其结构如图11-4所示。
图11-4中间结果暂存RAM
其中,字节地址0是所测温度数值的低8位,字节地址1是所测温度数值的高8位,字节地址2是设定温度的上限值,字节地址3是设定温度的下限值,字节地址4是配置寄存器字节。字节地址5,6,7保留。这8个字节中,除字节地址0,1,4以外的5个字节几乎不使用,所以可以忽略,重点掌握字节地址0,1,4就足够了。
字节地址0和字节地址1中存放的就是测量的温度值,字节地址1中存放的是高8位,字节地址0中存放的是低8位。它们中的温度数据存储格式如图11-5所示。其中,高5位是符号位S。若5个S全为0则表示温度是正值,由于是正值,补码与原码相同,余下的11位按图示各位的权重计算所得数值就是所测温度值;若5个S全为1,则余下11位的补码对应的数值就是所测温度值,这个温度值自然是零度以下,是负值。在实际计算温度值时,在得到11位数值原码值以后,再乘以0.0625就得到所测的温度值。这样计算的原因是:可以将图11-5中的小数点(在权重20和2-1之间)向右移动4位,即整个数值扩大了24=16倍,要使与原值相等,自然需要再除以16,即相当于乘以0.0625。
图11-5 温度数据存储格式
字节地址4是配置寄存器字节。前面已经提及,DS18B20的测温有9位,10位,11位,12位四种分辨率,实际测温时选用哪种分辨率是可以通过具体编程来设定,DS18B20出厂时设定的默认测温分辨率是12位。字节地址4配置寄存器字节的数据格式如图11-6所示。其中的R1和R0的四种组合一一对应9位,10位,11位,12位四种分辨率。对应关系如表11-2所示。附带说明的是,一般选用出厂时设定的默认测温分辨率12位,不用改动。
图11-6 配置寄存器字节的数据格式
表11-2 R1和R0的四种组合与测温分辨率的关系
③E2RAM
E2RAM的结构如图11-7所示。可以看到,E2RAM是中间结果暂存RAM中字节地址位2,3,4的三个字节内容的拷贝或者说是备份,以备数据的完备性需要。这个存储器一般不使用,故可以忽略不予考虑。
图11-7 E2RAM的结构
综上所述,在不改变测温出厂分辨率(12位)的前提下,DS18B20内部存储器中,我们需关注的就只有64位光刻ROM和中间结果暂存RAM中用于存放温度值的字节地址0和字节地址1了。
⑵DS18B20的指令
DS18B20的指令可分为三大类,第一类是与64位光刻ROM相关联的一系列指令,第二类是与中间结果暂存RAM相关联的温度值读取等一些相关指令,第三类就是控制温度转换的控制类指令。上面刚刚提到,在不改变测温出厂分辨率(12位)的前提下,DS18B20内部存储器中,我们只需关注64位光刻ROM和中间结果暂存RAM中字节地址0和字节