2446 字
12 分钟
【星球答疑】软包电芯化成夹具一致性差?基于“通道指纹”的容量补偿策略

前两天在我的知识星球里,有位资深工程师提了一个非常典型的问题(见下图):

这是一个非常经典且棘手的制造工程问题:设备能力不足,但资源受限,试图用数据处理(算法)来弥补硬件缺陷。

有热心的星友给出了建议:是设备硬件的问题,不该用软件去补偿弥补,而要找主要原因。

**

**

说的非常对,这是做质量的底线思维,如果MSA有问题应该先修设备。 但作为现场的设备工程师就比较难了,现在的老板批钱都比较难,逼着下面人给办法。所以大家只能想歪点子。 其实如果一定要算法补偿,也不是不行,但是逻辑相对比较复杂。

从补偿原理方面考虑,肯定不能直接按照固定值补偿。需要建立一个基于相关性分析的分级补偿模型。寻找“容量损失”与“物理特征”的函数关系。机理方面:通道差异导致容量偏低,通常是因为Tab接触方式、夹具压力分布等因素造成接触电阻或线路阻抗过大,放电时电压提前下降,提前触碰截止电压,从而导致放出的容量比实际少。

**

**

以下是一套分步骤的算法补偿方案及防漏杀策略:

首先,你需要量化每个通道的“系统误差”。**

**

方法:

一、建立基准

1.选取一批(如50-100只)性能极其稳定的“金样”电芯,或者同一批次、同一档位的量产电芯,随机打乱后分布到不同通道测试。

2.计算所有通道测得容量的中位数Cglobal

3.计算每个通道的平均测量值 Ci 与 Cglobal的差值 ΔCi

如果 ΔCi 是正态分布且范围很窄,说明设备正常。

如果某些通道ΔCi显著为负,这些就是由于夹具/接触差导致的“假性低容”。

二、算法补偿模型

方法1:基于接触内阻的动态补偿(最推荐)

软包电芯的接触好坏直接反应在DCR(直流内阻)或测试开始瞬间的电压降(IR Drop)上

原理:接触电阻大-> IR Drop大-> 有效放电时间缩短 -> 容量测低

算法:

建立回归方程 y = ax + b。

x = 测试过程中测得的接触阻抗(或放电瞬间压降)

y = 容量损失量(Golden Sample标准容量 - 实测容量)。

注意:必须设定 Rcontact 的阈值,超过阈值直接报错,不予补偿。

方法2:如果测不到准确的接触内阻,可以分析放电末端的曲线

  • 原理: 接触差的通道,在接近截止电压时,电压下降斜率(dV/dt)会异常陡峭,或者回弹电压(Recovery Voltage)异常高。
  • 算法: 测量放电停止后 1秒或10秒内的电压回弹值ΔV。回弹越大,说明欧姆极化(包含接触电阻)越大。建立 ΔV 与容量补偿量的函数关系。原理是一样的。

3. 关键:如何确保“不漏杀” (防呆机制)#

这是你最关心的问题。算法补偿本质上是在“美化”数据,如果边界控制不好,就会把真正的低容电池(B品)强行补成合格品(A品)。

必须设置以下三道熔断机制

1:设定一个最大允许补偿值(例如:设计容量的 1% 或 2%)。#

  • 逻辑: 如果算法计算出需要补偿 50mAh 才能合格,而上限只有 20mAh,则禁止补偿,直接判定为NG
  • 理由: 需要大幅度补偿通常意味着硬件连接极其恶劣,或者电芯本身内部极耳焊接不良。这时候不能通过算法“救”回来。

2:设定一个“硬下限”。#

  • 假设合格线是 3000mAh。
  • 设定硬下限为 2950mAh。
  • 逻辑: 实测值低于 2950mAh 的,无论算法算出接触电阻有多大,一律不进行补偿,直接判NG。只有在 2950mAh~3000mAh 之间的“灰色地带”才允许启动算法。

3:一致性校验(Z-Score 异常剔除)#

在一个Tray(托盘)或一个批次中,监控某个通道的补偿频率。

  • 逻辑: 如果某一个通道连续 10 次都需要进行正向补偿,说明该通道夹具已经严重磨损。
  • 动作: 算法自动锁死该通道,并报警提示人工维修,不再进行自动计算。

看起来完成了,一般也最多想到这里。但我是搞机器学习、深度学习的。所以脑子里始终装着:“模型退化”的问题。啥叫“模型退化”呢?

**

**

简单的说:一旦出现“变异点”,比如:

  • 来料变异:某批次电芯本身的内阻突然整体偏大(电解液问题或极耳焊接虚焊)。
  • 新缺陷模式:出现了一种新的“微短路”,导致电压下降快,算法误以为是接触阻抗大,结果“强行奶了一口”,把坏品放过了。

如果无法区分“是夹具接触差”还是“是电芯本身烂”,这个算法就是一颗定时炸弹。

下面的方案是我独有的,本来是打算放星球的,但为了让大家看得爽,这次我也不藏私了。

针对“未知的变异点”,我们需要引入动态参考系模式识别来升级防御。

1.用“相对值”算法来代替“绝对值”

用当前这一盘(或这一批)电芯的平均表现做基准。

**

**

1.计算当前 Tray 中所有电芯的阻抗中位数记为Rtray

2.计算单体电芯偏离度:Δ R = Rcell - Rtray。

  • 如果 **Δ R很小,但电芯容量低 **->真低容(不补,杀掉)。
  • 如果 Rtray整体都很高 ->制程/来料异常(报警,整盘扣留,不补)。
  • 只有当 Rtray 正常,且某几只电芯的 Δ R显著偏高,且该通道历史表现一直偏高时 ->判定为夹具个案,执行补偿

2.区分“系统性误差”与“随机性误差”

夹具问题:位置相关的。

产品问题:是****随机分布的。

**

**

建立“通道健康度档案” (注意之前的是Tray别)

算法不能只看“这一次”测试,要看“过去10次”该通道的表现

  • 如果通道5在过去 10 次测试中,有 8 次阻抗都比平均值高 5mΩ ->认定为通道故障
  • 动作: 对通道5的数据启动补偿算法。
  • 反之: 如果通道6平时都很准,突然这一次测出来阻抗大、容量低 ->认定为产品突发变异(如极耳虚焊)
  • **动作:**严禁补偿,直接判 NG。

只有被标记为“长期表现差”的通道,才配享用补偿算法;表现好的通道突然测出坏品,一律当真坏品杀掉。

  1. 策略三:CUSUM(累积和)监控算法的算法(这玩意黑带必考)

你需要一个“监控算法的算法”。

在你的质量看板上监控一个指标:平均补偿量

  • 正常情况: 每天的平均补偿量应该是一个稳定的波动值(比如平均每只补 2mAh)。
  • **异常触发:**如果某天平均补偿量突然飙升到 10mAh ->说明设备整体气源压力不足,或者探针批量磨损。如果某天补偿量突然降为 0 ->说明来料变好了,或者传感器坏了。
  • 措施: 一旦该指标触发 SPC 的控制限,立刻停机报警,人工介入。

所以这位ME,如果要进行算法检证,你的逻辑应该是这样的:

  • 输入数据:电压、电流、容量、阻抗、通道号。
  • 第一层过滤(大数法则):计算整盘平均阻抗。如果整盘异常 ->整盘报警(防来料变异)
  • 第二层过滤(通道指纹):查该通道的历史阻抗。如果历史正常,今日异常 ->判为产品缺陷,不补偿(防虚焊漏杀)
  • 第三层过滤(算法执行):如果是由于通道历史差导致的,计算 Cadj = C + f(ΔR)。
  • 第四层过滤(熔断机制):如果计算出的补偿值 > XmAh ->不补偿(防严重短路)
  • 输出结果:输出最终容量。

4. 写在最后

道理都懂,但真要在 Excel 里实现这套“四层过滤漏斗”,工作量巨大且容易出错。

作为一个“偷懒”的算法工程师,我用 Python 写了一个《通道动态补偿模拟器 (Demo)》。

它包含以上所有的逻辑:

  • ✅ 自动计算 Tray 中位数
  • ✅ 建立通道健康档案
  • ✅ CUSUM 异常监控

**为了验证这套逻辑的安全性,我还在代码里做了一个“蒙特卡洛模拟”:**我设定了 1% 的虚焊电芯和 5% 的坏通道,跑了 10 万条数据。结果证明,这套逻辑能精准拦截 99.9% 的坏品,同时把误杀率降低到 0.1%。

**这份带注释的 Python 源码和模拟结果(核心算法都在里面),我已经上传到【知识星球】。**感兴趣的兄弟可以下载下来,把你们产线的历史数据喂进去跑一下,看看能“救回”多少误杀的电池。

这两天星球支付升级,想加入星球的可以在公众号后台私信我。