第4章:温度采样与热敏电阻诊断
大家好,我是老张。今天咱们聊聊BMS里一个看似简单、实则坑不少的话题——温度采样。说白了,电池管理系统要是不知道电池有多热,那所有保护策略都是瞎扯。我在项目里见过太多因为温度采样出问题导致的故障,轻则误报警,重则电池包直接趴窝。
4.1 NTC/PTC热敏电阻原理
先说说热敏电阻这玩意儿。它分两种:NTC和PTC。NTC是负温度系数,温度越高电阻越小;PTC正好相反,温度越高电阻越大。BMS里绝大多数用的都是NTC,为什么?因为便宜、响应快、精度也够用。
NTC的电阻-温度关系不是线性的,它遵循一个指数规律:
R(T) = R₀ × exp(B × (1/T - 1/T₀))
这里R₀是参考温度T₀下的电阻值,B是材料常数。嗯,这个公式看着有点吓人,但实际用的时候我们一般查表或者用分段线性化处理。我个人习惯在代码里预存一个温度-电阻对照表,然后做线性插值,这样既快又准。
关键参数:
- B值:一般在3000-4000K之间,决定了灵敏度
- R25:25℃时的标称电阻,常见的有10kΩ、100kΩ
- 精度:±1%到±5%不等,看成本
我在项目中遇到过一个问题:某供应商提供的NTC,B值标称3950K,但实际测出来只有3800K。你想想看,在-20℃时,这个偏差能导致温度读数差出5℃以上。所以啊,拿到新物料一定要做抽检,别太相信规格书。
4.2 温度采样电路设计
温度采样电路,说白了就是用一个分压电路把电阻变化转换成电压变化,然后送给ADC去读。最常见的电路是这样的:
VCC (3.3V或5V)
│
┌┴┐
│R│ 上拉电阻(固定值)
└┬┘
│
┌┴┐
│ │ NTC热敏电阻
└┬┘
│
GND
ADC采样点就在上拉电阻和NTC的连接处。这个电路简单吧?但设计的时候有几个坑要注意:
- 上拉电阻的选择:一般选和R25同数量级的,比如NTC是10kΩ,上拉也选10kΩ。这样在25℃时,分压点电压正好是VCC的一半,ADC的动态范围利用最充分。
- 滤波电容:ADC输入端一定要加一个0.1μF的电容到GND,滤掉高频噪声。我见过有人省了这个电容,结果温度读数跳得像心电图。
- ESD保护:如果温度采样线要引出到电池模组,建议加TVS管。有一次客户现场打雷,烧了好几个采样通道,后来加了保护再没出过事。
我的设计习惯:
每个温度通道独立使用一个ADC引脚,不要用模拟开关复用。虽然成本高一点,但可靠性好很多。复用的话,一旦开关坏了,好几个通道同时失效,排查起来很头疼。
4.3 温度通道故障诊断
温度通道出问题,无非三种情况:断线、短路、阻值漂移。咱们一个一个说。
4.3.1 断线检测
断线的时候,NTC和ADC之间断了,ADC引脚相当于通过上拉电阻接到VCC。所以读到的电压接近VCC,换算成电阻就是无穷大。在代码里,我们设定一个阈值:
#define TEMP_OPEN_THRESHOLD 0.95f // 95% VCC
if (adc_voltage > VCC * TEMP_OPEN_THRESHOLD) {
// 判定为断线故障
set_fault(FAULT_TEMP_OPEN, channel_id);
}
这里要注意,低温时NTC电阻很大,电压也会偏高。所以阈值不能设得太低,否则低温工况会误报断线。我一般留5%的余量,也就是95%VCC以上才判断线。
4.3.2 短路检测
短路分两种:对VCC短路和对GND短路。
- 对GND短路:ADC电压接近0V,电阻接近0Ω。这个好判断,设一个低阈值就行,比如5%VCC以下。
- 对VCC短路:ADC电压接近VCC,和断线很像。怎么区分?我教你一招:在电路里串一个几百欧的限流电阻。断线时电压是VCC,短路时电压也是VCC,但短路时电流大,限流电阻上会有压降。不过说实话,这个区分在量产中比较麻烦,我一般把对VCC短路和断线合并成一个故障码,反正处理方式都一样——报错并禁用该通道。
注意: 短路检测一定要做硬件消抖。ADC采样本身有噪声,加上继电器动作时的干扰,很容易误报。我习惯在软件里连续采样3次,都超阈值才确认故障。
4.3.3 阻值漂移检测
阻值漂移是最难诊断的。NTC用久了,或者受潮,阻值会慢慢偏离标称值。这种故障不会导致电压突变,而是让温度读数慢慢偏掉。
怎么检测?我常用的方法有两种:
- 交叉校验法:如果电池包里有多个温度传感器,对比相邻通道的读数。正常情况下,相邻电芯的温度差不会超过5℃。如果某个通道和其他通道差太多,大概率是它漂了。
- 自检法:在电路里加一个精密参考电阻,通过模拟开关定期切换到ADC通道去测量。如果测出来的值和标称值对不上,说明ADC或者NTC有问题。
我曾经在一个项目里遇到过:某批NTC用了半年后,阻值普遍漂了2%-3%。换算成温度,在60℃时差了将近1.5℃。虽然单看不大,但累积到SOC估算上,误差就大了。后来我们增加了定期自检功能,每100小时自动校准一次,才把这个问题压下去。
4.4 实战经验总结
嗯,说了这么多,最后给大家几个实在的建议:
| 故障类型 | 诊断方法 | 处理策略 |
|---|---|---|
| 断线 | 电压>95%VCC | 报故障,禁用该通道 |
| 对GND短路 | 电压<5%VCC | 报故障,禁用该通道 |
| 对VCC短路 | 电压>95%VCC(与断线合并) | 报故障,禁用该通道 |
| 阻值漂移 | 交叉校验或自检 | 报警告,降级使用 |
最后说一句:温度采样电路看着简单,但它是BMS的「眼睛」。眼睛瞎了,整个系统就是盲人摸象。所以设计的时候多花点心思,测试的时候多跑几个极端工况,比事后救火强得多。
好,这一章就到这儿。下一章咱们聊聊电流采样和霍尔传感器的那些事儿。