关键词: MSP430 , 温度传感器 , 温度告警
MSP430微控制器的诸多系列中都有内嵌的温度传感器。本文提出了一种基于这个传感器的温度报警系统的方案。然后分析了产生虚警和漏警的原因,并提出了减小这两种概率的办法,最后给出了以MSP430F449为例的C语言程序。
1. 系统的总体方案
MSP430微控制器MCU(Micro ControllerUnit)是TI公司推出的一款具有丰富片上外围的强大功能的超低功耗16位混合信号处理器。其中包括一系列的器件,可以应用在不同的场合。MSP430与MCS-51的一个显著不同就是它在片内集成了模数转换(ADC)模块,使得A/D转换得以容易的实现。其中在MSP430的13x、14x、43x、44x系列器件中,都有内嵌的温度传感器。它的输出送入ADC12模块的通道10,然后对其进行A/D转换,进而可以测量芯片内的温度。在本告警系统中就是采用这个温度传感器的输出来实现温度的实时告警。
图1 基于MSP430F449内嵌温度传感器的温度告警系统原理图 本系统的基本方案是这样的:ADC12模块的通道10对芯片的温度进行测量,当测量温度高于或者低于预设告警值时,便通过I/O端口的输出来驱动LED,显示告警状态。芯片在整个过程中处于低功耗模式。本系统的原理比较简单,图1给出其简单的原理图。
2. 温度传感器的测温原理和过程
MSP430内嵌的温度传感器实际上就是一个输出电压随环境温度而变化的温度二极管,表1是它的一些基本电气特性。按照TI公司提供的资料,这个温度二极管输出的电压和对应的温度近似成简单的线性关系。所测温度可由的公式(1)求出:
| (1) | 其中,T:测量到温度,单位℃;
VST :ADC模块的通道10测量到的电压,单位mV;
V0℃ :0℃时传感器的输出的电压,单位mV;
TC SENSOR :传感器的传感电压,即输出电压随温度的变化情况,单位mV/℃。数值上等于温度每升高1℃,增加的输出电压。
对于12位的ADC模块,VST可以通过下面的A/D转换公式求得:
| (2) | 其中,ADC12CH10:通道10所测得的温度传感器的12位A/D值;
VR+:正参考电压,可以取内部参考VREF+ 、AVcc或者外部参考VeREF+ ,单位mV;
VR-:负参考电压,单位mV。通常取VR-=AVss,在这种情况下,求VST的公式进一步简化为:
| (3) | 由(1)式和(3)式可见,把A/D转换所得的结果VST经过简单转换就可得到对应的温度。
表1:MSP430微控制器温度传感器电气特性表
参数 | 测试条件 | 最小值 | 典型值 | 最大值 | 单位 | V0℃ | Vcc= 2.2V/3V | 986 - 5% | 986 | 986 + 5% | mV | TCSENSOR | Vcc= 2.2V/3V,TA=0℃ | 3.55 -3% | 3.55 | 3.55 +3% | mV/℃ | tSENSOR | Vcc= 2.2V/3V | 30 |
|
| μs | 3. 测量误差及其减小办法
很容易发现这个温度传感器具有较大的测量误差,实验也证明了这一点。这将导致较大的虚警概率或漏警概率。因此要想实用它,必须要进行误差校正,以减小这两个概率。产生误差的原因主要有以下几个方面:
0℃基准参考电压误差
由表1可见,V0℃的最大误差可达5%。所以由它导致的最大误差为:。这么大的误差,无疑会导致很大的虚警或者漏警概率,所以必须要对它进行校准。
用TRT 表示室温,VRT表示室温下温度传感器的输出电压,则由公式(1)可得:
| (4) | 由式(1)减式(4)可得:
| (5) | 因为MSP430是低功耗的,所以在开机的一段时间内,它的片内外温度可以认为是一样的。因此我们可以用温度计测量出开机时的室温TRT,将开机时测得的VST作为VRT,然后将VRT和TRT代入(5)式进行温度计算。这样就消除(至少是减小)了由V0℃不准确而导致的测量误差,从而减小了虚警和漏警概率。 |
|
|