第三章 阈值检测法:固定阈值故障检测的核心原理
阈值检测法,说白了就是给传感器信号画两条线——上线和下线。信号跑出去了,我就认为它出故障了。这是最基础、最直观的故障检测手段,也是我入行时学的第一个诊断方法。
你想想看,一个正常的温度传感器,水温应该在 -40°C 到 150°C 之间。如果突然读到 200°C,那肯定有问题。嗯,就是这么简单粗暴。
3.1 固定阈值检测的基本原理
固定阈值检测,就是预先设定好一个上限和一个下限。传感器信号一旦超出这个范围,ECU 就判定为故障。我习惯把这个范围叫做「安全走廊」。
举个例子,一个 5V 供电的油门位置传感器,正常输出范围是 0.5V 到 4.5V。那么:
- 低于 0.5V → 可能短路到地
- 高于 4.5V → 可能短路到电源
- 在 0.5V~4.5V 之间 → 正常
我在项目中遇到过一件事:有个同事把阈值设得太紧,结果正常信号偶尔被误判为故障。后来排查了半天,发现是线束接触不良导致的微小波动。从那以后,我对阈值设定就格外小心了。
3.2 上下限阈值的设定策略
阈值怎么设?这不是拍脑袋决定的。我一般遵循以下几个原则:
3.2.1 基于物理极限
每个传感器都有它的物理极限。比如氧传感器的输出电压范围是 0V~1V,那阈值就不能超出这个范围。这是底线。
3.2.2 考虑系统容差
传感器本身有精度误差,ADC 采样有量化误差,线束有压降。这些都要算进去。我习惯在物理极限的基础上,留出 5%~10% 的余量。
3.2.3 区分故障类型
不同的故障,阈值应该不同。比如:
| 故障类型 | 阈值设定 | 典型值 |
|---|---|---|
| 短路到地 | 低于正常范围下限 | < 0.2V |
| 短路到电源 | 高于正常范围上限 | > 4.8V |
| 信号漂移 | 超出动态范围 | 根据工况动态调整 |
| 传感器老化 | 缓慢超出阈值 | 需配合趋势检测 |
重要提醒:阈值不是一成不变的。不同车型、不同工况下,阈值可能需要微调。我建议在标定阶段做充分的实车测试。
3.3 迟滞区间的设计
迟滞区间,这是很多新手容易忽略的地方。什么叫迟滞?就是信号从正常变到故障,和从故障恢复到正常,用的不是同一个阈值。
举个例子:
- 正常范围:0.5V ~ 4.5V
- 故障判定阈值:< 0.3V 或 > 4.7V
- 故障恢复阈值:> 0.4V 且 < 4.6V
你看,0.3V~0.4V 和 4.6V~4.7V 这两个区间,就是迟滞区间。为什么要这么设计?
我曾经在一个项目中吃过亏。当时没有加迟滞,结果传感器信号刚好在阈值附近抖动,ECU 在「正常」和「故障」之间来回切换,导致系统频繁报错。那叫一个头疼。
迟滞区间的好处很明显:
- 防止抖动:信号在阈值附近波动时,不会频繁触发故障
- 提高稳定性:故障状态一旦建立,不会轻易解除
- 减少误报:尤其是对噪声敏感的信号
我的经验:迟滞区间的大小,一般取正常范围的 5%~10%。比如正常范围是 0.5V~4.5V,那迟滞区间可以设为 0.05V~0.1V。具体数值要根据实际噪声水平来调。
3.4 代码实现示例
下面是一个简单的阈值检测代码示例,我习惯用 C 语言写:
/* 阈值检测函数 */
uint8_t Threshold_Check(float sensor_value, float upper_limit, float lower_limit, float hysteresis)
{
static uint8_t fault_status = 0; /* 0:正常, 1:故障 */
if (fault_status == 0) {
/* 正常状态:检查是否超出阈值 */
if ((sensor_value > upper_limit) || (sensor_value < lower_limit)) {
fault_status = 1;
}
} else {
/* 故障状态:检查是否回到正常范围(带迟滞) */
if ((sensor_value <= (upper_limit - hysteresis)) &&
(sensor_value >= (lower_limit + hysteresis))) {
fault_status = 0;
}
}
return fault_status;
}
你看,代码很简单。但关键就在那个 hysteresis 参数上。没有它,这个检测就是脆弱的。
3.5 实际应用中的注意事项
阈值检测法虽然简单,但坑也不少。我总结了几点:
警告:
- 不要只依赖固定阈值。它只能检测「超出范围」的故障,对「在范围内但异常」的信号无能为力
- 阈值设定要考虑温度漂移。有些传感器在不同温度下输出会变化
- 迟滞区间不能太大,否则故障恢复会变慢
- 多通道传感器要分别设定阈值,不要共用
我记得有一次,一个氧传感器的阈值设得太宽,结果传感器已经老化了,输出信号一直在正常范围内,但实际空燃比已经偏了。后来加了趋势检测才把这个问题揪出来。
所以,阈值检测法是个好工具,但不是万能的。它适合做第一道防线,配合其他检测方法才能构建完整的故障诊断体系。
3.6 小结
阈值检测法,说白了就是给传感器信号画个框。框内正常,框外故障。但怎么画这个框,大有讲究。
我个人习惯:先根据物理极限设定基础阈值,再留出 5%~10% 的余量,最后加上迟滞区间。这样既能保证检测的灵敏度,又能避免误报。
下一章,我会讲动态阈值检测。那玩意儿比固定阈值灵活多了,但也复杂得多。到时候再聊。
核心要点回顾:
- 固定阈值检测是最基础的故障检测方法
- 阈值设定要考虑物理极限、系统容差和故障类型
- 迟滞区间是防止信号抖动的关键设计
- 阈值检测法需要配合其他方法使用
公众号:蓝海资料掘金营,微信deep3321