复杂系统的低功耗实现过程

        之所以将标题称为一个“过程”,而不是“方案”,是因为,复杂的系统做低功耗不是一蹴而就的,要经历功耗评估、设计、验证、再评估、再设计、再验证,如此循环,直到满足预期;在一个产品中最终可能会有若干种功耗控制方案。

        不同产品、不同场景下的低功耗设计过程可能会很不相同,这一般取决于两方面的因素:

        1、功耗现状;

        2、续航预期要求;

        举例:当前没有做任何低功耗处理,续航10小时;如果实际部分机器只差半小时,这时可能只需打开操作系统的某个低功耗控制开关即可,如FreeRTOS的configUSE_TICKLESS_IDLE;而如果实际机器续航差了一两个小时,这时候可能需要从某个用电大户里面抠,这可能会降低其性能;如果实际机器续航差了五六个小时,这时候可能要重新设计软硬件方案了。

功耗评估

        功耗评估环节是走在功耗需求确立之前的,在整体功能确立之后,在明确各个功能消耗功率情况的基础上,根据经验评估该产品的平均功耗、理论续航时间,详细过程如下:

        过程1、确定初步的续航时间,这个一般是根据竞品情况分析出来的;如果没有竞品,属于首次开发,就只能先跳过这个环节;

       过程 2、确定功能需求,主要是确定产品会用到哪些类型的元器件,一般来说,所使用的元器件类型确定后,该产品功耗等级就基本定了;比如:如果该产品需要使用WiFi,那么不管选用哪一家的WiFi模块,各个厂家的WiFi模块功耗都不会差太远,那么我们设计的产品在使用WiFi时候的功耗都差不太多;

       过程 3、搜集产品将使用的各种元器件的DataSheet,一般元器件的datasheet上都会讲该器件在各种状态、环境条件中的功耗情况,比如下图是Quectel BC20芯片手册中给出的不同状态下的功耗情况:

        当然,有的元器件的datasheet是不会给出其功耗情况,这时候就需要我们自己去测试其各种状态的功耗情况;

        过程4、识别产品应用场景:一个产品一般都会有不同应用场景,比如开机时有人使用时的场景、开机时没人使用的场景、关机时场景等等;为了省电,不同场景就会有不同的功耗控制方案,如在使用手机时屏幕是亮的,长时间没人使用了就把屏幕熄灭;对于功耗要求严格的产品,就需要精细化的识别各种不同的场景,针对每一种场景有针对性的设计对应的功耗控制方案。

        过程5、不同产品其功耗控制方案其思路基本都是一样的,大体上可以归结为以下几类:

功耗控制基本思路
序号 方法
1 控制电压,一般的芯片都有一个工作电压范围,降低其工作电压一般都可以一定程度的降低其功耗,但具体还是要结合手册、实际情况进行调整;
2 控制电流,比如步进电机的电流控制可优化整机功耗,再比如各个上下拉电阻设计可控制流经该电路的电流;
3 降低芯片使用频率,就是在器件不需要工作时候将该器件断电或者使其进入低功耗状态;
4 控制MCU主频,比如将MCU主频从180MHz降到72MHz,这样会牺牲部分性能,目的在于省电;对于要求整体功耗在10mA以内的系统中基本都会用该方法。

        针对每一种场景的应用情况,可以列一个Excel,设计该场景下各个器件的工作状态或使用方案,并评估其平均电流、最大电流、最小电流,最后可统计出该场景下的功耗情况。评估最大电流、最小电流是用于设计电源设计的参考,我们知道电源有两个关键参数:最大输出电流、效率曲线,可根据电流平均值、最大值、最小值预估该电源的转换效率,从而更精准的预估出总功耗。

        过程6、在每一个场景下的平均功耗评估出来后,再根据每个场景用时情况即可得到一个整个过程能量消耗情况,从而可以推算出我们对电池容量的需求。然而我们现实情况一般都是:电池已经选定了,让我们评估其续航。这时候就需要反其道而行之:确定一个关键场景,其余场景均为非关键场景,预估非关键场景的工作时间,从而可推算出非关键场景的能量消耗;进而估算出关键场景的时间,即产品续航时间。

        这里面有一个需要考虑的是:电池利用率问题。根据经验,南孚5号干电池利用率一般是85%,14500锂电池利用率一般是75%,这也跟电池厂家、电池使用的截止电压有关,所以需要根据每个项目实际情况进行实测。

        功耗评估的目的是评估系统可行性,为系统设计提供参考,比如:如果我们的平均电流在200mA,设计时候就不要太在乎那些只有1mA左右的器件;如果我们的平均电流在10mA,我们就不用太担心某个电路会多出50uA电流消耗。降功耗的难点在于:我们目标是将电流降到1mA以内,但目前电流是1.01mA,出现这种情况一般都是已经经过很多努力的结果,想再降一点点却会损失不少东西,左右为难!

        功耗评估的产物最好是一个Excel表:XXX产品功耗评估表,内容包含:

        1、场景分类、配置分类、各个器件在各种状态下的功耗;

        2、各个场景下每个器件的功耗计算方法;

        3、总功耗/平均电流计算方法;

        4、续航时间计算方法;

        5、各个模块最大电流、最小电流;

        6、各部分电源效率分布图;

        在完善这个表以后,如果后续需求发生变化,直接在该表中可以直观评估出续航情况。

功耗设计

        在评估功耗可以满足预期需求后就要开始设计,评估过程其实已经作了设计的工作,只是一般都不会出文档、代码、原理图。所以这里只指出我们经常需要注意的地方:

        1、未使用管脚的处置;

        2、为测试/验证预留足够的空间,提高系统可测试性;如:在MCU电源统一入口增加0Ω电阻,方便测试MCU上的电流情况;

        3、注意温度的影响,这可能会考虑发热器件的位置布局;

功耗验证

        验证工作一方面验证整体功耗是否满足续航要求,另一方面验证各个模块功耗与设计时是否一致,所以验证工作主要是测试整体功耗及各个模块功耗。如果整体功耗不达标,就看哪些模块是用电大户,尽量从用电大户里面扣;如果某个模块功耗的与其Datasheet相差很远,就需要看手册,详细了解其低功耗控制方法,实在搞不定就要召唤他们的FAE。

        功耗验证的结论一定要留足够的余量,因为每个芯片、器件在不同环境下的功耗变化可能会很大。所以,如果有条件尽量在不同环境中做充足的测试验证。

        在测试完后,根据测试数据修改XXX产品功耗评估表,将该表变为:XXX产品功耗分布表,如果该表中功耗可满足续航要求,功耗设计到此结束。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>