4、上电自检流程:ECU上电时序、继电器自检、传感器初始化状态确认

各位工程师朋友,咱们接着聊EPS调试。今天要讲的是上电自检,这步搞不好,后面全是坑。

上电自检,说白了就是ECU刚通电那会儿,自己先做个全身检查。我见过不少新手,一上电就急着打方向盘,结果报一堆故障码。嗯,这里要注意,自检没完成之前,千万别动方向盘。

4.1 ECU上电时序

ECU上电不是简单的“啪”一下通电就完事。它有个严格的先后顺序。我个人习惯把时序分成三个阶段:

阶段 时间窗口 主要动作
第一阶段 0-10ms 电源稳定、晶振起振、内部LDO建立
第二阶段 10-50ms Bootloader启动、Flash校验、RAM初始化
第三阶段 50-200ms 应用层启动、外设初始化、传感器自检

你想想看,如果电源还没稳定,MCU就开始读Flash,那读出来的数据可能是错的。我在项目中遇到过,某次电源纹波偏大,导致ECU在10ms内读取的校准参数全是乱码,结果助力方向都反了。

警告:上电时序中,电源稳定时间必须大于5ms。如果使用外部看门狗,它的启动时序也要和ECU匹配。我曾经见过看门狗比ECU先启动,结果ECU还没初始化完就被复位了。

4.2 继电器自检

继电器自检,说白了就是检查电机供电回路通不通。EPS系统里一般有两个继电器:主继电器和预充电继电器。

自检流程是这样的:

  1. 先断开所有继电器,测量母线电压,确认无残余电荷
  2. 闭合预充电继电器,检测电压是否缓慢上升
  3. 闭合主继电器,检测电压是否稳定在电池电压
  4. 断开预充电继电器,确认主继电器能独立维持供电

为什么要分两步?因为电机端有大电容,直接闭合主继电器会产生浪涌电流。我建议预充电时间至少设置20ms,否则继电器触点容易烧蚀。

关键点:继电器自检失败时,不要重复尝试。连续三次失败后,应该进入安全模式。我曾经遇到过继电器线圈虚焊,反复自检导致线圈烧毁。

这里给段伪代码,方便大家理解逻辑:

// 继电器自检伪代码
void RelaySelfCheck()
{
    // 第一步:断开所有继电器
    Relay_Main = OFF;
    Relay_Precharge = OFF;
    delay_ms(5);
    
    // 第二步:检测母线电压
    if (BusVoltage > 0.5V) {
        ErrorCode = RELAY_SHORT_FAULT;
        return;
    }
    
    // 第三步:预充电
    Relay_Precharge = ON;
    delay_ms(20);
    if (BusVoltage < 0.7 * BatteryVoltage) {
        ErrorCode = PRECHARGE_FAIL;
        return;
    }
    
    // 第四步:主继电器闭合
    Relay_Main = ON;
    delay_ms(5);
    if (BusVoltage < 0.9 * BatteryVoltage) {
        ErrorCode = MAIN_RELAY_FAIL;
        return;
    }
    
    // 第五步:断开预充电
    Relay_Precharge = OFF;
    if (BusVoltage < 0.9 * BatteryVoltage) {
        ErrorCode = MAIN_RELAY_DROOP;
        return;
    }
    
    ErrorCode = RELAY_OK;
}

4.3 传感器初始化状态确认

EPS系统里传感器不少:扭矩传感器、角度传感器、电机位置传感器、电流传感器。每个传感器上电后都需要确认状态。

我一般按这个顺序检查:

  • 扭矩传感器:上电后输出值应在零位附近,偏差超过±0.5Nm就要报错。我记得有次客户反馈方向盘不正,查了半天发现是扭矩传感器零位漂移了0.8Nm。
  • 角度传感器:确认信号是否在有效范围内,有没有跳变。角度传感器最怕的是上电瞬间读到无效值。
  • 电机位置传感器:检查旋变或霍尔信号是否正常。如果是旋变,还要确认励磁频率是否稳定。
  • 电流传感器:上电时电流应为零,如果有偏置,需要做软件校准。
小技巧:传感器初始化时,可以做个“握手”动作。比如让传感器输出一个特定的序列,ECU收到后确认通信正常。我在一个项目中用过这个方法,成功排查出CAN总线接触不良的问题。

为什么会强调传感器初始化?因为如果传感器状态不对,后面的助力控制全是错的。你想想看,扭矩传感器报了个假值,ECU以为你在打方向,结果电机自己转起来了,那多危险。

最后说一句,上电自检的日志一定要保存下来。我习惯把自检结果存到EEPROM里,每次上电都追加记录。这样出了问题,翻翻日志就知道是哪个环节挂了。

嗯,今天就聊到这儿。下节课咱们讲故障诊断,那才是真正考验功力的时候。