1 降低功耗从MCU选型开始
一开始选型的时候就应该考虑选择低功耗的MCU,比如MSP430一类的为低功耗设计的CPU。强烈不建议使用51,一方面是因为51速度慢,很多运算用51都需要很高的主频而主频高了就意味着高的功耗;另外一方面是因为51的IO有上拉电阻。虽然当IO为高电平时上拉电阻不费电,但是下拉电流的时候却有不小的功耗产生。
2 选择器件用电电压
很明显降低器件的用电电压能够明显的降低器件的耗电。比如说ATmega8和ATmega88,虽然芯片大致内部结构一致但是后者可以工作在1.8V的超低电压下而前者就不行,综合考虑下当然还是选择后者。
3 尽量降低器件的工作频率
大家都知道CMOS电路的工作电流主要来自于开关转换时对后一级输入端的电容充放电,如果能够降低MCU的工作频率自然耗电也就下来了。要知道当AVR工作在32.768Hz时和工作在20Mhz时的工作电流差异可不是一般的小。
4 尽量使用中断让处理器进入深度睡眠
众所周知睡眠模式和掉电模式能够大大的降低MCU的工作电流,聪明的单片机设计师能够充分的利用MCU的中断功能让MCU周期性的工作和睡眠从而大大的降低MCU的工作电流。
5 尽量关闭MCU内部不用的资源
比如ATmega8内部的模拟比较器,默认是开着的,还有ATmega88内部的大多数资源都可以在不用的时候用软件关闭。这样可以大大的减少损耗。
6 尽量使用VMOS做为外部功率扩展器件
道理很简单VMOS驱动属于电压型器件驱动,几乎不产生功耗,要比普通的晶体管省电多了。而且由于VMOS的导通内阻低通常只有几十个毫欧,在小电流的时候器件自身发热也小,尤其是小电流是效率远比传统晶体管要高的多的多。这里还是建议使用高速VMOS,因为高速VMOS在开关速度相当高的PWM时效率会更高。
7 片外IC的电源最好都能由MCU的IO控制
比如说我们常用的24C02,由于它是掉电记忆的,所以我们完全可以在它不工作的时候关闭其电源,以节约电流。还有比如说我们常用的6116的SRAM我们完全可以用单片机来控制它的片选端口来控制它的工作与休眠从而节约电流。
8 改变占空比
通常我们驱动一些LED器件,完全可以通过PWM来控制从而省略限流电阻。要知道当器件选定后它的内阻也就已经确定,而当电源电压也确定的时候,就可以通过占空比来确定器件上的电压,从而节约了限流电阻同时也就节约了限流电阻上面的功耗。如果用户使用的是电池,我们完全还可以不定期的对电池电压进行检测然后改变占空比,从而恒定负载上面的电压,达到电源的最大利用率。