ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

普通电池给单片机供电:选型、稳压、续航与复位排查实战

普通电池给单片机供电:选型、稳压、续航与复位排查实战

做小板子做久了会发现,真正让人返工的往往不是代码,而是电。尤其是当你打算用普通电池给单片机供电的时候,问题会成倍冒出来:明明万用表量着电压够,一上电就跑飞;明明算着能用一个月,结果三天就趴窝;明明换了一节新电池,程序还是反复复位。这些坑我在做小型电池节点、手持采集器、无线温湿度标签的时候几乎全都踩过一遍。这篇内容就把“用普通电池给单片机供电”这件事从需求拆解到电路选型、从参数计算到实测调参,完整讲一遍,包括干电池、纽扣电池、9V 叠层这几种最常见的一次性电池怎么选、怎么配稳压、怎么算续航、怎么防反接和漏液。适合刚接触单片机又想脱离 USB 电源线的人,也适合已经有板子但被续航和复位问题折磨过一轮的人。文中给出的数值都来自常见器件手册和实际测量的合理范围,但你自己动手时务必以手头器件的手册为准。

1. 单片机对电源的真实要求

单片机不像电灯泡,给电就亮。它对电源有明确的容忍边界,而且在“工作”和“待机”两种状态下要求完全不同。你如果只盯着标称电压一个数,最后一定会在电池放电的后半程翻车。这一节先把需求端讲透,后面选方案的判断依据全在这里。

1.1 电压窗口、平均电流、脉冲能力三根柱子

第一个指标是电压窗口。以最常见的 3.3V 系列单片机为例,手册里通常写工作范围 1.8V~3.6V,看起来非常宽,两节干电池的 3.0V 正好落在中间,似乎直接接上就能跑。但这个窗口并不代表“全功能可用”:片上 ADC 需要固定的参考电压,flash 擦写在接近下限时容易失败,外接的传感器、显示屏、无线模块往往要求 3.0V 以上才正常工作。所以实际设计里,我们会把下端截止电压定得比手册下限更高,常见做法是 3.0V 甚至 3.1V,给外围器件留余量。

第二个指标是平均电流。它决定了续航,而且是那种“差一个数量级就完全换一套方案”的指标。一颗 3.3V 单片机跑满 16MHz 大约 5~10mA,休眠到深度低功耗模式可以低到 1~5µA,中间差了三个数量级。你要设计的是“一直醒着”还是“睡 99% 的时间”,直接决定了后面该用线性稳压还是开关电源,甚至决定了到底要不要稳压。

第三个指标是脉冲电流能力。单片机本身脉冲很小,但一旦涉及无线发射、EEPROM 写入、显示屏刷屏,就会在几毫秒内拉出几十甚至上百毫安。这一条最容易被忽略,因为它不体现在静态测量里,却在运行时制造瞬时掉压,表现为“莫名其妙复位”。

提示:设计时不要用“典型电流”这个词糊弄自己,要去测量三种电流:上电初始化峰值、正常工作平均、休眠稳态。三个数都测出来,方案才有依据。

1.2 普通电池不是理想电压源,有三件事在坑你

把电池想成“一个电压 + 一个串联电阻”就是很实用的模型。普通电池坑人的地方有三个:开路电压会随放电持续下滑、内阻会随放电和温度上升、脉冲负载下电压会被瞬间拉低。

先看放电曲线。一节碱性 AA 新电池开路电压约 1.6V,标称 1.5V,放到“没电”时可能是 1.0V 甚至更低。也就是说,四节串联的电池组,从新装上的 6.4V 一路掉到 4.0V,跨度是 2.4V。如果你的电路对这个跨度没有设计余量,就会出现“新电池一切正常,用了一周开始抽风”的经典症状。

再看内阻。碱性 AA 内阻大约 0.1~0.3Ω,镍氢只有 0.02~0.05Ω,但纽扣电池 CR2032 内阻可以到 10~20Ω,9V 叠层也有 1~2Ω 左右。这意味着同样的脉冲电流,在 CR2032 上会造成几十倍于 AA 的瞬时压降。举个具体数:CR2032 内阻按 15Ω 算,拉 30mA 脉冲就是 0.45V 的压降,一颗 3.0V 的电池瞬间只剩 2.55V,很多单片机在这个电压下已经在复位边缘了。

第三个坑是温度。碱性电池在 0℃ 以下容量和内阻都会明显变差,负极在 -10℃ 左右基本上就宣布放弃。户外节点如果按常温数据算续航,冬天大概率出问题。

1.3 常见普通电池横向对照

选电池之前先看这张表,把“容量、内阻、单节电压、适用场景”这四项对齐,方案基本就清晰了。

电池类型标称电压典型容量内阻量级适合什么
AA 碱性1.5V2000~2900mAh0.1~0.3Ω中等功耗、易更换的通用节点
AA 碳性1.5V500~800mAh0.3~0.6Ω极低功耗、短周期使用,成本敏感
AA 镍氢1.2V1900~2500mAh0.02~0.05Ω大脉冲电流场景,可反复充电
AAA 碱性1.5V1000~1200mAh0.2~0.4Ω体积受限的低功耗节点
CR2032 纽扣3.0V210~230mAh10~20ΩRTC 备份、平均 <1mA 的传感器
9V 叠层9.0V500~600mAh1~2Ω老式开发板、短时演示,不建议长期供电

表里有个反直觉的点:镍氢虽然标称只有 1.2V,但脉冲表现远好于碱性。同样是四节,碱性是 6.0V 标称,镍氢是 4.8V 标称,看起来镍氢电压低亏了,可实际上镍氢在大电流下几乎不掉压,碱性电池反而会因为内阻把电压拉下来。如果你的负载有无线发射,镍氢往往比碱性更稳。

2. 三条技术路线的取舍:直供、线性、开关

搞清楚需求之后,能走的路其实就三条:电池直接接单片机、加线性稳压(LDO)、加开关电源。这三条不是“高级替代低级”的关系,而是各有明确的适用区间,选错的代价通常是效率或者成本。

2.1 路线一:电池直供,最省元件也最挑电池

直供就是电池组串联到目标电压附近,中间只加去耦电容和保护元件。它的优势非常明显:零静态损耗、零额外成本、零 EMI 烦恼。对于纽扣电池驱动的低功耗传感器,直供几乎是唯一合理的选择,因为任何稳压器哪怕静态电流只有 1µA,在平均 3µA 的系统里也是不小的开销。

但直供的适用条件很苛刻:单片机的工作窗口必须完全覆盖电池组的整个放电区间。两节 AA 串联是 3.0V 标称,新电池 3.2V、末期 2.0V,如果单片机上写着 1.8~3.6V,理论上能跑,但你得接受两个后果:一是 ADC 参考电压不稳,因为很多低成本方案用 VCC 作参考,电压一掉,转换结果全错;二是外设可能提前罢工,比如某些 OLED 在 2.8V 以下就无法点亮。

还有一种常见误区是拿一节 AA(1.5V)直供 3.3V 单片机,这完全走不通,除非你用的是专门为 1.8V 以下设计的低压芯片。1.5V 直接接上去,连启动都做不到。

注意:直供方案一定要在软件里做“电压补偿”。如果 ADC 用 VCC 做参考,就先用内部固定基准(比如 1.1V 或 2.048V)反推 VCC 的实际值,再用它去修正其他通道的读数,否则电池一掉压,所有模拟量都跟着漂。

2.2 路线二:LDO 线性稳压,简单但有两个隐藏成本

LDO 的用法人人都会:输入接电池,输出接单片机,加两个电容就完事。它的核心优势是输出干净、外围极简、无开关噪声,对 ADC 精度和射频模块都友好。对 3.3V 系统来说,选用压差小、静态电流低的 LDO,是电池供电里最稳妥的中间路线。

但它有两个隐藏成本,很多人算漏了。第一个是压差。你在手册上看到的“dropout 100mV”通常是在特定电流下测的,还要看它是不是在“接近截止”的区间。更现实的问题是:三节 AA 名义上 4.5V,末端掉到 3.0V,此时 LDO 的输入已经低于输出目标,直接进入掉出稳压区,输出跟着输入一起往下掉。也就是说,三节 AA 配 3.3V LDO,电池实际只用到 3.4V 左右,剩下将近三成容量全浪费了。这就是为什么很多用干电池的产品宁可上四节也不上三节。

第二个是静态电流(Iq)。这个参数在轻载时有决定性影响。同样是 LDO,有的型号静态电流 5mA,有的只有 1.6µA,差了三千倍。5mA 的静态电流意味着什么?一颗 2000mAh 的 AA 电池,什么都没干,340 小时就自己放完了。所以电池项目里,选 LDO 的第一眼不是看压差,而是看 Iq。

2.3 路线三:开关电源,效率高但要付出噪声和静态功耗

开关方案分三种拓扑:降压(Buck)、升压(Boost)、升降压(Buck-Boost)。单节 AA 供 3.3V 必须用升压,四节 AA 供 3.3V 用降压效率最高,两节 AA 供 3.3V 则要升降压,因为电池电压在 3.2V 到 2.0V 之间来回穿越 3.3V 这条线。

开关电源最大的诱惑是效率。举个直观对比:四节 AA 供 3.3V、负载 50mA,用 LDO 时 (6.0-3.3)×0.05 = 135mW 全部变成热,效率约 55%;换成同步降压,效率能到 90% 以上,发热几乎消失。对于需要长时间工作的中高功耗节点,这个差距非常实在。

代价有两个。第一是静态电流普遍偏大:通用降压模块的 Iq 常在几百微安到几毫安,对低功耗节点是灾难;只有专门的低 Iq 开关芯片才能做到几微安,但价格和外围复杂度都上去了。第二是开关噪声:它会污染 ADC 采样和射频链路,布局上必须让电感、输入回路远离模拟部分,输出端还要加 LC 或磁珠二次滤波。实际调试时,你会看到 ADC 读数每隔一段时间跳一次,那就是开关频率在捣鬼。

2.4 按场景对号入座

把三条路线放进具体场景,选择就不纠结了。

场景电池配置推荐方案关键理由
纽扣电池低功耗传感器CR2032 单节直供 + 大电容平均电流极小,稳压器 Iq 反而成负担
干电池长期节点(低功耗)三节或四节 AA低 Iq LDO电路简单,稳定可靠,静态损耗可接受
干电池中等功耗节点四节 AA 供 3.3V同步降压效率优先,散热压力小
单节 AA 便携设备一节 AA低 Iq 升压体积和电池数量优先
老式 5V 开发板演示四节 AA 或 9V 叠层低差压 5V LDO兼容性优先,注意输入上限
有无线发射的节点三节镍氢或四节 AALDO + 大容量电容抗脉冲能力优先,稳压兼顾噪声

这张表里我最想强调的是最后一行。很多人的无线节点用的是 LDO,但复位问题依然存在,原因不在稳压器,而在储能电容不够。发射瞬间的几十毫安靠电池内阻是撑不住的,必须在电源脚旁边就近放 100µF 以上的电解或钽电容,让它来当那个“瞬时水库”。

3. 动手前必须算清楚的几个数

方案选定之后不要急着焊,先把几个关键数算出来。算不明白就动手,后面调试时你会分不清是电路问题还是设计问题。这一节的每个计算都配有具体数值,你可以直接把自己的参数代进去。

3.1 压差与静态电流:LDO 选型的两个死穴

先说压差。LDO 要维持稳压,输入必须高于输出一个最小值。这个值随负载变化,负载越接近额定,压差越大。设计时要按最大负载电流下的压差来算,并且留 20% 以上余量。

举个实际例子:目标 3.3V 输出,最大负载 80mA,选用的 LDO 手册标称 80mA 时压差 250mV。那么输入至少要 3.55V 才能稳住。四节 AA 末端 4.0V 没问题,三节 AA 末端 3.0V 就彻底失效了,实际能用的区间是 4.5V 掉到 3.55V,剩余容量大概只有六成多。

再说静态电流。这个参数要分两种情况看:负载电流远大于 Iq 时,Iq 影响可以忽略;负载接近休眠电流时,Iq 直接决定续航。比如系统休眠电流 5µA,而 LDO 的 Iq 是 50µA,那你的“低功耗设计”实际上有九成功耗花在稳压器身上,白忙一场。

LDO 常见静态电流档位对 2000mAh 电池的等效自放适用系统
5mA约 340 小时耗尽仅适合持续大电流场景
100µA约 2 万小时平均电流毫安级
50µA约 4 万小时平均电流数百微安
5µA约 40 万小时真正低功耗节点
1.5µA超出电池自放电极致低功耗,纽扣电池可用

提示:手册标注的 Iq 通常是典型值,实际会随温度和输入电压变化,而且“关断电流”和“静态电流”是两个不同的参数,设计低功耗时两个都要看。

3.2 电池寿命估算:把账算到毫安时

续航估算的公式很朴素:可用容量 ÷ 平均电流消耗。难点在于“可用容量”不等于标称容量,因为放电末端电压跌出工作窗口的那部分要扣掉。

以四节 AA 碱性(标称 2400mAh)供 3.3V LDO 为例,LDO 需要输入 ≥3.55V 才能稳压,对应每节电池 0.89V 左右,实际上碱性电池放到 0.9V 附近已经所剩无几,可用容量按 85% 计,约 2040mAh。

第一种情况:系统平均电流 8mA(单片机常醒 + 传感器周期采样)。续航 = 2040 ÷ 8 ≈ 255 小时,约 10.6 天。这个数字通常会让第一次做电池产品的人有点意外。

第二种情况:加低功耗设计,平均电流降到 60µA(LDO 自身 Iq 5µA + 单片机休眠 3µA + 传感器和分压网络 52µA)。续航 = 2040 ÷ 0.06 ≈ 34000 小时,看起来是三年多。但这时候必须引入另一个限制因素:电池自放电。碱性电池常温自放电大约每年 2%~3%,2400mAh 按年 2.5% 算,等效漏电流约 6.8µA。它看起来不起眼,却会把总消耗抬到 67µA 左右,续航回到约 30000 小时。当你的系统电流降到 10µA 以下时,继续压功耗已经没有意义了,因为自放电成了天花板。

还有一个常被忽略的分压采样网络。用 100kΩ + 100kΩ 分压测电池电压,静态漏电流是 Vbat ÷ 200kΩ,6V 时就是 30µA。这比单片机休眠电流大十倍,会直接把你的低功耗设计打回原形。

3.3 低电量检测的分压网络怎么设计

检测电池电压的标准做法是电阻分压 + ADC 采样,设计要点有三个。

第一,确定分压比。假设用内部 1.1V 固定基准,需要测的最高电压按新电池 6.4V 算,分压后的电压不能超过 1.1V 的八成分量,也就是 0.88V 左右,留一点余量。分压比 σ = 0.88 ÷ 6.4 ≈ 0.1375。取 R1 = 100kΩ(上臂)、R2 = 22kΩ(下臂),实际分压比 22 ÷ 122 ≈ 0.18,6.4V 输入对应 1.15V,稍微超了。改成 R2 = 15kΩ,比值 15 ÷ 115 ≈ 0.13,6.4V 对应 0.83V,安全。

第二,让分压网络可以断电。用一个 N 沟道 MOS 管串在下臂接地端,采样时给栅极加高电平,采完立刻关断。这样常态漏电流接近零,只在采样瞬间有几十微安的消耗。这个改动只增加一个 MOS 管和一个 100kΩ 栅极电阻,收益却非常大。

第三,在软件里做平均和迟滞。单次采样会被开关噪声和负载波动干扰,建议连续采 8~16 次取中位数。同时设置迟滞窗口,比如低于 4.6V 报警、回升到 4.8V 才解除,避免在阈值附近反复触发。

3.4 保护:反接、浪涌与漏液

普通电池供电的设备,用户换电池时接反的概率远高于你的想象。三种常见保护方式各有取舍。

串联肖特基二极管最简单,正向压降 0.3V 左右,缺点是这 0.3V 是白掉的,而且反向漏电流在高温下会变大。对四节 AA(6V)来说还好,对单节 AA 升压方案就很伤了,因为输入电压本来就低。

P 沟道 MOS 管反接保护几乎没有压降,代价是多一个元件和一点栅极驱动设计。接法是:电池正极串入 MOS 管的漏极,源极接电路,栅极通过电阻接电池负极。正常接入时栅极被拉低,MOS 导通;反接时栅源电压反向,MOS 截止。这个方案在电池项目里非常值得用。

熔断保护用自恢复保险丝(PTC)就够,选动作电流为工作电流两倍的型号,避免正常启动时的浪涌误触发。加在电池正极入口处,紧贴电池座。

漏液是最难防也最伤 PCB 的。碱性电池长期放置后会渗液,腐蚀走线和焊盘。能做的有两条:一是电池座选用带独立仓位的型号,别让电池直接贴在板面上;二是结构上让电池座和 PCB 之间留有间隙,或者用绝缘垫片隔开。如果产品有长时间仓储需求,出厂时不要装电池。

4. 完整实操:四节 AA 给 3.3V 节点供电

讲完理论,走一遍完整流程。这个例子是一个四节 AA 供电的 3.3V 数据采集节点:单片机加一路串口传感器,每 30 秒唤醒采一次、休眠其余时间,平均电流目标控制在 100µA 以内。

4.1 物料清单与选型理由

元件规格选型理由
电池座4 节 AA 串联,带仓减少单节电池直接贴板
保险丝自恢复 PTC,500mA兼顾启动浪涌与短路保护
反接 MOSP 沟道,Vgs 阈值 -1V 以内避免二极管压降损失
输入电容100µF 电解 + 0.1µF 陶瓷电解抗脉冲,陶瓷滤高频
LDO3.3V 输出,Iq ≤ 10µA,压差 ≤ 200mV@100mA兼顾低功耗与压差
输出电容1µF 陶瓷 + 10µF满足稳定性和瞬态响应
采样开关N 沟道 MOS,小信号分压网络常态断电
分压电阻100kΩ + 15kΩ,1% 精度分压比 0.13,最高 0.83V

选 LDO 时,我把“Iq ≤ 10µA”放在第一位,“压差 ≤ 200mV@100mA”放第二位。原因很直接:在平均 100µA 的系统里,Iq 10µA 已经占了一成,再高就吃掉太多预算。而四节 AA 的输入电压最低也有 4.0V,对 3.3V 输出来说压差空间有 0.7V,不算紧张。

输出电容按手册推荐值来,不要随便加大或减小。有些 LDO 对输出电容的 ESR 范围有要求,用太小或 ESR 太低的电容反而会引起振荡,表现为输出上叠加几十毫伏的高频毛刺。这一条我在早期调试时吃过亏,换成手册推荐的 1µF 陶瓷后立刻干净了。

4.2 焊接与布局的几个细节

电池座的焊盘尽量大一点,弹片和 PCB 的接触面积直接决定接触电阻。焊接时用高温胶带把塑料部分遮住,烙铁停留时间控制在 2 秒以内,否则塑料柱一变形,电池装进去就松。

布局上按“电池座 → 保险丝 → 反接 MOS → 输入电容 → LDO → 输出电容 → 单片机”的顺序一条线铺开,不要让输入回路绕到 MCU 底下。输入电容要紧贴 LDO 的输入脚,距离超过 5mm 效果就明显打折。地线用整片铺铜,不要走细线,脉冲回流的路径越短越好。

分压电阻放在离 MCU 的 ADC 脚近的位置,采样节点到 ADC 的走线尽量短,并且远离电池座和 LDO 的输出端。中间那条线是高压摆动节点,很容易把噪声耦合进 ADC。

提示:如果板子上有无线模块,把它的电源脚单独拉一条线回电池端,中间串一个 0.5Ω 电阻加 100µF 电容做 RC 隔离,比共用一条电源线稳得多。

4.3 上电实测数据记录

焊完先不装单片机,空载测一遍。新电池四节开路 6.42V,接上 LDO 后输入 6.41V、输出 3.302V,静态电流用万用表串在电池正极测,读数 8.5µA,其中 LDO 贡献约 4µA,分压网络因为 MOS 关断基本为零。

然后装上单片机跑起来,在 30 秒唤醒周期下用电流表积分测平均电流,读数 96µA,符合目标。用示波器交流耦合看输出电压纹波,峰峰值 12mV,主要来自唤醒瞬间的电流跳变,可以接受。

再用可调电源模拟电池放电,从 6.4V 一路往下调,观察输出保持 3.30V 的最低输入电压。实测在 3.62V 输入时输出开始下滑,这个数就是我的实际可用截止电压。比理论计算的 3.55V 高了 70mV,原因是 LDO 在实际电流下的压差比手册典型值略大。四节碱性电池从 6.4V 放到 3.62V,可用容量按 80% 估算,2040mAh × 0.8 ≈ 1630mAh,平均电流 96µA 对应续航约 17000 小时,还要叠加自放电影响,实际按 13000 小时估算更稳。

4.4 低电量检测与掉电保存代码

下面的代码以常见的 8 位单片机开发环境为例,思路可以直接迁移到其他平台。

/* 电池电压检测:内部 1.1V 基准,分压比 15/115 */ #define VREF_MV 1100 #define ADC_MAX 1023 #define DIV_RATIO (115.0f / 15.0f) /* 约 7.667 */ #define SAMPLE_COUNT 8 /* 打开分压网络的 MOS 管,采样,再关断 */ static uint16_t read_battery_adc(void) { uint16_t buf[SAMPLE_COUNT]; uint16_t tmp; BAT_SAMPLE_EN_HIGH(); /* 使能分压网络 */ delay_us(200); /* 等 RC 建立,100k+15k 配 0.1uF 约 10us 足够 */ for (int i = 0; i < SAMPLE_COUNT; i++) { buf[i] = adc_read(BAT_ADC_CH); } BAT_SAMPLE_EN_LOW(); /* 关闭分压网络,恢复零漏电 */ /* 简单插入排序取中位数,抗单点干扰 */ for (int i = 1; i < SAMPLE_COUNT; i++) { tmp = buf[i]; int j = i - 1; while (j >= 0 && buf[j] > tmp) { buf[j + 1] = buf[j]; j--; } buf[j + 1] = tmp; } return buf[SAMPLE_COUNT / 2]; } /* 换算成毫伏 */ uint16_t battery_voltage_mv(void) { uint16_t adc = read_battery_adc(); uint32_t mv = (uint32_t)adc * VREF_MV / ADC_MAX; mv = (uint32_t)(mv * DIV_RATIO); return (uint16_t)mv; }

配合的分级处理逻辑建议这样设计:低于 5200mV 记一次低电警告,低于 4800mV 降低唤醒频率并把数据写到 EEPROM,低于 4400mV 停止非必要功能并进入深度休眠。阈值之间保持 200~400mV 的间隔做迟滞,避免在边界上来回抖动。

void battery_task(void) { static uint16_t low_cnt = 0; uint16_t mv = battery_voltage_mv(); if (mv < 4400) { save_critical_data(); /* 先落盘再关外设 */ system_enter_deep_sleep(); } else if (mv < 4800) { if (++low_cnt >= 3) { /* 连续 3 次确认,防抖 */ reduce_wakeup_rate(); low_cnt = 0; } } else if (mv < 5200) { set_low_battery_flag(); low_cnt = 0; } else { low_cnt = 0; clear_low_battery_flag(); } }

save_critical_data()里要注意一件事:写入 flash 或 EEPROM 的那几毫秒是大电流动作,本来就临近截止的电池可能被这一下直接拉垮。所以判断阈值时不要卡在临界点上,留出至少 200mV 的余量,而且写入前先关掉所有外设负载。

5. 踩坑实录与排查速查表

理论再清楚,实际调试还是会遇到各种怪现象。这一节把我在电池供电项目里反复遇到的几个典型问题整理出来,附上判断依据和处理方法。

5.1 上电不跑、随机复位怎么查

“上电不跑”最常见的原因是电池座接触不良,而不是电路问题。电池座弹片氧化、弹簧压力不足、PCB 焊盘虚焊,都会造成时通时断。判断方法很简单:用万用表直流档接在单片机电源脚上,一边观察读数一边轻轻晃动电池,如果读数出现毫伏级跳变,就是接触问题。处理办法是换电池座,或者在弹片上点一点导电膏(注意不要用酸性助焊剂)。

另一种情况是启动瞬间掉压。单片机上电时内部稳压和 flash 初始化会有几十毫安瞬时电流,如果输出电容不足,电压会瞬间掉到复位阈值以下,表现为“一直在复位循环里出不来”。用示波器单次触发抓上电波形,看输出有没有低于复位门限的凹坑,有的话把输出电容从 1µF 加到 10µF 甚至 47µF,问题通常就消失了。

“跑一段时间才复位”则要往电路之外找:可能是电池内阻随放电上升,也可能是低温导致电池性能下降,或者是无线发射时电源跌落。区分方法很直接:把可调电源设成电池当前实际电压(注意是带载测量的电压,不是开路电压),接上去跑,如果问题消失,说明问题在电池端;如果问题依旧,说明在板子上。

5.2 待机电流比手册大十倍怎么办

这是低功耗项目里最常见也最耗时的问题。排查要按“由大到小”的顺序切分,不要一开始就怀疑单片机。

第一步,把单片机拔掉或者让它进最深的休眠模式,只留电源部分,测总电流。如果这时电流就已经超标,问题在 LDO、分压网络或去耦电容漏电。分压网络忘记加 MOS 开关是最常见的失误,100kΩ 分压网络在 6V 下就是 30µA,很容易被当成“单片机功耗”。

第二步,把分压网络断开再测。如果电流降到预期,可以确认问题;如果还是大,检查 LDO 输出端有没有通过上拉电阻、LED、传感器供电脚构成的隐性通路。一个典型的坑是:某个传感器的电源脚直接接在 LDO 输出的 3.3V 上,但它的 IO 上拉到电池电压,这样电池经上拉电阻灌进 LDO 输出,形成反灌电流。

第三步,用高精度电流表或者带电流测量功能的供电 инструмент 观察休眠后的电流衰减曲线。真正的深度休眠,电流会在几十毫秒内降到稳态值;如果电流持续缓慢下降,说明有电容在充电,或者有周期性唤醒没有真正执行。

注意:测量微安级电流不要用普通万用表的 mA 档,它的分流电阻和内阻会严重干扰读数。用 µA 档并串在电池正极,或者用专用的功耗分析工具,读数才可信。

5.3 问题速查表

现象高概率原因快速验证处理方式
上电完全无反应电池座接触不良、保险丝断开晃动电池看电压跳变更换电池座、检查 PTC
反复复位上电掉压、输出电容不足示波器单次抓上电波形加大输出电容,检查 LDO 稳定性
用到一周就抽风电池末端电压低于 LDO 压差可调电源模拟末端电压增加一节电池或换低压差型号
待机电流偏大分压网络常通、上拉反灌逐个断开分压和上拉测电流加采样 MOS 开关,改上拉供电域
ADC 读数不准用 VCC 作参考、纹波干扰换内部基准对比读数改用固定基准,加 RC 滤波
低温下不工作电池内阻上升、容量衰减冷藏后实测结构保温或改用镍氢
电池仓有白色结晶碱性电池漏液目视检查清洁板面,改结构隔离
无线发射时掉线脉冲电流撑不住示波器看发射瞬间电压就近加大容量电容,缩短回路

5.4 最后再聊几个只有做过才知道的细节

电池新旧混装是最容易被忽略的问题。四节串联的电池组里,如果混了一节旧电池,它的内阻更大,在大电流时会被反向充电,容量急剧下降,整个电池组的可用容量可能掉到最差那节的水平。所以换电池一定整组换,不要“只换一节试试”。

镍氢和碱性的方案不能直接互换。镍氢标称 1.2V,四节是 4.8V,比碱性低 1.2V,如果你的 LDO 是按碱性末端电压算的余量,换镍氢后会提前进入掉出稳压区。反过来,如果你的电路是按镍氢设计的大电流方案,换碱性会因内阻问题掉压严重。做产品时如果两种电池都要支持,参数要按最差情况留余量。

还有一点关于测试方法:算出来的续航永远只是参考值,真正靠谱的做法是搭一个可调电源做加速放电测试,把放电曲线和数据记录一起打出来,然后跟实际电池跑一轮对照。我一般会同时跑两块板,一块用真实电池、一块用可调电源按理论曲线降压,两边数据对得上,方案才算过关。这个过程花的半天时间,通常能省下后面几周的返工。

返回列表