无线温度传感器的设计.docx
《无线温度传感器的设计.docx》由会员分享,可在线阅读,更多相关《无线温度传感器的设计.docx(40页珍藏版)》请在冰豆网上搜索。
无线温度传感器的设计
无线温度传感器的设计
摘要:
随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,一种数字式温度计以数字温度传感器作感温元件,它以单总线的连接方式,使电路大大的简化;传统的温度检测大多以热敏电阻为传感器,这类传感器可靠性差,测量温度准确率低且电路复杂。
因此,本温度计摆脱了传统的温度测量方法,利用单片机对传感器进行控制。
这样易于智能化控制。
无线温度测量与有线温度测量相比具有可靠性高安装容易可以重复使用和系统维护方便等优点
关键词:
单片机温度传感器无线通信
引言
温度监测是目前成熟的技术,工业中广泛应用的温度监测系统大多数还是采用有线方式传输信号的,然而对于工作环境恶劣、供电布线复杂且今后维护困难的场合,有线方式则带有相当的局限性。
采用无线方式传输数据,可以有效避免这些问题。
由于采集端靠近被测对象,布线和维护困难,因此在系统设计上要解决供电和信号传输有效性的问题。
布线上的局限使得采集端只能采用电池供电模式,而在线监测又需要24小时不间断工作,因此采集端的功耗必须非常低,在器件的选择上必须满足低电压支持和低功耗要求。
工业现场环境复杂,干扰大,则必须对原始信号进行编码和译码,以保证信!
基于单片机AT89C51、数字温度传感器DS18B20、无线收发芯片nRF403的数字化无线温度传感器,测温范围-55℃~+125℃,分辨率为0.0625℃,工作频率2400~2524MHz,接收灵敏度-90dBm,最大发射功率0dBm,电池供电。
1.1系统结构图如下:
图1系统结构图
第一章温度采集
1.2温度传感器概述
1.1.1温度传感器的分类
根据温度传感器的使用方式,通常分为接触法与非接触法两类。
(A)接触法
由热平衡原理可知,两个物体接触后,经过足够长的时间达到热平衡,则它们的温度必然相等。
如果其中之一为温度计,就可以用它对另一个物体实现温度测量,这种测温方式称为接触法。
其特点是,温度计要与被测物体有良好的热接触,使两者达到热平衡。
因此,测温准确度较高。
用接触
法测温时,感温元件要与被测物体接触,往往要破坏被测物体的热平衡状态,并受被测介质的腐蚀作用。
因此,对感温元件的结构、性能要求苛刻。
(B)非接触法
利用物体的热辐射能随温度变化的原理测定物体温度。
这种测温方式称为非接触法。
它的特点是:
不与被测物体接触,也不改变被测物体的温度分布,热惯性小。
从原理上看,用这种方法测温无上限。
通常用来测定1000℃以上的移动、旋转或反应迅速的高温物体的温度或表面温度。
与压力一样,温度也是过程控制中最重要的测量变量之一。
例如在冷却回路中,温度监测不仅用来确保产品质量,还用来保证系统安全。
过程工业往往利用热能进行控制,所以,根据应用需要选择理想的温度传感器,可实现既定测量目的并确保最佳测量效果。
当然,对过程工艺的熟悉和预见可能出现的不确定扰动也是很重要的。
冷、热是如何定义的?
我们可以通过身体的感知器官感觉并分辨温度差。
然而,我们往往只能定义物体是冷是热,却不能将这种感觉量化。
温度的涵义到底是什么呢?
温度,即表示某物质每个粒子的平均动能。
要通过这种能量来量化温度首先要定义温标,需要确定与某种材料温度相关的某个定点。
最常见的定点是绝对零度即0K,以及水三相点(固态、液态、气态并存的点)273.16K。
定点值的确定使绘制温度的直线图成为可能。
其它定点值离上述点很远,例如氖的三相点是24.5561K,银的凝固点是1234.93K。
这些定点值在《国际温标(1990年版)》 (ITS-90) 中确定。
1.1.2测量温度的方法
测量温度的方法有多种,从简单的二极管到高精度的热噪声温度计。
温度计可以分为两类:
第一类温度计和第二类温度计。
第一类为不需要用其他温度测量设备做预先校准的温度计。
他们都是通过测量物理量,计算物理量和温度间的关系来确定温度的。
例如气体温度计、热噪声温度计和应用测量黑体辐射的温度测量设备。
这些温度传感器常常用于专门的实验室,使用起来相当复杂并且往往价格昂贵。
第二类温度计则需要校准。
工业上主要使用的是第二类温度计。
特别是热电阻或热电偶温度传感器使用最为广泛。
当安装温度传感器时,需要了解一些简单的基础原理:
温度传感器主要测量的是它自身的温度。
所以传感器必须尽可能靠近测量物安装并尽可能地避免环境影响,因为测量地点的干扰可能会使温度测量结果出现一些偏差。
环境温度和介质温度较大的差异也可能会导致错误的测量值。
如果传感器安装在保护套管中,也就意味着它远离了真实的测量点,温度传感器灵敏度会降低,测量值可能与真实值出现背离。
1.1.3测量温度的主要原理
基于精确性和易于进一步处理测量信号的要求,下列测量原理十分适用于工业环境温度监测
1.1.3.1热电阻温度计
导体的电阻值随温度变化而改变,通过测量其阻值推算出被测物体的温度,利用此原理构成的传感器就是电阻温度传感器,这种传感器主要用于-200—500℃温度范围内的温度测量。
纯金属是热电阻的主要制造材料,热电阻的材料应具有以下特性:
①电阻温度系数要大而且稳定,电阻值与温度之间应具有良好的线性关系。
②电阻率高,热容量小,反应速度快。
③材料的复现性和工艺性好,价格低。
④在测温范围内化学物理特性稳定。
目前,在工业中应用最广的铂和铜,并已制作成标准测温热电阻。
1.1.3.2铂电阻
铂电阻与温度之间的关系接近于线性,在0~630.74℃范围内可用下式表示Rt=R0(1+At+Bt2)(2-1)在-190~0℃范围内为Rt=R0(1+At+Bt2十Ct3)(2-2)式中,RO、Rt为温度0°及t°时铂电阻的电阻值,t为任意温度,A、B、C为温度系数,由实验确定,A=3.9684×10-3/℃,B=-5.847×10-7/℃2,C=-4.22×10-l2/℃3。
由式(2-1)和式(2-2)看出,当R0值不同时,在同样温度下,其Rt值也不同。
1.1.3.3铜电阻
在测温精度要求不高,且测温范围比较小的情况下,可采用铜电阻做成热电阻材料代替铂电阻。
在-50~150℃的温度范围内,铜电阻与温度成线性关系,其电阻与温度关系的表达式为Rt=R0(1+At)(2-3)式中,A=4.25×10-3~4.28×10-3℃为铜电阻的温度系数。
1.1.3.4热电偶温度计
当有两种不同的导体和半导体A和B组成一个回路,其两端相互连接时,只要两结点处的温度不同,一端温度为T,称为工作端或热端,另一端温度为TO,称为自由端(也称参考端)或冷端,则回路中就有电流产生,如图2-1(a)所示,即回路中存在的电动势称为热电动势。
这种由于温度不同而产生电动势的现象称为塞贝克效应。
与塞贝克有关的效应有两个:
其一,当有电流流过两个不同导体的连接处时,此处便吸收或放出热量(取决于电流的方向),称为珀尔帖效应;其二,当有电流流过存在温度梯度的导体时,导体吸收或放出热量(取决于电流相对于温度梯度的方向),称为汤姆逊效应。
两种不同导体或半导体的组合称为热电偶。
热电偶的热电势EAB(T,T0)是由接触电势和温差电势合成的。
接触电势是指两种不同的导体或半导体在接触处产生的电势,此电势与两种导体或半导体的性质及在接触点的温度有关。
温差电势是指同一导体或半导体在温度不同的两端产生的电势,此电势只与导体或半导体的性质和两端的温度有关,而与导体的长度、截面大小、沿其长度方向的温度分布无关。
无论接触电势或温差电势都是由于集中于接触处端点的电子数不同而产生的电势,热电偶测量的热电势是二者的合成。
当回路断开时,在断开处a,b之间便有一电动势差△V,其极性和大小与回路中的热电势一致,如图2-1(b)所示。
并规定在冷端,当电流由A流向B时,称A为正极,B为负极。
实验表明,当△V很小时,△V与△T成正比关系。
定义△V对△T的微分热电势为热电势率,又称塞贝克系数。
塞贝克系数的符号和大小取决于组成热电偶的两种导体的热电特性和结点的温度差。
1.1.4线制
两线制在热电阻感温元件的两端各连一根导线的引线形式为两线制。
这种两线制热电阻配线简单,安装费用低,但要带进引线电阻的附加误差。
因此,不适用于A级。
并且在使用时引线及导线都不宜过长。
采用两线制的测温电桥如下图所示,a)接线示意图,b)为等效原理图。
从图中可以看出热电阻两引线电阻Rw一起构成电桥测量臂,这样当引线电阻随沿线环境温度改变引起的阻值变化量2△Rw和热电阻随被测温度变化的增量值△Rt一起成为有效信号转换成测量信号电压,从而影响温度测量精度。
两线制热电阻测量电桥
a)示意图b)等效原理图
3线制可以消除引线电阻的影响,测量精度高于2线制。
作为过程检测元件,其应用最广。
4线制不仅可以消除引线电阻的影响,而且在连接导线阻值相同时,还可以消除该电阻的影响。
高精度测量应采用4线制。
自身发热影响为了能够测量热电阻传感器的输出信号,一定有电流通过传感器。
这个测量电流消耗能量并产生热量,使温度升高。
大多数情况下,制造商提供一个1mA的测量电流,这样传感器不会产生额外的热量,可提供一个最真实的测量值。
1.2温度检测单元
TC77是MICROCHIP公司生产的一款13位串行接口输出的集成数字温度传感器,其温度数据由热传感单元转换得来。
TC77内部含有一个13位ADC,温度分辨率为0.0625℃/LSB。
在正常工作条件下,静态电流为250μA(典型值)。
其他设备与TC77的通信由SPI串行总线或Microwire兼容接口实现,该总线可用于连接多个TC77,实现多区域温度监控,配置寄存器CONFIG中的SHDN位激活低功耗关断模式,此时电流消耗仅为0.1μA(典型值)。
TC77具有体积小巧、低装配成本和易于操作的特点,是系统热管理的理想选择。
图1所示为TC77的内部结构原理图。
TC77由CMOS结型温度传感器、带符号位的13位∑-△A/D转换器、温度寄存器、配置寄存器、制造商ID寄存器及三线制串行接口等部分组成。
其引脚定义如下:
SI/O:
串行数据引脚
SCK:
串行时钟
Vss:
地
CE:
片选端(低电平有效)
VDD:
电源电压(6.0V)
1.2.1TC77的工作原理
数字温度传感器TC77从固态(PN结)传感器获得温度并将其转换成数字数据。
再将转换后的温度数字数据存储在其内部寄存器中,并能在任何时候通过SPI串行总线接口或Microwire兼容接口读取。
TC77有两种工作模式,即连续温度转换模式和关断模式。
连续温度转换模式用于温度的连续测量和转换,关断模式用于降低电源电流的功耗敏感型应用。
1.2.2TC77的上电与复位
上电或电压复位时,TC77即处于连续温度转换模式,上电或电压复位时的第一次有效温度转换会持续大约300ms,在第一次温度转换结束后,温度寄存器的第2位被置为逻辑“1”,而在第一次温度转换期间,温度寄存器的第2位是被置为逻辑“0”的,因此,可以通过监测温度寄存器第2位的状态判断第一次温度转换是否结束。
1.2.3TC77的低功耗关断模式
在得到TC77允许后,主机可将其置为低功耗关断模式,此时,A/D转换器被中止,温度数据寄存器被冻结,但SPI串行总线端口仍然正常运行。
通过设置配置寄存器CONFIG中的SHDN位,可将TC77置于低功耗关断模式:
即设置SHDN=0时为正常模式;SHDN=1时为低功耗关断模式。
1.2.4TC77的温度数据格式
TC77采用13位二进制补码表示温度,表1所列是TC77的温度、二进制码补码及十六进制码之间的关系。
表中最低有效位(LSB)为0.0625℃,最后两个LSB位(即位1和位0)为三态,表中为“1”。
在上电或电压复位事件后发生第一次温度转换结束时,位2被置为逻辑“1”。
1.2.5TC77的串行总线
TC77的串行总线包括片选信号线CE、串行时钟信号线SCK及串行数据信号线SI/O,遵循SPI或Mi-crowire接口标准协议。
在有多个TC77连接到串行时钟和串行数据信号线时,CE用于选择其中的某一个TC77器件,CS为逻辑“0”时,用于写入器件或从器件中读出数据的同步;CS为逻辑“1”时,SCK被禁止。
CS的下降沿启动器件间的相互通信,CS的上升沿则停止器件间的相互通信。
图2是对温度寄存器进行读操作的时序。
图3是TC77的多字节通信操作时序,包括对温度寄存器的读操作和对配置寄存器的写操作。
第一组的16个SCK脉冲用于将TC77的温度数据传送到微处理器,第二组的16个SCK脉冲用于接收微处理器的指令,以便使TC77进入关断模式或连续转换模式。
写入TC77配置寄存器的数据应为全0或全1,分别与连续转换模式或关断模式相对应,当配置寄存器的C0~C7全为1时为关断模式,当C0~C7中有一个0被写入时即变为连续转换模式。
1.2.6.TC77与AVR单片机的硬件接口
图4是TC77与AVR单片机的接口硬件连接原理图。
图中使用的是同步串行三线SPI接口,可以方便地连接采用SPI通信协议的外设或另一片AVR单片机,实现短距离的高速同步通信。
ATMEGA128的SPI采用硬件方式实现面向字节的全双工3线同步通信,支持主机、从机和两种不同极性的SPI时序。
ATMEGA128单片机内部的SPI接口也可用于程序存储器和数据E2PROM的编程下载和上传。
但需要特别注意的是,此时SPI的MOSI和MISO接口不再对应PB2和PB3引脚,而是转换到PE0和PE1引脚(PDI、PDO)。
1.2.6.1TC77与AVR单片机的软件接口
TC77与AVR单片机的接口软件包括主程序和中断服务程序。
在主程序中首先要对ATMEGA128的硬件SPI进行初始化。
在初始化时,应将PORTB的MOSI、SCLK和SS引脚作为输出,同时将MISO引脚作为输入,并开启上拉电阻。
接着对SPI的寄存器进行初始化设置,并空读一次SPSR(SPXStatusReg-ister,SPI状态寄存器)、SPDR(SPIDataRegisterSPI,数据寄存器),使ISP空闲等待发送数据。
AVR的SPI由一个16位的循环移位寄存器构成,当数据从主机方移出时,从机的数据同时也被移入,因此SPI的发送和接收可在同一中断服务程序中完成。
在SPI中断服务程序中,先从SPDR中读一个接收的字节存人接收数据缓冲器中,再从发送数据缓冲器取出一个字节写入SPDR中,由ISP发送到从机。
数据一旦写入SPDR,ISP硬件开始发送数据。
下一次ISP中断时表示发送完成,并同时收到一个数据。
程序中putSPIchar()和getSPIchar()为应用程序的底层接口函数,同时也使用了两个数据缓冲器,
分别构成循环队列。
下面这段代码是通过SPI主机方式连续批量输出、输人数据的接口程序:
晶振:
12M
TEMPER_LEQU36H
TEMPER_HEQU35H
TEMPER_NUMEQU60H
FLAG1BIT00H
DQBITP3.3
AAAMOVSP,#70H
LCALLGET_TEMPER
LCALLTEMPER_COV
LJMPAAA
NOP
;------------------读出转换后的温度值
GET_TEMPER
SETBDQ;定时入口
BCDLCALLINIT_TC77
JBFLAG1,S22
LJMPBCD;若TC77不存在则返回
S22LCALLDELAY1
MOVA,#0CCH;跳过ROM匹配------0CC
LCALLWRITETC77
MOVA,#44H;发出温度转换命令
LCALLWRITE_TC77
NOP
LCALLDELAY
LCALLDELAY
CBALCALLINIT_TC77
JBFLAG1,ABC
LJMPCBA
ABCLCALLDELAY1
MOVA,#0CCH;跳过ROM匹配
LCALLWRITE_TC77
MOVA,#0BEH;发出读温度命令
LCALLWRITE_TC77
LCALLREAD_TC77;READ_TC77
RET
;------------------读TC77的程序,从TC77中读出一个字节的数据
READ_TC77
MOVR2,#8
RE1
CLRC
SETBDQ
NOP
NOP
CLRDQ
NOP
NOP
NOP
SETBDQ
MOVR3,#7
DJNZR3,$
MOVC,DQ
MOVR3,#23
DJNZR3,$
RRCA
DJNZR2,RE1
RET
;-------------------写TC77的程序
WRITE_TC77
MOVR2,#8
CLRC
WR1
CLRDQ
MOVR3,#6
DJNZR3,$
RRCA
MOVDQ,C
MOVR3,#23
DJNZR3,$
SETBDQ
NOP
DJNZR2,WR1
SETBDQ
RET
;-------------------读TC77的程序,从TC77中读出两个字节的温度数据
READ_TC77
MOVR4,#2;将温度高位和低位从TC77中读出
MOVR1,#36H;低位存入36H(TEMPER_L),高位存入35H(TEMPER_H)
RE00
MOVR2,#8
RE01
CLRC
SETBDQ
NOP
NOP
CLRDQ
NOP
NOP
NOP
SETBDQ
MOVR3,#7
DJNZR3,$
MOVC,DQ
MOVR3,#23
DJNZR3,$
RRCA
DJNZR2,RE01
MOV@R1,A
DECR1
DJNZR4,RE00
RET
;-------------------将从TC77中读出的温度数据进行转换
TEMPER_COV
MOVA,#0F0H
ANLA,TEMPER_L;舍去温度低位中小数点后的四位温度数值
SWAPA
MOVTEMPER_NUM,A
MOVA,TEMPER_L
JNBACC.3,TEMPER_COV1;四舍五入去温度值
INCTEMPER_NUM
TEMPER_COV1
MOVA,TEMPER_H
ANLA,#07H
SWAPA
ORLA,TEMPER_NUM
MOVTEMPER_NUM,A;保存变换后的温度数据
LCALLBIN_BCD
RET
;-------------------将16进制的温度数据转换成压缩BCD码
BIN_BCD
MOVDPTR,#TEMP_TAB
MOVA,TEMPER_NUM
MOVCA,@A+DPTR
MOVTEMPER_NUM,A
RET
TEMP_TAB
DB00H,01H,02H,03H,04H,05H,06H,07H
DB08H,09H,10H,11H,12H,13H,14H,15H
DB16H,17H,18H,19H,20H,21H,22H,23H
DB24H,25H,26H,27H,28H,29H,30H,31H
DB32H,33H,34H,35H,36H,37H,38H,39H
DB40H,41H,42H,43H,44H,45H,46H,47H
DB48H,49H,50H,51H,52H,53H,54H,55H
DB56H,57H,58H,59H,60H,61H,62H,63H
DB64H,65H,66H,67H,68H,69H,70H,71H
DB72H,73H,74H,75H,76H,77H,78H,79H
DB80H,81H,82H,83H,84H,85H,86H,87H
DB88H,89H,90H,91H,92H,93H,94H,95H
DB96H,97H,98H,99H
;------------------TC77初始化程序
INIT_TC77
SETBDQ
NOP
CLRDQ
MOVR0,#80H
TSR1
DJNZR0,TSR1;延时
SETBDQ
MOVR0,#25H;96US-25H
TSR2
DJNZR0,TSR2
JNBDQ,TSR3
LJMPTSR4;延时
TSR3
SETBFLAG1;置标志位,表示TC77存在
LJMPTSR5
TSR4
CLRFLAG1;清标志位,表示TC77不存在
LJMPTSR7
TSR5
MOVR0,#06BH;200US
TSR6
DJNZR0,TSR6;延时
TSR7
SETBDQ
RET
;------------------重新写TC77暂存存储器设定值
RE_CONFIG
JBFLAG1,RE_CONFIG1;若TC77存在,转RE_CONFIG1
RET
RE_CONFIG1
MOVA,#0CCH;发SKIPROM命令
LCALLWRITE_TC77
MOVA,#4EH;发写暂存存储器命令
LCALLWRITE_TC77
MOVA,#00H;TH(报警上限)中写入00H
LCALLWRITE_TC77
MOVA,#00H;TL(报警下限)中写入00H
LCALLWRITE_TC77
MOVA,#7FH;选择12位温度分辨率
LCALLWRITE_TC77
RET
;------------------延时子程序
DELAYMOVR7,#00H
MINDJNZR7,YS500
RET
YS500LCALLYS500US
LJMPMIN
YS500USMOVR6,#00H
DJNZR6,$
RET
DELAY1MOVR7,#20H
DJNZR7,$
RET
1.3系统软件算法分析
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。
1.3.1主程序
主程序的主要功能是负责温度的实时显示、读出并处理TC77的测量的当前温度值,温度测量每1s进行一次。
这样可以在一秒之内测量一次被测温度,其程序流程见图1所示。
图1
1.3.2读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进温度数据的改写。
其程序流程图如图2示
图2
1.3.3温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
1.3.4计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图3所示。
图3图4
1.3.5显示数据刷新子程序
显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。
程序流程图如图4。
第二章信息处理
本设计采用AT89C51单片机做为信息处理单元其主要内容如下:
2.1AT89C51单片机简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshPr