在线情况
楼主
  • 头像
  • 级别
  • 门派
  • 职务总版主
  • 声望+9
  • 财富5
  • 积分3065
  • 经验390701
  • 文章6744
  • 注册2006-03-07
基于MSP430内嵌温度传感器温度告警系统
作者:赵陆文 屈德新
      摘    要: MSP430微控制器的诸多系列中都有内嵌的温度传感器。本文提出了一种基于该传感器的温度报警系统方案。分析了产生虚警和漏警的原因,并提出了减小这两种概率的办法,最后给出了以MSP430F449为例的C语言程序。
关键词: MSP430;温度传感器;告警
总体方案
MSP430微控制器是TI公司推出的一款功能强大的超低功耗16位混合信号处理器。其中可以应用在不同的场合。MSP430与MCS-51的一个显著不同就是它在片内集成了模数转换(ADC)模块,使得A/D转换得以容易的实现。其中在MSP430的13x、14x、43x、44x系列器件中,都有内嵌的温度传感器。它的输出送入ADC12模块的通道10,然后对其进行A/D转换,进而可以测量芯片内的温度。在本告警系统中就是采用这个温度传感器的输出来实现温度的实时告警。

本系统的基本方案是这样的:ADC12模块的通道10对芯片的温度进行测量,当测量温度高于或者低于预设告警值时,便通过I/O端口的输出来驱动LED,显示告警状态。芯片在整个过程中处于低功耗模式。图1给出了原理图。
图1 基于MSP430F449内嵌温度传感器的温度告警系统原理图
               [imga]../../upload/2006/07/17/190951.jpg[/imga]
温度传感器的测温原理和过程

MSP430内嵌的温度传感器实际上就是一个输出电压随环境温度而变化的温度二极管,表1是它的一些基本电气特性。按照TI公司提供的资料,这个温度二极管输出的电压和对应的温度近似成简单的线性关系。所测温度可由公式(1)求出:

T=(VST-V0℃)/TCSENSOR                                            (1)

其中,T:测量温度,单位℃;

VST :ADC模块的通道10测量到的电压,单位mV;

V0℃:0℃时传感器的输出的电压,单位mV;

TCSENSOR:传感器的传感电压,即输出电压随温度的变化情况,单位mV/℃。数值上等于温度每升高1℃,增加的输出电压。

对于12位的ADC模块,VST可以通过下面的A/D转换公式求得:

VST=ADC12CH10/(212-1)×(VR+-VR-)+VR-                (2)

其中,ADC12CH10:通道10所测得的温度传感器的12位A/D值;

VR+:正参考电压,可以取内部参考VREF+ 、AVcc或者外部参考VeREF+,单位mV;

VR-:负参考电压,单位mV。通常取VR-=AVss,在这种情况下,求VST的公式进一步简化为:

VST=ADC12CH10/(212-1)×VR+                             (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


误差及减小办法

很容易发现这个温度传感器具有较大的测量误差,实验也证明了这一点。这将导致较大的虚警概率或漏警概率。因此要想实用它,必须要进行误差校正,以减小这两个概率。产生误差的原因主要有以下几个方面:

●  0℃基准参考电压误差

由表1可见,V0℃的最大误差可达5%。所以由它导致的最大误差为:(986×5%)÷3.55≈14℃。会导致很大的虚警或者漏警概率,所以必须要对它进行校准。

用TRT表示室温,VRT表示室温下温度传感器的输出电压,则由公式(1)可得:

TRT=(VRT-V0℃)/TCSENSOR                               (4)

由式(1)减式(4)可得:

T=(VST-VRT)/TCSENSOR+TRT       (5)

因为MSP430是低功耗的,所以在开机的一段时间内,它的片内外温度可以认为是一样的。因此我们可以用温度计测量出开机时的室温TRT,将开机时测得的VST作为VRT,然后将VRT和TRT代入(5)式进行温度计算。这样就消除(至少是减小)了由V0℃不准确而导致的测量误差,从而减小了虚警和漏警概率。

●  传感电压误差

对于工业级标准,工作温度范围为:-20℃ ~ +85℃。而对于一个实际的系统,绝大多数时间工作在0℃~+50℃之间。因此,用V0℃做基准参考会导致较大的积累误差。从表1可以看出,由传感电压引入的最大误差约为3%。如果待测温度为50℃,用0℃作参考,则最大误差为:(50-0)×3%=1.5℃;而用室温(假定TRT = 25℃)作参考,则误差为:(50-25)×3%=0.75℃,比用0℃作参考时减小了一半。因此采用室温作为温度参考,是减小积累误差的一个较好的方案。不过由传感电压引入的误差相对于来说还是比较小的。

●  A/D转换引入的误差

由芯片资料可见,对于12位A/D,因漏电流引入的误差1LSB,这个误差可以忽略不计。但是由于布线技术、电源和地线等的不良而导致的电源线、地线上的纹波和噪声脉冲对转换结果的影响却不能不考虑。如图1所示,如果数字地DVss和模拟地AVss是分开供电的,则可以在这两点之间接入反相并接的二极管对,以消除700mV的电压差。另外如果参考电压(VR+ - VR-)较小,那么纹波的影响会变得更明显,从而影响转换精度。因此,电源的清洁无噪声对A/D转换精度有很大的影响。当然在可能的情况下还是要尽量采用较大的(VR+-VR-)。还有就是尽量不要采用内部参考,内部参考不太稳定,会影响转换的精度。仔细安排各自接地点的旁路电容对于减小噪声的影响也是很有用的。图1给出了一种典型的退耦电容配置方式,在芯片的电源以及外接参考电压(图中没有画出)的引脚上并接一个10mF的钽电容和一个0.1mF的瓷片电容能够较好的起到抑制噪声的作用。

采用内嵌温度传感器测量温度,要受到很多方面的影响。除了上面讨论的方法,还有减小误差的一般方法,比如多次测量取平均等。所以要综合考虑各方面的因素,才能取得满意的效果。

软件描述
MSP430另一个突出优点就是用C语言编写程序简捷而且编译效率很高。软件描述以MSP430F449为例。因篇幅所限,感兴趣的读者可联系zhaoluwen@163.com索取。

结语
本文只是对告警部分进行了描述,若是再加上液晶就可以实时显示温度,加上键盘就可以对室温、告警温度进行预设,再对上述程序进行一些改进就是一个实用的系统了。因这两部分相对比较简单和成熟,文中没有进行进一步讨论。

■ 解放军理工大学通信工程学院

参考文献:
1. MSP430x4xx Family User's Guide (SLAU056B).
2. MSP430x44x datasheets (SLAS344). 2002. 1.
3. 魏小龙,MSP430系列单片机接口及系统设计实例,北京航空航天大学出版社,2002. 11.
4. 谭浩强,C程序设计(第二版),清华大学出版社,1999,12.  
[COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
在线情况
2
  • 头像
  • 级别
    • 积分2
    • 经验458
    • 文章15
    • 注册2006-10-18
    "最后给出了以MSP430F449为例的C语言程序。 "
    在哪啊???????????????????
    快乐生存
    在线情况
    3
    • 头像
    • 级别
      • 积分5
      • 经验547
      • 文章17
      • 注册2007-03-26
      有没有源程序呀....
      here i am
      在线情况
      4
      • 头像
      • 级别
        • 积分1
        • 经验13
        • 文章1
        • 注册2007-05-14
        能不能用msp430自带的温度传感器测量环境温度???????
        微控网感谢您的参与
        在线情况
        5
        • 头像
        • 级别
          • 积分5
          • 经验529
          • 文章7
          • 注册2007-04-30
          可以阿,不过它自带的温度传感器测出来得好像不准,要修正的。
          微控网感谢您的参与
          在线情况
          6
          • 头像
          • 级别
            • 积分1
            • 经验6
            • 文章1
            • 注册2007-06-22
            我感觉测温电路中加一个3723,然后结合看门狗也能实现。可以尝试一下
            微控网感谢您的参与
            Powered by LeadBBS 9.2 .
            Page created in 0.1719 seconds with 6 queries.