1、基于 MSP430内嵌温度传感器的温度告警系统 A Temperature Alarm System Based on the Embedded Thermal Sensor of MSP430 解放军理工大学通信工程学院 赵陆文 屈德新摘 要 MSP430微控制器的诸多系列中都有内嵌的温度传感器。本文提出了一种基于这个传感器的温度报警系统的方案。然后分析了产生虚警和漏警的原因,并提出了减小这两种概率的办法,最后给出了以MSP430F449为例的 C语言程序。 关键词:MSP430;温度传感器;告警 Abstract:There is an embedded thermal sensor in
2、 MSP430 MCU. This paper puts forward a scheme about a temperature alarm system based on this sensor. Then, it analyses the reasons to result false alarm and leak alarm. And presents some methods to reduce this two kinds of probability. At last, it takes MSP430F449 as an example to list the C languag
3、e procedure. Key Words:MSP430; Thermal Sensor; Alarm 1. 系统的总体方案 MSP430微控制器 MCU(Micro Controller Unit)是 TI公司推出的一款具有丰富片上外围的强大功能的超低功耗 16位混合信号处理器。其中包括一系列的器件,可以应用在不同的场合。MSP430 与 MCS-51的一个显著不同就是它在片内集成了模数转换(ADC)模块,使得 A/D转换得以容易的实现。其中在 MSP430的 13x、14x、43x、44x 系列器件中,都有内嵌的温度传感器。它的输出送入 ADC12模块的通道 10,然后对其进行 A/D转
4、换,进而可以测量芯片内的温度。在本告警系统中就是采用这个温度传感器的输出来实现温度的实时告警。 图 1 基于 MSP430F449内嵌温度传感器的温度告警系统原理图本系统的基本方案是这样的:ADC12 模块的通道 10对芯片的温度进行测量,当测量温度高于或者低于预设告警值时,便通过 I/O端口的输出来驱动 LED,显示告警状态。芯片在整个过程中处于低功耗模式。本系统的原理比较简单,图 1给出其简单的原理图。 2. 温度传感器的测温原理和过程 MSP430内嵌的温度传感器实际上就是一个输出电压随环境温度而变化的温度二极管,表 1是它的一些基本电气特性。按照 TI公司提供的资料,这个温度二极管输出
5、的电压和对应的温度近似成简单的线性关系。所测温度可由的公式(1)求出: (1)其中,T:测量到温度,单位; VST :ADC 模块的通道 10测量到的电压,单位 mV; V0 :0时传感器的输出的电压,单位 mV; TC SENSOR :传感器的传感电压,即输出电压随温度的变化情况,单位 mV/。数值上等于温度每升高 1,增加的输出电压。 对于 12位的 ADC模块,VST 可以通过下面的 A/D转换公式求得: (2)其中,ADC12 CH10:通道 10所测得的温度传感器的 12位 A/D值; VR :正参考电压,可以取内部参考 VREF+ 、AVcc 或者外部参考 VeREF+ ,单位 m
6、V; VR :负参考电压,单位 mV。通常取 VRAVss,在这种情况下,求 VST的公式进一步简化为: (3)由(1)式和(3)式可见,把 A/D转换所得的结果 VST经过简单转换就可得到对应的温度。 表 1:MSP430 微控制器温度传感器电气特性表 参数 测试条件 最小值 典型值 最大值 单位V0 Vcc= 2.2V/3V 986 - 5% 986 986 + 5% mVTCSENSOR Vcc= 2.2V/3V,TA=0 3.55 -3% 3.55 3.55 +3% mV/tSENSOR Vcc= 2.2V/3V 30 s3. 测量误差及其减小办法 很容易发现这个温度传感器具有较大的测
7、量误差,实验也证明了这一点。这将导致较大的虚警概率或漏警概率。因此要想实用它,必须要进行误差校正,以减小这两个概率。产生误差的原因主要有以下几个方面:0基准参考电压误差 由表 1可见,V 0 的最大误差可达 5。所以由它导致的最大误差为: 。这么大的误差,无疑会导致很大的虚警或者漏警概率,所以必须要对它进行校准。 用 TRT 表示室温,V RT表示室温下温度传感器的输出电压,则由公式(1)可得: (4)由式(1)减式(4)可得: (5)因为 MSP430是低功耗的,所以在开机的一段时间内,它的片内外温度可以认为是一样的。因此我们可以用温度计测量出开机时的室温 TRT,将开机时测得的 VST作为
8、 VRT,然后将 VRT和 TRT代入(5)式进行温度计算。这样就消除(至少是减小)了由 V0 不准确而导致的测量误差,从而减小了虚警和漏警概率。 传感电压误差 对于工业级标准,工作温度范围为:-20 +85。而对于一个实际的系统,绝大多数时间工作在 0 +50之间。因此,用 做基准参考会导致较大的积累误差。从表 1可以看出,由传感电压引入的最大误差约为 。如果待测温度为 50,用 0作参考,则最大误差为: ;而用室温(假定 TRT = 25)作参考,则误差为: ,比用 0作参考时减小了一半。因此采用室温作为温度参考,是减小积累误差的一个较好的方案。不过由传感电压引入的误差相对于 来说还是比较
9、小的。 A/D转换引入的误差 由芯片资料可见,对于 12位 A/D,因漏电流引入的误差 1LSB,这个误差可以忽略不记。但是由于布线技术和电源和地线等的不良而导致的电源线、地线上的纹波和噪声脉冲对转换结果的影响却不能不考虑。如图 1所示,如果数字地 DVss和模拟地 AVss是分开供电的,则可以在这两点之间接入反相并接的二极管对,以消除 700mV的电压差。另外如果参考电压(V R+ - VR-)较小,那么纹波的影响会变得更明显,从而影响转换精度。因此,电源的清洁无噪声对 A/D转换的精度有很大的影响。当然在可能的情况下还是要尽量采用较大的(V R+ - VR- )。还有就是尽量不要采用内部参
10、考,内部参考不太稳定,会影响转换的精度。仔细安排各自接地点的旁路电容对于减小噪声的影响也是很有用的。图 1给出了一种典型的退耦电容配置方式,在芯片的电源以及外接参考电压(图中没有画出)的引脚上并接一个 10uF的钽电容和一个 0.1uF的瓷片电容能够较好的起到抑制噪声的作用。 采用内嵌温度传感器测量温度,要受到很多方面的影响。除了上面讨论的方法,还有减小误差的一般方法,比如多次测量取平均等。所以要综合考虑各方面的因素,才能取得满意的效果。 4. 软件描述 MSP430另一个突出优点就是用 C语言编写程序简捷而且编译效率很高。下面就以 MSP430F449为例来简要描述这个系统的软件实现。图 3
11、为程序流程。 #include “msp430x44x.h“ / 包含头文件 #include /包含数学运算头文件 #define Trt 25 /预先测量到的室温 #define Th 50 /高温告警温度 #define Tl 0 /低温告警温度 int i=0, k=0,Vrt; /定义全局变量 int ADC_Result16; float T; /测量到的温度 void init(void); /初始化函数 void ADC12(void); /A/D转换函数 void Alarm(float t); /告警处理函数 void init(void) TACTL=TASSEL1+TA
12、CLR+MC_1; /定时器初始化,工作在“up“模式 CCTL0|=CCIE; /使能 CCR0中断 CCR0=0x0FF; /设定定时值 _EINT(); /打开中断 P2DIR|=BIT0+BIT1; /P2.0和 P2.1为告警输出; void ADC12(void) ADC12CTL0 /在进行设置时首先复位 ADC的转换使能 ADC12CTL0 = ADC12ON+REF2_5V+SHT0_8; /采用内部 2.5V参考,打开通道 10REFON自动打开 ADC12CTL1 = SHP+ADC12SSEL_2; /上升沿采样,主时钟,MEM0 ADC12MCTL0 = EOS +
13、INCH_10+SREF_1; /选择通道 10,Vref+为参考电压,进行温度测量 ADC12CTL0 |= ENC; ADC12CTL0 |= ADC12SC; / 开始转换 if (ADC12IFG void Alarm(float t) if(t=Th) P2OUT|=BIT1; /高温告警 else if(t=4; /将 ADC_Sum右移 4位,相当于除以 16.得到平均的结果; Vst=( ADC_Sum /4095.0)*2500; /完成转换,得到电压值 k+; #ifndef Trt T=(Vst-986)/3.35; /测出用 0度作基准的温度 #else if (k=1
14、) Vrt=Vst; /如果定义 Trt,则将第一次的转换结果作为室温下的 Vrt T=(Vst-Vrt)/3.35+Trt; /测出用室温作基准时的温度 #endif Alarm(T); /告警处理 void main (void) init(); /初始化 LPM1; /进入低功耗模式 1; 5. 结束语 本文只是对告警部分进行了描述,若是再加上液晶就可以实时显示温度,加上键盘就可以对室温、告警温度进行预设,再对上述程序进行一些改进就是一个实用的系统了。因这两部分相对比较简单和成熟,文中没有进行进一步讨论。 参考文献 1 MSP430x4xx Family Users Guide (SLAU056B). 2 MSP430x44x datasheets (SLAS344). 2002. 1. 3 魏小龙. MSP430 系列单片机接口及系统设计实例. 北京航空航天大学出版社, 2002. 11. 4 谭浩强. C 程序设计(第二版).清华大学出版社,1999,12. 作者简介: 赵陆文(1977),男,解放军理工大学通信工程学院 2000级硕士研究生,主要研究方向为微波通信; 通信地址: 南京通信工程学院研 1队. 邮编: 210007 电话: 025-3384611-48804 电子邮件: 屈德新 男 解放军理工大学通信工程学院微波教研室副教授。