微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 工业电子 > 分布式测温中传感器时序与温度读取研究

分布式测温中传感器时序与温度读取研究

时间:12-06 来源:互联网 点击:
1.引言

在分布式测温系统中应用了大量的新型传感器DS18B20,DS18B20是单总线数字温度传感器其硬件接线简单,但时序非常复杂。要实现温度的正确读取,既要有对DS18B20的ROM操作命令,又有一些功能命令。这些命令的执行,既有一定顺序,又有特定含义。都需要基于数字温度传感器初始化时序、写时序和读时序,按照严格的时序配合才能完成温度正确采集与读取。因此要想正确使用单总线数字温度传感器,必须分析其时序关系,并且基于时序编制正确程序。单总线数字温度传感器时序分析与应用研究具有及其重要意义。

2.数字温度传感器时序

DS18B20与单片机只通过一条数据线连接,所以其数据的传输方式为串行方式。为了正确读取温度值,必须严格按照时序配合关系,进行程序编制。DS18B20有严格的通信协议来保证数据传输的正确性和完整性。通信协议规定了总线上的多种信号的时序。如:复位脉冲、响应脉冲、写0、写1、读0和读1等信号的时序。DS18B20是在严格的时序控制下进行正常操作的。换句话讲,就是用较为复杂的软件来换取简单的硬件接口。因此要正确使用DS18B20,就必须了解其初始化时序、写时序和读时序。

2.1数字温度传感器初始化时序

初始化时序有时也称复位时序,它是数据线上所有传输过程的开始。整个初始化过程由主设备发出的复位脉冲和DS18B20的响应脉冲组成。在主设备初始化的过程中,主设备通过拉低数据线至少480μS,DS18B20即认为是接收到一个初始化脉冲,接着主设备释放数据线,在数据线上上拉电阻的作用下,数据线电平被拉高,并且主设备进入接收模式。在DS18B20检测到上升沿后,延时15~60μS,接着通过拉低总线60~240μS以产生应答脉冲。初始化时序如图2所示。图1是图2、图3和图4的线型示意图。



图1线型示意图



图2初始化时序

在分布式测温系统中CPU采用AT89S52,温度读取的初始化程序如下所示:

DATBITP1.0

INI10:SETBDAT

MOVR2,#185

INI11:CLRDAT

DJNZR2,INI11;复位脉冲时间600us

SETBDAT;释放数据线

MOVR2,#28

INI12:DJNZR2,INI12;等待60us

CLRC

ORLC,DAT;有无应答低电平

JCINI10;若无应答,初始化失败

MOVR6,#40

INI13:ORLC,DAT

JCINI14;数据线变高。初始化成功

DJNZR6,INI13;低电平最多240us

SJMPINI10;低电平持续大于240us,失败

INI14:MOVR2,#222

INI15:DJNZR2,INI15;应答信号至少要持续480us

RET

2.2数字温度传感器写时序

写时序包括写“0”时序和写“1”时序。写“1”时序用于主设备向DS18B20写入1,写“0”时序用于主设备向DS18B20写入0。无论是哪种写时序都至少需要60μS,且在两次独立的写时序之间至少需要1μS的恢复时间。两种写时序均起始于主设备拉低数据线电平。对于写“1”时序,主设备在拉低数据线之后,紧接着必须在15μS之内释放数据线,由上拉电阻将数据线拉至高电平;而对于写“0”时序,在主设备拉低数据线后,只需在整个时序内保持低电平即可至少60μS。在写时序开始后的15~60μS期间内,DS18B20读取数据线电平状态。如果此期间数据线为高电平,则对器件写入逻辑1,否则写入逻辑0。写时序如图3所示。



图3数字温度传感器写时序

写一位程序如下所示。程序中DAT为I/O口P1.0。

WIR11:SETBDAT;拉高电平

MOVR4,#5

NOP

CLRDAT;高电平持续2us后拉低

WIR12:DJNZR4,WIR12;等待10微秒

MOVDAT,C;发送1位

MOVR4,#23

WIR13:DJNZR4,WIR13;保证写时间大于60us

SETBDAT

RET

2.3温度传感器读时序

DS18B20只有在检测到主设备启动读时序后才向主设备传输数据。所以一般在主设备发送了读数据命令后,必须马上产生读时序,以便DS18B20能够传输数据。所有的读时序都至少需要60μS,且在两次独立的读时序之间至少需要1μS的恢复时间。每个读时序都由主设备发起,先使数据线为高电平,然后拉低数据线至少1μS,再释放数据线。在主设备发出读时序之后,DS18B20开始在数据线上发送数据0或1。若其发送1,则保持数据线为高电平。若发送0,则DS18B20拉低数据线,在该时序结束后释放数据线。DS18B20发出的数据在起始时序之后15μS内保证可靠有效。因而主设备在读时序期间必须释放数据线,并且要在时序开始后的15μS之内读取数据线状态。写时序如图4所示。



图4数字温度传感器读时序

读一位程序如下所示:

RE11:SETBDAT;使数据线为高电平

NOP

NOP

CLRDAT;高电平持续2us后拉低数据线

MOVR4,#4

NOP;持续低电平2us

SETBDAT;释放数据线

RE12:DJNZR4,RE12;等待8us

MOVC,DAT;读入一位

MOVR5,#28

RE13:DJNZR5,RE13;保证一个读周期持续60us

SETBDAT;使数据线为高电平

RET

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top