第四章 轮速信号处理:从传感器到车速估算
各位同学,大家好。今天我们进入ABS控制算法中最基础、也最容易被忽视的一环——轮速信号处理。
说实话,我在刚入行那会儿,总觉得轮速处理不就是读个脉冲嘛,有什么难的?直到有一次在冬季试验场,车辆在冰雪路面上ABS介入时,轮速信号突然出现大量毛刺,导致参考车速估算完全跑偏,车子差点失控。从那以后,我才真正重视起这个环节。
好,我们正式开始。
4.1 轮速传感器原理
目前主流的轮速传感器有两种:磁电式和霍尔式。
磁电式传感器,说白了就是一个线圈加一个磁铁。齿圈转动时,磁通量变化,线圈感应出正弦波信号。它的优点是结构简单、成本低,但缺点也很明显——低速时信号幅值太小,容易丢失。
我记得有一次在台架测试中,车速降到3km/h以下时,磁电式传感器的输出几乎淹没在噪声里。嗯,这时候就需要霍尔式传感器出场了。
霍尔式传感器利用霍尔效应,输出的是方波信号。它的幅值不随转速变化,低速性能好。但要注意,它需要供电,而且对安装气隙比较敏感。
| 类型 | 输出信号 | 低速性能 | 成本 | 典型应用 |
|---|---|---|---|---|
| 磁电式 | 正弦波 | 差(<3km/h易丢失) | 低 | 早期ABS系统 |
| 霍尔式 | 方波 | 好(可检测零速) | 中 | 主流ABS/ESC系统 |
4.2 信号采集与滤波
传感器出来的原始信号,不能直接用。为什么?因为车上到处都是电磁干扰——点火线圈、电机、甚至手机充电都会带来噪声。
信号采集的第一步是整形。对于磁电式,需要过零比较器把正弦波变成方波;对于霍尔式,本身输出就是方波,但需要施密特触发器做滞回比较,防止在跳变沿附近反复触发。
第二步是滤波。我一般分两级处理:
- 硬件滤波:RC低通滤波器,截止频率通常设在1-2kHz。这个值怎么定?你想想看,轮速传感器的最高频率是多少?假设齿圈有48个齿,车速250km/h,轮胎滚动半径0.3m,算下来频率大约在1.1kHz左右。所以1-2kHz的截止频率是合理的。
- 软件滤波:我习惯用中值滤波+滑动平均的组合。先做3点中值滤波,剔除明显的脉冲干扰;再做5点滑动平均,平滑波形。
// 轮速信号软件滤波示例(C语言伪代码)
uint16_t wheel_speed_filter(uint16_t raw_value) {
static uint16_t buffer[5] = {0};
static uint8_t index = 0;
uint16_t median[3];
// 1. 更新缓冲区
buffer[index] = raw_value;
index = (index + 1) % 5;
// 2. 3点中值滤波
median[0] = buffer[(index + 3) % 5];
median[1] = buffer[(index + 4) % 5];
median[2] = buffer[index];
// 排序取中值
sort(median, 3);
uint16_t median_val = median[1];
// 3. 5点滑动平均
static uint16_t sum = 0;
static uint16_t avg_buffer[5] = {0};
static uint8_t avg_index = 0;
sum -= avg_buffer[avg_index];
avg_buffer[avg_index] = median_val;
sum += avg_buffer[avg_index];
avg_index = (avg_index + 1) % 5;
return sum / 5;
}
4.3 轮速计算与方向判断
滤波后的方波信号,我们需要算出轮速。常用的方法有两种:
- 测频法:在固定时间窗口内计数脉冲个数。适合高速工况,低速时精度差。
- 测周法:测量相邻两个脉冲的时间间隔。适合低速工况,高速时精度差。
实际项目中,我通常采用多模式切换的策略:
// 轮速计算策略
if (pulse_interval > THRESHOLD_HIGH) {
// 低速:测周法
speed = (1.0 / pulse_interval) * K_constant;
} else {
// 高速:测频法
speed = (pulse_count / time_window) * K_constant;
}
方向判断呢?这就要用到两个霍尔传感器了,安装位置相差90度相位。通过判断两个信号的相位关系,就能知道车轮是正转还是反转。
具体来说:
- 如果A相上升沿时B相为高电平,则正转
- 如果A相上升沿时B相为低电平,则反转
嗯,这里要注意一个坑:车辆在颠簸路面行驶时,车轮可能会短暂离地并反转。我曾经遇到过这种情况,ABS控制器误判为倒车,直接退出了调节。后来我们在算法中加入了方向确认逻辑——连续检测到3个同向脉冲才确认方向变化。
4.4 参考车速估算
这是轮速处理中最核心的部分。ABS需要知道车辆的绝对速度,但四个轮子在制动时都可能打滑,没有哪个轮速是绝对准确的。
常用的方法有:
- 最大轮速法:取四个轮速的最大值。简单粗暴,但在低附路面误差大。
- 斜率法:根据车辆减速度估算。我比较喜欢这种方法,但需要准确的减速度初值。
- 卡尔曼滤波法:精度最高,但计算量大,对MCU性能有要求。
我在量产项目中常用的是综合法:
- 制动开始时,以最大轮速作为初始参考车速
- 根据车辆纵向加速度传感器,实时估算减速度
- 当所有轮速都低于估算车速时,以估算车速为准
- 当某个轮速突然高于估算车速时(比如从冰面驶入沥青路面),重新以该轮速为准
最后说一句,轮速信号处理没有银弹。不同的车型、不同的传感器、不同的使用场景,都需要针对性地调整参数。我建议大家在开发初期就搭建一套完整的信号采集和分析工具链,把原始数据录下来,离线分析,找到最适合自己项目的处理方案。
好,这一章就到这里。下一章我们讲ABS液压调节单元的核心——电磁阀控制策略。