4. 电源管理设计:DC-DC与LDO选型、电源路径管理、电池电量监测与保护

电源管理,说白了就是按摩仪的“心脏”和“血管”。

我见过太多项目,功能做得花里胡哨,结果电池续航一塌糊涂,或者干脆开机就重启。嗯,这期我们就来聊聊怎么把这颗“心脏”设计好。

4.1 DC-DC与LDO选型:效率与噪声的博弈

选电源芯片,其实就是在效率和噪声之间找平衡。你想想看,按摩仪里既有电机这种大功率负载,又有蓝牙芯片这种对噪声敏感的器件。

DC-DC(降压转换器):效率高,但噪声大。

  • 适用场景:给电机、加热片供电。这些负载对纹波不敏感,但电流大。
  • 选型要点:我个人习惯看轻载效率。按摩仪大部分时间在待机或低档位运行,如果DC-DC在轻载下效率掉到70%以下,那电池就白费了。
  • 频率选择:1MHz左右是黄金频率。太高了开关损耗大,太低了电感电容体积大。

避坑指南:我曾经选过一颗标称效率95%的DC-DC,结果在10mA负载下只有60%。后来仔细看手册,才发现那个95%是在500mA下测的。所以,一定要看效率曲线,别只看峰值。

LDO(低压差线性稳压器):噪声低,但效率也低。

  • 适用场景:给蓝牙芯片、传感器、运放供电。这些器件对电源纹波极其敏感。
  • 选型要点:压差(Dropout Voltage)是关键。如果电池电压3.7V,要输出3.3V,压差只有0.4V。选一个压差0.2V的LDO,就能多用一会儿电池。
  • 静态电流:按摩仪待机时,LDO的静态电流可能比负载电流还大。我建议选静态电流低于1μA的型号。
参数 DC-DC LDO
效率 高(80%-95%) 低(取决于压差)
输出纹波 大(10-50mV) 小(<1mV)
静态电流 几十μA到几mA 几μA到几十μA
成本 较高(需电感) 较低
推荐场景 电机、加热 蓝牙、传感器

我的经验:一个常见的组合是:电池→DC-DC(降压到3.3V)→LDO(再降到1.8V给蓝牙)。这样既保证了整体效率,又给敏感器件提供了干净的电源。

4.2 电源路径管理:让电池和USB和平共处

按摩仪通常支持USB充电和电池供电。这两个电源怎么切换?搞不好就会烧芯片或者充不进电。

理想二极管方案:用PMOS管实现电源路径切换。

  • 当USB插入时,PMOS关断,切断电池通路,由USB供电并充电。
  • 当USB拔出时,PMOS导通,由电池供电。
  • 这样做的好处是:没有二极管压降,效率高。
// 电源路径切换伪代码
if (USB_Detected) {
    disable_battery_path();  // 关断PMOS
    enable_USB_path();       // 由USB供电
    start_charging();        // 开始充电
} else {
    enable_battery_path();   // 导通PMOS
    disable_USB_path();      // 由电池供电
    stop_charging();         // 停止充电
}

注意:切换时一定要加死区时间。我曾经遇到过PMOS和NMOS同时导通,瞬间短路,直接把电池保护板烧了。嗯,从那以后我都在软件里加了至少1ms的延迟。

充电管理芯片:现在很多芯片自带电源路径管理,比如TI的BQ系列、国产的TP4056。我建议直接用集成方案,省心。

  • 选型时注意:充电电流是否可调?是否支持热调节?
  • 我个人习惯选带NTC(热敏电阻)输入的芯片,可以检测电池温度,防止过热充电。

4.3 电池电量监测:别让用户“心里没底”

用户最怕什么?用着用着突然没电了。所以电量监测不是锦上添花,而是刚需。

电压法:最简单,但最不准。

  • 原理:测电池开路电压,查表得到电量。
  • 缺点:电池有内阻,负载变化时电压会跳变。比如电机一转,电压瞬间掉0.3V,电量显示就从50%掉到20%了。
  • 适用场景:对精度要求不高的低端产品。

库仑计法:准确,但成本高。

  • 原理:实时监测充入和放出的电荷量。
  • 优点:不受负载变化影响,精度可达1%。
  • 缺点:需要校准,且长时间使用后会有累积误差。

我的建议:对于按摩仪这种产品,用“电压法+补偿”就够了。具体做法是:

  1. 在电机不转时测电压,作为基准。
  2. 在电机转动时,根据电流大小补偿电压降。
  3. 每10秒更新一次电量显示,避免频繁跳动。
// 电压法电量估算(简化版)
uint8_t get_battery_level(uint16_t voltage_mv, uint16_t current_ma) {
    // 补偿内阻压降:假设内阻100mΩ
    uint16_t compensated_voltage = voltage_mv + (current_ma * 100 / 1000);
    
    // 查表得到电量百分比
    if (compensated_voltage >= 4100) return 100;
    else if (compensated_voltage >= 3900) return 80;
    else if (compensated_voltage >= 3700) return 60;
    else if (compensated_voltage >= 3500) return 40;
    else if (compensated_voltage >= 3300) return 20;
    else return 0;
}

4.4 电池保护:安全第一

锂电池很娇贵。过充、过放、过流、短路,任何一个都能让它“发脾气”。

保护板(BMS):这是第一道防线。

  • 过充保护:电压超过4.25V时切断充电。
  • 过放保护:电压低于2.8V时切断放电。
  • 过流保护:电流超过设定值(比如3A)时切断输出。
  • 短路保护:瞬间大电流时立即切断。

软件保护:这是第二道防线。

  • 我习惯在MCU里再加一层保护。比如检测到电池电压低于3.0V时,强制进入休眠模式,并关闭电机。
  • 充电时,如果检测到电池温度超过45°C,停止充电。

血的教训:我曾经以为保护板能搞定一切,结果有一次保护板失效,电池过放到2.5V,直接报废了。从那以后,我坚持“硬件保护+软件保护”双重保险。

电池选型

  • 容量:按摩仪一般用1000mAh到3000mAh的18650或聚合物电池。
  • 放电倍率:电机启动电流大,建议选1C以上放电倍率的电池。
  • 温度范围:按摩仪可能用在冬天户外,选-20°C到60°C的电池。

好了,电源管理这块就聊这么多。说白了,就是选对芯片、管好路径、测准电量、保好安全。下一章我们聊聊电机驱动和振动控制,那可是按摩仪的“灵魂”。