4、电池与充电管理:锂电池特性与选型、充电管理芯片应用、电池电量监测技术

各位同学,咱们今天聊聊点钞机里最让人头疼的部分——电池。说实话,我见过太多产品因为电池没选好,最后整个项目推倒重来。点钞机这东西,它不像手机一天一充,有时候在银行柜台一放就是几个月,电池要是掉链子,那可真要命。

4.1 锂电池特性与选型——别只看容量

先说说锂电池。市面上常见的就两种:钴酸锂和磷酸铁锂。我个人习惯,点钞机这种设备首选钴酸锂。为什么?能量密度高,同样体积能塞进更大容量。我有个项目,客户非要省成本用磷酸铁锂,结果电池仓塞得满满当当,续航还是差一截。

选型时,我建议你重点关注这几个参数:

  • 标称电压:3.7V,满电4.2V,放电截止2.8V。别搞错了,有些国产电芯截止电压是3.0V,用错充电芯片会过放。
  • 容量:点钞机一般用2000mAh到5000mAh。我做过一个便携款,用了两节18650并联,容量做到4400mAh,够用一整天。
  • 放电倍率:点钞机电机启动瞬间电流能到2A,选1C放电的电芯就够了。别用那种手机电池,内阻大,电压一拉就掉。
  • 工作温度:银行柜台有空调,0℃到45℃没问题。但如果你要做户外点钞机,得选宽温电芯,-20℃到60℃那种。

我的经验之谈:千万别只看容量。内阻和循环寿命同样重要。我踩过坑,买了一批便宜电芯,标称3000mAh,实际用半年容量就掉到2000mAh。后来换了A品电芯,虽然贵了30%,但用了两年还扛得住。

4.2 充电管理芯片TP4056——便宜又好用

说到充电芯片,TP4056绝对是经典。线性充电,最大1A电流,外围电路简单到令人发指。我最早用这个芯片时,总觉得太简单不靠谱,后来发现——嗯,真香。

典型电路长这样:

// TP4056 典型应用电路
// BAT+ 接电池正极,BAT- 接电池负极
// PROG 引脚对地接电阻 Rprog,设定充电电流
// CHRG 引脚接LED,充电时亮
// STDBY 引脚接LED,充满时亮

// 充电电流计算公式:
// Icharge = 1000 / Rprog
// 例如:Rprog = 1.2kΩ,充电电流 = 1000/1.2 ≈ 833mA

// 推荐元件值:
// Rprog: 1.2kΩ (充电电流约830mA)
// Cin: 10μF 陶瓷电容
// Cout: 10μF 陶瓷电容
// R1: 1kΩ (CHRG引脚上拉)
// R2: 1kΩ (STDBY引脚上拉)

这里有个坑,我必须要说。TP4056的PROG引脚对地电阻,决定了充电电流。但很多人不知道,这个电阻的精度直接影响充电电流的准确性。我建议用1%精度的贴片电阻,别用5%的。

注意:TP4056是线性充电,发热量不小。1A充电时,芯片功耗能达到1.5W左右。PCB上一定要留够散热铜皮,我一般会在芯片底下铺一块大面积铜皮,再打几个过孔到背面。否则,芯片温度能飙到100℃以上,然后自动降流,充电慢得你想哭。

另外,TP4056没有电池NTC温度检测功能。如果你要做安全等级高的产品,建议换带NTC的芯片,比如MCP73831或者BQ24075。我有个客户要求过UL认证,TP4056直接就被毙了。

4.3 电池电量监测——别让用户抓瞎

电量监测,说白了就是告诉用户还有多少电。点钞机不像手机,用户不会天天盯着电量看。但万一用到一半没电了,钞票卡在机器里,那场面...你想想看。

常用的方法有三种:

  • 电压查表法:最简单,测电池电压,对照放电曲线估算电量。成本低,但精度差,尤其锂电池放电平台很平,3.7V到3.5V之间电量可能从80%掉到20%。
  • 库仑计法:用芯片实时监测充放电电流,积分计算电量。精度高,但贵。我常用的芯片是MAX17048或者BQ27441。
  • 混合法:电压查表+库仑计结合。平时用库仑计,空闲时用电压校准。这是目前主流做法。

我个人建议,点钞机用电压查表法就够了。为什么?因为点钞机的工作电流相对稳定,不像手机那样忽大忽小。你只要在电机不转的时候采样电压,精度能做到±10%以内。

电压查表的代码示例:

// 锂电池电压-电量查表 (3.7V 标称)
// 采样时机:电机停止后500ms,电池电压稳定后
const uint16_t battery_table[] = {
  3300,  // 0%
  3500,  // 10%
  3600,  // 20%
  3650,  // 30%
  3700,  // 40%
  3730,  // 50%
  3760,  // 60%
  3800,  // 70%
  3850,  // 80%
  3950,  // 90%
  4100   // 100%
};

uint8_t get_battery_percent(uint16_t voltage_mv) {
  uint8_t i;
  for(i = 0; i < 10; i++) {
    if(voltage_mv < battery_table[i+1]) {
      // 线性插值
      return i*10 + (voltage_mv - battery_table[i]) * 10 / 
             (battery_table[i+1] - battery_table[i]);
    }
  }
  return 100;
}

避坑指南:我曾经在采样时机上吃过亏。电机转动时,电池电压会被拉低0.3V到0.5V。如果你这时候采样,电量显示会突然掉一大截,用户以为电池坏了。后来我加了个延时,电机停转后等500ms再采样,问题就解决了。

还有一个细节——电池老化。新电池满电4.2V,用了一年后可能只能充到4.15V。如果你还用原来的电压表,电量会一直显示不满。我建议在充电管理里加个满电校准功能,每次充满后记录实际电压,动态调整查表范围。

4.4 实战建议——把这些串起来

好了,咱们把今天的内容串一下。选电芯时,我建议用18650钴酸锂,容量2000mAh以上,内阻小于80mΩ。充电用TP4056,PROG电阻选1.2kΩ,充电电流830mA。电量监测用电压查表法,采样时机选在电机停转后。

最后说一句,电池管理这块,安全永远是第一位的。别为了省几毛钱用劣质电芯,万一鼓包起火,那可不是闹着玩的。我见过一个案例,用了没保护板的电芯,充电时过压,直接炸了。从那以后,我所有项目都强制加保护板,哪怕客户说不要。

嗯,今天就到这儿。下一章咱们聊聊点钞机的电机驱动和电磁兼容设计,那也是个容易踩坑的地方。