1远程测温电路
远程测量温度时,传输线上存在着较高的共模电压,须用光耦合器(以下简称光耦)对输出端进 行隔离。三种光耦隔离电路分别如图1(a)、(b)、(c)所示。
图1 三种光耦隔离电路
(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。
图2 加外部缓冲器的远程测温电路
2 TMP03/04与80C51单片机的接口电路
TMP03/04配上单片机后,很容易用微机中的计数器分别测得 t1、t2,再用软件计算出温度值。因 为TMP03/04是用时间比率(t1/t 2)来计量温度的,所以并不要求微机的计数频率十分精确,但计数频 率应足够高。
TMP04与80C51单片机的接口电路如 图 3 所示。该接口电路非常简单,在温度传感器与单片机之间 仅需单线连接,TMP04的输出数据可直接加到80C51的P1.0口。若按传统的串行通信输入协议,至 少需要3条线(数据线、时钟线和片选信号线),甚至更多。这是因为TMP03/04的输出数据仅代表 t1与t2的比率,这与通常讲的二进制数据完全不同。
图3 TMP04与80C51单片机的接口电路
80C51内部有2个16位计数器,并且是由2个专用寄存器分别控制的。TMOD寄存器亦称定时器 模式寄存器,专门控制定时器0和定时器1的工作模式,决定哪个定时器工作。TCON寄存器则用来 控制定时器0和定时器1的计数起止时间。这样很容易分别测出 t1、t2。80C51采用12 MHz晶振频率时,经内部12分频器后获得1 MHz的计数频率,计数周期为1μs。
接口电路的程序清单如下:
; 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 值,分别存入各自的专用寄存器中。最后由软件计算出被测温度 t。由于80C51与TMP04属于异步操作,因此从TMP04的输出电平发生跳变、到定时器开始工作之间,必 须加上延迟时间。这个延迟时间从0μs开始,到识别转换指令为止。控制80C51跳转到某位置的指 令,需要24个时钟周期,即24/12 MHz=2μs。在+25 ℃时,由2μs延迟时间所造成的测温误差约为±0.15 ℃,一般可忽略不计。
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 可获得更精确的结果。
图4 TMP04与数字信号处理器ADSP-2101的接口电路
ADSP-2101中的定时器可视为一个可编程减法计数器。使用软件编程时,计数频率按照时钟的预 分频系数进行分频。将(N-1)存入预分频系数寄存器中,则晶振频率将被 N分频。例如,将4存入寄存器时,就对10 MHz晶振频率进行5分频,得到2 MHz的计数频率。在程序开始时,首先设定寄存器的初始值为0FFFH。ADSP-2101开始监视FI端 的输入电平,直到出现一个下降沿时启动计数器。当TMP04输出变高时,计数器停止计数,计数值也 从0FFFH减到实际值,并存储下来。然后计数器又重新置数,再次做减计数,直到TMP04输出为低。 这样就先后测出了t2、t 1值。
TMP03/04用来监视电子设备中高速μP、DSP芯片的温度时,将TMP03/04装在下边并尽量贴近 μP或DSP芯片,即可测出芯片的表面温度。对于TO-92封装的TMP03/04,直接固定在印制版(PCB) 上,就能检测流过印制板的空气温度。