4、电池组拓扑:串联与并联设计、电池组容量计算、NTC热敏电阻布局

好,咱们进入电池组拓扑这个环节。说实话,这是整个BMS系统里最“物理”的部分——你所有的算法、保护逻辑,最终都要落在这几颗电芯的排列组合上。我见过不少方案,原理图画得漂漂亮亮,一到电池包组装就出问题,说白了就是拓扑没想清楚。

4.1 串联与并联设计:先串后并,还是先并后串?

先讲串联。除颤仪这种设备,电压要求通常不低——我记得一般需要12V到24V的电池组电压,甚至更高。单颗锂电芯标称3.6V或3.7V,那你就得串。比如7串就是25.2V(满电),6串是21.6V。这个很好算。

但问题来了:要不要并联?

我个人习惯是:尽量少并,优先串。为什么?并联电芯之间会有环流问题。哪怕你配组时电压一致,内阻差一点,充放电过程中就会产生电流不均衡。我在项目中遇到过,4并的电池组,用了半年后中间两颗电芯明显老化更快——就是因为环流导致局部过温。

⚠️ 避坑指南: 我曾经吃过一次亏——为了追求容量,把6颗18650做了3并2串。结果放电时其中一颗内阻偏大,整组电压掉得飞快,BMS误判为过放。后来我改成2并3串,问题就解决了。记住:并联数不要超过3,除非你有严格的配对工艺。

那拓扑结构怎么选?常见的有两种:

  • 先串后并:先把电芯串成模组,再把模组并联。优点是模组电压高,并联电流小,适合大功率场景。除颤仪我推荐这种。
  • 先并后串:先把电芯并成“大容量单元”,再串联。优点是容量大,但环流风险高,且一旦某颗电芯出问题,整个并联组都受影响。

你想想看,除颤仪关键时刻要放电几百焦耳,电流瞬间几十安培。如果并联组里有电芯内阻不一致,那电流分配就不均匀,发热严重。所以我建议:用先串后并,且每串之间加保险丝或PTC

4.2 电池组容量计算:别只看标称

容量计算,听起来简单——串数×单颗容量×并联数。但实际工程中,你得考虑几个因素:

  1. 放电深度(DOD):锂电不建议放空,一般留10%-20%余量。比如你算出来需要10Ah,实际要配12Ah以上。
  2. 温度降额:低温下容量会缩水。0℃时可能只有80%的标称容量。我在东北做过一个项目,冬天户外测试,容量直接打七折。
  3. 老化衰减:电池用一年后,容量通常衰减到80%-90%。设计时最好留20%的余量。

举个例子:除颤仪要求连续工作30分钟,平均电流5A,那理论容量是2.5Ah。但考虑到DOD 80%、低温降额20%、老化衰减15%,实际需要:

实际容量 = 2.5 / (0.8 × 0.8 × 0.85) ≈ 4.6 Ah

嗯,这里要注意:别直接拿理论值去选电芯。我习惯在计算基础上再加10%的安全系数,最后选5Ah以上的电池组。

因素 降额系数 说明
放电深度(DOD) 0.8 留20%余量防止过放
低温降额(0℃) 0.8 低温下容量下降
老化衰减(1年) 0.85 循环寿命影响
安全系数 0.9 工程余量
💡 核心公式:
实际容量 = 理论容量 / (DOD系数 × 温度系数 × 老化系数 × 安全系数)

4.3 NTC热敏电阻布局:温度是电池的“命门”

温度检测,我把它排在容量计算之后,因为温度直接影响安全。NTC热敏电阻,说白了就是一个阻值随温度变化的电阻。BMS通过采集它的电压,反推出温度。

布局上,有几个关键点:

  • 位置选择:NTC要贴在电芯表面,最好是正极附近——因为正极发热最明显。我见过有人贴在电池支架上,那测出来的温度滞后好几度,根本不准。
  • 数量要求:每串至少一个NTC。如果是并联组,每并也要一个。我习惯在电池组中心位置再加一个——因为中心散热最差,温度最高。
  • 电气隔离:NTC是低压器件,但电池组电压可能几十伏。一定要做好绝缘,防止短路。我一般用带绝缘套的NTC,或者用导热硅胶固定。
🔧 实战技巧: 我曾经在调试时发现,NTC测出来的温度比实际低5℃。查了半天,原来是NTC和电芯之间有一层厚厚的绝缘胶带。后来我改用0.5mm厚的导热垫片,问题就解决了。记住:NTC和电芯之间要导热良好,但电气绝缘

电路上,NTC通常和固定电阻串联,组成分压电路。ADC采集分压值,然后查表或计算得到温度。代码示例:

// NTC温度计算示例(B值法)
#define B_VALUE 3950  // NTC的B常数
#define R25 10000     // 25℃时的阻值,单位欧姆
#define R_FIXED 10000 // 串联固定电阻

float get_temperature(uint16_t adc_value, float vref) {
    float v_ntc = (float)adc_value / 4096 * vref;
    float r_ntc = (v_ntc * R_FIXED) / (vref - v_ntc);
    float temp_k = 1.0 / (1.0/298.15 + (1.0/B_VALUE) * log(r_ntc / R25));
    return temp_k - 273.15; // 转换为摄氏度
}

嗯,这里要注意:ADC的参考电压要稳定。如果Vref波动,测出来的温度会漂。我习惯用BMS内部的基准电压源,而不是直接从电池取电。

⚠️ 重要提醒: NTC的响应速度有限。如果电池组突然大电流放电,温度会快速上升,但NTC可能滞后几秒。所以BMS的过温保护要留有余量——比如设定65℃报警,但实际NTC测到60℃时就要开始降功率。

最后总结一下:电池组拓扑不是简单的串并联,它关系到容量、安全、寿命。我个人的经验是——先算容量需求,再定串并结构,最后用NTC把温度盯死。这三步走稳了,BMS的硬件基础就扎实了。