4、母线电压与相电压检测故障

电压检测这块,说实话是FOC系统里最容易出幺蛾子的地方。我做过好几个项目,最后排查下来,问题都出在电压采样链路上。你想想看,如果母线电压都测不准,那电流环、速度环算得再准也没用。

今天咱们就聊聊母线电压和相电压检测中常见的故障,以及怎么设计保护电路。

4.1 母线电压采样分压电阻失效

母线电压采样,最常用的就是电阻分压。简单、便宜、可靠。但可靠是相对的,我遇到过好几次分压电阻出问题的情况。

4.1.1 分压电阻的典型电路

先看一个典型的分压电路:

// 母线电压采样分压电路
// Vbus = 48V,分压比 1:10
// R1 = 100kΩ (上分压)
// R2 = 10kΩ  (下分压)
// VADC = Vbus * R2 / (R1 + R2) = 48 * 10 / 110 ≈ 4.36V

// 实际项目中我常用 1% 精度的电阻
// 上分压用 4 个 100kΩ 串联,耐压更安全
// 下分压用 10kΩ + 1kΩ 可调,用于校准

4.1.2 分压电阻失效模式

分压电阻失效,主要有这么几种情况:

  • 电阻开路:最常见。上分压开路,ADC读到0V;下分压开路,ADC读到3.3V(或参考电压)。
  • 电阻值漂移:温度变化、老化导致阻值变化。我见过一个案例,用了普通贴片电阻,高温下阻值漂了5%,电压采样直接偏了。
  • 焊点虚焊:振动、热胀冷缩导致接触不良。这个最坑,时好时坏,排查起来很头疼。
  • PCB漏电:潮湿环境下,分压节点对地漏电,导致采样值偏低。
注意: 分压电阻的耐压值一定要选够。我曾经图省事用了0805封装的100kΩ电阻,结果在60V母线电压下,电阻两端电压差太大,直接击穿了。后来全部换成1206封装,耐压200V以上。

4.1.3 故障检测方法

怎么检测分压电阻是否失效?我个人习惯用软件冗余检测:

// 母线电压故障检测伪代码
#define VBUS_NORMAL_MIN  42.0f  // 正常范围下限
#define VBUS_NORMAL_MAX  54.0f  // 正常范围上限
#define VBUS_FAULT_THRESHOLD 5   // 连续故障次数

uint8_t vbus_fault_count = 0;

void Vbus_Detection(void)
{
    float vbus = Get_Vbus_Voltage();
    
    // 1. 范围检测
    if (vbus < VBUS_NORMAL_MIN || vbus > VBUS_NORMAL_MAX)
    {
        vbus_fault_count++;
        if (vbus_fault_count >= VBUS_FAULT_THRESHOLD)
        {
            // 触发故障保护
            Motor_Stop();
            Set_Error_Flag(ERROR_VBUS_FAULT);
        }
    }
    else
    {
        vbus_fault_count = 0;
    }
    
    // 2. 变化率检测(防止电阻突然开路)
    static float last_vbus = 0;
    float delta = fabs(vbus - last_vbus);
    if (delta > 5.0f)  // 短时间内变化超过5V
    {
        // 可能是分压电阻失效
        vbus_fault_count++;
    }
    last_vbus = vbus;
}

4.2 相电压重构电路故障

相电压重构,说白了就是通过母线电压和开关状态,反推出三相电压。这个技术在无传感器FOC里用得很多。

4.2.1 重构原理

相电压重构的基本原理:

// 相电压重构公式
// Va = Vbus * (Sa - 0.5)   // Sa为A相占空比,范围0~1
// Vb = Vbus * (Sb - 0.5)
// Vc = Vbus * (Sc - 0.5)

// 但实际中要考虑死区时间、管压降等因素
// 我一般会加一个补偿表

4.2.2 常见故障

相电压重构电路,常见故障有:

  • 运放失调:相电压采样运放的输入失调电压,会导致重构误差。我遇到过运放温漂太大,低温下正常,高温下偏了0.1V。
  • RC滤波参数变化:采样电路中的RC低通滤波,电容老化后容值变化,导致相位延迟。
  • 隔离放大器故障:高压侧和低压侧的隔离放大器,如果供电不稳,输出会异常。
  • ADC参考电压漂移:这个容易被忽略。ADC的参考电压如果漂了,所有采样值都跟着偏。
经验分享: 我习惯在相电压采样电路上加一个自检功能。每次上电时,先让电机处于零矢量状态(所有开关管关闭),然后采样相电压。正常情况下应该接近0V。如果偏差超过0.1V,说明采样电路有问题。

4.2.3 故障诊断流程

相电压重构故障的诊断,我一般按这个流程来:

  1. 检查ADC读数:先看ADC原始值是否在合理范围。如果读到0或满量程,大概率是采样电路开路或短路。
  2. 检查参考电压:用万用表测ADC参考电压,看是否稳定。
  3. 检查运放输出:在电机静止时,测运放输出端电压,应该接近0V。
  4. 检查RC滤波:用示波器看相电压波形,看是否有异常毛刺或相位偏移。
  5. 检查隔离供电:隔离放大器两侧的供电,纹波不能太大。

4.3 过压/欠压保护阈值设定

过压和欠压保护,是FOC系统最基本的安全措施。阈值设得太宽,保护不及时;设得太窄,容易误触发。

4.3.1 阈值设定原则

我个人习惯的阈值设定方法:

参数 典型值 说明
额定电压 48V 系统标称工作电压
过压保护阈值 54V (112.5%) 留12.5%余量,防止误触发
欠压保护阈值 42V (87.5%) 留12.5%余量,防止误触发
过压恢复阈值 52V 带滞回,防止频繁切换
欠压恢复阈值 44V 带滞回,防止频繁切换

4.3.2 滞回设计

为什么要加滞回?你想想看,如果阈值是精确的54V,电压在53.9V和54.1V之间波动,系统就会频繁进入和退出保护状态。这会导致电机抖动,甚至损坏。

// 带滞回的过压/欠压保护
#define VBUS_OV_THRESHOLD  54.0f  // 过压阈值
#define VBUS_OV_RECOVER    52.0f  // 过压恢复阈值
#define VBUS_UV_THRESHOLD  42.0f  // 欠压阈值
#define VBUS_UV_RECOVER    44.0f  // 欠压恢复阈值

typedef enum {
    VBUS_NORMAL,
    VBUS_OVER_VOLTAGE,
    VBUS_UNDER_VOLTAGE
} Vbus_State_t;

Vbus_State_t vbus_state = VBUS_NORMAL;

void Vbus_Protection(float vbus)
{
    switch (vbus_state)
    {
        case VBUS_NORMAL:
            if (vbus > VBUS_OV_THRESHOLD)
            {
                vbus_state = VBUS_OVER_VOLTAGE;
                Motor_Stop();
                Set_Error_Flag(ERROR_OVER_VOLTAGE);
            }
            else if (vbus < VBUS_UV_THRESHOLD)
            {
                vbus_state = VBUS_UNDER_VOLTAGE;
                Motor_Stop();
                Set_Error_Flag(ERROR_UNDER_VOLTAGE);
            }
            break;
            
        case VBUS_OVER_VOLTAGE:
            if (vbus < VBUS_OV_RECOVER)
            {
                vbus_state = VBUS_NORMAL;
                Clear_Error_Flag(ERROR_OVER_VOLTAGE);
            }
            break;
            
        case VBUS_UNDER_VOLTAGE:
            if (vbus > VBUS_UV_RECOVER)
            {
                vbus_state = VBUS_NORMAL;
                Clear_Error_Flag(ERROR_UNDER_VOLTAGE);
            }
            break;
    }
}

4.3.3 保护响应时间

保护响应时间也很关键。过压时,如果响应太慢,MOS管可能已经烧了。我一般这样设定:

  • 硬件保护:用比较器直接触发,响应时间 < 1μs
  • 软件保护:ADC采样+软件判断,响应时间 < 100μs
  • 慢速保护:用于监测电池电量等,响应时间 1~10ms
核心要点: 过压保护一定要硬件和软件双重保险。硬件保护是最后一道防线,软件保护是日常防护。我见过一个项目,只做了软件保护,结果ADC采样偶尔卡死,过压时没触发保护,直接炸了MOS管。

4.4 知识体系总览

下面这张图,把母线电压和相电压检测的核心逻辑串起来了:

母线电压与相电压检测故障诊断体系 电压检测系统 母线电压采样 相电压重构 过压/欠压保护 分压电阻开路/短路 电阻值漂移/老化 焊点虚焊/接触不良 PCB漏电/潮湿影响 运放失调/温漂 RC滤波参数变化 隔离放大器故障 ADC参考电压漂移 阈值设定原则 滞回设计 响应时间控制 硬件/软件双重保护 诊断目标:快速定位故障,确保系统安全运行

这张图把三个核心模块的关系画清楚了。母线电压采样是基础,相电压重构是进阶,保护阈值是安全底线。三者缺一不可。

我的建议: 在设计阶段就把电压检测的故障诊断逻辑写进去,不要等出了问题再补。我早期一个项目就是吃了这个亏,样机测试时好好的,量产100台后有3台出现电压采样异常,排查了整整两周才发现是分压电阻焊盘设计不合理。

好了,电压检测这块就聊到这儿。记住一句话:电压测不准,FOC就是空中楼阁。下一节咱们聊聊电流检测的故障诊断,那个坑更多。


公众号:蓝海资料掘金营,微信deep3321