4、驾驶员需求扭矩:油门踏板解析、pedal map 标定、驾驶员扭矩计算

好,咱们进入第四讲。

前面三讲,我们把扭矩控制的整体框架搭起来了。你知道了什么是需求扭矩,也知道了它分驾驶员需求和上层需求。那这一讲,我们就来啃最硬、也最接地气的一块——驾驶员需求扭矩

说白了,就是司机踩油门,发动机该怎么响应?

你可能会想,这还不简单?踩得深就给油多呗。但实际工程里,远没这么粗暴。油门踏板信号怎么读?怎么滤波?怎么映射成扭矩?这里面的门道,我当年刚入行时也踩过不少坑。

4.1 油门踏板信号解析

先看最底层——踏板信号怎么来的。

现在的车,油门踏板基本都是非接触式的霍尔传感器。输出两路信号:AP1AP2。为什么是两路?冗余设计,安全第一。

AP1 一般是 0.5V 到 4.5V,AP2 是 AP1 的一半左右,或者反向变化。ECU 会实时监控这两路信号是否一致。如果偏差太大,直接进入跛行模式。

我遇到过一台车,报“油门踏板信号不合理”。查了半天,发现是踏板插头进水腐蚀了。AP1 正常,AP2 飘得离谱。所以,信号合理性检查是第一步。

关键点: 踏板开度 = f(AP1, AP2)。通常取两路信号的加权平均值,或者直接使用 AP1,用 AP2 做校验。

信号读进来之后,还要做滤波。为什么?因为踏板踩下去不是一条直线,会有抖动、噪声。尤其是急踩急松的时候,信号毛刺很多。

我习惯用一阶低通滤波,截止频率设在 10Hz 左右。太低了响应慢,太高了滤不干净。这个值,你可以在标定阶段根据实车感受微调。

/* 一阶低通滤波示例 */
#define FILTER_COEFF 0.1f  /* 滤波系数,越小越平滑 */

float pedal_filter(float raw_value, float prev_value)
{
    return prev_value + FILTER_COEFF * (raw_value - prev_value);
}

嗯,这里要注意:滤波系数不能太大,否则踩油门会有延迟感。我见过有人设到 0.5,结果驾驶员抱怨“车反应慢半拍”。

4.2 Pedal Map 标定

信号处理完了,接下来就是核心——Pedal Map

Pedal Map 是什么?一张二维表。横轴是油门踏板开度(0%~100%),纵轴是发动机转速(rpm),表格里填的是驾驶员需求扭矩百分比

踏板开度 \ 转速 800 rpm 1500 rpm 2500 rpm 4000 rpm 6000 rpm
0% 0% 0% 0% 0% 0%
20% 10% 15% 20% 18% 15%
50% 30% 45% 55% 50% 40%
80% 60% 75% 85% 80% 70%
100% 100% 100% 100% 100% 100%

这张表怎么来的?标定出来的。

标定的核心思想是:让车开起来“跟脚”。什么叫跟脚?就是你踩多少,它给多少,不突兀,也不肉。

我参与过一个项目,标定工程师把低速区的扭矩给得太猛。结果一松刹车、轻点油门,车就往前窜。客户投诉说“这车太贼了”。后来我们把 20% 踏板、低转速区的扭矩百分比从 25% 降到了 12%,问题就解决了。

标定小技巧: 低速区(怠速~1500rpm)的 pedal map 要平缓,避免起步闯动。中速区(2000~3500rpm)可以稍微激进一点,体现动力性。高速区(4000rpm 以上)要回落,因为发动机本身扭矩已经开始下降了。

另外,Pedal Map 通常不止一张。为什么?因为不同驾驶模式需要不同的特性。

  • 经济模式: 踏板响应慢,扭矩输出保守。适合市区跟车。
  • 运动模式: 踏板响应快,小开度就能获得大扭矩。适合超车。
  • 雪地模式: 扭矩输出被大幅限制,防止打滑。

ECU 会根据驾驶模式选择对应的 Pedal Map 表。这个切换过程要平滑,不能有扭矩跳变。我见过一个方案,切换模式时直接换表,结果扭矩瞬间掉了 20Nm,驾驶员吓了一跳。后来加了过渡处理,用 200ms 的斜坡慢慢切过去。

4.3 驾驶员扭矩计算

好,现在信号有了,表也有了。怎么算出最终的驾驶员需求扭矩?

公式很简单:

驾驶员需求扭矩 = Pedal Map 查表值 × 发动机最大扭矩

举个例子:当前转速 2000rpm,踏板开度 50%,查表得到 55%。发动机最大扭矩是 250Nm。那么:

驾驶员需求扭矩 = 55% × 250Nm = 137.5 Nm

但实际工程中,还要考虑几个修正项:

  1. 怠速扭矩补偿: 松油门时,不能直接给 0。要维持一个最小扭矩,防止发动机熄火。这个值通常在 10~20Nm 左右。
  2. 加速踏板防抖: 如果驾驶员快速抖动踏板,扭矩不能跟着抖。需要加一个变化率限制。我习惯限制在 200Nm/s 以内。
  3. 扭矩滤波: 最终输出的扭矩值,也要做平滑处理。防止因为查表插值导致的小波动。
注意: 驾驶员需求扭矩计算出来后,还要和上层需求扭矩(如巡航、限速)做仲裁。仲裁规则通常是“取小值”。但如果是防滑控制,则可能直接覆盖驾驶员需求。这部分我们后面章节会细讲。

我曾经调试过一个车型,发现急加速时扭矩响应有延迟。查了半天,发现是扭矩滤波时间常数设得太大了。从 100ms 改到 30ms,响应立马跟上了。所以,滤波参数一定要根据实车标定来调,不能拍脑袋。

4.4 小结与避坑指南

这一讲的内容,总结下来就三件事:

  • 读准信号: 两路冗余、滤波、合理性检查。
  • 标好 Map: 不同模式、不同转速、不同开度,都要精细标定。
  • 算对扭矩: 查表 + 修正 + 限幅 + 滤波。

最后,分享一个我曾经的教训:

有一次,量产车出现偶发性“油门没反应”。查了三个月,最后发现是踏板信号在某个特定角度下,AP1 和 AP2 的比值超出了监控阈值。原因是踏板机械结构磨损,导致传感器安装位置偏移了 0.5mm。从那以后,我要求所有项目在踏板总成出厂前,必须做全行程的线性度测试,并且 ECU 里的监控阈值要留 20% 的余量。

嗯,硬件上的小偏差,软件上一定要兜得住。

下一讲,我们聊聊上层需求扭矩——那些来自 ACC、ESP、TCU 的“不速之客”。