尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

纽扣电池供电电路优化:从微安级待机到年续航的完整设计指南

发布时间:2026/9/28 1:47:06

资讯中心
01
ARTICLE

纽扣电池供电电路优化:从微安级待机到年续航的完整设计指南

纽扣电池供电电路优化:从微安级待机到年续航的完整设计指南
1. 低功耗需求分析与设计思路拆解1.1 为什么纽扣电池供电如此棘手做单片机项目久了你会发现供电这件事是最容易被低估的一环。尤其是当终端产品被设计成“一枚CR2032纽扣电池撑一年”的时候问题就不只是“电路能不能跑”这么简单了。纽扣电池的容量本来就有限——标称220mAh左右的CR2032型号再经典能量密度也摆在那里。我见过不少初做低功耗产品的工程师板子调通了、代码写完了结果实测整机待机电流2mA。算下来一枚CR2032理论上只能撑110小时也就是四天半。四天半是什么概念你给客户说“这产品能续航一年”客户实测四天就没电这项目基本就黄了。所以纽扣电池供电电路优化方案从来不只是“换个电池”或“加个电容”的事而是一个从系统架构、芯片选型、电路设计到软件策略全链路协同的工程问题。回到标题里的核心命题纽扣电池供电电路怎么优化。这个问题可以拆成三个层面——第一硬件电路层面怎么把静态功耗压到微安级第二芯片选型层面怎么挑一颗真正适合低功耗场景的单片机比如STM32L151、HC32L196这类专用低功耗型号第三软件策略层面怎么让系统“能睡就睡、醒来就干、干完就睡”。三件事缺一不可任何一个环节掉链子整机功耗都下不去。1.2 低功耗设计的基本盘先算账再动手搞低功耗设计第一件事不是画原理图而是算功耗预算。我以前做燃气表项目时甲方要求两节AA电池供电目标续航三年。我当时的第一反应就是拿Excel拉了一张功耗表把系统里每一个耗电环节全部列出来。拿纽扣电池方案举例简单算一笔账假设产品每天唤醒10次每次唤醒后MCU全速运行10ms工作电流5mA休眠期间整机待机电流3μA另外还有一个传感器每次采集消耗0.5mAs。那么一天的耗电量大约是唤醒运行5mA × 10ms × 10次 0.5mAs折合0.000139mAh待机功耗3μA × 24h 0.072mAh传感器采集0.5mAs × 10次 5mAs折合0.00139mAh一天合计约0.0735mAh。用220mAh的CR2032理论续航约2993天折合8.2年。这个数字看起来非常理想但注意这只是理论值。电池自放电、电压跌落导致的效率下降、温度影响、DC-DC转换损耗这些都还没算进去。实际工程里一般会打个对折也就是4年左右。如果这个产品目标是“两年续航”那这个方案就有很大的冗余如果目标是“五年”那就得把待机电流继续往下压或者换成容量更大的电池比如CR2477。算完账你才会发现低功耗设计是一个系统性的预算管理过程而不是某一个电路模块的“单点优化”。这时候再看纽扣电池供电电路每个电阻的取值、每个电容的漏电流、每颗芯片的静态电流都需要精打细算。2. 供电电路架构设计与核心器件选型2.1 纽扣电池供电的三大电路架构对比纽扣电池供电方案市面上常见的架构有三种直接供电、LDO稳压供电、DC-DC升压供电。这三种方案各有各的适用场景也各有各的坑我分开说。直接供电是最简单的方案电池正极直接接MCU的VDD电池负极接GND中间加一个100nF去耦电容就行。这种方案的好处是零静态功耗、电路极简、成本最低适合工作电压范围宽的单片机。比如STM32L151的工作电压范围是1.8V到3.6VCR2032的新电池电压约3.3V大部分生命周期内电压都在3.0V以上直接供电完全可行。但问题也明显电池电压会随放电逐渐下降当电压跌到MCU的最低工作电压以下时系统会突然断电没有任何预警。而且如果你的外设里有一个需要稳定3.3V的传感器直接供电就满足不了了。LDO稳压供电是用一颗低静态功耗LDO比如TPS78228静态电流0.5μA把电池电压稳压到3.0V或3.3V供给系统。优点是输出电压稳定不随电池电压波动缺点是LDO本身有静态电流而且输入输出压差越大效率越低。CR2032新电池3.3V输出3.0V压差只有0.3V效率约90%还算可以。但电池电压跌到3.1V以下时LDO接近Dropout区输出会跟着输入走失去稳压效果。所以选LDO时一定要看它的Dropout电压参数选低压差的型号。DC-DC升压供电适合那种必须用1.5V或1.2V单节电池、但系统需要3.3V供电的场景。比如用一颗AA电池供电的温湿度计就会先用升压芯片把1.5V升到3.3V。这种方案的优点是能从低电压电池里榨出能量电池“用到干为止”缺点是DC-DC芯片本身的静态电流通常比LDO大轻载效率也不理想。这里有个常见的误区很多人以为DC-DC效率一定比LDO高但在微安级负载下DC-DC的静态电流可能比负载电流还大实际效率反而远低于LDO。所以微安级休眠系统里LDO或直接供电常常是更优解。我在纽扣电池方案里最常用的组合是MCU直接由电池供电 外设如传感器、LCD通过MOS管开关或LDO独立供电。这样既保证了核心系统的简单可靠又能在休眠时把外设的漏电路径彻底切断。2.2 关键器件选型从MCU到无源器件MCU选型是低功耗设计的重头戏。市面上一大堆“低功耗单片机”但真正能打的型号屈指可数。STM32L151C8T6A是我用得比较多的它的Shutdown模式待机电流约0.29μARTC开启时约1.4μA这在纽扣电池方案里非常能打。另外国产的HC32L196和GD32E503低功耗表现也不错前者待机电流做到0.6μA左右后者在Deep-Sleep模式下也有不错的数据。51单片机阵营里STC系列部分型号也支持多种低功耗模式但整体功耗水平比ARM Cortex-M0的专用低功耗型号差了一个量级适合对成本极度敏感、对续航要求不高的场景。选完MCU还得盯无源器件。这里我要特别强调一下低功耗电路里电阻和电容的选取直接决定静态电流能不能压得住。电阻方面MCU的GPIO上拉/下拉电阻、分压电阻在休眠时必须考虑它们的漏电路径。举个例子一个10kΩ的上拉电阻接在3.3V上静态漏电就是3.3V/10kΩ330μA——这个数字比MCU的休眠电流大了三个数量级。所以在低功耗设计里能用100kΩ就不用10kΩ能接到MCU引脚上由软件控制开关的就不要直接接电源。电容方面被忽略得最多的是漏电流。普通X5R/X7R陶瓷电容的漏电流通常在微安级到毫安级取决于容值和电压而纽扣电池方案里整机目标待机电流就是几微安一个电容漏电就把预算全吃掉了。所以电源滤波电容要选低漏电的C0G/NP0材质或用小容值。我踩过这个坑一个100μF的X5R电容在3.3V下漏电高达几十微安导致整个系统待机电流始终压不下去。后来换成10μF的C0G电容待机电流立刻从30μA左右降到3μA。3. 软硬件协同把纽扣电池方案的功耗压到极致3.1 电源域划分与休眠时的漏电路径切断硬件架构搭好了接下来就是细节操作。纽扣电池供电电路优化核心目标就是“让该睡的器件彻底睡死让必须醒着的器件用最低功耗运行”。这里头最关键的一招就是电源域划分。我之前做过一个智能手表项目主控是STM32L151外接一颗加速度传感器、一颗OLED屏幕、一颗蓝牙芯片。如果所有外设都直接挂在电池上即使MCU进入Shutdown模式传感器的测量模式电流几百微安、OLED的待机电流几十微安、蓝牙芯片的休眠电流几微安叠加起来整机待机电流直接飙到几百微安。这显然是不行的。我的做法是把外设电源统一接到一颗P-MOS管比如SI2301的源极MOS管的栅极由MCU的一个GPIO控制。MCU休眠前先把GPIO拉高关断外设电源唤醒后再拉低恢复供电。这样休眠时外设的漏电路径被物理切断整机电流就只剩MCU自身和MOS管的漏电流轻松压到几微安以内。这里有个细节值得注意MOS管在关断状态下仍然有微弱的漏电流一般是几十纳安到几微安视型号而定选型时要挑低漏电的型号。另外控制MOS管的GPIO在MCU休眠时其状态要保持住否则GPIO变成高阻态MOS管栅极悬空外设电源会处于不确定状态反而更耗电。所以这个GPIO要设置为推挽输出并锁定电平或者用MCU的GPIO保持寄存器来维持状态。3.2 MCU低功耗模式的工程化使用策略STM32L151这类低功耗MCU提供了多种低功耗模式从Sleep到Stop再到Shutdown功耗逐级降低但唤醒延迟和唤醒源也逐级受限。工程上最常用的组合是“最低功耗的Shutdown模式 RTC定时唤醒 外部中断紧急唤醒”。Shutdown模式下MCU大部分数字逻辑都断电了只有备份域和RTC还在工作待机电流可以做到0.29μA左右。唤醒后程序从头开始执行相当于一次冷启动所以得把关键数据提前存到备份寄存器或Flash里防止丢失。RTC配置用LSE外部32.768kHz晶振内部RC振荡器在低功耗模式下精度不够而且功耗更高。LSE起振后RTC的待机电流大约1μA到1.4μA比用LSI内部RC要省不少。这里分享一个我写低功耗代码时的固定套路// 进入Shutdown前的标准流程 void Enter_Shutdown_Mode(void) { // 1. 保存关键数据到备份寄存器 // 2. 关闭外设电源拉高P-MOS控制引脚 // 3. 将所有GPIO配置为低功耗安全状态 // 原则要么输出低电平避免浮空要么设置为模拟输入无漏电 // 4. 配置RTC唤醒时间 // 5. 调用PWR_EnterSHUTDOWNMode() }第3步特别容易踩坑。很多人休眠时GPIO没处理导致引脚处于浮空或高阻态外部干扰信号会通过引脚内部的保护二极管漏电整机功耗直接增加十几微安。正确做法是所有未使用的GPIO设置为模拟输入模式这种模式下引脚内部没有数字输入缓冲器不会产生漏电路径外设占用的GPIO设置为输出低电平——注意是低电平而不是高电平因为输出低时引脚内部PMOS关断不存在通过上拉管漏电的问题。3.3 传感器与无线模块的低功耗挑战谈低功耗设计传感器和无线模块是绕不开的两个大头。很多传感器虽然标称“低功耗”但实际工作电流在毫安级处理不好就是电池杀手。以我常用的SHT30温湿度传感器为例它的待机电流标称0.2μA看似很低但如果你让它保持测量模式它每秒钟测一次平均电流就会涨到几百微安。所以正确用法是平时彻底断电通过MOS管切断电源需要采集时再上电、初始化、测量、读完数据立刻断电。这样每次测量只消耗约十几个毫秒的工作时间平均功耗瞬间降下来。无线模块更是个“电老虎”。蓝牙模块比如nRF52832虽然低功耗模式可以做到几微安但广播时峰值电流能到十几毫安如果广播间隔太短平均电流就上去了。WiFi模块就更不用说了峰值电流几百毫安是常态纽扣电池根本扛不住。所以在纽扣电池供电方案里WiFi几乎是被否掉的大多数产品选BLE并且把广播间隔拉到几百毫秒甚至更长以牺牲连接响应速度换续航。这里要单独说一个热词低功耗语音唤醒。现在很多智能家居设备都在做语音交互但语音唤醒的低功耗处理极其考验架构。麦克风需要一直监听而音频ADC的电流通常在几百微安到几毫安不等如果一直开着纽扣电池几天就没电。目前的解决方案是用一颗专门的极低功耗语音唤醒芯片比如离线语音唤醒芯片待机功耗可以做到几十微安作为“哨兵”检测到唤醒词后再唤醒主控MCU。这种架构能兼顾“随时响应”和“超低功耗”不过成本也上去了适合有一定预算的产品不适合纯纽扣电池方案——通常这个场景会用锂电充电电路配合。4. 一键开关机电路与外围电路细节实录4.1 一键开关机电路纽扣电池方案的隐藏加分项说到外围电路我特别想聊聊一键开关机电路。这个在热搜词里出现了说明确实有不少人关心。很多产品不能一直运行用户需要手动开关机但传统的自锁开关体积大、可靠性差电子开关又涉及“怎么实现零功耗关机”的难题。我常用的方案是用一颗P-MOS管加一颗N-MOS管组成电子开关。关机状态下整个系统的电源被MOS管彻底切断没有任何静态电流用户按下按键后N-MOS管导通把P-MOS管的栅极拉低系统上电MCU开始运行。MCU运行后把一个GPIO设置为高电平通过一个电阻接到P-MOS管的栅极实现“自锁”——即使按键松开系统也能保持供电。需要关机时MCU检测到长按按键先把自锁GPIO拉低再进入关断流程系统断电。这个电路看着简单但有几个坑。第一开机瞬间MCU还没运行自锁信号还没有所以按键必须保持足够长的按下时间否则系统刚上电就断开了。第二关机检测建议用长按而非短按避免误触。第三开机按键引脚要加一个RC滤波防止抖动导致多次开关机。一款产品能多一个“零功耗关机”的功能对纽扣电池方案来说意义很大——因为很多用户并不会等电池自然耗尽而是习惯用完就关机关机后零功耗意味着电池寿命可以被拉得很长。4.2 复位电路、晶振电路和编程接口的隐藏功耗这三个看似外围的小电路每一个都可能成为待机电流超标的隐藏漏洞。复位电路上很多人习惯用10kΩ上拉电阻加100nF电容。但在低功耗设计中这个10kΩ电阻从上拉到地通过复位引脚内部电路一直有电流流过大约0.3μA到3.3μA。如果MCU的复位引脚允许悬空或直接接VDD那就别加上拉电阻。如果必须加把阻值加大到100kΩ以上漏电流降到0.03μA基本可忽略。晶振电路同样如此。HSE外部高速晶振在运行时功耗不低低功耗模式下一定要确认它被关闭了。LSE外部低速晶振虽然功耗低但起振电路本身还是有几百纳安的电流如果产品不需要RTC计时干脆连LSE都别焊用内部LSI虽然精度差一点但省电。需要精确计时的场景用带RTC的MCU配合LSE这是必要的取舍。再说编程接口。SWD/JTAG调试接口在调试时好用但量产版里如果留了这些引脚要注意它们在上电时可能被调试器或外部干扰拉高导致MCU误入调试模式。量产固件里建议把调试端口关闭比如STM32的SWJ配置为GPIO既省电又安全。4.3 电池座与PCB布线的现实问题还有一个容易忽略的点是电池座本身。纽扣电池座的接触弹片如果氧化接触电阻会增大导致系统在峰值电流时电压跌落触发MCU的掉电复位。这个问题在低功耗设备里特别隐蔽因为正常工作电流小电压跌落不明显一旦设备唤醒进入峰值电流电压瞬间被拉低就会无缘无故重启。我处理这个问题的方法有三招第一选镀金弹片的电池座虽然贵一点但氧化风险大大降低第二PCB布局时电池座尽量靠近MCU的VDD引脚减少走线阻抗第三在电池座两端并联一个大一点的低漏电电容比如10μF C0G既能滤除高频干扰又能提供瞬间峰值电流避免电压跌落。这个电容的容值不能太大因为大容值电容在电池刚接入时充电电流会很大可能超过电池的承受能力。PCB布线还有一个细节低功耗电路的地线要单点接地避免数字地和模拟地之间形成地环路否则微小电流会在地线上形成压差干扰低功耗信号的稳定性。5. 实测案例从50μA到2.8μA的完整优化过程5.1 项目背景与功耗基线我用自己的一个实际项目来演示完整的优化过程吧。这个项目是一个以STM32L151C8T6A为核心的便携式环境监测装置用CR2032供电挂载了一颗SHT30温湿度传感器、一颗BMP280气压传感器、一个OLED显示屏只做本地显示、一个BLE模块用于数据上报。产品需求是最少每5分钟上报一次数据目标续航18个月。第一版硬件做出来后我直接上电实测待机电流——50μA出头。这个数值和目标差了很远按220mAh电池算理论续航只有4400小时折合约183天半年都撑不到。当时我就知道问题肯定不止一个。5.2 逐项排查与功耗压降过程我花了整整一个下午做功耗分解把优化前后每一项的电流变化记录下来。先看MCU自身的电流。第一版代码里我让MCU在Stop模式下待机RTC开启LSE运行。实测下来整机待机电流大约9μA。后来我把模式从Stop改成ShutdownRTC改回用LSE再关闭调试端口MCU自身电流从9μA降到0.4μA左右。到这里整机待机电流降到了约41μA。再看传感器。SHT30和BMP280在待机状态下直接连接VDD两个加一起漏电约2μA。我把它们的电源统一接到了一个P-MOS管后面用GPIO控制休眠时关断。传感器漏电从2μA降到约0.02μAMOS管自身的漏电。然后看OLED显示屏。OLED屏即使处于休眠显示模式驱动芯片的静态电流也在10μA量级。我同样把它归到MOS管控制的电源域里休眠时彻底断电。这一下就省掉了大约10μA。BLE模块是最大的耗电源。nRF52832在休眠模式下的电流约3μA但加上模块上的LDO和外围电路实际待机电流能达到12μA。我把BLE模块的电源也做成可关断的正常休眠时彻底断电只在需要上报数据时才上电连接。这一项直接省掉了12μA。最后处理GPIO漏电。我把所有未使用的GPIO设为模拟输入把控制引脚设为输出低电平把复位引脚直接接VDD把10kΩ的上拉电阻改成100kΩ。这些细节加起来省掉了将近8μA。5.3 优化结果与数据传输策略最终整机待机电流稳定在2.8μA左右比优化前的50μA降低了94%以上。按220mAh电池容量计算理论续航约1090天折合约3年远超18个月的目标。实际项目中因为电池自放电和温度影响保守估计也能用两年以上。这个项目的核心思路值得再说一遍功耗优化不是盯着某一个模块死磕而是把整机系统里的所有漏电路径逐一梳理清楚然后针对每一条路径找到阻断它的方法。在数据传输策略上我还优化了上报逻辑BLE模块平时断电只有需要上报时才上电连接连接成功后快速发送数据发送完立刻断电。单次上报周期内BLE模块的工作时间控制在200ms以内平均功耗增加不到0.5μA。后来我用HC32L196重新移植了这个方案效果也不错。这颗芯片的Shutdown模式下待机电流也能做到0.6μA左右而且价格更低在一些成本敏感的项目里是STM32L151的不错替代品。GD32E503做低功耗相对差一些更适合做主控性能要求高的场景。6. 常见问题与排查技巧实录6.1 待机电流异常的排查思路做低功耗设计最怕的就是“代码写的没问题电路也按参考设计来的但待机电流就是下不去”。这种事我碰到的次数太多了总结了一套排查流程第一步分模块确认。把板子上能拆的器件都拆掉只保留MCU最小系统测试待机电流。如果这时候电流正常微安级说明问题出在外设或外围电路上如果电流还是很高那就先解决MCU最小系统本身的问题。第二步逐个恢复外设。把外设一个一个焊回去或接回去每接一个就测一次待机电流。哪个模块接上去电流飙升问题就锁定在哪个模块上。第三步测量漏电路径。用万用表或微安表测量可疑节点的电流比如外设的VDD引脚、上拉电阻两端、GPIO引脚。漏电方向可能是从电源经电阻到地也可能是从GPIO经内部保护二极管到电源。我遇到过一种特别隐蔽的情况MCU的一个GPIO配置为输入模式外部接了一个上拉的传感器中断引脚。休眠时传感器断电了但它的中断引脚还挂在MCU的GPIO上此时这个引脚的电平不确定MCU的内部上拉/下拉电阻会被反复激活电流忽大忽小。解决办法就是把这个GPIO改成推挽输出低电平把中断唤醒改为仅在传感器上电时启用。6.2 纽扣电池供电常见的五大坑纽扣电池低压供电方案有几个高频踩坑点我整理成表格方便排查问题现象可能原因解决方案刚换电池就掉电电池座氧化导致接触电阻过大换镀金弹片电池座并联大容量低漏电电容休眠电流正常唤醒后死机电池内阻大峰值电流拉低电压触发BOR复位并联储能电容降低峰值电流如分时启动外设待机电流忽高忽低GPIO悬空导致内部保护二极管漏电所有GPIO设为模拟输入或输出低电平系统能跑但续航远低于预期LDO或DC-DC的静态电流被忽略确认LDO静态电流微安级负载下慎用DC-DC低功耗模式进不去或唤不醒调试端口未关闭或休眠流程被中断打断关闭SWJ调试端口休眠前关闭全局中断唤醒后重新初始化6.3 测量工具的独门使用技巧低功耗调试万用表测待机电流是基本功但这里有个技巧用万用表串联测电流时压降会影响MCU的工作状态。大部分万用表的电流档内阻在几十毫欧到几欧姆之间。测微安级电流时这个内阻上的压降可能只有零点几毫伏问题不大。但有些万用表的电流档内阻偏高特别是低端型号在mA档位内阻可能有几十欧姆串联进电路会导致MCU供电电压被拉低系统表现异常。我自己常用的方法是用微安级电流表或者采样电阻法在电池负极串联一个10Ω的精密采样电阻用示波器或高精度万用表测电阻两端的压降根据欧姆定律算出电流。这个方法的好处是能看到电流的实时波形特别是休眠和唤醒瞬间的电流变化这对定位“哪一秒电流飙升”非常有帮助。另外我还习惯在电池回路里串联一个1Ω的电阻配合一个100μF的电容做RC滤波测量平均电流。这样能过滤掉MCU唤醒瞬间的脉冲电流得到更真实的平均功耗数据——毕竟电池的容量是按平均电流消耗的不是按峰值电流。6.4 从“能跑”到“好用”的几条经验最后分享几条我在低功耗项目中反复验证过的经验。第一尽量选有“真低功耗”模式的MCU。STM32L151、HC32L196这类芯片的Shutdown模式是真正把大部分电路都断电了而很多通用MCU的“低功耗模式”只是降频或停止CPU外设还在跑待机电流几十微安起步。选型时一定要看数据手册里“典型待机电流”那一栏而不是看宣传页上的“低功耗”三个字。第二硬件上留好测试点。PCB上一定要预留几个关键节点电池正极、MCU供电、外设电源控制脚的测试点方便调试时直接测量。没留测试点的板子调试时只能飞线又丑又容易短路。第三功耗预算表要保持更新。从一开始做方案就建一张Excel功耗表把每一版方案的待机电流、工作电流、工作时长、目标续航全部记录在案。这样每次修改都知道哪个参数变了、对续航影响多大。这个习惯帮我省了很多回头的功夫。第四别迷信参考设计。芯片厂商的应用笔记里的低功耗电路多数是针对理想情况设计的。真正落到自己的产品上还得结合实际外设、实际代码、实际工作场景来调。比如厂商给的参考设计里休眠时外设电源控制引脚是推挽输出高电平但在你的板子上这个电平可能需要反过来具体得看MOS管的类型是P沟道还是N沟道。低功耗设计这条路说难不难说简单也不简单。核心就是耐心地把每一条漏电路径找出来、堵上它再把软件策略配合上去。做多了你就会发现其实没有什么“玄学”所有问题都能归结到具体的电流路径上。按照这套方法论去排查再复杂的低功耗问题也一定能水落石出。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。