摘 要:介绍TMP03和TMP04型数字温度传感器在远程测温电路中的应用,重点阐述它们与单片机和 数字信号处理器的接口电路及程序设计。
关键词:数字温度传感器 远程测温 接口电路 程序设计
1远程测温电路
远程测量温度时,传输线上存在着较高的共模电压,须用光耦合器(以下简称光耦)对输出端进 行隔离。三种光耦隔离电路分别如图1(a)、(b)、(c)所示。
(a)图为普通光耦隔离电路。TMP03能够承受5 mA以下的灌电流,可直接与光耦中LED发光二极管的阴极连通。此时上拉电阻 R1还起到限流作用,防止LED过流损坏。取 R1=620欧姆,当DOUT端呈低电平时,灌电流小于1 mA,LED上的正向压降仅为1 V左右。需要注意的是,光耦合器的开启和关闭时间必须完全相同,否则会导致被传输的数据 发生错误。某些达林顿型光耦合器(例如4N32)的开启时间远大于关闭时间,不能在此使用。
(b)图中增加了1只2N2907型PNP管,目的是给LED提供较大的工作电流。
(c)图中采用施密特整形输出的光耦合器,能降低传输噪声。
进行远程测温时,TMP03/04远优于模拟输出式温度传感器。这是因为它输出的是数字信号,比模 拟信号的抗干扰能力强。远程传输信号时不得影响t 1/t2的比率,必要时还可加1片ADM485型RS-485 差分线驱动器,电路如 图 2 所示。该电路能准确传输1200 m远的温度信号。ADM485中的发射器和接收器所造成的滞后时间误差仅为5 ns,不会影响t1、t2 值。在RS-485总线上可以接32片ADM485。
TMP04与80C51单片机的接口电路如 图 3 所示。该接口电路非常简单,在温度传感器与单片机之间 仅需单线连接,TMP04的输出数据可直接加到80C51的P1.0口。若按传统的串行通信输入协议,至 少需要3条线(数据线、时钟线和片选信号线),甚至更多。这是因为TMP03/04的输出数据仅代表 t1与t2的比率,这与通常讲的二进制数据完全不同。
80C51内部有2个16位计数器,并且是由2个专用寄存器分别控制的。TMOD寄存器亦称定时器 模式寄存器,专门控制定时器0和定时器1的工作模式,决定哪个定时器工作。TCON寄存器则用来 控制定时器0和定时器1的计数起止时间。这样很容易分别测出 t1、t2。80C51采用12 MHz晶振频率时,经内部12分频器后获得1 MHz的计数频率,计数周期为1us。
接口电路的程序清单如下:
TMP04与8051的接口测试
使用定时器0和1来测量占空比
这个程序分三步
① 清除定时寄存器,然后等待P1.0输入脚上出现0-1的跳变(此引脚与TMP04的输出相连) ② 一旦P1.0变为高,定时器0开始启动。然后程序开始循环检测P1.0 ③ 一旦P1.0变为低,定时器0停止,同时定时器1启动。程序又再次循环检测P1.0,直到P1.0变低,定时器1停止, 从而TMP04的t1和t2 的数值就会存储在特殊功能寄存器8AH到8DH(TL0到TH1)中
主控程序
$MOD51 $TITLE(TMP04 Interface, Using T0 and T1) $PAGEWIDTH(80) $DEBUG $OBJECT; 变量声明
PORT1 DATA 90H ; 端口1 TCON DATA 88H ; 定时器控制 TMOD DATA89H ; 定时器模式 TH0 DATA 8CH ; 定时器0高字节 TH1 DATA 8DH ; 定时器1高字节 TL0 DATA 8AH ; 定时器0低字节 TL1 DATA 8BH ; 定时器1低字节 ORG 100H ; 任意的起始地址 READ_TMP04: MOV A,#00 ; 先清除寄存器 MOV TH0,A MOV TH1,A MOV TL0,A ; MOV TL1,A ; WAIT_LO: JB PORT1.0,WAIT_LO ; 等待TMP04输出变高 MOV A,#11H ; 准备好启动定时器0 MOV TMOD,A WAIT_HI: JNB PORT1.0,WAIT_HI ; 等待输出变高
; 在TMP04输出变高期间定时器0运行
SETB TCON.4 WAITTIMER0: JB PORT1.0,WAITTIMER0 CLR TCON.4;
;在TMP04输出变低期间定时器1运行
SETB TCON.6 ; 启动定时器1 WAITTIMER1: JNB PORT1.0,WAITTIMER1 CLR TCON.6 ; 停止定时器1 MOV A,#0H ; 准备停止定时器 MOV TMOD,A RET END
上述程序用来监视TMP04的输出,并且开启或关闭相应的计数器来测量 t1与t2的比率。当TMP04 输出为高电平(对应于t1)时,由定时器0进行记 录;当输出呈低电平(对应于t2)时,由定时器1 记录。记录结果存储在特殊功能寄存器SFR的08AH~08DH单元中。
在调用读TMP04的程序时,计数寄存器就被清零。程序首先将计数器置成16位模式,然后等待 TMP04输出为高电平。当P1.0口输入高电平时,定时器0开始工作,程序用来监视输入口计数器进行 累加计数。一旦TMP04输出为低电平,定时器0就停止计数,而定时器1开始计数,直到TMP04的输 出又变成高电平为止。执行完上述子程序之后,定时器0中的 t1值和定时器1中的t2 值,分别存入各自的专用寄存器中。最后由软件计算出被测温度to由于80C51与TMP04属于异步操作,因此从TMP04的输出电平发生跳变、到定时器开始工作之间,必 须加上延迟时间。这个延迟时间从0us开始,到识别转换指令为止。控制80C51跳转到某位置的指 令,需要24个时钟周期,即24/12 MHz=2uso在+25°C时,由2us延迟时间所造成的测温误差约为±0.15 °C,一般可忽略不计。
3 TMP04与数字信号处理器ADSP-2101的接口电路
数字信号处理器(DSP)属于CMOS超大规模集成电路(VLSI),其集成度可达2000万个元件/片, 运算速度高达2亿次/s,电源电压为1.5~5 V。TMP04很容易和ADSP-2100系列DSP芯片相匹配,典型电路如 图 4 所示。TMP04的D OUT端接ADSP-2101的输入端FI。ADSP-2101内部只有1个计数器,但其运 行速度极快,采用了分时计数的办法完全可代替80C51中2个计数器的功能。ADSP-2101完成1个指 令仅需1个时钟周期,相比之下80C51需要12个时钟周期。因此,采用相同的时钟频率时,ADSP-2101 可获得更精确的结果。
ADSP-2101中的定时器可视为一个可编程减法计数器。使用软件编程时,计数频率按照时钟的预 分频系数进行分频。将(N-1)存入预分频系数寄存器中,则晶振频率将被 N分频。例如,将4存入寄存器时,就对10 MHz晶振频率进行5分频,得到2 MHz的计数频率。在程序开始时,首先设定寄存器的初始值为0FFFH。ADSP-2101开始监视FI端 的输入电平,直到出现一个下降沿时启动计数器。当TMP04输出变高时,计数器停止计数,计数值也 从0FFFH减到实际值,并存储下来。然后计数器又重新置数,再次做减计数,直到TMP04输出为低。 这样就先后测出了t2、t1值。
TMP03/04用来监视电子设备中高速uP、DSP芯片的温度时,将TMP03/04装在下边并尽量贴近 uP或DSP芯片,即可测出芯片的表面温度。对于TO-92封装的TMP03/04,直接固定在印制版(PCB) 上,就能检测流过印制板的空气温度。
参考文献 1 美国AD公司产品资料,2000 2 沙占友,等. 新编实用数字化测量技术. 北京:国防工业出版社,1998 3 沙占友. 由DS1820组成的单线数字温度计原理与应用. 电测与仪表,1999(2)
|