温度是一种最基本的环境参数,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段:①传统的分立式温度传感器,②模拟集成温度传感器,③智能集成温度传感器。目前,国际上新型温度传感器正从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展。文章将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对以此传感器,89C2051单片机为控制器构成的温度测量装置的工作原理及程序设计作了详细的介绍。该装置适用于人民的日常生活和工、农业生产用于温度测量。
二、DS18B20单线数字温度传感器
由DALLAS半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。它具有体积小,接口方便,传输距离远等特点。
DS18B20的性能特点:①采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位),②测温范围为-55℃-+125℃,测量分辨率为0.0625℃,③内含64位经过激光修正的只读存储器ROM,④适配各种单片机或系统机,⑤用户可分别设定各路温度的上、下限,⑥内含寄生电源。
2、 DS18B20内部结构
DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。DS18B20的管脚排列如图1所示。
64位光刻ROM是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。不同的器件地址序列号不同。
8位产品系列号 | 48位产品序号 | 8位CRC编码 |
DS18B20高速暂存器共9个存存单元,如表所示:
序号 | 寄存器名称 | 作 用 | 序号 | 寄存器名称 | 作 用 |
0 | 温度低字节 | 以16位补码形式存放 | 4、5 | 保留字节1、2 |
|
1 | 温度高字节 | 6 | 计数器余值 |
| |
2 | TH/用户字节1 | 存放温度上限 | 7 | 计数器/℃ |
|
3 | HL/用户字节2 | 存放温度下限 | 8 | CRC |
|
以12位转化为例说明温度高低字节存放形式及计算:12位转化后得到的12位数据,存储在18B20的两个高低两个8位的RAM中,二进制中的前面5位是符号位。如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625才能得到实际温度。
高8位 | S | S | S | S | S | 26 | 25 | 24 |
低8位 | 23 | 22 | 21 | 20 | 2-1 | 2-2 | 2-3 | 2-4 |
1、DS18B20控制方法
在硬件上,DS18B20与单片机的连接有两种方法,一种是Vcc接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电阻。
DS18B20有六条控制命令,如表所示:
指 令 | 约定代码 | 操 作 说 明 |
温度转换 | 44H | 启动DS18B20进行温度转换 |
读暂存器 | BEH | 读暂存器9个字节内容 |
写暂存器 | 4EH | 将数据写入暂存器的TH、TL字节 |
复制暂存器 | 48H | 把暂存器的TH、TL字节写到E2RAM中 |
重新调E2RAM | B8H | 把E2RAM中的TH、TL字节写到暂存器TH、TL字节 |
读电源供电方式 | B4H | 启动DS18B20发送电源供电方式的信号给主CPU |
CPU对DS18B20的访问流程是:先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
三、基于DS18B20的温度测量装置
1、系统组成
由DS18B20构成的智能温度测量装置由三部分组成:DS18B20温度传感器、89C2051、显示模块。产品的主要技术指标:①测量范围:-55℃-+125℃,②测量精度:0.5℃,③反应时间≤500ms。
2、 工作原理
CLR I/O
MOV R0,#0FAH ;延时 500 微秒
LP1 : DJNZ R0,LP1
SETB I/O ;释放总线
MOV R0,#15H ;在 63 微秒内检测是否出现应答信号
LP2 : JNB I/O,LP3
DJNZ R0,LP2
CLR F1 ;清标志位 , 表示 DS1820 不存在
LJMP LP5
LP4 : DJNZ R0,LP4
LP5 : SETB I/O
RET
SETB I/Q
NOP
CLR I/Q
NOP
SETB I/Q
MOV R3,#7
DJNZ R3,$
MOV C,I/Q
MOV R3,#23
DJNZ R3,$
RRC A
DJNZ R2,LOOP
CLR C
WI : CLR DQ
MOV R3,#6
DJNZ R3,$
RRC A
MOV DQ,C
MOV R3,#23
DJNZ R3,$
SETB DQ
NOP
DJNZ R2,WR1
SETB DQ
RET