普通电池给单片机供电:电压电流、LDO升压选型与续航估算

发布时间:2026/11/3 15:44:12
普通电池给单片机供电:电压电流、LDO升压选型与续航估算

1. 先算账:单片机到底要吃多少电

给单片机供电这件事,听起来像是电子入门第一课,但真正在项目里把电池方案做稳,比写代码要难得多。做过几个电池供电的小设备之后就不难发现,问题很少出在“电压不对”,更多是出在“电压在某个瞬间塌了”“电池末期容量用不出来”“休眠状态下一周就没电”。普通电池给单片机供电,核心是三件事:把电压落在单片机允许的区间里、把峰值电流喂得起、把静态损耗压到最低。这三件事做好了,一节五号电池撑半年不是玄学。

这篇东西适合谁看?如果你是刚接触单片机、手里只有几节干电池和一块最小系统板,想先让它亮起来跑起来,前后几节里的具体电路可以直接抄。如果你已经在做电池供电的成品,被续航、复位、ADC 漂移这些问题折腾过,那中间关于内阻、压差、效率、静态电流的算法和排查表格,大概能帮你少走几趟弯路。我不打算从电池化学讲起,只讲工程上真正要决策的那几个数。普通电池供电、单片机供电方案、LDO 与升压选型、低功耗续航估算,这几个关键词会贯穿全文。

开始之前先立个规矩:所有讨论都基于“电池是唯一的能量来源”,不考虑边充边用、不考虑外接适配器。一旦接受了这个前提,很多选型上的纠结其实是被逼出来的,并不存在什么完美方案,只有权衡。

1.1 电压:标称值不顶用,要看全程区间

新手最容易犯的错,是把电池的标称电压当成稳定输出。一节标称 1.5V 的碱性电池,空载新电池实测能到 1.60V 上下;接上几十毫安负载会掉到 1.45V 左右;放到快没电的时候,1.0V 甚至 0.9V 都还能撑一阵。也就是说,单节电池在整个生命周期里的电压跨度接近 0.7V。两节串联就是 2.0V 到 3.2V,三节串联是 3.0V 到 4.8V。这个跨度比很多人想象的大得多。

单片机的电压容忍度是另一头。常见的 3.3V 系统,数据手册一般写工作范围 1.8V~3.6V 或者 2.0V~3.6V,绝对最大额定值 4.0V 左右;5V 系统是老一代的 4.5V~5.5V。这里面有两个坑:一是绝对最大额定值不是工作范围,超过工作上限哪怕芯片还能跑,时序和 ADC 精度也已经不保证了;二是电源上升沿和下降沿,很多芯片对上电斜率有要求,电池慢慢耗尽导致的缓降,可能让芯片进入不确定状态,比直接断电还麻烦。

所以判断一个电池方案能不能用,看的不是“标称电压除以几节”,而是把放电曲线画出来,看单片机的整个工作区间是否被覆盖。三节碱性电池从 4.8V 放到 3.0V,覆盖 3.3V 系统的全部区间,只要中间加个稳压;两节碱性电池从 3.2V 放到 2.0V,只有前半段能覆盖 3.3V 系统,后半段必须靠升压。这就是为什么“两节电池还是三节电池”这个看似随意的决定,直接决定了后面电路长什么样。

1.2 电流:平均电流骗人,峰值电流要命

第二个被严重低估的参数是电流。很多人在选电池的时候只算平均电流:单片机跑起来 5mA,休眠 10µA,一平均才几百微安,那电池不是随便挑?然后板子一上电,屏幕点不亮、无线模块发不出去、时不时复位。原因很简单,电池能提供的瞬时电流和平均电流完全是两码事。

干电池的内阻在几十到几百毫欧量级,两节串联接近 0.5~1Ω,这个数值听起来很小,但 100mA 的瞬时电流会在它上面产生 50~100mV 的压降。如果这颗电池本身已经放到 1.1V,两节串联只剩 2.2V,再掉 100mV,后面的升压电路输入就只有 2.1V,如果升压芯片的启动阈值是 2.2V,那就直接关机重启。这就是所谓的“电池还有电但设备开不了机”。

纽扣电池更极端。一颗标称 3V 的锂锰纽扣电池,内阻能有 10~40Ω,标称连续放电电流建议控制在 1mA 以内,峰值也就十几毫安。你要是拿它去驱动一个峰值 80mA 的无线模块,电压瞬间被拉到 1V 以下,单片机必然复位。这不是电池坏了,是物理规律。选电池的第一步,是把系统的峰值电流、持续时间、占空比列出来,再去看电池的脉冲放电能力,而不是只看容量。

1.3 电池侧的被忽略参数:内阻与放电曲线

除电压和容量,还有三个参数值得在选型时落到纸面上。

第一是内阻,前面说了,它决定了瞬态压降。同类型电池里,碱性电池内阻明显小于碳性电池,所以便宜到离谱的碳性电池用在有脉冲负载的板子上,表现会差很多。第二是放电曲线形状,碱性电池是缓慢下降的斜坡,锂亚电池是极其平坦的平台然后骤降,磷酸铁锂介于两者之间。曲线形状直接影响你的电量检测策略:斜坡型可以用电压估算剩余电量,平台型不行,一测全是 3.6V,掉下来的时候已经没电了。第三是温度特性,普通碱性电池在 -10℃ 时可用容量可能掉到标称的五六成,锂亚和锂锰在低温下表现要好得多。户外设备如果只做常温测试,冬天大概率翻车。

我一般会在方案阶段做一张小表,把候选电池的标称电压、容量、内阻、工作温度、单位成本列进去,然后拿系统的电压区间和峰值电流去逐条比对。这张表花不了十分钟,但能挡掉后面很多返工。

2. 电池怎么挑:五类常见方案的横向对比

2.1 一张表看清各自的适用边界

先给结论型对照,后面再逐条展开。这张表里的容量取的是常见规格的典型值,实际采购的批次差异不小,做估算时建议再打个八折。

电池类型标称电压典型容量内阻量级峰值电流能力适合场景主要短板
碳性干电池(AA/AAA)1.5V500~800mAh高,数百毫欧弱成本极敏感的短时设备内阻大、容量虚、易漏液
碱性电池(AA/AAA)1.5V1800~2800mAh中,100~300mΩ中,几百 mA通用低功耗设备电压随放电持续下滑
锂锰纽扣(CR2032 类)3.0V200~240mAh高,10~40Ω很弱,10mA 以内长期休眠的传感器节点脉冲能力差、不可充
锂离子/锂聚合物3.7V(3.0~4.2V)500~5000mAh低,几十毫欧强,数安培有峰值负载的便携设备需要充放电管理、成本高
锂亚硫酰氯(ER 系列)3.6V1000~2600mAh很高,几十欧弱十年免维护的极低功耗场景内阻大、不可充、脉冲差

看表的时候有个诀窍:先按峰值电流筛掉一批,再按电压区间筛掉一批,剩下的才比容量和成本。很多选型争论其实是把顺序搞反了,一上来就比谁容量大,结果选出个内阻大到带不动负载的型号。

2.2 干电池与碱性电池:便宜,但要用对串联节数

普通干电池是最容易获得的方案,尤其是 AA 和 AAA 规格。它的价值在于便宜、好买、可更换,缺点在于电压一路下滑。用它给 3.3V 单片机供电,节数的选择几乎是唯一的决策点。

两节串联(3.0V 标称):新电池 3.2V,直接供 3.3V 系统属于“勉强够”,但只能用到 3.0V 左右,后面的容量全浪费了。如果配一颗低压差线性稳压器(比如压差 100mV 以内的型号),能撑到 2.5V 左右,大概用出六成容量。要榨干电池,只能上同步升压,把 2.0~3.2V 稳定抬到 3.3V。

三节串联(4.5V 标称):这是 3.3V 系统最省心的组合。新电池 4.8V,接普通 LDO 完全工作在稳压区,一路用到 3.0V 都还有余量。代价是线性稳压的功耗要算清楚:负载 30mA、压差 1.5V 时,稳压器上要烧掉 45mW,SOT-23 封装摸上去会温热,SOT-89 或 SOT-223 就很轻松。

四节串联(6.0V 标称):除非你的系统就是 5V,否则不建议。3.3V 系统用四节,压差 2.7V,效率只有 55%,一半以上的能量变成了热。我见过用四节 AA 供 3.3V 的板子,稳压器烫到手不敢碰,续航还只有理论值的六成。

还有一点必须提醒:别混用新旧电池,别混用不同型号。串联组里最弱的那节决定了整组的截止点,混用会让好电池的容量也被浪费,而且反向充电有漏液风险。

2.3 纽扣电池:低功耗场景的老朋友,别拿它当动力电池

CR2032 这类锂锰纽扣电池,几乎是所有低功耗传感器节点的标配。3.0V 标称,200mAh 左右的容量,自放电小,放个五年还有八成电,价格一两块钱。它的正确用法是:单片机长期休眠,平均电流在几十微安以内,偶尔唤醒采样,峰值电流控制在几毫安。

之所以强调峰值,是因为它的内阻实在太大了。一颗快没电的 CR2032,内阻能到 40Ω 以上,这时候你哪怕只拉 10mA,也会产生 0.4V 的压降。很多人的板子在实验室用新电池一切正常,装到现场用旧电池就开始随机复位,查了半天代码,最后发现是电源塌了。

如果确实需要短时的大电流脉冲(比如无线发射),有两个办法:一是在电池两端并一个大电容,100µF 到 470µF 的低 ESR 电解或钽电容,让电容去扛瞬时电流;二是把峰值负载和电池解耦,用一个小容量的超级电容或者薄膜电容做缓冲。这两个都是我实际用过、确实有效的做法,成本也就几毛钱。串联并联的问题也顺带提一句:纽扣电池不建议并联,内阻差异会导致放电不均,也不建议用两节串联去凑 6V,除非你的负载非常轻。

2.4 锂离子与锂聚合物:能量密度高,电压窗口要规划

锂离子和锂聚合物电池的能量密度是干电池的好几倍,内阻小,能提供很大的峰值电流,是目前便携设备的主流选择。但它的电压窗口有个特点:4.2V 满电,3.7V 标称,3.0V 截止,中间大部分容量集中在 3.6~4.0V 这一段。

拿它供 3.3V 系统,最直接的做法是接一颗 LDO。问题是,4.2V 降到 3.3V 有 0.9V 压差,效率 78% 左右;等电池放到 3.5V 以下,LDO 就掉出稳压区了,输出跟着往下掉。也就是说,标称 3.7V 的电池,实际只有 4.2V 到 3.4V 这一段能用,后面的容量用不上。解决办法有三条:换用压差极低的 LDO(几十毫伏级别),能多榨一点;改用降压型开关电源(Buck),效率能到 90% 以上;或者干脆选 2.5V/2.8V 输出的 LDO 配低压单片机,让整个放电区间都落在稳压范围内。

顺带说一句,锂电池不能直接接单片机裸奔。4.2V 已经超过多数 3.3V 芯片的绝对最大额定值,而且过放会永久损坏电池。要么加保护板,要么自己做过放检测,这件事没有商量的余地。

2.5 特殊补充:锂亚电池、磷酸铁锂、组合方案

锂亚硫酰氯电池(ER 系列)在低功耗领域几乎是传奇级别的存在,3.6V 平台极其平坦,自放电低到可以忽略,标称十年寿命不是吹的。代价是内阻大、脉冲能力差、价格高,而且不可充电。它适合那种“装上去就不打算再管”的场景,比如埋在墙里的传感器、水表电表模块。用它的时候,脉冲负载必须靠电容缓冲,否则一样会塌。

磷酸铁锂(3.2V 标称)的好处是电压平台稳、循环寿命长、安全性好,缺点是能量密度低一些,低温性能也一般。它配 3.0V 系统或者 2.8V 系统挺合适,配 3.3V 系统就得看低压差了。

还有一种实用思路是组合方案:主电池负责长期待机,超级电容负责瞬时脉冲。或者主电池加一颗小容量可充电池做缓冲,工作时由缓冲电池供电,休息时主电池给它慢充。这种做法在无线传感器节点上很常见,成本增加不多,但能把纽扣电池的可用范围扩大一大截。

3. 稳压方案定调:直供、LDO、升压、降压四条路

3.1 直供:不是不行,是有前提

所谓直供,就是电池直接接到单片机的 VCC,中间只有一个去耦电容。很多人一听就摇头,觉得不专业,但在某些条件下它是最优解:没有稳压器的静态损耗,没有压差损失,成本最低,效率接近 100%。

能用直供的条件很明确。第一,电池的电压区间必须完全落在单片机的工作范围内,包括满电和放空两头。比如用一节锂亚电池(3.6V 平台,几乎不波动)供一颗 1.8~3.6V 的低压单片机,就基本可行;用两节碱性电池供 3.3V 芯片就不行,因为满电 3.2V 已经很接近上限,新电池刚拆封时甚至可能超。第二,系统对电源纹波和精度不敏感,或者说能接受电压随电池下滑——ADC 如果用 VCC 做基准,读数会一路漂移,这种场合就得改用内部基准或者外部基准。第三,没有大电流脉冲负载,或者已经用电容缓冲过。

我个人的判断标准是:如果电池的全程电压波动小于单片机工作范围的 50%,且 ADC 不用 VCC 做基准,直供可以考虑;否则老老实实加稳压,省下的那点成本不值得后面调试的时间。

3.2 LDO:最简单,但热耗和压差是硬约束

低压差线性稳压器是电池供电最常用的方案,外围只要一两个电容,没有开关噪声,输出干净,特别适合给模拟电路和射频前端供电。它的代价是效率等于输出电压除以输入电压,压差越大越亏。

以 3 节 AA 供 3.3V 为例,输入 4.5V,输出 3.3V,效率 73%,负载 30mA 时自身耗散 36mW。这个数字在 SOT-23 封装上还能接受(热阻约 250℃/W,温升 9℃),但如果你要做 200mA 的负载,耗散就变成 240mW,温升 60℃,芯片会进入热保护或者寿命受影响。选 LDO 的时候有三个参数必须看:压差(dropout)、静态电流(Iq)、输出电容要求。

压差决定了电池能用多深。普通 1117 类器件压差在 1.0~1.3V,意味着输入必须高于 4.3V 才能稳住 3.3V,三节电池一装上去就掉出稳压区,这显然不行。要选压差 100mV 以内的低压差型号,才能让三节电池一直用到 3.4V 附近。

静态电流决定了待机损耗。老式 LDO 的 Iq 有几毫安,你的系统休眠电流本来只有 5µA,结果稳压器自己吃掉 3mA,整个低功耗设计就白做了。低功耗场景要选 Iq 在 1µA 以下、最好几百纳安的型号。这个参数在选型表里往往藏在很后面,一定要翻到。

输出电容要求则关系到稳定性。有些 LDO 要求输出电容的 ESR 在特定范围内,用错类型的电容会自激振荡,输出上叠着几百毫伏的纹波,表现为单片机莫名其妙重启。老老实实按手册推荐的容值和类型来,别自作主张。

3.3 升压:2 节干电池带 3.3V 系统的正解

两节干电池是最常见的电池仓规格,3.0V 标称,但要让 3.3V 单片机稳定工作,必须升压。同步整流升压芯片的效率能到 85%~95%,静态电流可以做到几微安,输入电压低到 0.9V 还能启动,是干电池方案的标配。

用升压要注意几个点。启动电压和维持电压不一样,有些芯片需要 1.8V 才能启动,启动后能维持到 0.9V,这在电池快没电、又赶上冷启动的场景下会出问题。输入峰值电流较大,因为输入电压低,同样的输出功率对应的输入电流更高,前面算过,30mA 输出、效率 88% 时输入电流约 37mA,对干电池来说不算大,但如果是 300mA 的负载,输入电流就接近 350mA,电池内阻上的压降会把输入电压进一步拉低,形成恶性循环,所以大电流场合要算清楚内阻压降。开关噪声是升压的固有缺点,给射频或者高精度模拟电路供电时,输出要多加 LC 滤波,布局上远离敏感走线。

3.4 降压与升降压:大电流和宽电压场合适用

锂电池供 3.3V 系统,如果负载电流超过 100mA,用 LDO 就很亏了。这时候上同步降压,效率 90% 以上,发热小,续航明显改善。降压芯片的选型重点在轻载效率,很多芯片在满载时效率漂亮,一到几毫安的小电流就掉到 60%,因为它用的是强制 PWM 模式。要选支持 PFM/省电模式自动切换的型号,轻载时自动切到低功耗模式。

升降压(Buck-Boost)是万金油,输入高于、低于、等于输出都能稳住,适合电池电压跨过输出电压的场景,比如 3.0~4.2V 的锂电池供 3.3V 系统。缺点是成本和复杂度高一些,效率也比纯升压或纯降压略低,但在宽输入范围的场合,它的稳定性优势很明显。

3.5 选型决策的四个问题

我在做方案的时候会依次问自己四个问题,基本能收敛到唯一答案。

第一,电池的全程电压区间是多少?画出来,标上满电、标称、截止三个点。第二,这个区间和单片机工作区间的交集有多大?如果电池全程都在单片机范围内,直供或 LDO 都行;如果跨越了,就要考虑升降压。第三,峰值电流多大、持续多久、占空比多少?这决定了是用 LDO 还是开关电源,以及要不要加缓冲电容。第四,待机电流的目标是多少?如果目标是微安级,那 LDO 的静态电流和芯片的休眠电流必须同时满足,任何一个不达标都不行。

把这四个问题的答案写在一张纸上,选型就不太会跑偏。

4. 三套可复现的供电电路实操

4.1 方案A:3节AA + 低压差LDO,最省心的入门做法

这是我最推荐给新手的方案,元件少、成功率高、不需要调试。

物料清单:三节 AA 电池盒一个,低压差 3.3V 线性稳压器一颗(SOT-23 或 SOT-89 封装,压差 100mV 以内,静态电流按需选择),输入电容 10µF、输出电容 10µF 各一只,0.1µF 陶瓷电容两只,外加一个肖特基二极管做反接保护。

接线顺序:电池正极经过二极管(或者 P 沟道 MOS 反接保护)进稳压器 VIN,VIN 到 GND 之间放 10µF 和 0.1µF 并联,稳压器 VOUT 到 GND 之间同样放 10µF 和 0.1µF,VOUT 去单片机的 VCC 引脚,且在每个电源引脚附近再放一颗 0.1µF。

关键计算:假设负载平均 25mA,峰值 60mA。三节新电池 4.8V,末期 3.0V。压差最大时(4.8V 输入)耗散为 (4.8-3.3)×0.06 = 90mW,SOT-89 封装完全没问题。反接二极管会带来 0.3V 压降,注意把它算进最低输入电压里,末期 3.0V 减去 0.3V 只剩 2.7V,已经低于 3.3V 输出了——所以反接保护最好用 P 沟道 MOS 方案,压降只有几十毫伏。这个细节很多人忽略,直接导致电池后半段用不出来。

实测表现:这套电路在常温下给一块带 OLED 的板子供电,工作电流 20mA 左右,三节 2000mAh 碱性电池能跑 60 小时上下,符合估算。

4.2 方案B:2节AA + 同步升压,压榨电池末期容量

如果想用两节电池仓,或者想尽可能把电池榨干,就上升压。这套方案的元件稍多,但收益明显。

物料清单:两节 AA 电池盒,同步升压芯片一颗(输入 0.9V 可启动,输出 3.3V,静态电流几微安级别),升压电感一颗(4.7µH 或 10µH,饱和电流要大于峰值输入电流的 1.5 倍),输入输出电容各 22µF,反馈电阻两颗(如果用固定输出版本可以省掉)。

参数计算:负载 3.3V/50mA,输出功率 165mW,按 88% 效率算,输入功率 187mW,输入电压 3.0V 时输入电流 62mA,输入电压 2.0V 时输入电流 94mA。电感饱和电流至少选 150mA 以上,我一般直接上 1A 的,留足余量,成本也就多几分钱。电池内阻按两节共 0.6Ω 算,94mA 时压降 56mV,影响可控。

布局要点:升压电路的布局比选型更重要。输入电容必须紧贴芯片的 VIN 和 GND 引脚,电感的走线要短而粗,反馈节点要远离电感和开关节点,否则输出纹波会大得离谱。我见过把电感放在板子另一头、用细线连过去的,输出纹波 200mV,单片机根本没法稳定工作。

实测表现:两节 2000mAh 碱性电池,50mA 负载,实测续航约 30 小时,比同条件下的 LDO 方案(只能用前半段容量)多出三成左右。

4.3 方案C:CR2032直供低功耗单片机,纽扣电池的正确打开方式

低功耗节点用纽扣电池,最好的方案往往是不加稳压器。多加一级 LDO,哪怕静态电流只有 1µA,在微安级的系统里也是大头。前提是单片机的工作电压覆盖 3.0V 附近,且能用内部基准做 ADC。

电路要点:CR2032 电池座出来先串一个 100Ω 电阻(配合后级电容做简单的限流和滤波),然后并一颗 100µF 的低 ESR 钽电容和一颗 0.1µF 陶瓷电容,再进单片机 VCC。这颗 100µF 电容是整套方案的核心,它负责在唤醒和无线发射的瞬间提供电流,把电池从脉冲负载里解放出来。电阻的取值要算:如果峰值电流 10mA,100Ω 会产生 1V 压降,太大了,这时候应该降到 10Ω 甚至直接短路,只留电容。具体取值看你的峰值电流,我的经验是让电阻上的压降不超过 100mV。

另一个关键点:单片机必须有欠压检测(BOR)并且打开,在电压跌到 2.0V 之前主动进入复位或休眠,避免在低压下跑飞、写出错误的 Flash 数据。

实测表现:一块每 10 秒唤醒一次、每次工作 2ms、工作电流 4mA 的温湿度节点,休眠电流 1.5µA,平均电流约 2.3µA,理论续航 200mAh / 2.3µA ≈ 8.7 年。实际受电池自放电和温度影响,标称 5 年左右比较靠谱。这里特别提醒,这种量级的续航不能只靠算,一定要实际挂表测一周的平均电流,再看电压下降曲线。

4.4 布线与焊接:那些决定成败的小细节

电路图对了,板子做出来不工作,八成是布局布线的问题。

电源走线要够宽。1 盎司铜厚、10℃ 温升的条件下,0.5mm 线宽大约能过 1A,但那是极限,实际留一倍余量比较稳。电池座到稳压器这一段、稳压器到单片机这一段,都要加宽,别用信号线的宽度走电源。

去耦电容的位置比数量重要。0.1µF 必须放在芯片电源引脚 2mm 以内,地要就近打过孔回到地平面。放远了等于没放,这句话不夸张。

电池座的接触电阻要重视。便宜的电池座弹片氧化以后,接触电阻能到几欧姆,比电池内阻还大,表现就是“新电池装上也不工作”。选镀镍或者镀金的弹片,长期使用的设备最好点焊引线,别依赖弹簧压接。

焊接 LDO 和升压芯片时,烙铁温度别超过 350℃,单点加热时间控制在 3 秒以内。SOT-23 封装的芯片很娇气,焊久了参数漂移甚至直接损坏,而且这种损坏往往是“能输出但纹波巨大”,很难查。

5. 续航估算:从毫安时到实际能用多少天

5.1 估算公式与三个打折系数

基本公式很简单:续航小时数 = 电池可用容量 ÷ 系统平均电流。但直接这么算出来的数字,通常会比实测乐观一倍以上,因为它忽略了三个损耗。

第一个系数是容量折损。电池标称容量是在特定放电条件下测的(比如 20℃、恒定小电流、放到 0.8V),实际设备的放电电流往往更大、温度更低,可用容量要打七到八折。低温环境再打一次折,-10℃ 时按六折算。

第二个系数是转换效率。用 LDO 就是输出电压除以平均输入电压,用升压就是 85%~90%,用降压是 88%~93%。再加上稳压器自身的静态电流损耗,低功耗场景下这部分不能忽略。

第三个系数是自放电和老化。碱性电池年自放电 2%~3%,锂电池更低,但长期存放仍有损耗。如果设备设计寿命是三年以上,这一项要算进去。

把这三个系数乘起来,很多看起来能跑一年的方案,实际只有半年。

5.2 两个完整算例

算例一:三节 AA 供 3.3V,LDO 方案,工作电流 20mA 连续运行。电池标称 2000mAh,按 0.8 折损得 1600mAh 可用。平均输入电压按 4.0V 算(从 4.8V 放到 3.3V 的中间值),LDO 效率 3.3/4.0 = 82.5%。那么电池端的等效电流是 20mA / 0.825 = 24.2mA,续航 1600 / 24.2 ≈ 66 小时。如果换成升压方案,输入平均电压按 2.6V 算,效率 88%,输入电流 20×3.3/(2.6×0.88) = 28.8mA,可用容量按两节 4000mAh 打八折 3200mAh,续航 111 小时。升压方案在这里的优势非常明显,因为电池串联数少了、内阻损耗低、还能把末期容量用出来。

算例二:CR2032 供低功耗节点,休眠 2µA,每 30 秒唤醒 3ms 采一次数据,工作电流 5mA。占空比 3ms/30000ms = 0.0001,工作部分的平均电流 5000µA × 0.0001 = 0.5µA,加上休眠 2µA,总共 2.5µA。200mAh 电池按 0.75 折损得 150mAh,续航 150000µAh / 2.5µA = 60000 小时 ≈ 6.8 年。这个结果看起来很长,但实际上电池自放电(每年 1%~2%)在后期会成为主要因素,而且低温下内阻上升会让有效容量下降,所以我一般对外标称 5 年。做产品的时候,把标称值说保守一点,后面少很多麻烦。

5.3 降低平均电流比换大电池更管用

做过几个项目之后我的体会是:续航的瓶颈几乎从来不在电池容量,而在平均电流。把休眠电流从 50µA 降到 5µA,效果相当于把电池容量放大十倍,而成本可能只是换一颗更贵的稳压器、关掉一个没用到的外设时钟。

具体的做法有几条:休眠前把没用到的外设电源全部断掉,用 MOS 管做分区供电;把 LED 这种“指示灯”的限流电阻加大到 1k 以上,或者干脆用低占空比闪烁;提高采样间隔,能用 1 分钟采一次的就别用 1 秒;把数据处理集中在唤醒后的几毫秒里做完,别让芯片长时间处于半睡半醒的高功耗状态;如果用了稳压器,选静态电流 1µA 以下的型号。

还有一条容易被忽略:调试接口的漏电。SWD 的引脚如果外部上拉,或者下载器一直挂着,休眠电流会莫名增加几十微安。做功耗测试时一定要把调试器拔掉,用独立的电池供电测,否则数据全是错的。

6. 常见问题与排查实录

6.1 故障速查表

下面这张表是我这些年攒下来的,遇到问题先对着翻一遍,能省不少时间。

现象最可能的原因排查方法处理办法
新电池装上不工作,万用表量电压正常电池座接触电阻过大带载测电池座两端电压清洁弹片或更换电池座
工作时随机复位峰值电流导致电压瞬跌示波器看 VCC 在负载动作瞬间的波形加大去耦电容、改用内阻小的电池
电池用到一半就罢工,拆下来量还有电电压跌出稳压器压差范围测量带载时的输入电压换低压差器件或改升压方案
ADC 读数随电池电量漂移用 VCC 做基准换固定电压输入对比读数改用内部基准或外部基准
休眠电流远超标称稳压器静态电流大、外设未断电分段断开测量换低 Iq 器件、加分区供电
升压输出纹波大、单片机不稳布局不良、电感或电容选型不当示波器看开关节点和输出缩短走线、加大输出电容
低温环境下无法启动电池内阻上升、容量下降低温箱测试换低温型电池、加大缓冲电容
长期存放后漏液腐蚀电池过放检查是否有防过放设计加欠压关断、定期更换

6.2 几个踩过的坑

坑一:以为电压够就行,忽略了上电斜率。有一批板子用三节电池供电,电池快没的时候,电压缓慢下降,单片机进入了某个中间状态,看门狗没触发,程序卡死但电流很小,表现出来就是“设备死了但电池还有电”。后来加了专用的电压检测芯片,低于阈值直接拉复位,问题消失。这件事让我记住了:缓慢掉电比突然断电更危险。

坑二:升压芯片的启动电流把电池拖死了。一款升压芯片标称输入 0.9V 启动,实际测试发现用一节快没电的 AA 电池(1.0V,内阻 1Ω)根本起不来,因为启动瞬间要拉 200mA 的冲击电流,1.0V 减掉 0.2V 只剩 0.8V,低于启动阈值。解决办法是输入端并一个大电容,让电容提供启动瞬间的电流,正常启动后再由电池维持。这个细节手册上写了,但字很小,容易被跳过。

坑三:去耦电容用了大容值电解,结果低频振荡。某些 LDO 对输出电容的 ESR 有下限要求,用 ESR 极低的陶瓷电容反而会振荡。这种情况要么换器件,要么在输出串一个零点几欧的小电阻,破坏振荡条件。查手册的“稳定性”章节,别只看典型应用图。

坑四:以为休眠电流是芯片决定的。实测一块板子休眠电流 80µA,查了半天芯片手册,标称是 1µA。最后发现是一个未使用的引脚悬空,漏电流加上板子上的助焊剂残留吸潮,贡献了大半。清理板子、把所有未用引脚配置成模拟输入或者带上拉输出,电流降到 3µA。功耗测试一定要在清洗过的板子上做。

6.3 保护与安全:别让电池变成隐患

电池供电的设备,安全设计不能省。反接保护是最基本的,用户装反电池是常态。串一个肖特基二极管简单,但会损失 0.3V 压降,对低压系统不友好;用 P 沟道 MOS 做理想二极管,压降只有几十毫伏,成本多几毛钱,我更推荐后者。

过放保护同样重要。碱性电池过放到 0.8V 以下容易漏液,腐蚀电路板;锂电池过放到 3.0V 以下会永久损坏,再充电有风险。做法是在固件里做电压监测,低于阈值主动关机并锁死,等换电池后复位。硬件上可以加一颗电压检测芯片做双重保险。

还有一点是发热。线性稳压器在大压差、大电流下会发烫,如果设备是密闭外壳,热量散不出去,长期工作在高温下寿命会明显缩短。做结构设计的时候给稳压器留点散热铜箔,或者干脆改用开关电源,这个问题从源头就没了。

另外提醒一句:不同种类、不同新旧程度的电池绝对不要混装。串联组里容量最小的那节会先放空,然后被其他电池反向充电,轻则漏液,重则鼓包。这条在说明书里写清楚,能减少很多售后。

最后分享一个我一直在用的小习惯:每块电池供电的板子做完,我都会挂一个电流表连续记录 48 小时,把上电、工作、休眠、峰值几个阶段的电流曲线拉出来看一眼。这张图比任何估算都真实,很多设计上的问题在这张图上一目了然——比如某个本该休眠的外设其实一直在跑,比如峰值电流比预期高了一倍。花两天时间,换来的是后面几个月的安心。