3、电源系统异常:电池不充电、充电指示灯异常、电池续航严重下降、电池鼓包检测

电源系统,说白了就是电动牙刷的「心脏」。我做了这么多年嵌入式开发,发现至少一半的售后问题都出在电源上。电池不充电、指示灯乱闪、续航崩了——这些毛病其实有规律可循。今天咱们就把这些坑一个个填上。

3.1 电池不充电——先别急着换电池

用户说「牙刷插上充电器没反应」,你第一反应是什么?我刚开始做这行时,第一反应就是「电池坏了」。后来发现,很多时候根本不是电池的问题。

咱们按顺序排查:

  1. 先看充电器——输出空载电压对不对?我遇到过好几次,用户拿错充电器,电压不对,牙刷当然不充。
  2. 再看充电接口——触点氧化、脏污、接触不良。尤其是无线充电的牙刷,线圈对不准,效率极低。
  3. 最后看电池保护板——锂电池保护IC如果进入过放保护状态,会切断充放电回路。这时候你量电池两端,电压可能只有2.0V甚至更低。

我的经验:遇到电池电压低于2.5V的情况,别急着判死刑。有些保护IC支持「预充电」模式——用一个小电流(比如0.1C)慢慢激活电池。我曾在项目中用这个办法救回过一批「死电池」,成功率大概六成。

充电电路的核心,其实就是一个BQ系列充电管理芯片。我习惯用BQ24040这类芯片,简单可靠。下面是个典型电路:

// 充电管理芯片BQ24040典型配置
// IN: 5V USB输入
// BAT: 接锂电池正极
// ISET: 设置充电电流,R_ISET = 1000 / I_CHARGE

// 充电电流设置:500mA
// R_ISET = 1000 / 0.5 = 2000Ω → 2kΩ

// 状态指示:
// CHG引脚:充电中→低电平,充满→高阻
// PG引脚:输入正常→低电平

嗯,这里要注意——充电芯片的散热。我见过有人把充电芯片放在PCB角落,周围没铜皮散热,结果充电电流一大,芯片就过热保护了。你想想看,牙刷在充电底座上放了一晚上,结果只充进去20%,多尴尬。

3.2 充电指示灯异常——别被表象骗了

指示灯异常,说白了就是「灯不按套路亮」。常见的有:

  • 一直红灯,永远不变绿
  • 绿灯常亮,但电池根本没电
  • 灯闪烁,但频率不对

为什么会这样?我拆解过几十把故障牙刷,总结下来就几个原因:

现象 可能原因 排查方法
一直红灯不转绿 电池老化,充不满;或充电电流设置过小 量电池电压,看是否达到4.2V;检查ISET电阻
绿灯常亮但没电 指示灯驱动电路短路,或MCU GPIO被拉死 断开MCU与LED的连接,单独测试LED
灯闪烁异常 充电芯片故障,或MCU检测到电池温度异常 检查NTC热敏电阻,看阻值是否在正常范围

警告:千万不要只看指示灯就下结论。我建议你养成一个习惯——用万用表量电池端电压,用示波器看充电芯片的STAT引脚波形。数据比灯靠谱得多。

3.3 电池续航严重下降——不是所有衰减都是老化

用户说「以前能用两周,现在三天就没电了」。你第一反应是「电池不行了,换一个」?别急,先搞清楚是「真衰减」还是「假衰减」。

真衰减——电池循环次数到了,内阻变大,容量缩水。锂电池一般300-500次循环后容量会降到80%以下。这个没辙,只能换。

假衰减——我遇到过好几次,其实是MCU的功耗异常。比如:

  • 电机驱动MOS管漏电,待机电流从10μA飙到500μA
  • 蓝牙模块没休眠,一直在广播
  • ADC采样电路没关断,持续耗电

怎么区分?很简单——测待机电流。正常电动牙刷待机电流应该在10-50μA。如果超过100μA,那肯定有问题。

避坑指南:我曾经遇到一个案例,用户说续航从14天掉到3天。我换了新电池,还是3天。最后发现是MCU的一个GPIO配置成了浮空输入,引脚悬空导致漏电。把那个引脚拉低后,续航立刻回到14天。所以,别一上来就换电池,先查软件。

3.4 电池鼓包检测——这个真不能马虎

电池鼓包,说白了就是锂电池内部发生了不可逆的化学反应,产生了气体。这是最危险的情况,处理不好会起火。

鼓包的原因:

  • 过充——充电电压超过4.25V,电解液分解产气
  • 过放——电池电压低于2.5V,内部短路
  • 高温——充电或放电时温度超过60°C
  • 物理损伤——摔过、压过、刺穿过

怎么检测?我习惯用两种方法:

  1. 视觉检测——拆开外壳,看电池表面有没有凸起、变形。嗯,这个最直接,但得拆机。
  2. 压力检测——在电池仓内贴一个薄膜压力传感器,或者用微动开关。电池一鼓包,就会顶到传感器,MCU检测到信号后立即报警。
// 电池鼓包检测伪代码
// 使用压力传感器或微动开关

#define SWELL_PIN GPIO_PIN_5

void check_battery_swell(void) {
    if (HAL_GPIO_ReadPin(SWELL_PORT, SWELL_PIN) == GPIO_PIN_SET) {
        // 检测到鼓包
        buzzer_alarm();          // 蜂鸣器报警
        led_flash_red();         // 红灯闪烁
        disable_charging();      // 禁止充电
        disable_motor();         // 禁止电机
        save_error_log(ERR_BATTERY_SWELL);
    }
}

警告:一旦检测到电池鼓包,必须立即停止使用。我建议你在产品说明里明确写清楚——鼓包电池不能继续充电,不能继续放电,必须专业回收。别想着「还能用几天」,那是在玩火。

最后说一句,电源系统的故障,很多时候是「连锁反应」。充电芯片坏了,可能导致电池过充;电池过充了,可能鼓包;鼓包了,可能顶坏外壳甚至起火。所以,排查时要有系统思维,别头痛医头。

我个人习惯,每批产品出厂前都会做一次「电源系统压力测试」——用可编程电源模拟各种异常情况,看看保护电路能不能扛住。你想想看,如果连这关都过不了,到了用户手里,那才叫真麻烦。