STM32 三相电机FOC驱动方案(三电阻单电阻双模式)

STM32 三相电机FOC驱动方案(三电阻/单电阻双模式)

配STM32全系列(F1/F4/G4/H7等),支持有感/无感FOC


一、核心选型指南(先选对硬件再动手)

参数 选型建议 适用场景
MCU STM32F303/G474(带内置运放/PGA最佳)、F103/F407 F303/G4适合高压伺服,F103/F407适合低压低成本场景
功率器件 MOS管/IGBT/专用驱动芯片(DRV83xx/STSPIN系列) 低压小功率选DRV8313,高压大功率选IPM模块
电流采样方案 三电阻/单电阻 见下方双模式对比

三电阻 vs 单电阻 核心对比

维度 三电阻采样 单电阻采样
采样电阻数量 3个 1个
额外硬件要求 3路运放/ADC通道 1路高带宽运放/差分放大器
采样窗口限制 有最小采样脉宽要求,需规避非观测区
采样精度 最高 中等,依赖电流重构算法
硬件成本 低(省2个采样电阻+2路运放)
适用场景 伺服、高精度控制 风机、水泵、小家电等成本敏感场景

二、硬件设计核心规范(避坑必看)

1. 通用设计规范

2. 三电阻采样专属硬件

3. 单电阻采样专属硬件


三、CubeMX/MC Workbench配置步骤

1. 基础外设配置

2. 电流采样模式专属配置

三电阻采样配置

无需额外复杂配置,直接在MC Workbench中选择三电阻模式,采样通道对应U/V/W三相电流即可

单电阻采样配置

  1. 配置定时器通道5/6上升沿触发TRGO2信号,用于ADC采样触发
  2. 配置定时器通道4比较值为最小采样脉宽HTMIN(死区时间+T_RISE+ADC采样时间)
  3. 在代码中根据SVPWM扇区动态计算PWM占空比,避让非观测区

四、核心代码逻辑

1. 三电阻采样代码(最简单)

// 根据SVPWM扇区选择不受窗口限制的两相电流采样
void ThreeResistor_CurrentSample(void) {
    switch(current_sector) {
        case 1: case 6:
            // 采样Ib、Ic,Ia = -(Ib+Ic)
            Ia = -(ADC_GetValue(CH2) + ADC_GetValue(CH3));
            Ib = ADC_GetValue(CH2);
            Ic = ADC_GetValue(CH3);
            break;
        case 2: case 3:
            // 采样Ia、Ic,Ib = -(Ia+Ic)
            Ia = ADC_GetValue(CH1);
            Ib = -(ADC_GetValue(CH1) + ADC_GetValue(CH3));
            Ic = ADC_GetValue(CH3);
            break;
        case 4: case 5:
            // 采样Ia、Ib,Ic = -(Ia+Ib)
            Ia = ADC_GetValue(CH1);
            Ib = ADC_GetValue(CH2);
            Ic = -(ADC_GetValue(CH1) + ADC_GetValue(CH2));
            break;
    }
}

2. 单电阻采样代码(电流重构核心)

// 单PWM周期两次采样重构三相电流
void SingleResistor_CurrentReconstruct(void) {
    static uint8_t sample_phase = 0;
    if(sample_phase == 0) {
        // 第一次采样:获取第一相电流
        I1 = ADC_GetValue(BUS_CURRENT_CH);
    } else if(sample_phase == 1) {
        // 第二次采样:获取第二相电流,第三相通过KCL计算
        I2 = ADC_GetValue(BUS_CURRENT_CH);
        I3 = -(I1 + I2);
    }
    sample_phase = (sample_phase + 1) % 3;
}

3. FOC核心算法框架

电机参数初始化 → 状态机切换(预定位→强拖加速→切入闭环)→ 
Clarke/Park变换 → PI电流环控制 → 反Park变换 → SVPWM调制 → ADC电流采样

参考代码 STM32驱动三相电机,包括三电阻、单电阻反馈,foc算法 www.youwenfan.com/contentcst/182266.html

五、调试避坑指南

  1. 先调三电阻再切单电阻:先在硬件三电阻模式下完成电机参数辨识、启动参数调试,确认电机正常运行后再切换单电阻模式,降低调试难度
  2. 采样波形验证:用示波器抓取采样波形,确保电流波形正弦且无杂波,若波形畸变需调整运放增益或采样点位置
  3. 启动参数调试:无感启动重点调整强拖加速度阈值、切入闭环速度阈值,避免启动抖动或反转
  4. 保护配置:开启过流、过压、欠压、堵转保护,避免炸机

 

专注于matlab/simulink,电子电路,编程