您的位置:首 页 >> 技术资讯 >> 半导体技术 >> 正文
DS18B20在温控系统中的应用

中采网-电子资讯及技术频道      

    (南京师范大学电气与电子工程学院  210042)  

摘要  DS18B20是美国DALLAS半导体公司生产的1-WIRE数字温度传感器,本文详细介绍它的主要技术性能及在单点温控系统中的应用。
关键词  DS18B20  单片机  1-WIRE   温度传感器

一  概述

智能温度传感器DS18B20将温度传感器、A/D传感器、寄存器、接口电路集成在一个芯片中。可实现直接数字化输出、测试及控制功能强、传输距离远、抗干扰能力强、微型化、微功耗、易于配微控制器(MCU)或微型计算机进行数据处理及温度控制。在很多智能化的温度传感器中,大多使用同步串行总线技术,如 (Philips)、SMBus(Intel) 、SPI(Motorola)、 Microwire/Plus(NSC)等串行总线协议,而DS18B20采用的是1-WIRE总线协议。1-WIRE是DALLAS公司的一项专有技术,它采用一根信号线实现信号的双向传输,具有接口简单,节省I/O口线,便于扩展和维护等优点。下面介绍其在单点温控系统中的应用。
本系统主要应用1-WIRE集成数字温度传感器DS18B20实时检测管道温度,并根据按键设定的温度值,由单片机AT89C2051通过步进电机去控制阀位,实现温度控制输出。其中:  MAX7219为美信公司的8位LED串行显示驱动芯片;P1.0、P1.1、P1.2、P1.3接步进电机驱动电路,对应步进电机的A、B、C、D相。
下面详细介绍DS18B20及其与单片机的接口。

二.DS18B20及其与单片机的接口

1.DS18B20的引脚及内部结构

下面为DS18B20采用3脚PR-35封装的引脚及内部结构方块图。
DS18B20的测温范围为-55℃— +125℃,在-10℃—+85℃范围内,可确保测量误差不超过±0.5℃;并且转换精度可编程控制。
芯片出厂时为默认12位转换精度。DS18B20工作在9位、10位、11位、和12位模式时的温度分辨力依次为0.5℃、0.25℃、0.125℃、0.0625℃。当DS18B20 接收到温度转换命令(44H)后,开始转换,转换完成后的温度以16位带符号扩展的二进制补码形式,存储在scratchpad RAM中的第0,1字节。在执行读scratchpad  RAM命令(0BEH)后,可将这两字节的温度值通过单总线传给主CPU,高字节的符号位代表温度值为正还是为负。 
单总线要求外接一个约5K的上拉电阻;这样不管什么原因,如果传输过程中需要暂时挂起,且要求传输过程还能继续的话,则总线在恢复时间处于空闲状态(高电平)。

2.程序命令时序

典型的总线命令序列如下:
第一步:  初始化
第二步: ROM命令(跟随需要交换的数据)
第三步: 功能命令 (跟随需要交换的数据)
每次访问单总线器件,必须严格遵守这个命令序列,如果出现序列混乱,则一线器件不会响应单片机。   
基于一线上的所有传输过程都时以初始化开始的,初始化过程由单片机发出的复位脉冲和DS18B20的响应的应答脉冲组成。应答脉冲使单片机知道,总线上有1-WIRE设备,且准备就绪。系统中CPU采用6MHz晶振,DQ端为P3.3。
RESET子程序
RESET:CLR P3.3         ;拉低总线至少480us,否则在温度较高时会无法完成复位。
MOV R2,#130             ;在调试过程中发现延时520uS,测温值可到110℃,达到
D1:   DJNZ R2,D1      ;DS18B20的技术参数。
      SETB P3.3         ;释放总线
      MOV R2,#20
D4:   DJNZ R2,D4
       JB P3.3,D0       ;总线若为低,则复位成功;否则复位失败,返回。
       MOV R2,#110
D2:    DJNZ R2,D2       ;延时等待复位过程结束
       RET
在单片机检测到应答(presence)脉冲后,就可以发ROM命令,命令长度为8位。该命令字要通过1-WIRE通信协议规定的严格的写时隙(Write time slots),逐位写到一线上,DS18B20会自动接收到这些命令,并准备响应相应的操作。本系统是单点使用,故只须用到SKIM  ROM COMMAND(0CCH),这样单片机可以同时访问总线上的所有设备,而无须发出任何ROM代码信息。例如,单片机在发出SKIP ROM命令后跟随CONVENT  T (功能  COMMAND) 即启动温度转换命令(44H),值得注意的是:若SKIP ROM 命令后跟的是READ SCRATCHPAD(0BEH)命令(包含其他读操作命令),则该系统只能用于单点系统,否则将由于多个节点都响应该命令而引起数据冲突。
在单片机发出ROM 命令后,接着就可以发送功能命令,然后DS18B20就开始执行命令,本单点应用系统中主要用到CONVENT  T和READ SCRATCHPAD。在执行READ SCRATCHPAD命令时,单片机可以通过发送RESET脉冲在任何时候中断数据传输。


3.读、写时序


在对DS18B20进行ROM或功能命令字的写入及对其进行读出操作时,都要求按照严格的1-WIRE通信协议(时序),以保证数据的完整性。其中有写0、写1、读0和读1时序。在这些时序中,都由单片机发出同步信号。并且所有的命令字和数据在传输的过程中都是字节的LSb在前。这一点于基于其他总线协议的串行通信格式(比如SPI、 等)不同,它们通常是字节的MSb在前。
3.1  读时隙   
DS18B20仅在单片机发送读时隙(READ SLOT)时才发送数据,所以单片机在发送READ SCRATCHPAD命令后必须立即产生读时隙。所有的读时隙都要至少保持60us,并且在两个读时隙间至少要有1us的恢复时间。单片机通过把总线拉低至少1us来做为一个读时隙的开始,DS18B20的输出数据在读时序下降沿过后15us内有效,所以在此期间单片机应释放总线,进入读数据状态以便读取数据,15us后一线总线被上拉电阻拉为高电平,程序延时等待读时隙结束。
读一字节子程序     出口条件:读出字节数据在A中
RE1W:MOV  R6,#8          ;从1-Wire总线读出1字节数据的子程序
 RE1:CLR  P3.3       ;拉低总线,发出读时序
 NOP
     SETB P3.3  ;释放总线,等待输入
 MOV R4,#02H
RE2:DJNZ R4,RE2
 MOV C,P3.3  ;通过RRC A指令,从低位开始依次读入数据
 RRC A
 MOV R5,#20
RE3:DJNZ R5,RE3  ;延时,等待读时隙结束
 SETB P3.3  ;恢复时间 DJNZ R6,RE1
 SETB P3.3   
 RET
3.2 写时隙   
写时隙也有两种,写0和写1。主要用于单片机通过1-WIRE总线向DS18B20写入命令字。所有的写时隙也至少要保持60us,且在两个写周期之间至少要有1us的恢复时间。
单片机通过拉低一线总线至少1us来产生写时隙。当写1时,单片机拉低总线,然后必须在15us内释放总线,总线被上拉电阻拉高。当写0时,单片机拉低总线后,然后必须继续保持总线为低(至少60us)。DS18B20在单片机发出写时隙后的15—60us之间开始采样,在这期间内,若总线为高,则1被写入进DS18B20;若总线为低,则0被写入DS18B20。
写一字节子程序     入口条件 :写入的字节在A
WR1W:MOV R3,#08H       ;向1-Wire总线写入1字节数据的位数
W1: SETB P3.3     ;恢复时间
MOV R4,#02
RRC A            ;通过RRC A指令依次向总线写入1字节的数据
CLR P3.3            ;拉低总线,发出写时隙
W2:DJNZ R4,W2
MOV P3.3,C   
MOV R4,#20
W3:DJNZ R4,W3
DJNZ  R3,W1
SETB  P3.3
RET


4.DS18B20的调试程序如下:


MAIN: LCALL RESET    ;复位总线 STEP 1
  MOV A,#0CCH    ;发送skip ROM command
  LCALL WR1W      ;调用WE1W(WRITE 1 WIRE)子程序
  MOV A,#44H    ;发CONVENT T命令字(44H)启动转换 
LCALL WR1W
在启动转换后,单片机可通过发送读时隙,来判断温度转换是否结束.DS18B20会做出响应,发送0表示转换过程还在进行;发送1表示已经转换完毕.当然也可以根据DS18B20的典型转换时间,来调试出合适的延时程序.下面的CHA子程序,来查看是否转换完毕.
CHA:
CPL P3.3
NOP
SETB P3.3
MOV R4,#02
M1:DJNZ R4,M1     
CLR C
ORL C,P3.3
MOV R5,#15
M2:DJNZ R5,M2
SETB  P3.3
JNC   CHA
LCALL RESET
MOV  A,#0CCH    ;发送SKIP  ROM  COMMAND
LCALL WR1W
MOV A,#0BEH       ;发送READ SCRATHPAD COMMAND
LCALL WR1W
LCALL RE1W
MOV 30H,A         ;转换后的低位保存在30H单元
LCALL RE1W
MOV 31H,A         ;转换后的高位保存在31H单元
LCALL RESET      ;调用RESET子程序以结束读取数据   
MOV  A,31H        ;判断温度正负,并处理数据
JNB ACC.7,ZHENG  ;符号位为零,表示为正.跳至ZHENG处理程序.
CLR C              ;负温度时,把读到的补码数变为原码
MOV A,30H
SUBB A,#01H
CPL A
MOV 30H,A
MOV A,31H
SUBB A,#00
CPL  A
MOV 31H,A
:                
SJMP GONG ;设置负标志位,或显示符号,可针对不同应用系统进行编写  ZHENG:
   :                      ;设置正标志位,或显示符号
GONG:MOV A,30H          ;处理整数部分低字节数据
ANL A,#0F0H        ;暂忽略低4位小数
ORL A,31H
SWAP A
MOV R0,A            ;R0是CON_BCD(转换为非压缩BCD 码)子程序的数据入口
LCALL COV_BCD
:                  ;32H、33H及34H单元中分别存放了转换后的非压缩BCD
:                   ;码可供使用     
 MOV 20H,30H       ;处理小数部分(即30H低4位)程序如下 
      MOV A,#00H
JNB 00H,C1
      ADD A,#06H
C1:JNB 01H,C2
ADD A,#0CH
C2:JNB 02H,C3
ADD A,#19H
C3:JNB 03H,C4
ADD A,#32H
C4:MOV R0,A
LCALL COV_BCD        ;考虑小数点后第二位数字四设五入的进位,精度0.05
CLR C                ;本程序采用12位精度,DS18B20分辨力为0.0625
MOV A,34H            ;本程序处理时可保证精度为0.05
SUBB A,#05H
MOV A,33H
JC  YU          
ADD A,#01H
YU:
:                    ;A中为小数值,可编程放进相应的显示单元入口
RET
COV_BCD: MOV R1,#32H    ;转换为非压缩型BCD码子程序 
MOV A,R0            ;设置程序入口   
MOV B,#100
DIV AB
MOV  @R1,A           ;百位暂存于32H单元
INC R1
MOV A,#10
XCH A,B
DIV  AB
MOV @R1,A            ;十位暂存于33H单元
INC R1
MOV @R1,B            ;个位暂存于34单元
RET

参考文献
1.MAXIM 产品资料全集, 2002
2.智能化集成温度传感器原理及应用.沙占有主编.(M) 北京:机械工业出版社,2002

来源:
  相关文章链接
关于中采网成长历程广告服务版权及商标法律声明隐私申明客户反馈工作机会网站建设网络推广手机网站 商业域名友情链接网站地图

常年法律顾问于波律师著作权与商标声明隐私申明法律声明电子词典互动问答网上黄页网址大全

本频道所有文章或图片的版权和著作权均归作者本人所有,如有疑问请电邮至:sz#cnebuyer.com
Copyright©2000- CNeBuyer.com All Rights Reserved 中采网 版权所有 ICP备09029428号

中国互联网不良信息举报中心

中国互联网网络垃圾举报中心

做文明网,传播文明

深圳市网络警察在线报警平台入口