嵌入式系统——低功耗设计

2019-07-12 22:12发布

 

嵌入式系统中的低功耗设计   http://ee.ofweek.com/2011-02/ART-8300-2802-28438206.html

低功耗控制电路和程序思路设计总结 http://ee.ofweek.com/2011-03/ART-8300-2802-28461349_2.html

  一:首先了解芯片的内部功耗   开发一个手持设备,有一个设计重点问题是必须要重视和解决的。那就是在待机状态下如何做到最省电,即在待机状态下如何做到尽可能的低功耗,比如用芯唐科技的Cortex-M0内核的NUC100做手持电台的开发,那么   1、首先要了解的就是该芯片在深度休眠或睡眠模式下功耗是多少(即该模式下的工作电流时多大,注一般的芯片都是uA级别的)。   通过查看NUC100芯片资料(在每个芯片手册电气特性或DC电气特性一节会有说明)了解到该芯片的工作最大电流(即最大功耗)和深度休眠模式下的最低功耗 (最低功耗有Ipwd1,Ipwd2,Ipwd3,Ipwd4,表示NUC100内部的模块工作需要外部提供四个VDD接口,计算功耗时要把他们累加起来,这里给出了每个VDD接口的休眠模式下最低功耗值,当然如果芯片可以关闭某个模块的对应的VDD,那就可以降低更多不必要的功耗了)         2、首先要了解的就是该芯片在深度休眠或睡眠模式下功耗是多少(即该模式下的工作电流时多大,注一般的芯片都是uA级别的)。   通过查看NUC100芯片资料(在每个芯片手册电气特性或DC电气特性一节会有说明)了解到该芯片的工作最大电流(即最大功耗)和深度休眠模式下的最低功耗 (最低功耗有Ipwd1,Ipwd2,Ipwd3,Ipwd4,开始理解是:表示NUC100内部的模块工作需要外部提供四个VDD接口,计算功耗时要把他们累加起来,这里给出了每个VDD接口的休眠模式下最低功耗值,当然如果芯片可以关闭某个模块的对应的VDD,那就可以降低更多不必要的功耗了,其实不是这样的。后来发现Ipwd1,Ipwd2,Ipwd3,Ipwd4分别代表4种情况下测得的功耗电流,后来也芯片厂商客服也确认过,他们说NUC100在深度休眠的情况下可以做到25uA以下。) 二:电路供电系统的功耗分析   下图是7R手台控制电路(用2个端口做开关机判断处理,按键开关机时波形图(开/关机波形一样))      上图的工作原理是这样的:   当POWER_KEY按下不,TP1点就持续高电平(下面示波器波形图的下面一个通道的波形图),   由于C1两端电平不能突变,所以C1在POWER_KEY按下瞬间其两端都是高电平(其实C1起到加速作用),这样三极管Q1的由于基极出现高电平会瞬间导通,然后,TP2点出现低电平,然后C1会通过Q1的基--Q1发射--R1--C1构成一个回路进行放电(整个过程波形如同下图示波器截图的上面那个通道波形:开始出现2ms低电平,后来按照指数形式放电,Q1就从导通,然后慢慢截止,最后TP2的电平稳定为高电平),注意C2电容的容量相比C1很小,0.1u=100000p,估计C2在此电路的作用就是滤除高频成分的目的。   (这里容易糊涂:C1不能突变,POWER_KEY按下瞬间C1两端不能突变,可是C2两端也不能突变,所以C2两端都是低电平,那C1和C2的交点电压就打架了?,因为C2电容量相比C1的电容量很小,几乎对C1不会产生影响,当然如果C1和C2都是0.1uf,这POWER_KEY1导通瞬间,由于C1 C2两端电压都不能突变,则他们的交点电压应该是2.5V)   (电容相关理解:[深入理解电容的工作特性总结] )      下面用一个端口实现的开关机功能(因为INT0和PB14功能可以做程序中作改变):      当在待机情况下要求极低功耗时的电路   低功耗设计问题:如何实现一个MCU系统在待机状态下0uA的低功耗?(在待机模式下不能工作。如何通过长按按键开启系统,并能够在释放按键后系统也能正常工作?)   分析:   根据系统功耗要求,MCU在待机模式下不能工作。如何通过长按按键开启系统,并能够在释放按键后系统也能正常工作?然后在开机后,再次长按按键后又可以进入0uA的超低功耗下面待机。   解决:   系统在待机状态(关机)时,当POWER_KEY1按键被长按。Q2导通,电池输入电压的高电平信号直接供到MCU芯片电源端,然后MCU一个GPIO端口立即输出一个高电平使Q2的基极持续高电平,目的是锁住Q2持续工作,这样MCU就持续有电供电,这样,按键即使被释放后,也能保证系统一直处于工作状态。   当需要关闭系统时,还是长按POWER_KEY1按键,这样会通过INT0中断检测到这个中断,然后GPIO不在输出高电平锁存Q2的基极,这样松口当POWER_KEY1就可以关闭系统了。这样关闭系统后,也没什么功耗了,   注:下图只是提供一个思路,这个电路还有待完善,GPIO这样连接是否安全,比如Q2换用MOS管,各个电阻的值也要根据实际电路选区,或增加电阻,电容等器件,这个系统才能完美工作!      三:设计低功耗常用思路   如何利用万用表测试一台机器在稳定电压下的功耗:把FLUK万用表跳到电流档(注意表笔的插头摇换到电流档)的红表笔接到电源的正极(用黑表笔接正也不会有危险),然后用黑表笔接到机器的正极,然后把电源的负极接到机器的地端,就可以测电流了。   四:设计低功耗常用思路   降低功耗不光能够大大的节约电能还能简化电源部分的设计,甚至可以用于手持设备上面使用,这些都已经越来越成为未来产 品的设计方向了^_^   1 降低功耗从MCU选型开始,一开始选型的时候就应该考虑选择低功耗的MCU比如MSP430一类的为低功耗设计的CPU。 强烈不建议使用51一方面是因为51速度慢,另外一方面是因为51的IO是有上拉电阻的,虽然当IO为高电平是上拉电阻不费电,但是下拉电流的时候却也有不小的功耗产生。还有一点就是51的运算速度实在是太慢了,很多运算用51都需要很高的 主频而主频高了就意味着高的功耗。   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来控制从而省略限流电阻,要知道当器件选定后它的内 阻也就已经确定,而当电源电压也确定的时候,就可以通过占空比来确定器件上的电压从而节约了限流电阻同时也就节约了限 流电阻上面的功耗,如果用户使用的是电池,我们完全还可以不定期的对电池电压进行检测然后改变占空比,从而恒定负载上 面的电压,达到电源的最大利用率。