ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

智能温度计续航缩水排查:电池内阻、电压测量与低功耗设计实战

智能温度计续航缩水排查:电池内阻、电压测量与低功耗设计实战 智能温度计这类小玩意儿拆开看结构简单得可怜——一颗主控、一个温度传感器、一块小屏、一节纽扣电池或者小锂电完事。但真到了用户手里抱怨最多的往往不是测温不准而是怎么才用了两个月就没电了。这个问题我在过去几年里前前后后排查过不下几十例从几块钱的电子体温计到带蓝牙上传的智能温湿度计都碰过。续航缩水这件事表面看是电池不行了实际上背后牵扯的东西比想象中多电池内阻、供电拓扑、ADC采样精度、固件里的休眠策略任何一个环节出问题都能让续航直接腰斩。这篇内容我打算把智能温度计续航排查这件事从头到尾捋一遍。不管你是自己DIY了一个ESP32-S3的低功耗温度计发现电池掉得飞快还是在维护一款量产产品被客诉续航问题搞得头大这里面的思路和实操方法都能直接拿去用。核心围绕电池、内阻、电压这三个关键词展开但不会只停留在换块电池试试这种层面——我会把电池等效电路模型、内阻测试电路、电压测量方案、低功耗设计要点这些真正能定位问题的东西讲透。看完你至少能做到拿到一台续航异常的温度计有条不紊地判断到底是电池老化、电路漏电、还是固件没睡好。1. 先搞清楚续航问题的排查思路1.1 为什么不能上来就换电池很多人遇到续航短第一反应就是电池不行了换一块。这个操作有时候确实能解决问题但更多时候只是掩盖了真正的病因。我见过一个典型案例一款用CR2032纽扣电池的蓝牙温度计用户反映新电池装上去两周就没电。售后直接给换了电池结果第二块电池同样两周耗尽。后来拿到我这边排查发现是固件里蓝牙广播间隔设成了100ms而且休眠时GPIO没有正确配置成高阻态导致传感器供电脚一直在微漏电。这种情况下你换一百块电池都没用。所以排查续航问题的第一原则是先测量再判断最后才动手换件。测量什么三个核心量——电池的开路电压、带载电压、以及整机在不同工作模式下的电流。这三个数据拿到手问题的轮廓基本就清晰了。具体来说一颗标称3.0V的CR2032如果开路电压只有2.6V以下那基本可以判定电池已经深度放电或者内阻已经很大了。如果开路电压正常比如2.95V但一接上负载电压就掉到2.4V那说明电池内阻过大带载能力不行了。如果电池电压和带载表现都正常但整机静态电流远超数据手册标称值那问题就在电路或固件上跟电池没关系。1.2 续航问题的三大类根因把常见原因归归类无非这么三大类第一类是电池本身的问题。包括电池老化导致内阻升高、容量衰减低温环境下电池活性下降以及电池选型本身就不匹配比如用了一颗标称容量虚标的杂牌电池。这类问题的特征是电池的开路电压可能还凑合但内阻明显偏大带载后电压跌落严重。第二类是硬件电路的问题。包括LDO静态电流过大、分压采样电阻常年耗电、传感器或屏幕在休眠时没有真正断电、PCB表面漏电或助焊剂残留导致的微短路。这类问题的特征是不管用什么电池续航都短而且静态电流测量值明显偏高。第三类是固件策略的问题。包括休眠模式没进对、唤醒周期太频繁、外设初始化后没关闭、ADC采样时CPU没有降频等等。这类问题最隐蔽因为硬件看起来一切正常但电流就是降不下来。实际排查中这三类问题经常是交织在一起的。比如电池内阻大了导致带载电压跌落跌到某个阈值以下时主控触发了欠压复位复位后重新初始化又消耗一波电流形成恶性循环。所以排查的时候要有系统性的思路不能头痛医头。1.3 排查工具和最小准备清单工欲善其事工具得先备齐。下面这些是我实际排查中反复用到的东西工具用途备注数字万用表测电压、电流、电阻至少四位半微安档必备可调直流电源模拟电池供电带电流显示更好电子负载测电池带载能力没有的话用功率电阻替代示波器看电压纹波和跳变带宽不用太高100MHz够用电池内阻测试仪直接读内阻没有就自己搭电路热成像仪找异常发热点便宜的也行能看个大概如果没有专业内阻仪也不用急着买。后面我会讲怎么用一个简单的电路配合示波器或者ADC来估算电池内阻成本很低。注意测量微安级静态电流时万用表的表笔和引线本身不能有太大干扰建议用短粗线并且先把量程切到最大再逐步往下调避免瞬间大电流打坏保险丝。2. 电池内阻与电压续航问题的物理本质2.1 电池等效电路模型到底在说什么要理解为什么电池看起来有电但带不动负载得先接受一个事实真实电池不是理想电压源它内部有电阻。最基础的电池等效电路模型就是一个理想电压源串联一个内阻再并联一些电容来模拟动态特性。这个模型虽然简单但解释续航问题足够了。用这个模型来看电池的开路电压就是理想电压源的值当你接上负载电流流过内阻就会产生压降。负载电流越大内阻上的压降越大输出端电压就越低。一颗内阻50毫欧的18650带1A负载时压降只有50mV几乎无感但一颗内阻已经涨到50欧的CR2032带1mA负载时压降就有50mV带10mA时直接掉500mV主控可能就欠压复位了。这就解释了为什么很多温度计换新电池就好用一阵又不行——不是电池没电是内阻涨了带载能力垮了。温度计这类设备虽然平均电流很小但它在测温、刷新屏幕、蓝牙发射的瞬间会有脉冲电流这些脉冲电流在内阻大的电池上会产生明显的电压跌落一旦跌到主控的欠压阈值以下就会触发复位或者异常。2.2 内阻是怎么变大的电池内阻增大有几个原因。化学层面随着循环次数增加电极材料老化、电解液分解、SEI膜增厚都会导致离子传导变难宏观表现就是内阻上升。物理层面如果电池受过机械应力、高温内部结构可能受损。还有一类是存储老化——电池长期不用表面钝化内阻也会升高这种有时候能通过几次充放电激活回来一部分。对于温度计常用的纽扣电池和一次性锂电内阻增大主要是放电深度和存储时间导致的。CR2032这类电池在放电到一定程度后内阻会急剧上升这时候虽然开路电压还有2.7V左右但已经带不动任何有意义的负载了。2.3 电压测量为什么不能只看开路很多人测电池就是拿万用表一搭读个数就完事。这个数只是开路电压它告诉你电池还剩多少势能但不告诉你它还能不能出力。开路电压正常但内阻大的电池就像一个水库水位很高但闸门堵住了看着有水放不出来。正确的做法是同时测开路电压和带载电压。带载电压的测法很简单给电池接一个已知阻值的负载电阻测负载两端的电压然后根据欧姆定律反推内阻。公式是内阻 (开路电压 - 带载电压) / 负载电流其中负载电流 带载电压 / 负载电阻。举个例子一颗CR2032开路电压测到2.95V接一个1kΩ负载后电压掉到2.80V。那么负载电流是2.80V / 1000Ω 2.8mA内阻 (2.95 - 2.80) / 0.0028 53.6Ω。这个内阻对于CR2032来说已经偏大了正常新电池应该在10到20Ω左右。2.4 温度对电池内阻的影响温度是个容易被忽略的变量。锂电池在低温下内阻会显著上升零下10度时内阻可能是常温的两三倍。如果你的温度计用在冷库、户外或者冬天没暖气的房间里续航突然变短很可能跟温度有关而不是电池坏了。我实测过一颗CR2032在25度时内阻约15Ω放到冰箱冷冻室约零下18度静置两小时后内阻涨到了60Ω以上带载电压直接跌到2.5V以下。这种情况下主控如果欠压阈值设得不够低就会频繁复位续航自然崩。所以排查续航问题时一定要记录测试时的环境温度。如果低温下出问题、常温下正常那就要考虑是不是需要换用低温性能更好的电池类型或者在固件里调整欠压阈值和休眠策略。3. 内阻测试电路与电压测量实操3.1 自己搭一个简易内阻测试电路没有专业内阻仪怎么办用一个MOS管做电子负载配合ADC或者示波器就能测。核心思路是让电池先空载测开路电压然后让MOS管导通拉一个已知的恒定电流再测带载电压两个电压一减除以电流就是内阻。具体电路很简单电池正极接负载电阻一端负载电阻另一端接MOS管漏极MOS管源极接电池负极栅极用一个运放或者直接用一个稳定的参考电压驱动让MOS管工作在线性区通过调节栅极电压来控制电流。为了测量准确在负载回路里串一个采样电阻测采样电阻上的电压就能算出实际电流。如果你用的是STM32或者ESP32这类带ADC的主控可以直接把电池电压和采样电阻电压接到ADC通道上固件里做一次计算就出内阻值。这里要注意ADC的参考电压要稳定最好用内部基准或者外部基准芯片不要直接用电池电压做参考否则电池电压一变ADC读数就跟着漂。3.2 电压测量中的坑ADC不准怎么办说到ADC测电压这里面的坑不少。最常见的问题是ADC参考电压不稳。很多低成本方案直接用VDD做参考而VDD本身可能就是从电池经过LDO来的电池电压下降时VDD也跟着降ADC读数就会偏大导致你误以为电池还有电。解决办法有两个一是用内部基准比如STM32的VREFINT定期校准二是用外部基准芯片比如REF3030之类的输出稳定的3.0V给ADC做参考。前者成本低但精度一般后者精度高但多一颗料。另一个坑是分压电阻的选取。测电池电压通常要用电阻分压因为电池电压可能高于ADC量程。分压电阻选大了ADC输入阻抗不够会导致测量偏低选小了分压支路常年耗电影响续航。对于低功耗温度计分压电阻通常选在1MΩ级别配合ADC采样时的短暂导通可以把平均功耗压到很低。实操心得分压电阻上并联一个小电容比如100nF可以滤掉高频干扰让ADC读数更稳。但电容不能太大否则电压变化时响应太慢测带载电压时会失真。3.3 用示波器看电压跳变有些续航问题表现为偶发复位或者屏幕闪一下这种用万用表看不出来得上示波器。把探头接到电池两端触发方式设成下降沿触发电平设在欠压阈值附近然后让设备正常工作。如果能看到周期性的电压跌落而且跌落幅度接近或超过欠压阈值那基本可以确认是脉冲电流导致的带载电压跌落。这时候要重点看跌落发生的时间点跟什么操作相关。如果每次蓝牙发射时都跌那就是蓝牙发射的峰值电流太大可能需要在发射瞬间加大电容或者优化天线匹配。如果每次屏幕刷新时都跌那可能是屏幕背光或者驱动电流的问题。我遇到过一个案例温度计每次测温时电压就跌一下后来发现是温度传感器加热元件有些传感器需要周期性加热来除湿的电流太大而电池内阻又偏高两者叠加就触发了复位。解决办法是在加热元件供电脚旁边加一颗大电容把脉冲电流从电池那边借过来。3.4 电池供电自动切换电路的设计要点有些温度计设计成USB供电和电池供电双路输入这种设计如果没做好续航也会出问题。常见的问题是切换电路本身耗电或者切换时电压跳变导致主控复位。理想的双路供电切换应该做到有USB时优先用USB同时给电池充电如果是可充电池没USB时自动切到电池切换过程电压不能有明显跌落。用一颗P沟道MOS管加一颗肖特基二极管就能实现基本的自动切换但要注意MOS管的体二极管方向和栅极驱动逻辑接反了会导致电池倒灌或者切换失败。如果用的是理想二极管芯片比如TPS2113之类的切换会更干净但静态电流要查清楚有些型号静态电流在几十微安对于纽扣电池供电的温度计来说就偏大了。4. 低功耗设计与固件排查要点4.1 休眠电流为什么降不下来硬件没问题、电池也没问题但续航就是短这时候八成是休眠电流没降下来。我见过太多案例主控明明进了深度休眠但整机电流还有几百微安一查发现是某个外设没关、某个GPIO配置不对、或者LDO本身静态电流就大。排查休眠电流的标准流程是先测整机休眠电流然后逐个断开外设供电看电流变化。如果断开某个外设后电流明显下降那问题就在那个外设上。常见的外设漏电包括传感器I2C上拉电阻常年供电、屏幕驱动芯片没进休眠、LED指示灯限流电阻直接接电池。对于ESP32-S3这类主控深度休眠时GPIO的状态很关键。没有用到的引脚应该配置成高阻态或者输出低避免悬空导致漏电。I2C的上拉电阻如果直接接VDD休眠时I2C总线上的电流会通过上拉电阻流到传感器内部形成漏电。解决办法是用GPIO控制上拉电阻的供电休眠时把上拉电阻的电源也断掉。4.2 唤醒周期与采样策略的权衡温度计不需要每秒都测温通常几十秒甚至几分钟测一次就够了。唤醒周期越长平均功耗越低但响应速度越慢。这个权衡要根据实际使用场景来定。假设一颗CR2032容量是220mAh设备休眠电流是1μA唤醒时工作电流是5mA每次唤醒工作100ms。如果每60秒唤醒一次那么平均电流大约是平均电流 1μA 5mA × (0.1s / 60s) ≈ 1μA 8.3μA ≈ 9.3μA理论续航 220mAh / 9.3μA ≈ 23655小时 ≈ 2.7年。但如果唤醒周期改成每10秒一次平均电流就变成约51μA续航直接掉到不到半年。所以唤醒周期对续航的影响是线性的改之前一定要算清楚。4.3 ADC采样时的功耗陷阱ADC采样本身耗电不多但如果采样时CPU全速运行、外设全开那功耗就上去了。优化策略是采样前才给传感器和ADC上电采样完立刻断电CPU在采样期间保持最低必要频率采样完马上回休眠。另外ADC的采样时间设置也有讲究。采样时间太短读数不准太长功耗增加。一般根据信号源阻抗来定源阻抗高就设长一点。对于电池电压这种变化缓慢的信号采样时间可以设长一些但没必要每次唤醒都采可以隔几次唤醒采一次。4.4 常见问题速查表现象可能原因排查方法解决方向新电池很快没电休眠电流大测休眠电流关外设、改GPIO配置电池有电压但设备不工作内阻大带载跌落测带载电压换电池或降低峰值电流低温下续航骤降电池低温内阻升高低温下测内阻换低温电池或调欠压阈值偶发复位脉冲电流导致电压跌落示波器看电压加大电容或优化供电电压读数不准ADC参考不稳对比万用表读数用基准源或校准双路供电切换异常切换电路设计问题分别测两路供电换理想二极管或改MOS逻辑5. 从BMS视角看温度计的电池管理5.1 温度计需要BMS吗严格来说温度计这种小功率设备用不上完整的BMS电池管理系统。BMS通常包含过充、过放、过流、温度保护以及电量计量这些在电动工具、电动车、储能系统里是刚需但在温度计上属于杀鸡用牛刀。不过BMS里的一些基础思路是可以借鉴的比如电压监测、内阻估算、低电量预警。对于可充电的温度计至少应该有一个简单的过放保护避免电池被放到2.5V以下导致永久损伤。对于一次性电池的温度计重点则是准确判断剩余电量在电池还能带动负载的时候及时提醒用户更换而不是等到设备已经工作异常了才报低电。5.2 电量计量的简单实现没有库仑计芯片的情况下可以用开路电压法估算电量。方法是在设备休眠前测一次开路电压此时负载电流最小根据电池的放电曲线查表得到剩余容量。这个方法的精度一般但对于温度计这种对电量精度要求不高的设备足够了。如果要更准一点可以结合带载电压和内阻来修正。当内阻明显上升时即使开路电压还高也说明电池快不行了这时候可以提前报低电。这个逻辑在固件里实现起来不复杂关键是电池的放电曲线要提前测好存成查找表。5.3 防止电池并联短路环流的思路有些设计为了增加容量会把两节电池并联。并联本身没问题但如果两节电池内阻或电压不一致就会产生环流白白耗电严重时还会发热。防止环流的办法是每节电池串联一个小的均流电阻或者用MOS管做理想二极管隔离。对于温度计这种小电流设备串一个几欧姆的电阻就够用了压降可以接受。注意并联电池一定要用同型号、同批次、同老化程度的电池否则环流问题会很严重。新旧电池混用是大忌。6. 实操案例一次完整的续航排查记录6.1 问题描述与初步测量前段时间帮朋友排查一款ESP32-S3蓝牙温度计症状是CR2032电池只能用三周左右远低于设计的半年目标。拿到手先测电池开路电压2.91V看起来还有电。接1kΩ负载后电压掉到2.72V算下来内阻约70Ω偏大但不算离谱。接着测整机休眠电流用万用表微安档串在电池回路里读数在180μA左右波动。这个值明显偏高ESP32-S3深度休眠的理论电流应该在10μA级别加上外设也不该超过50μA。问题初步锁定在休眠电流上。6.2 逐项排查与定位先断开传感器供电休眠电流降到150μA说明传感器贡献了约30μA。再断开屏幕降到80μA屏幕贡献了70μA。剩下的80μA还在继续查。用示波器看GPIO状态发现有一个未使用的GPIO配置成了输出高而这个GPIO外部接了一个下拉电阻导致持续有电流流过。把GPIO改成高阻态后休眠电流降到25μA。再检查I2C上拉电阻发现上拉电阻直接接VDD休眠时仍有漏电改成GPIO控制供电后休眠电流降到8μA。6.3 最终结果与经验总结休眠电流从180μA降到8μA后重新计算续航CR2032容量按200mAh算平均电流约10μA含唤醒功耗理论续航约2年。实际测试中因为蓝牙发射和测温的脉冲电流续航会打些折扣但半年以上没问题。这次排查给我的体会是休眠电流的排查要有耐心逐项断开、逐项测量不要放过任何一个外设。另外GPIO配置和上拉电阻供电这两个点特别容易被忽略很多低功耗设计的坑都在这。7. 几个容易被忽略的细节7.1 电池座接触电阻电池座用久了会氧化接触电阻增大等效于增加了电池内阻。这个问题在潮湿环境下尤其明显。排查时可以用万用表测电池座两端的接触电阻如果超过几欧姆就该清洁或者更换电池座了。我遇到过一台温度计电池座弹片氧化接触电阻达到20Ω换电池也没用清洁弹片后问题解决。7.2 焊接残留与PCB漏电PCB表面的助焊剂残留如果没清洗干净在潮湿环境下会形成微短路导致漏电。这个问题在低功耗设备上影响很大因为漏电可能只有几微安但相对于休眠电流来说就是很大的比例。排查时可以用酒精清洗PCB看电流有没有变化。如果清洗后电流下降那就是残留问题量产时要注意清洗工艺。7.3 固件里的隐形耗电有些固件在初始化时会打开一些不必要的外设比如调试串口、未使用的定时器、DMA通道等这些外设如果没关休眠时也会耗电。排查时可以用调试器读外设的时钟使能寄存器看看有没有多余的时钟开着。另外看门狗如果配置不当也可能导致周期性唤醒增加功耗。7.4 温度补偿的必要性如果温度计用在宽温环境电池的放电特性会随温度变化固件里的电量估算和欠压阈值最好做温度补偿。比如低温下内阻升高欠压阈值可以适当降低避免过早报低电高温下自放电加快电量估算要相应修正。这个补偿逻辑不复杂但能显著提升用户体验。排查智能温度计的续航问题说到底是一个测量-分析-验证的循环。电池、内阻、电压这三个关键词贯穿始终但真正解决问题靠的是系统性的思路和耐心的逐项排查。我个人的习惯是拿到问题设备先不拆不换先把电压、电流、内阻三个基础数据测一遍数据拿到手方向基本就清楚了。最怕的是一上来就换电池、换芯片折腾半天问题还在时间全浪费了。
返回列表