第4章 TCU传感器与执行器接口:数字量输入输出接口、模拟量输入接口(ADC)、PWM输出与电机控制接口
各位同学,咱们今天聊点实在的。TCU(变速箱控制单元)说到底,就是个“翻译官”和“指挥官”。它得读懂传感器送来的信号,再给执行器下达指令。这中间的桥梁,就是我今天要讲的——传感器与执行器接口。
我做了十几年TCU开发,见过太多因为接口设计翻车的案例。有的是信号抖动导致换挡顿挫,有的是ADC采样不准让油压控制失灵。说白了,接口设计搞不好,后面算法写得再漂亮也是白搭。
4.1 数字量输入输出接口
数字量接口,是TCU最基础、也最常用的接口。它处理的是0和1的信号。
4.1.1 数字量输入
TCU需要读取哪些数字信号?我列几个典型的:
- 档位开关信号:P、R、N、D档位位置检测
- 刹车开关信号:判断驾驶员是否踩刹车
- 模式选择开关:经济模式、运动模式切换
- 油温过高报警:来自油温传感器的阈值信号
这些信号,说白了就是干接点或者高低电平。但实际项目中,问题往往出在“抖动”上。
我的习惯做法是:硬件上加RC低通滤波,软件上做20ms的去抖延时。双保险,稳得很。
4.1.2 数字量输出
数字量输出,TCU用它来控制一些开关型执行器。比如:
- 电磁阀通断控制:某些开关型电磁阀
- 指示灯驱动:仪表盘上的变速箱故障灯
- 继电器控制:油泵继电器、风扇继电器
这里要注意驱动能力。TCU的IO口通常只能输出几毫安,驱动继电器或电磁阀必须加驱动芯片或MOS管。我习惯用智能高边驱动芯片,比如英飞凌的BTS系列,自带过流、过温保护,省心不少。
4.2 模拟量输入接口(ADC)
TCU要感知的很多物理量是连续变化的,比如油温、油压、油门踏板位置。这些都得靠ADC(模数转换器)来采集。
4.2.1 常见的模拟量信号
| 信号类型 | 传感器 | 信号范围 | 采样要求 |
|---|---|---|---|
| 油温 | NTC热敏电阻 | 0~5V(分压后) | 10Hz,精度0.5% |
| 油压 | 压阻式压力传感器 | 0.5~4.5V | 100Hz,精度1% |
| 油门踏板位置 | 霍尔传感器 | 0~5V(双路冗余) | 200Hz,精度0.3% |
| 输入轴转速 | 磁电式/霍尔式 | 频率信号(需F/V转换) | 10kHz级别 |
你想想看,油温变化慢,10Hz采样就够了。但油门踏板是驾驶员直接操控的,响应必须快,200Hz是底线。
4.2.2 ADC设计要点
我见过不少工程师,ADC采样值直接拿来用,结果控制效果一塌糊涂。为什么?因为噪声太大了。
我的做法是三步走:
- 硬件滤波:每个模拟输入通道加一个RC低通滤波器,截止频率根据信号带宽来定。油温信号带宽低,截止频率设10Hz;油门踏板信号带宽高,设100Hz。
- 软件滤波:我习惯用滑动平均滤波,取最近N次采样的平均值。N取多少?看采样率和信号变化速度。油门踏板我取4次,油温我取16次。
- 诊断检测:ADC值超出正常范围(比如油压传感器输出0V或5V),说明传感器或线路故障,必须报故障码并进入跛行模式。
4.3 PWM输出与电机控制接口
TCU里最核心的执行器控制,就是PWM(脉宽调制)输出。它用来控制电磁阀的开度,进而控制油压、流量。
4.3.1 PWM控制电磁阀
变速箱里的比例电磁阀,说白了就是个可变电阻。PWM信号的占空比决定了电磁阀线圈的平均电流,平均电流决定了阀芯的开度。
我举个例子:
// 伪代码:PWM控制电磁阀开度
void SetSolenoidDuty(uint8_t duty_percent) {
// duty_percent: 0~100
uint16_t pwm_period = 20000; // 20kHz,周期50us
uint16_t compare_value = (uint16_t)(pwm_period * duty_percent / 100);
// 设置PWM比较寄存器
PWM_COMPARE_REG = compare_value;
// 启动PWM输出
PWM_ENABLE = 1;
}
这里有个关键点:PWM频率怎么选?
- 频率太低(< 1kHz):电磁阀会发出人耳可闻的啸叫声,驾驶员会投诉
- 频率太高(> 50kHz):开关损耗增大,驱动芯片发热严重
- 我常用的频率:20kHz,人耳听不到,损耗也适中
4.3.2 电机控制接口
TCU里常见的电机有:
- 步进电机:用于控制某些液压阀的精确位置
- 直流有刷电机:用于油泵驱动、风扇驱动
- 无刷直流电机(BLDC):高端变速箱的电子油泵
步进电机控制,我习惯用微步进驱动。比如用DRV8825芯片,可以做到1/32微步,位置精度能达到0.1度。这在控制换挡阀位置时特别有用。
直流有刷电机控制,最简单的就是H桥电路。我常用的是半桥驱动芯片,比如BTN7971,自带电流检测和故障诊断。控制逻辑就是正反转和PWM调速。
BLDC电机控制就复杂了,需要六步换向或者FOC(磁场定向控制)。TCU里通常用FOC,因为效率高、噪音小。但FOC算法对MCU算力要求高,我建议用带硬件Cordic或FPU的MCU,比如Infineon TC3xx系列。
4.4 接口设计的整体考量
讲完各个接口,我想说说整体设计思路。
第一,接口要冗余。关键信号,比如油门踏板位置、油压传感器,我建议用双路冗余设计。一路坏了,另一路还能工作,车辆可以跛行回家。
第二,接口要诊断。每个接口都要能检测开路、短路、对电源短路、对地短路。这不仅是功能安全的要求,也是实际维修的需要。你想想看,维修技师拿着诊断仪,一眼就能看出哪个传感器坏了,多省事。
第三,接口要保护。所有对外接口都要加ESD保护、浪涌保护、反接保护。TCU在发动机舱里,环境恶劣得很。我曾经见过一个项目,因为没加ESD保护,一次静电放电就把ADC通道打坏了,整个TCU报废。
好了,这一章的内容就到这里。下一章我们讲TCU的通信接口——CAN、LIN、FlexRay,这些是TCU和整车网络对话的“语言”。到时候见。