1、低功耗设计哲学:为什么电池供电系统要省电?
做电池供电系统这些年,我最大的体会就是——省电不是锦上添花,而是生死存亡。你想想看,一个传感器节点,如果电池只能撑三天,那客户凭什么买单?
我个人习惯,在项目启动前先问自己三个问题:
- 这个设备能用多久?
- 用户愿意多久充一次电?
- 电池没电了,系统会怎样?
这三个问题,说白了就是低功耗设计的起点。别急着写代码,先把哲学想清楚。
1.1 能量守恒与效率思维
先讲个基础概念——能量守恒。电池里的能量是有限的,你用掉的每一焦耳,都来自化学能到电能的转换。这个转换效率,我见过最差的只有70%,好的能做到95%以上。
我在项目中遇到过一件事:一个温湿度采集器,用CR2032纽扣电池,理论续航两年。结果三个月就没电了。查了半天,发现是LDO的静态电流比MCU还大。嗯,这就是典型的「效率思维」没到位。
效率思维的核心就一句话:每一毫安时都要花在刀刃上。你想想看:
- MCU跑10MHz能干活,为什么要跑48MHz?
- ADC采样1000次够用,为什么要采10000次?
- 无线发送功率能调低,为什么要开最大?
这些不是技术问题,是思维习惯问题。我建议你在设计初期就画一张能量流向图,看看能量到底消耗在哪里。
核心观点:低功耗设计不是「省着用」,而是「用得巧」。效率思维比任何技巧都重要。
1.2 功耗的三大来源
搞清楚了为什么要省电,接下来看看电到底耗在哪了。功耗来源分三类,我习惯叫它们「三座大山」。
1.2.1 动态功耗
动态功耗,说白了就是芯片在工作时消耗的电。MCU执行指令、GPIO翻转、外设工作,这些都会产生动态功耗。公式很简单:
P_dynamic = C × V² × f
其中C是负载电容,V是工作电压,f是工作频率。你看,电压的影响是平方级的。所以降低电压,效果立竿见影。
我记得有一次做电机控制,MCU跑在3.3V、48MHz,功耗8mA。后来我把电压降到1.8V,频率降到16MHz,功耗直接掉到1.2mA。控制周期虽然长了点,但完全够用。
技巧:动态功耗和频率成正比,和电压的平方成正比。优先降电压,再考虑降频率。
1.2.2 静态功耗
静态功耗,就是芯片「闲着」的时候也在耗电。CMOS电路里,即使没有时钟翻转,晶体管也有漏电流。这个漏电流虽然小,但架不住时间长啊。
我曾经做过一个项目,设备大部分时间都在休眠,每天只工作10秒。结果静态功耗占了总功耗的80%!后来换了低漏电的MCU,静态电流从10μA降到0.5μA,续航直接翻了20倍。
静态功耗的典型来源:
- MCU的休眠模式电流
- LDO的静态电流
- 上拉/下拉电阻的漏电
- 电容的漏电流
注意:别小看微安级的静态电流。一个10μA的漏电,在一年里会消耗87.6mAh的电量。对于小电池来说,这可能是致命的。
1.2.3 漏电功耗
漏电功耗,其实是静态功耗的一种,但我要单独拿出来说。因为它太容易被忽略了。
漏电主要来自:
- IO引脚的漏电流
- PCB板表面的漏电
- 电容的ESR损耗
- 电池自放电
嗯,这里要注意。PCB板表面的漏电在潮湿环境下会急剧增加。我在南方做项目时就吃过这个亏——设备在实验室测得好好的,一到客户现场就掉电快。后来发现是湿度大,板子表面有凝露,漏电流从nA级飙到了μA级。
避坑指南:我曾经因为没考虑PCB漏电,导致一个产品返工三次。后来学乖了,所有高阻抗节点都加防潮涂层,IO引脚全部配置成高阻或输出低电平。
1.3 低功耗设计的「木桶效应」
木桶效应,大家应该都听过——一个木桶能装多少水,取决于最短的那块木板。低功耗设计也是一样。
你想想看:
- MCU休眠电流做到0.1μA,但LDO静态电流10μA——短板在LDO
- 所有芯片都选低功耗,但PCB漏电5μA——短板在PCB
- 硬件设计完美,但软件每10ms轮询一次——短板在软件
我见过太多这样的案例了。工程师花大价钱买了超低功耗MCU,结果外围电路没优化,整体功耗还是下不来。说白了,低功耗是系统级的事情,不是某个芯片的事情。
下面这张图,是我自己总结的低功耗设计知识体系:
你看这张图,三大来源就像三块木板。动态功耗这块板再短,如果静态功耗的板更短,那整体功耗还是下不来。我建议你每次做低功耗设计时,都画一张类似的图,把每个模块的功耗标出来,看看哪块板最短。
实用建议:用Excel或Python画一张功耗分布饼图。哪个模块占比最大,就先优化哪个。别一上来就盯着MCU的休眠电流,说不定LDO才是真正的「电老虎」。
最后说一句:低功耗设计不是一蹴而就的。它需要你在硬件、软件、系统三个层面反复迭代。我做了十几年嵌入式,到现在也不敢说完全掌握了。但有一点我可以肯定——只要你养成了「每毫安时都要花在刀刃上」的思维习惯,你就已经赢了一半。