历史上的今天
返回首页

历史上的今天

今天是:2025年08月13日(星期三)

正在发生

2020年08月13日 | 基于MSP430内嵌温度传感器的温度告警系统

2020-08-13 来源:elecfans

1. 系统的总体方案

    MSP430微控制器MCU(Micro Controller Unit)是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/3V986 - 5%986986 + 5%mV
TCSENSORVcc= 2.2V/3V,TA=0℃3.55 -3%3.553.55 +3%mV/℃
tSENSORVcc= 2.2V/3V30

μs


3. 测量误差及其减小办法

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


0℃基准参考电压误差

由表1可见,V0℃的最大误差可达5%。所以由它导致的最大误差为:。这么大的误差,无疑会导致很大的虚警或者漏警概率,所以必须要对它进行校准。


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


(4)


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


(5)


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


传感电压误差

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


A/D转换引入的误差

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


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


4. 软件描述

MSP430另一个突出优点就是用C语言编写程序简捷而且编译效率很高。下面就以MSP430F449为例来简要描述这个系统的软件实现。图3为程序流程。

#include "msp430x44x.h" // 包含头文件 
#include //包含数学运算头文件 
#define Trt 25 //预先测量到的室温 
#define Th 50 //高温告警温度 
#define Tl 0 //低温告警温度

int i=0, k=0,Vrt; //定义全局变量

int ADC_Result[16];

float T; //测量到的温度

void init(void); //初始化函数

void ADC12(void); //A/D转换函数

void Alarm(float t); //告警处理函数

void init(void) 

    TACTL=TASSEL1+TACLR+MC_1; //定时器初始化,工作在"up"模式 
    CCTL0|=CCIE; //使能CCR0中断 
    CCR0=0x0FF; //设定定时值 
    _EINT(); //打开中断 
    P2DIR|=BIT0+BIT1; //P2.0和P2.1为告警输出; 
}

void ADC12(void) 

    ADC12CTL0 &=~ ENC; //在进行设置时首先复位ADC的转换使能 
    ADC12CTL0 = ADC12ON+REF2_5V+SHT0_8; //采用内部2.5V参考,打开通道10REFON自动打开 
    ADC12CTL1 = SHP+ADC12SSEL_2; //上升沿采样,主时钟,MEM0 
    ADC12MCTL0 = EOS + INCH_10+SREF_1; //选择通道10,Vref+为参考电压,进行温度测量 
    ADC12CTL0 |= ENC; 
    ADC12CTL0 |= ADC12SC; // 开始转换 
    if ((ADC12IFG & BIT0)==1) //如果转换完毕,读走数据 
        ADC_Result[i]=ADC12MEM0; 
}

void Alarm(float t) 

    if(t>=Th) 
      P2OUT|=BIT1; //高温告警 
    else if(t<=Tl) 
      P2OUT|=BIT0; //低温告警 
    else 
      P2OUT&=~(BIT0+BIT1); //无告警 
}

interrupt[TIMERA0_VECTOR] void TImer_A (void) //中断处理子程序// 

    int ADC_Sum=0; 
    float Vst; 
    for (i=0;i++;i<16) //连续进行16次转换,提高精度 
    { 
      ADC12(); 
      ADC_Sum +=ADC_Result[i]; //求和 
      i++; 
    } 
    ADC_Sum>>=4; //将ADC_Sum右移4位,相当于除以16.得到平均的结果; 
    Vst=( ADC_Sum /4095.0)*2500; //完成转换,得到电压值 
    k++; 
    #ifndef Trt 
      T=(Vst-986)/3.35; //测出用0度作基准的温度 
    #else 
      if (k==1) Vrt=Vst; //如果定义Trt,则将第一次的转换结果作为室温下的Vrt 
      T=(Vst-Vrt)/3.35+Trt; //测出用室温作基准时的温度 
    #endif 
    Alarm(T); //告警处理 
}

void main (void) 

    init(); //初始化 
    LPM1; //进入低功耗模式1; 
}


5. 结束语

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

推荐阅读

史海拾趣

CEVA, Inc公司的发展小趣事

CEVA公司一直以来都是无线连接和智能传感技术的领先许可方。公司提供了包括数字信号处理器、人工智能处理器、无线平台以及一系列用于传感器融合、图像增强、计算机视觉、语音输入和人工智能的补充软件。这些技术和产品使得CEVA在多个终端市场,如移动、消费、汽车、机器人、工业和物联网等领域,都能够提供节能、智能和互联的设备解决方案。通过与全球半导体公司和原始设备制造商的紧密合作,CEVA成功地将这些技术应用于实际产品中,推动了相关市场的快速发展。

Custom Mmic Design Services Inc公司的发展小趣事

CMDS深知技术创新是企业持续发展的关键。因此,公司不断加大研发投入,积极引进优秀人才和先进技术设备。通过持续的研发投入和人才培养,CMDS不断推出具有创新性和竞争力的新产品和解决方案。这些新产品不仅满足了客户不断变化的需求,也推动了整个行业的发展和进步。

CYMBET公司的发展小趣事

随着全球环境问题的日益严重,环保和可持续发展已经成为电子行业的重要议题。CYMBET公司积极响应这一趋势,致力于环保和可持续发展。公司的EnerChip电池芯片采用环保材料制造,具有生物相容性,不会对环境造成污染。此外,CYMBET还积极探索绿色生产技术和资源循环利用方案,减少生产过程中的能源消耗和废弃物排放。这种对环保和可持续发展的重视不仅体现了CYMBET的社会责任感,也为公司的可持续发展奠定了坚实的基础。

GD Rectifiers Ltd公司的发展小趣事

为了进一步扩大市场份额,GD Rectifiers Ltd实施了积极的国际化战略。公司首先在欧洲市场设立了销售分支机构,凭借其优质的产品和服务迅速赢得了当地客户的认可。随后,公司又陆续在北美、亚洲等地区建立了分销网络,逐步构建起覆盖全球的营销体系。在国际化进程中,GD Rectifiers Ltd注重与当地企业的合作与交流,共同推动行业标准的制定和技术进步。通过不断的努力,公司成功地将品牌和产品推向了全球市场,实现了业务规模的快速增长。

DELTA公司的发展小趣事

随着人们生活水平的提高和环保意识的增强,Delta公司提出了“智能绿生活”战略,致力于为个人、家庭和企业带来更环保健康的生活型态。在这一战略指导下,Delta推出了一系列视讯显像系统、网络通信系统、LED照明、智能语音系统及云计算等产品。这些产品不仅具有高效、节能的特点,还为用户提供了更加便捷、智能的生活体验。

辰颐电子公司的发展小趣事

在辰颐电子公司的发展过程中,他们意识到单打独斗很难在市场中取得优势。因此,公司开始注重产业链的整合和协同发展。他们与上游供应商建立了紧密的合作关系,确保原材料的稳定供应和质量保证;与下游客户建立了长期的合作伙伴关系,提供定制化的解决方案和优质的服务。此外,公司还积极参与行业协会和组织的活动,加强与同行业企业的交流与合作,共同推动整个电子行业的发展。

问答坊 | AI 解惑

PLC与变频器的应用

针对桥式吊车改造系统的应用…

查看全部问答>

EEPROM

通用子程序…

查看全部问答>

AD 603相关资料

本帖最后由 paulhyde 于 2014-9-15 08:57 编辑 AD603比较麻烦,发几个资料  …

查看全部问答>

cadence又出16.01版本了

cadence又出16.01版本了 各位大虾可以看看 真快…

查看全部问答>

vxworks6。2的安装问题!在线等。。。。

各位大虾:         我在装vxworks6.2时,出现了要installation key或者install.txt文件,于是在也安装不下去了。在网上搜了很久但都没找到。不知道怎么办,希望各位帮帮忙!有没有办法解决!    &nbs ...…

查看全部问答>

关于kernelIOcontrol函数。

在阅读这个函数的帮助时,下面这两句,我翻译不了,谁帮忙看一下。 2.        If an IOCTL caller passes in otherwise correct parameters with a buffer that is too small (as determined by examining nOutSize), we will ...…

查看全部问答>

启动程序与引导程序有什么区别呀????

启动程序与引导程序有什么区别呀????…

查看全部问答>

请问如何截获系统中所有硬件的IRP包?

最近需要做一个驱动程序,将系统中的所有外接设备,如USB,串口,CDROM等的功能禁用掉,而且本身不允许被禁用或卸载。我想出一个简单的设计思路:做一个功能驱动程序,虚拟一个虚拟设备装载到系统上,该设备负责过滤所有的IRP请求,按自定义的规则 ...…

查看全部问答>

WinCE下进度条ProgressCtrl的奇怪问题??

如下的一段代码:         int iMin, iMax;         CProgressCtrl *p = (CProgressCtrl *)GetDlgItem(IDC_PROGRESS_TEST);         p->SetRange(1000, 5000);     &nbs ...…

查看全部问答>

小女子无以为报:急求WinCE下摄像头视频/图像采集的代码!^^︿^^

各位前辈,哥哥姐姐:     十万火急求教EVC代码!           老板要用摄像头在WinCE平台下实现视频或图像的采集、存储和传输,哪位高手可以帮我找到完整的代码吗?平台是PC上的WinCE模拟器而已,应该有 ...…

查看全部问答>