提高便携嵌入式系统的电池寿命
发布时间:2006-10-14 7:51:55   收集提供:gaoqian
  如今,越来越多的电子设备实现了便携化,并相应的采用电池供电。电池也在不断变小,变轻,人们期望便携式电子系统的设计者们利用这一点,不断提高系统的性能,增加其功能。有鉴于此,本文将对多种低功耗设计技术进行一个简要评述。

电池技术及寿命

  影响一个电池寿命的因素有多种,其中最重要的一种是电池的自放电速率,其定义是在满足电路最小Vdd要求和带特定负载条件下的“安培·小时”数。

  某些类型的电池,如锂电池,有比较平坦的放电曲线,其输出电压在使用了容量的90%时只下降10%。然而,常用的AAA到D型的碱性电池在用完约90%的总容量时,电压要下降40%(从1.50 V 到 0.9V)。

  Energizer AA 锂电池的典型自放电曲线,从中可以看出,温度对自放电有很大影响。因此在确定总的电池额定容量时,应该根据所预计的高温状态工作小时数对其进行修正。

  由于使用温度、最小Vdd电压、工作电流和负载循环对电池技术提出了不同要求,在试图提高电池寿命时,查阅电池厂商的数据表就非常重要。

● * 一般持续最长时间2秒;

● **在 21oC 贮藏条件下;

● 要获得关于电池技术的更多信息,请参阅 www.energizer.com

平均电流消耗

  电流消耗的估计是便携式系统设计的第一步。大多数用电池供电的系统都具备休眠模式,休眠时电流消耗减至mA级或更低。若系统集成有实时(real-time)时钟,其在系统休眠时也会消耗电流。平均消耗电流按如下公式计算:

  电流 =工作时间百分比×工作电流消耗 + 休眠时间百分比 ×休眠电流消耗 + 时钟电流消耗

  因此如果一个轮胎压力传感器休眠时间为1分钟,消耗电流0.1 mA,而敏感和发送压力信息所花时间为100ms,消耗电流100mA,则总电流消耗应为:

(0.1/60) × 0.01 + (59.9/60) ×0.0000001 = 16.76 mA.

  在这个例子中,工作状态时的发射所需电流是主导因素,因此减小工作时间而增加休眠时间或减小工作电流将大大改变总的功耗。

MCU的节电功能

  现代的低功耗CMOS微控制器,具备多项降耗功能,这些功能有助于改善系统总的电池寿命,如PIC16F877 8-bit(PIC系列是Microchip Technology Inc.的产品 )闪存微控制器。

休眠和待机模式

  当系统无需执行指令时可以进入休眠模式。此时外部振荡器连同程序寄存器的敏感放大器一起关闭。处理器的RAM保持状态不变。按键、总线传输、实时时钟、边沿触发中断或看门狗电路都能用来唤醒系统,由于处理器的状态得以保持,系统将继续运行。

  振荡器的类型与系统脱离休眠模式时的唤醒时间有很大关系。成本较低(精度也较差)的RC振荡器起振迅速,消除了命令执行的延迟。高频晶体振荡器需要数百ms的时间,使用低频手表晶体时则要数百ms。这一延迟,尽管在某些应用中是可以接受的,却会给许多其他应用带来麻烦。要注意的是,振荡器在起振阶段要消耗大量的能量。在某些应用中,这一过程消耗的电流要高于MCU运行时消耗的。

  待机模式则是在关闭MCU核心运行的同时,依旧让外振荡器和外设工作。这种模式还可以快速唤醒,因为振荡器一直在运行。然而由于振荡器电流通常占到总工作电流消耗的20~40%,这种模式节约的功耗有限。

看门狗定时器

  如果设计需要具备休眠模式,但要定期启动,一个低功耗的、基于RC振荡器的内置监视定时器将是一个不错的选择。低功耗MCU,如PIC16F87X 系列,提供了由一个内置低功耗RC振荡器驱动的内部看门狗定时器,其唤醒间隔从18ms~3s,可通过编程控制。如果要求更长的唤醒间隔,只需再采用一个增量计数器。通过它来设定更长的时间间隔计数,如果时间间隔还未结束,就让系统保持休眠:

sleep_count = 0; //重置休眠计数器

While(sleep_count++ < 20)

Sleep();

// 从该点开始继续-执行指令

实时时钟振荡器

  某些应用要求掌握日期和年份信息,或者其他精确的时间标记。由于系统振荡器在休眠时关闭,需要用另一个低频振荡器维持时间基准。PIC16F877的TMR1和TMR3外设提供了一个单独的基于32768 Hz 手表晶振的低功耗振荡定时器。处理器由定时器的溢出唤醒,从而能精确地按时间工作。这一定时器可提供30ms到16s的定时。在进入休眠模式时只消耗1_25mA的电流。

唤醒技术

  既然大多数低功耗应用会利用休眠技术,大部分微控制器提供了多种不同的唤醒方法。典型的边沿触发中断、从通信、有效定时器溢出、看门狗和I/O引脚变化都能用于唤醒微控制器。

晶体振荡器的选择性、RC和晶体

振荡器的比较

  由于电容开关损耗是现代CMOS微控制器功耗的主要来源,电流消耗直接与工作频率和电压成正比。如果应用无需快速执行指令,选用低频晶振或RC振荡器均可。一般为了减小功耗和电磁干扰,最好选用频率最低的振荡器。

  不过,晶振在从休眠唤醒过程中还有一段长短不一的等待期。在等待晶振的频率稳定过程中,微控制器在没有完成任何操作的情况下也会消耗其相当一部分有效功率。因此若工作频率足够低而要求定期唤醒的话,则休眠模式未必有利。

  RC 振荡器可以瞬时起振并消除了唤醒等待期,故能大大降低功耗。RC振荡器的不利之处在于无法达到晶体或陶瓷谐振器的精度。一些厂商可以将内置的RC振荡器校准到1_10%的精度,以便提高这些低成本振荡器的可用性。使用低频率的“实时时钟振荡器”时还可以利用振荡器提供的时标对器件工作频率进行校准。

指令计数 = 0; // 每秒将(指令数/While循环增量时间)置零

While (TMR1H_MSb); // 等待,直到TMR1 MSB为高

While (!TMR1H_MSb); // 等待,直到TMR1 MSB 为低, Low->High

While (TMR1H_MSb)

指令计数++;

  在本例中,TMR1是一个16位的定时器,与一个32768Hz晶振相连。由于没有预定标器,最高位 TMR1H_MSb 将每秒改变状态。首先,在等到该位从低变到高时,指令计数在该位保持高的状态下增加。1秒后,该位切换为低,指令计数将工作频率/#指令循环置零以结束While/imcrement 循环。

由于电流 I = C( dV/dT ),电容性开关电流消耗与电源电压成正比,功耗等于V×I,因此如果电源电压减少一半(5V-2.5V),电流消耗就减小约一半,功耗减小为1/4,因此较低的电压可以大大减小系统的总功耗。

外设的功耗管理

  振荡器的选择已经完成且工作频率、电压和休眠模式已经优化之后,就应该考虑对内部的外设功耗进行管理。很多嵌入式微控制器集成了A/D转换器,降耗重置,电压比较器和基准源。这些模块在启用时均消耗电流,故一旦不使用,就应将其关闭。在采用休眠模式时这一点很重要,既然 处理器已经休眠,就没有必要让无用的模块消耗电流。

  某些微控制器,如PIC16F877,可以吸纳和输出高达25mA的电流。这样就可以直接将其尚未使用的I/O引脚与LCD显示器、运算放大器、D/A和A/D转换器的Vdd端相连,进行功耗管理。如果要求更大的电源电流,可以将同一端口的多根I/O引脚捆绑在一起。如果要求使用电压调节器,务必选用低静态电流器件,如TC54,这样,在微控制器进入休眠模式时,可以维持很低的电流消耗。

  切勿将不用的I/O引脚浮置。应该让所有未使用的引脚定义为数字信号输出状态或将不用的输入端之接地。浮置的数字输入端会不时的发生莫名其妙的振荡,消耗数百mA的电流。

结语

 当代微控制器具备优异的低功耗性能,这要感谢先进的低功耗CMOS工艺技术。使用电源开关的时代已经为采用休眠模式和基于固件的自动关机时代所取代。集成的实时时钟已经使得嵌入式应用能给各种事件打上时间标记,从而定期启动并维持一个实时时钟。随着功耗的不断降低,电池将变得更小,工作时间会更长。■ (民)


摘自《电子产品世界》
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50