首页 | 期刊简介 | 编辑部 | 广告部 | 发行部 | 在线投稿 | 联系我们 | 产品信息索取
2024年10月17日星期四
2011年第01期
 
2010年第12期
 
2010年第11期
2010年第11期
 
2010年第10期
2010年第10期
 
2010年第09期
2010年第09期
 
2010年第09期
2010年第08期
 
2010年第07期
2010年第07期
 
2010年第06期
2010年第06期
 
2010年第05期
2010年第05期
 
2010年第04期
2010年第04期
 
2010年第03期
2010年第03期
 
2010年第02期
2010年第02期
 
2010年第01期
2010年第01期
 
2009年第12期
2009年第12期
 
2009年第11期
2009年第11期
 
2009年第10期
2009年第10期
 
2009年第9期
2009年第9期
 
2009年第8期
2009年第8期
 
2009年第7期
2009年第7期
 
2009年第6期
2009年第6期
 
2009年第5期
2009年第5期
 
2009年第4期
2009年第4期
 
2009年第3期
2009年第3期
 
2009年第2期
2009年第2期
 
2009年第1期
2009年第1期
 
2008年第12期
2008年第12期
 
2008年第11期
2008年第11期
 
2008年第10期
2008年第10期
 
2008年第9期
2008年第9期
 
2008年第8期
2008年第8期
 
2008年第7期
2008年第7期
 
2008年第6期
2008年第6期
 
2008年第5期
2008年第5期
 
2008年第4期
2008年第4期
 
2008年第3期
2008年第3期
 
2008年第2期
2008年第2期
 
2008年第1期
2008年第1期
用MSP430设计极低功耗数字温度计
Ultra-Low Power Digital Thermometer Never Needs Battery Replacement
■德州仪器公司 Zack Albus

概述

很多地方都需要测量温度。在设计温度遥测系统时,通常需要采用电池供电的极低功耗模块。传统的测温手段比较多,但不论是采用分立晶体管、热敏电阻,或者是热电偶,功耗都降不下来。本文介绍了一种满足低功耗要求的可行方案(如图1所示),该方案使用一枚极低功耗的、带Flash存储器的MCU,以及数字温度传感器、液晶模块(LCD)和一个32kHz的钟表用振荡器。该方案的突出特点是节能耐用,仅需一枚纽扣电池,就可以连续工作10年以上。

工作原理

图1所示MCU扩展系统的电源是一枚CR-2032型纽扣式锂电池,这种电池的容量为220mAh。要让系统达到连续工作10年(87600小时)的要求,允许的最大负载电流可以用以下方法计算出来:
220mAh / 87,600小时 = 2.51 A
这个测温系统不但要测量温度,还要连续显示测量结果。当系统处于单步模式时,TMP100温度传感器每完成一次测量,就会自动进入关断模式,此时的典型功耗为0.1 A;系统处于节能低功率模式(LPM3)时,晶振、LCD驱动器和16位定时器继续工作,此时MSP430的典型功耗为0.9 A;3位半LCD的典型功耗为1 A。
系统每个工作周期的耗电情况如图2所示,温度传感器、MCU和LCD的总功耗平均值为2.45 A。为了尽可能延长电池的使用寿命,在工作周期内的绝大多数时间,系统都处于等待模式。

硬件设计说明

电池加上一只0.1 F的去耦电容,构成了这个系统的电源。MCU的复位端连接一只68k的上拉电阻,时钟脉冲(ACLK)取自32.768KHz的钟表用晶体。在I2C总线的SCL(时钟)和SDA(数据)上,分别连接一只10K的上拉电阻。
系统采用一个三位半LCD来指示温度。MCU内置LCD驱动模块,最多可以显示4个24段图形,最大可控制段数为96。图示系统中采用了Varitonix公司生产的LCD模块,1个公共端,总的显示段数为24。

工作原理

MCU同温度传感器之间通过I2C总线连接。I2C总线占用2条MCU输入输出口线,二者之间的通信完全依靠软件完成。温度传感器的地址可以通过2根地址引脚设定,这使得一根I2C总线上可以同时连接8个这样的传感器。本方案中,传感器的7位地址已经设定为1001000。MCU需要访问传感器时,先要发出一个8位的寄存器指针,然后再发出传感器的地址(7位地址,低位是WR信号)。传感器中有3个寄存器可供MCU使用,8位寄存器指针就是用来确定MCU究竟要使用哪个寄存器的。本方案中,主程序会不断更新传感器的配置寄存器,这会使传感器工作于单步模式,每更新一次就会测量一次温度。
要读取传感器测量值寄存器的内容,MCU必须首先发送传感器地址和寄存器指针。MCU发出一个启动信号,接着发出传感器地址,然后将RD/WR管脚设为高电平,就可以读取测量值寄存器。
为了读出传感器测量值寄存器中的16位数据,MCU必须与传感器进行两次8位数据通信。当传感器上电工作时,默认的测量精度为9位,分辨力为0.5 C/LSB(量程为-128.5 C至128.5 C)。本方案采用默认测量精度,根据需要,可以重新设置传感器,将测量精度提高到12位。如果只要求作一般的温度指示,比如自动调温器,那么分辨力达到1 C就可以满足要求了。这种情况下,传感器的低8位数据可以忽略,只用高8位数据就可以达到分辨力1 C的设计要求。由于读取寄存器时是按先高8位后低8位的顺序,所以低8位数据既可以读,也可以不读。只读取高8位数据的好处有二,第一是可以缩短MCU和传感器的工作时间,降低功耗;第二是不影响分辨力指标。
MCU读取传感器的测量值后,接下来就要进行换算并将结果显示在LCD上。整个处理过程包括:判断显示结果的正负号,进行二进制码到BCD码的转换,将数据传到LCD的相关寄存器中。
数据处理完毕并显示结果之后,MCU会向传感器发出一个单步指令。单步指令会让传感器启动一次温度测试,然后自动进入等待模式,直到模数转换完毕。MCU发出单步指令后,就进入LPM3模式,这时MCU系统时钟继续工作,产生定时中断唤醒CPU。定时的长短可以通过编程调整,以便适应具体应用的需要。

功能扩充

实现上文所述方案的程序代码只有400字节左右,而MCU的Flash程序存储器有8k之多。此外,虽然MCU有256字节的RAM,但是本程序一个字节都不必用。这256字节的RAM以及那些未用的在系统可编程(ISP)Flash存储器可以用来记录历史数据。另外,MCU还剩余22根输入输出口线、一个双端电压比较器和一个完整的三通道16位定时器Timer A,这些空闲的资源可以用来实现其他一些常用的功能,例如键盘、合成铃声、模数转换、电池电量检测以及串行通信功能。由于系统时钟使用的是32kHz的钟表晶体,所以可以利用定时器中断实现时钟功能(RTC)。
由于温度传感器和MCU之间采用了I2C总线,所以,可以依靠分配不同的地址连接更多的传感器。以3位地址的TMP100传感器为例,总线上最多可以同时连接8枚传感器。

小结

本文介绍了一种极低功耗测温装置的软硬件设计方案,方案采用了MCU、传感器和LCD显示屏,具有功能完善、节能耐用、结构简单、外形小巧、价格低廉等优点。按照该方案制作的测温装置不但可以达到测量要求,而且可以在使用一枚3V电池供电的情况下,连续工作10年以上而不必更换电池。

 
         
版权所有《世界电子元器件》杂志社
地址:北京市海淀区上地东路35号颐泉汇 邮编:100085
电话:010-62985649
E-mail:dongmei@eccn.com