第三章:关键传感器技术
传感器,说白了就是线控转向系统的「眼睛」和「耳朵」。
没有它们,你连方向盘转没转都不知道,更别提什么精准控制了。我入行那会儿,有个老前辈跟我说过一句话,我一直记着——「线控转向玩到深处,其实就是在玩传感器信号。」当时不太理解,后来踩的坑多了,才明白这话有多实在。
3.1 方向盘转角传感器
这是最基础的传感器。它告诉你:方向盘转了多少度,往哪个方向转。
我个人习惯把转角传感器分成两类:
- 绝对式:上电就知道当前角度,不需要找零位。常用的是磁编码器配合多极磁环。
- 增量式:只能知道相对变化,上电后需要「找零」。比如光电编码器。
线控转向系统里,我强烈建议用绝对式。为什么?
你想想看,如果车子启动时方向盘是歪的,增量式传感器会以为这是零位,那后面的控制全乱套了。我在项目里吃过这个亏——有一次样车调试,方向盘明明回正了,但车轮却偏了15度。查了一整天,最后发现是增量式传感器上电时没做零位标定。
关键参数:
- 分辨率:至少0.1°,最好能做到0.036°
- 精度:±0.5°以内
- 更新率:不低于1kHz
3.2 扭矩传感器
扭矩传感器测量的是你施加在方向盘上的力矩。这个信号直接决定了「手感」好不好。
常见的方案有两种:
- 应变片式:贴在扭杆上,通过电阻变化测扭矩。精度高,但温度漂移是个麻烦事。
- 磁致伸缩式:利用磁弹效应,非接触测量。可靠性好,但成本高一些。
我记得有一次做耐久测试,应变片式的扭矩传感器连续工作了200小时后,输出信号开始飘。一开始以为是算法问题,后来拆开一看,应变片胶水老化了。嗯,从那以后,我对传感器的环境适应性就特别敏感。
避坑指南:
我曾经遇到过扭矩传感器和转角传感器互相干扰的情况。两个传感器靠得太近,磁场耦合了。解决办法很简单——拉开物理距离,或者在中间加一层磁屏蔽。
3.3 电机位置传感器
这个传感器装在转向执行电机上。它告诉控制器:电机转子转到哪个位置了。
没有它,你就没法做FOC(磁场定向控制)。
常用的有:
- 旋转变压器(Resolver):耐高温、抗振动,车规级首选。我个人的最爱。
- 磁编码器:体积小、成本低,但耐温性不如旋变。
这里有个细节——旋变需要激励信号,通常是10kHz左右的正弦波。如果激励信号质量不好,解算出来的角度就会有误差。我见过一个案例,就是因为激励信号线上串了个小电容,导致相位偏移了3度,电机跑起来嗡嗡响。
注意:
电机位置传感器的安装偏心不能超过0.1mm。否则,每转一圈都会引入一个周期性的角度误差。这个误差在低速时特别明显,手感会一卡一卡的。
3.4 车辆状态传感器
这部分包括车速传感器和横摆角速度传感器。它们提供的是整车层面的状态信息。
| 传感器 | 测量内容 | 典型精度 | 我的建议 |
|---|---|---|---|
| 车速传感器 | 车辆纵向速度 | ±0.1 km/h | 最好用轮速信号融合,别单靠一个传感器 |
| 横摆角速度传感器 | 车辆绕Z轴的旋转角速度 | ±0.1°/s | MEMS陀螺仪就够用,别过度设计 |
车速信号直接影响转向系统的助力特性。车速低的时候,手感要轻;车速高的时候,手感要重。这个逻辑大家都懂,但实际做起来,车速信号的噪声处理才是关键。
我见过一个项目,车速信号里有个50Hz的纹波,结果高速行驶时方向盘一直在微抖。查到最后,发现是CAN总线上的车速报文更新频率不够,导致信号出现了阶梯状跳变。
3.5 传感器信号处理与滤波
这是我最想聊的部分。传感器原始信号,说白了就是「脏数据」。不处理直接用,系统会疯掉。
常用的滤波手段:
- 低通滤波:去掉高频噪声。一阶RC滤波最简单,但相位延迟大。我一般用二阶巴特沃斯。
- 中值滤波:对付脉冲噪声特别好用。比如扭矩信号偶尔跳变一下,中值滤波能直接干掉。
- 卡尔曼滤波:如果你需要融合多个传感器信号,卡尔曼是首选。但要注意,调参是个手艺活。
举个例子,转角传感器的原始信号长这样:
// 原始信号,单位:度
float raw_angle = 45.32; // 实际值应该是45.30
// 噪声大概有±0.05度的随机抖动
// 一阶低通滤波
float filtered_angle = 0.9f * filtered_angle + 0.1f * raw_angle;
// 这样处理后,噪声能压到±0.01度以内
但这里有个坑——滤波会引入延迟。你想想看,如果方向盘快速打了一圈,滤波后的信号可能滞后了10ms。这10ms在高速工况下,可能就是半米多的偏差。
我的经验法则:
滤波器的截止频率,不要低于信号带宽的5倍。比如方向盘转角的变化频率最高也就10Hz,那截止频率设在50Hz以上比较安全。
另外,信号处理还有一个容易被忽略的点——时间戳对齐。多个传感器的数据到达ECU的时间可能不一样。比如车速信号是10ms发一次,转角信号是2ms发一次。如果你不做时间戳对齐,融合出来的结果就是错的。
我习惯的做法是:每个传感器数据都带上硬件时间戳,然后在软件里做插值对齐。说白了,就是让所有数据都「站在同一个时间点上」。
一个小技巧:
在做传感器信号处理时,先做「合理性检查」。比如转角传感器的变化率不可能超过2000°/s,如果超过了,那大概率是传感器坏了或者线松了。直接丢弃这个数据,用上一帧的值代替。这个逻辑虽然简单,但能避免很多莫名其妙的故障。
好了,传感器这块的内容基本就这些。每个传感器都有自己的脾气,摸透了它们,线控转向系统就成功了一半。