低功耗IoT电源模块选型与实践:把待机电流压到微安级

发布时间:2026/8/28 5:48:48
低功耗IoT电源模块选型与实践:把待机电流压到微安级 最近半年我在做一款户外资产追踪器就是那种贴在集装箱或者叉车上、用电池供电、每天只上报几次位置的低功耗设备。项目做到一半客户提了一个硬指标在-20℃环境下、800mAh锂电池至少连续工作半年。掐指一算平均电流必须压到个位数微安级别所有环节都得按“微安”去抠。也正是这个项目让我把Power Modules彻底啃了一遍——电源模块的拓扑选型、静态电流、动态响应、休眠供电方案每一条都真实地影响着这台IoT Devices的电池续航。这篇文章是一次完整复盘重点聊聊电源模块怎么帮我把设备从“两周没电”改成“半年不用管”以及我在选型、设计和调试中踩过的坑。适合正在做低功耗物联网产品的硬件工程师、嵌入式开发也适合想弄明白“为什么别人家的设备能用一年、你的只能用一个多月”的产品经理。1. 电池续航的真正瓶颈不在电池容量而在功耗结构1.1 场景决定需求IoT设备的续航目标千差万别很多人一说到设备续航不行第一反应就是“电池容量不够”然后换更大电池。但我做了几个低功耗项目之后发现绝大多数IoT设备的问题不是电池容量而是系统功耗结构不合理。一个设备每天真正“干活”的时间可能只有几秒甚至几百毫秒其余时间都在待机或者深睡如果待机期间有源源不断的漏电哪怕换一块大电池也只是把“没电”的时间往后推迟几天而已。物联网设备的应用场景差别很大续航目标差别也很大。拿我们常见的设备举例室内温湿度传感器一般要求一年以上甚至三五年不换电池。资产追踪器希望半年到一年因为设备分布在各地回收换电池成本极高。智能门锁至少一年用户可不愿意频繁换电池。可穿戴设备几天到两周因为体积限制严重。无线水表、气表要求五到十年这个级别基本就得靠超低功耗MCU加精心设计的电源方案才能做到。这些设备有一个共同点大部分时间都处在极低功耗的待机模式偶尔被唤醒采集数据、处理数据、发射数据。所以你真正需要优化的指标不是“峰值电流”多低而是“平均电流”能不能压住。平均电流才直接决定电池能用多久。电源模块作为电池到芯片之间的“能量通道”它的输入输出条件、静态电流、转换效率、动态响应恰恰决定了这条通道到底“漏不漏电、稳不稳定、浪不浪费”。1.2 一次数据上报背后的能量账本我先举个例子让大家对“平均电流”有直观感受。假设一台设备用3.7V锂电供电每天上报10次每次上报期间射频模块工作200ms平均拉流50mA其余时间系统深睡待机电流为2μA。一天的总耗电可以简单算一下射频上报耗电10次 × 200ms × 50mA 100mAs ≈ 0.028mAh。深睡耗电2μA × 86400秒 ≈ 0.173mAh。一天的合计耗电大约0.2mAh。如果电池标称800mAh不考虑自放电和DC-DC转换损耗理论上能用4000天也就是十年以上。这个结果很反直觉射频发射时明明拉了50mA但因为时间极短反而在总能耗中占比不大真正的大头是那个看起来很小的2μA待机电流因为它一年四季都在耗。实际项目中看到的现象往往更夸张。很多设备待机电流不是2μA而是20μA、200μA甚至2mA。可能原因就几个电源模块关断后仍有静态电流、某个传感器没断电、反馈分压电阻一直在耗电、LED指示灯漏电。待机电流从2μA涨到20μA电池寿命就会从“快十年”掉到“一年不到”如果涨到200μA寿命就只有一个月左右。所以低功耗设计真正要抠的就是这些“看起来不起眼”的待机漏电路径。1.3 电源模块在续航链条中的三重角色电源模块在IoT设备里到底负责什么简单说它把电池电压转换成芯片需要的稳定电压并且尽可能减小损耗。但在这个大前提下它有三个直接影响续航的角色第一是转换效率。电池电压会随着电量消耗逐渐下降比如锂电池从4.2V降到3.3V电源模块如果能在较宽的输入范围内维持较高效率就能减少能量浪费。不过这要和系统匹配不能只看标称效率。第二是静态电流也就是电源模块本身不带负载时也要消耗的电流。低功耗设备大部分时间都在待机如果电源模块的静态电流本身就很大那待机功耗直接被拉高电池寿命自然缩短。第三是动态响应。系统从深睡到唤醒再到射频发射电流可能从几μA瞬间跳到上百mA甚至1A以上。电源模块要能在电压跌落幅度可控的情况下扛住这种瞬态突变。如果扛不住MCU可能会复位射频模块可能重启整个系统就会反复“唤醒-死机-重启-再唤醒”白白耗电续航自然好不了。这三重角色决定了选电源模块不能光看“能不能出3.3V”而是要综合拓扑、静态电流、效率曲线、负载瞬态、关断能力一起考虑。2. 电源模块选型把“续航”当成分级指标来选型2.1 效率曲线比标称效率更值得看很多工程师选DC-DC芯片时习惯先看数据手册首页的效率曲线看到某个负载点效率达到95%就觉得很不错。但在物联网低功耗产品里这个习惯很危险。因为很多DC-DC的效率曲线是在中高负载电流下测出来的比如10mA到1A之间效率确实很高但到了1mA以下、甚至100μA以下效率可能掉到70%甚至更低或者干脆进入低功耗模式后纹波变大。IoT设备的常态是“大部分时间轻载或空载”只有极短时间重载。所以选型时我更看重两段曲线一是1mA以下的轻载效率二是50mA到200mA左右的典型工作区效率。举个例子同样输出3.3V用LDO从4.2V降压压差0.9V效率大约3.3/4.278%但如果用同步Buck在轻载下可能也能做到85%以上。如果平时电流只有几十微安LDO和Buck的绝对功耗其实差别不大因为电流太小了但到了发送数据时电流上百毫安效率差异就开始体现。我习惯把效率预估放进整机功耗里算。比如每次上报过程中的平均电流是60mA上报时间200ms假定MCU和射频都在3.3V轨上如果DCDC效率从85%提到95%相当于每一百次上报就省下一次上报的能量。这种“日积月累”对电池寿命的影响非常可观。2.2 静态电流IQ与关断电流ISD待机续航的分水岭静态电流是低功耗IoT选型里最容易被低估的参数。数据手册里通常会写两个值Quiescent CurrentIQ静态电流和Shutdown CurrentISD关断电流。IQ是指芯片使能开启、但没有负载时的自身消耗ISD是指芯片被关断后从输入端漏过去的电流。我见过不少项目选DC-DC时只看了输出电流和效率没看IQ结果芯片IQ有15μA。整机深睡时MCU才1μA传感器关断后漏电0.1μA结果一个电源模块就把待机电流拉高了十几倍。这就是典型的“捡芝麻丢西瓜”。我常用的几颗低功耗电源模块给大家做个参考型号拓扑最大输出电流静态电流IQ适用场景TPS62740同步Buck300mA360nA低功耗MCU供电TPS62840同步Buck750mA360nA中等负载可动态调压TPS63900Buck-Boost500mA1μA级别碱性电池/宽电压范围LTC3536Buck-Boost1A35μA级别中等负载、宽压TPS782LDO500mA500nA级别低噪声模拟供电这里要说明具体数值一定要以最新规格书为准但选型思路是一样的优先挑那些明确写了“Ultra-Low IQ”的芯片最好IQ在1μA以下。如果芯片的IQ比整机深睡电流还大那它就不适合放到这条电源轨上。还有一个容易踩的坑外部反馈分压电阻也会漏电。很多电源模块需要外部两个电阻设定输出电压如果这两个电阻用得比较小比如各10kΩ那在3.3V输出时电阻网络电流就是几百μA比芯片的IQ大得多。低功耗设计里我尽量选内部反馈电阻已经集成好的模块或者把外部电阻做到几百kΩ以上前提是FB引脚输入漏电流足够小否则又会引入误差。2.3 Buck、Boost、Buck-Boost、LDO怎么选落到项目里选拓扑主要看电池类型和系统需要的电压。锂电池3.7V工作范围约3.0V到4.2V给3.3V系统供电时我一般直接用同步Buck。因为输入电压长期高于输出电压效率可以做得很高。但如果系统有射频PA需要3.8V或4V左右电压那Buck就不太方便了要选Boost或者Buck-Boost在电池电压低于输出电压时能升压维持稳定输出。两节碱性电池串联时电压会从3.4V左右一路降到2.0V甚至1.8V。如果系统需要3.3V就必须用Buck-Boost因为电池满电时高于3.3V需要降压电池快没电时低于3.3V需要升压。用纯LDO在低电压时根本维持不住用纯Boost在电池满电时又可能输出电压过高。Buck-Boost虽然效率通常比Buck低一点但它能在整个电池放电区间稳定输出对应到整机续航上反而能把电池容量用得更干净。LDO也不是不能用。对模拟传感器、射频前端这类对纹波敏感的部分我习惯在DC-DC后面再加一颗LDO做二级滤波。这时的LDO不是承担主要能量转换而是负责“洗掉”DC-DC的开关纹波。只要负载电流不大LDO的效率损失就影响不大。反过来如果头脑一热用LDO从4.2V直接降到1.8V给MCU核供电那效率就只有42%一半的能量变成热量浪费掉这对电池供电产品来说是灾难。3. 围绕电源模块搭建低功耗系统从电源树到PCB3.1 先画电源树再谈选型我一般在画原理图之前先在纸上画出整机电源树把每一路电压、每一个负载、每一段工作模式的电流估算出来。电源树不是简单画个连线它需要回答三个问题这一路电压是不是一直在工作如果不能关断它的静态电流预算多少如果能关断用EN引脚还是加负载开关以我的追踪器项目为例电源树大概是这样的锂电池3.7V第一路同步Buck输出3.3V给MCU、加速度传感器、GNSS模块供电MCU通过GPIO控制该模块的EN。第二路Buck-Boost输出4.0V给NB-IoT模块供电MCU在休眠期间用GPIO关闭这一路彻底断电。第三路超低IQ LDO输出3.0V给RTC供电。RTC必须一直保持所以这一路不能关断选LDO时重点看IQ。这样路由的好处是把“必须常电”的部分和“可以断电”的部分彻底分开。常电部分只有RTC和MCU的深睡保持电路它们的电流预算严格控制数据上报时功耗高的模块都放到可关断的电源轨上使用瞬间才上电。画完电源树之后我会做一张功耗估算表把每一种工作模式下各模块的电流列出来再乘上对应时间得到平均电流。这张表要在原理图阶段就做不要等板子调试完再补否则漏电问题早就根深蒂固了。3.2 用EN引脚做真正的系统级断电很多初做低功耗产品的人会犯一个错误以为让MCU进入sleep、外设不工作就万事大吉了。实际上许多传感器、无线模块即使“不工作”只要电源还接着就会有额外的静态电流。有的NB-IoT模块在正常待机模式下静态电流可能高达几百μA如果想让整机待机降到几μA唯一办法就是硬断电。电源模块的EN引脚在这里特别有用。MCU在进入深睡之前先把所有可关断电源轨的EN引脚拉低把外设的供电彻底切断唤醒之后再按顺序把EN拉高让电源模块输出稳定后再让MCU去访问外设。这个顺序很重要否则外设还没上电完成MCU就开始读写容易造成死锁或者总线卡住。我用EN引脚时有几点经验EN引脚必须有明确的上拉或者下拉不能悬空。很多低功耗模块的EN是内部弱上拉如果不接外部电阻可能在MCU还没初始化时就默认开启了白白耗电。如果MCU GPIO电压域和电源模块输入电压不同要注意EN引脚的电平是否兼容。有些低功耗模块的EN阈值和VIN一致用1.8V GPIO去控制3.6V电源轨的EN可能会关不掉。关断之后要留一点放电时间再重新开启。不然输出电容上的残余电压会导致外设上电时不彻底出现莫名其妙的初始状态错误。3.3 动态电压调节让每一分能量都花在刀刃上动态电压调节DVS听上去是个很高级的词但落到IoT设备里其实很实用。现在的MCU通常支持宽电压范围比如1.8V到3.6V。在低频运行时用1.8V供电可能就够了只有在射频模块发射、或者MCU要以最高主频跑复杂算法时才需要3.3V。如果只用一颗固定输出电压的电源模块那MCU在绝大多数时间都被“高电压供电”动态功耗会白白增加。因为CMOS电路的动态功耗和电压平方成正比电压从3.3V降到1.8V理论动态功耗能降到原来的30%。一些低功耗电源模块支持通过VSET或VID引脚切换输出电压MCU可以用GPIO在运行状态切换电压等级。例如需要跑算法时GPIO拉高输出电压3.3V进入低速低功耗任务时GPIO拉低输出电压1.8V。这样MCU在低负载状态下用低电压跑能省不少电。不过动态调压也有代价每次切换电压需要等待电源模块建立稳定大概几十微秒到几百微秒对于低频唤醒系统来说完全来得及。关键是切换的时序要在固件里处理好不能一边切电压一边跑高频外设否则可能会出现数据错误。3.4 PCB布局与电感电容选型电源模块的性能再好PCB布局不合理也会前功尽弃。对于低功耗IoT设备布局主要看三点输入电容、反馈走线、地回路。输入电容要尽量靠近电源模块的VIN引脚我是用0.1μF陶瓷电容加一个4.7μF或10μF电容并接给瞬态电流提供一个低阻抗回路。输出电容同样要紧靠VOUT否则负载突变时电压跌落会增加。电感选择要看饱和电流和DCR饱和电流至少要大于系统最大峰值电流的1.2倍DCR越低越好但体积和成本会上升。对于几百mA级别的负载一颗4.7μH或10μH、DCR在几百mΩ以内的小功率电感基本够用。反馈走线一定要远离电感和SW引脚因为SW节点有高频开关信号很容易耦合到FB网络引起输出电压抖动。我在实际板子里会让反馈电阻靠近FB引脚走线用地包起来避免它横穿高dv/dt区域。地回路也很重要。如果MCU、射频模块和电源模块共用一个很细的地线瞬时大电流会在地线上产生压降导致逻辑电平误判。低功耗设计里我喜欢用大面积地铜皮模拟地和数字地单点连接电源模块的地和负载的地尽量短路径回流。4. 实测数据两次设计迭代续航从2周拉到6个月4.1 第一版设计看似低功耗其实处处漏电这个追踪器项目第一版并不是完全不能跑但客户试用之后反馈续航太短差不多两周就要换一次电池。拆开看电源方案问题一目了然第一版用的是LDO直供方案电池电压3.7V直接进LDO降到3.3V给MCU、NB-IoT模块、传感器统一供电。LDO本身静态电流很低但NB-IoT模块一直挂在电源上它的待机电流有几百μA。实际测试整机待机电流高达680μA也就是说什么都没干一天就要掉电16mAh以上800mAh的电池差不多50小时就空了。再加上每天的定时上报两周左右就没电了实属正常。这个版本的问题不是芯片不好而是电源域划分错了。NB-IoT模块的电流峰值很高而且需要4V左右的电压才能保证发射功率让它在3.3V轨上工作本身就是折中方案。同时没有用EN去关断它导致模块在深睡时也没有真正断电。4.2 第二版设计用电源模块重新梳理电源域第二版我从电源树入手做了三件事一是把NB-IoT模块单独放一条电源轨用Buck-Boost输出4.0V并由MCU的GPIO控制EN。深睡时模块彻底断电ISD只有几十nA。二是把MCU和传感器放在一颗低IQ同步Buck后面输出3.3VIQ只有约360nA。MCU深睡时传感器通过负载开关断电MCU本身的深睡电流约1μA。三是增加了一路超低IQ的LDO专门给RTC供电保证实时时钟和唤醒逻辑长期运行同时整机待机电流做到了1.2μA左右。改完之后我用功耗分析仪测了整机在工作周期内的平均电流待机电流从680μA降到了1.2μA。按每天上报12次、每次上报周期约0.5秒计算日均耗电大约2mAh800mAh电池理论续航超过一年。考虑自放电、低温容量衰减等因素客户实测使用约6到7个月相比原来的2周已经是数量级的提升。4.3 功耗测量方法别被示波器里的峰值骗了低功耗调试离不开测量但很多工程师在测量时会掉进“只看瞬时电流”的坑。比如用示波器看到射频发射瞬间电流有1A就觉得这个设备功耗很大其实平均电流可能非常小。真正决定续航的是平均电流是电流对时间的积分。我的测量方法是分三步走第一步测静态待机电流。用高精度万用表串在电池端选择电流档位量程越小越好。这里要注意万用表的电流档在量程切换时会有较大压降可能导致系统复位所以最好用锁存电流或者带峰值保持的表。我习惯在待机电流测试时直接用微安档并确保系统没有周期性唤醒否则读数会一直跳动。第二步测事件电流波形。用电流探头夹在电源线上配合示波器记录一次完整的上报事件包括MCU唤醒、传感器采样、RF发射、进入深睡整个过程看电流曲线和时长。这能帮你定位哪个阶段电流异常高。第三步测长时间电量累计。用支持mAh累计的电子负载或功耗分析仪让设备按真实节奏跑24小时直接读出一天消耗多少mAh。这个数字是最可靠的续航估算依据。测的时候还要注意调试器、烧录器、串口转USB模块会通过地线给系统注入电流导致测出来的待机电流偏大。所以测待机电流前一定要把调试器拔掉只让设备单独用电池供电。5. 常见问题与排查技巧实录5.1 待机电流怎么都降不下去这是低功耗项目里最常遇到的问题。很多人把LDO换成超低IQ的DC-DC待机电流还是降不下去问题往往出在电源轨之外。我排查待机电流过高的顺序是先看外设有没有真正断电用手摸一摸模块温度或者用热像仪扫一遍温升明显的模块大概率还在吃电。再看MCU的GPIO配置有没有引脚悬空导致输入浮空浮空引脚会通过内部保护二极管漏电。然后是外部上拉电阻、LED限流电阻、电平转换芯片这些“小东西”长期挂电往往比主芯片还耗电。一个经典案例某模块电源轨已经用EN关闭了但待机电流依然多了10μA。排查到最后发现是EN引脚的RC延时电路里那个电阻从电池直接接到了GND相当于一直有一个上拉电流通路。把电阻去掉、换成MCU直接控制EN问题瞬间解决。5.2 电池电压还有电系统却神秘复位如果电池电压在3.6V系统却在上报瞬间复位大概率不是没电而是电源电压被瞬态大电流拉到了UVLO阈值以下。这种现象在电池内阻大、供电走线细、电源模块动态响应一般的时候特别明显。用示波器挂到电源模块输出端触发模式设成下降沿抓唤醒瞬间的波形经常能看到一个几十毫秒的压降坑。如果压降幅度超过300mVMCU就可能掉电复位。对策有几种一是加大输出电容给瞬态电流提供能量缓冲二是启用电源模块的软启动让负载分步上电三是在固件里错峰初始化外设不要一醒来就让传感器、射频模块、LED同时工作。我一般习惯在外设上电后加10ms延时再访问虽然看起来浪费时间但能避免很多电源问题。5.3 RF发射时电源噪声干扰接收灵敏度有次调试NB-IoT设备发现信号满格但入网很慢怀疑是发射时电源模块的纹波耦合到了射频前端。后来在射频模块的电源引脚前面加了一颗磁珠和两个并联电容组成一个小型LC滤波器入网时间明显改善。这类问题的根源是DC-DC的开关纹波频率、谐波分量与射频工作频段重叠通过电源引脚直接传导进射频芯片或者通过PCB走线辐射到天线附近。解决办法首先是布局隔离电源模块和射频电路尽量分开电源线不要平行于天线走线其次是电源滤波在射频模块供电入口用磁珠加电容再激进一点可以把射频模块的供电换成LDO把纹波压下去。5.4 不同批次电池和电源模块组合冷启动失败低功耗设备换电池后无法开机或者开机后反复重启也是常见问题。这通常发生在电池电压接近标称下限而电源模块启动时需要较大输入电流的情况下。新电池开路电压看着不低但一旦带载内阻和接触电阻会让输入电压瞬间下降低于电源模块的UVLO阈值。我在选型时会注意电源模块的UVLO阈值和启动条件尽量选UVLO比较低、带软启动的模块。如果电池接触簧片氧化接触电阻增大也会导致启动失败。组装时我会要求电池接触部位做镀金或镀镍处理并在板子输入端并联一个大容量电容比如100μF帮助系统扛过启动瞬间的“吸流”高峰。5.5 碱性电池场景下电源模块选择别只看芯片本身很多低成本传感器节点会用两节5号碱性电池供电。碱性电池满电时接近3.2V没电时可能跌到1.8V左右放电平台很宽。如果用Buck电池电压一旦低于输出目标就稳不住用Boost电池电压高于目标时又没法高效降压。这种场景最好直接用Buck-Boost。但Buck-Boost的IQ通常比Buck高一些选型时要特别注意轻载时的静态电流。我见过一些项目为了宽压范围选了一颗IQ几十μA的Buck-Boost结果待机电流直接爆表。如果系统对电压范围要求没那么宽也可以考虑“LDO直供”的方式比如MCU本身支持1.8V到3.6V工作就把电池电压直接连MCU的VDD只在传感器和射频前端用低压差LDO限压这种方案在极低负载场景下反而更省电。5.6 测量仪器比被测设备耗电还大最后提醒一个很隐蔽的问题调试仪器、仿真器、传感器扩展板本身也会耗电而且这个电不是从电池走的是从调试口或者地线灌进系统的。如果一边插着J-Link一边测待机电流测出来的结果可能比真实值高几十μA甚至几百μA。我在项目里测低功耗时有个习惯待机电流和长时间电量累计测试时绝对不接调试器。需要看日志就通过UART打印但要用带隔离的USB转串口并且只在上报事件前临时接入测完立刻拔掉。为了记录完整的事件时间线我还会在固件里加一个“GPIO标记”引脚每次唤醒和进入深睡都翻转一次电平用示波器同时抓标记引脚和电源电流这样能准确知道每个阶段对应的时间窗口再结合电流波形计算平均功耗。做低功耗物联网设备这几年我最大的体会是电池续航不是你选了一颗低功耗MCU、或者一颗低IQ电源模块就能自动达标的而是一条完整的能量链——从电源模块选型到电源树规划到EN信号控制再到PCB布局和整机测量每一环都会影响最终结果。Power Modules在其中的角色不只是“把电压变一下”而是决定这条能量链最基础的效率、漏电和动态能力。先把电源模块的细节抠到位再谈上层应用优化续航目标才不会变成一句空话。