2、发动机基础原理:四冲程工作循环、进气/燃油/点火系统简介、曲轴位置传感器与转速计算

各位同学,咱们今天聊点硬核的。做发动机控制,你首先得懂发动机本身是怎么喘气的。说白了,扭矩控制模型再漂亮,如果连发动机的“脾气”都没摸透,那代码写得再好也是白搭。

我刚开始做电控那会儿,就犯过这个错。光顾着调PID参数,结果发动机在某个转速区间疯狂抖动。查了三天,最后发现是曲轴位置传感器的信号处理有个小bug。嗯,从那以后,我养成了一个习惯:先吃透基础原理,再动手写代码。

2.1 四冲程工作循环:发动机的“呼吸”节奏

四冲程发动机,你肯定听过。但咱们做控制的,不能只停留在“吸气、压缩、做功、排气”这个口诀上。你得理解每个冲程里,曲轴转了多少度,活塞在什么位置,以及——最关键的是——ECU(发动机控制单元)在哪个时刻该干什么事。

一个完整的工作循环,曲轴转两圈,也就是720°。四个冲程各占180°。我习惯把每个冲程的关键控制节点记在脑子里:

冲程 曲轴转角 活塞运动 ECU主要动作
进气冲程 0° - 180° 从上止点→下止点 控制喷油器开启、节气门开度调节
压缩冲程 180° - 360° 从下止点→上止点 点火提前角计算、爆震检测准备
做功冲程 360° - 540° 从上止点→下止点 点火执行、扭矩输出监测
排气冲程 540° - 720° 从下止点→上止点 氧传感器信号采集、空燃比闭环修正

你想想看,如果ECU在排气冲程误判为做功冲程,把点火信号发出去了,那后果是什么?轻则放炮,重则顶坏活塞。所以,曲轴位置信号的准确性,是所有控制逻辑的基石。

核心要点:ECU必须精确知道当前处于哪个冲程,才能决定喷油还是点火。这个判断依据,就是曲轴位置传感器信号和凸轮轴位置传感器信号的组合。

2.2 进气系统:发动机的“肺活量”

进气系统,说白了就是给发动机喂空气的。但喂多少、怎么喂,直接决定了你能烧多少油、出多大扭矩。

典型的进气路径是这样的:空气滤清器 → 空气流量计(或进气压力传感器) → 节气门 → 进气歧管 → 进气门 → 气缸。

我个人习惯把进气系统分成两段来看:

  • 节气门前:主要关注空气流量计的信号。这个信号直接反映了进入发动机的空气总量。我在项目中遇到过空气流量计脏污导致信号偏低,结果空燃比偏浓,油耗飙升。清洗一下就好了,但排查过程很折腾。
  • 节气门后:主要关注进气歧管绝对压力(MAP)传感器。这个信号反映了当前负荷状态。你急加速时,节气门大开,MAP值迅速上升,ECU就知道你要动力了,会加浓喷油。

这里有个避坑指南:我曾经在标定一台涡轮增压发动机时,忽略了进气温度对密度的影响。同样的MAP值,夏天和冬天的进气量能差15%以上。如果不做温度补偿,扭矩控制就会跑偏。

实战技巧:在做扭矩模型时,进气量计算一定要引入进气温度修正。公式很简单:实际进气量 = 测量值 × (基准温度 / 实际进气温度)。基准温度通常取25°C(298K)。

2.3 燃油系统:喷油时刻与喷油脉宽

燃油系统,核心就是喷油器。ECU控制喷油器打开的时间,这个时间叫“喷油脉宽”。脉宽越长,喷油越多。

但喷油不是随便喷的。你得选对时机。常见的喷油策略有两种:

  • 同步喷油:与曲轴位置同步,通常在进气冲程喷油。这是主流方式。
  • 异步喷油:不依赖曲轴位置,比如急加速时额外补喷一次,用来快速加浓。

我记得有一次调试,发动机怠速抖动特别厉害。查了半天,发现是喷油时刻设置错了。ECU在排气冲程喷油,结果燃油直接排到排气管里了,根本没进气缸。你想想看,这能燃烧好吗?

喷油脉宽的计算,核心公式是:

喷油脉宽 = (目标空燃比 × 进气量) / (喷油器流量 × 修正系数)

这个修正系数包括:电池电压修正(电压低时喷油器打开慢)、燃油温度修正、进气温度修正等。每一个修正项,都是我在台架上一点点标定出来的。

注意:喷油器有最小开启时间,通常1.0ms左右。如果计算出的脉宽小于这个值,喷油器会工作不稳定。这时候需要采用“断油”策略,干脆不喷,而不是强行喷一个不稳定的量。

2.4 点火系统:火花塞什么时候“打火”

点火系统,就是让火花塞在正确的时间点产生电火花,引燃混合气。这个“正确的时间点”,就是点火提前角。

点火提前角,说白了就是火花塞在压缩冲程结束前多少度开始点火。为什么不能在上止点才点火?因为混合气燃烧需要时间。你想想看,从火花塞跳火到火焰传播到整个气缸,大概需要2-3毫秒。如果在上止点才点火,等火焰烧起来,活塞已经开始往下走了,做功效率大打折扣。

我个人的经验是:

  • 怠速时:点火提前角通常在5°-15° BTDC(上止点前)。
  • 中低负荷:提前角可以到20°-30° BTDC,追求经济性。
  • 大负荷:提前角要减小,甚至推迟到上止点附近,防止爆震。

点火系统的硬件很简单:点火线圈、火花塞、高压线。但控制逻辑很复杂。ECU需要根据转速、负荷、水温、进气温度、爆震信号等,实时计算最佳点火提前角。

关键点:点火提前角是扭矩控制中最敏感的参数。提前1°,扭矩可能变化5%。但提前太多,爆震就来了。所以,爆震传感器信号是点火控制的“安全底线”。

2.5 曲轴位置传感器与转速计算:ECU的“心跳”

曲轴位置传感器,是发动机控制系统的“眼睛”。没有它,ECU就是个瞎子。

常见的曲轴位置传感器有两种:

  • 磁电式:输出正弦波信号,幅值随转速变化。低速时信号很弱,容易丢失。
  • 霍尔式:输出方波信号,幅值恒定。低速性能好,现在主流都用这个。

曲轴信号盘上通常有58个齿(60-2齿),缺两个齿作为基准位置。ECU通过检测齿的上升沿和下降沿,来计算曲轴转角和转速。

转速计算的原理很简单:

转速(rpm) = 60 / (两个齿之间的时间间隔 × 齿数)

举个例子,如果信号盘有60个齿,两个齿之间的时间间隔是2ms,那么:

转速 = 60 / (0.002 × 60) = 500 rpm

但实际中,我不会只用两个齿来计算。因为齿的加工误差、振动干扰,都会导致单次测量不准。我习惯用“多齿平均法”:

// 伪代码示例:多齿平均转速计算
uint32_t calculate_rpm(void) {
    static uint32_t last_time[10];  // 存储最近10个齿的时间戳
    static uint8_t index = 0;
    uint32_t current_time = get_timer_value();
    
    last_time[index] = current_time;
    index = (index + 1) % 10;
    
    // 计算最近10个齿的平均时间间隔
    uint32_t total_time = last_time[(index + 9) % 10] - last_time[index];
    uint32_t avg_interval = total_time / 10;
    
    // 转速计算
    uint32_t rpm = 60000000 / (avg_interval * 60);  // 假设60个齿
    return rpm;
}

我曾经在一个项目中,因为齿圈加工精度不够,导致转速信号有±50rpm的波动。用单齿计算时,扭矩控制跟着一起抖。后来改成10齿平均,波动降到了±10rpm以内,问题就解决了。

重要提醒:曲轴位置传感器信号丢失,ECU会立即进入“跛行回家”模式。这时候喷油和点火都基于估算,发动机性能严重下降。所以,传感器信号的硬件滤波和软件容错,是嵌入式开发的重中之重。

好了,这一章的内容就到这里。四冲程循环是骨架,进排气和燃油点火是血肉,曲轴位置传感器是神经。把这些基础打牢,后面讲扭矩控制模型时,你才能理解为什么ECU要那样算、那样调。下一章,咱们开始聊扭矩控制的核心——驾驶员需求扭矩解析。