1. 项目背景与核心价值
在电机控制领域,FOC(Field Oriented Control,磁场定向控制)技术早已成为高性能驱动的主流方案。相比传统的六步换相或正弦波控制,FOC能实现更低的转矩脉动、更高的能效比以及更精准的速度控制。STM32G431作为STMicroelectronics推出的主流微控制器系列,其内置的高精度定时器、运算放大器和高速ADC,为无感FOC的实现提供了硬件基础。
无感FOC的最大挑战在于需要在不依赖机械传感器的情况下,实时估算转子位置。这需要结合电机数学模型、状态观测器算法和实时信号处理技术。STM32G431的Cortex-M4内核(带FPU)和硬件除法器,使得这些复杂运算能够在控制周期内完成。
提示:无感FOC特别适合风机、泵类等对成本敏感且环境恶劣的应用场景,避免了编码器带来的可靠性问题和BOM成本增加。
2. 硬件架构设计要点
2.1 STM32G431的资源分配
STM32G431RB(以64引脚封装为例)的硬件资源配置需要精心规划:
- 定时器:TIM1用于PWM生成(中心对齐模式),TIM2/TIM3用于速度环/电流环定时
- ADC:ADC1和ADC2配合注入通道实现同步采样
- 运放:内置OPAMP用于电流信号调理
- 通信接口:USART2用于调试输出,CAN用于上位机通信
典型引脚分配示例:
| 功能 | 引脚 | 复用配置 |
|---|---|---|
| PWM_UH | PA8 | TIM1_CH1 |
| PWM_UL | PA9 | TIM1_CH2 |
| 电流采样A相 | PA1 | OPAMP1_VINP |
| ADC1_IN2 | PA2 | 电流采样输入 |
| 霍尔接口A | PA15 | TIM2_CH1 |
2.2 功率驱动电路设计
采用三相全桥拓扑时需注意:
- 栅极驱动芯片选型:STDRIVE101(集成死区控制)或分立方案(如IRS2186S)
- 电流采样方案:
- 低端采样:成本低但需补偿开关噪声
- 高端采样:采用专用放大器如INA240
- 相电流重构:需要至少两路采样
- 母线电压检测:电阻分压+RC滤波(时间常数约100us)
注意:PCB布局时功率地和信号地需单点连接,MOSFET栅极走线尽可能短(<3cm)以减少寄生电感。
3. 软件算法实现详解
3.1 无感FOC控制流程
完整控制环路包含以下步骤(按1kHz控制频率示例):
- ADC中断触发:
- 同步捕获三相电流(或两相+重构)
- 读取直流母线电压
- Clarke变换:
c复制I_alpha = Ia; I_beta = (Ia + 2*Ib)/sqrt(3); - Park变换:
c复制
Id = I_alpha * cos_theta + I_beta * sin_theta; Iq = -I_alpha * sin_theta + I_beta * cos_theta; - PI调节器:
- 电流环带宽通常设为开关频率的1/10
- 采用抗饱和PI算法防止积分饱和
- 逆Park变换:
c复制
V_alpha = Vd * cos_theta - Vq * sin_theta; V_beta = Vd * sin_theta + Vq * cos_theta; - SVPWM生成:
- 使用TIM1的CCR寄存器直接输出PWM
- 死区时间通过BDTR寄存器配置
3.2 滑模观测器(SMO)实现
转子位置估算采用改进型滑模观测器:
c复制// 滑模面计算
float e_alpha = I_alpha_est - I_alpha_meas;
float e_beta = I_beta_est - I_beta_meas;
float z_alpha = Kslide * sign(e_alpha);
float z_beta = Kslide * sign(e_beta);
// 反电动势估算
Emf_alpha = -Lq * z_alpha;
Emf_beta = -Lq * z_beta;
// 位置计算
theta_est = atan2(-Emf_alpha, Emf_beta);
关键参数经验值:
- 滑模增益Kslide:取电机额定反电动势的1.2~1.5倍
- 低通滤波器截止频率:约100Hz(需根据电机转速调整)
4. 关键调试技巧与问题排查
4.1 电流采样校准
常见问题及解决方案:
- 零点漂移:
- 上电时记录ADC偏移值(电机静止)
- 采用自动校准算法:
offset = (max_adc + min_adc)/2
- 增益误差:
- 施加已知直流电流(如1A)
- 调整校准系数:
scale = I_actual / (adc_reading - offset)
- 相位延迟补偿:
- 注入高频信号测量响应延迟
- 在Park变换中补偿角度偏移
4.2 启动策略优化
无感FOC的启动过程分三个阶段:
- 对齐阶段(100ms):
- 固定角度(通常0°)施加小电流
- 确保转子定位到已知位置
- 开环加速(200-500ms):
- 线性增加频率至额定转速的10%
- 同时观测反电动势建立情况
- 闭环切换:
- 当估算反电动势幅值超过阈值(如50mV)时切换
- 采用软切换避免转矩突变
实测案例:24V/100W永磁同步电机启动参数
ini复制align_current = 0.2 // 额定电流的20%
ramp_rate = 10 // Hz/s
bemf_threshold = 0.05 // V
5. 性能优化进阶技巧
5.1 MTPA控制实现
对于IPMSM电机,需增加d轴电流补偿:
c复制Id_ref = -|Iq_ref| * sin(atan(Lq - Ld)/2*R));
其中:
- Ld/Lq:直轴/交轴电感
- R:相电阻
5.2 单电阻采样方案
为降低成本可采用单电阻电流重构:
- PWM模式配置为中心对齐模式
- 在PWM中点采样母线电流
- 根据开关状态重构相电流:
c复制if(UH_UL == 10) Ia = Ibus; else if(VH_VL == 10) Ib = Ibus; else Ic = -Ia - Ib;
关键点:
- 采样窗口需避开开关噪声(通常开启后延迟500ns)
- 需要补偿MOSFET导通压降影响
5.3 死区补偿技术
死区效应会导致电压损失,补偿算法:
c复制V_comp = V_cmd + sign(I)*Tdead/Tpwm*Vbus;
其中:
- Tdead:死区时间(如500ns)
- Tpwm:PWM周期(如50us)
6. 实测数据与波形分析
使用J-Scope实时监控的关键变量:
- 电流环响应:
- 阶跃响应超调量应<10%
- 调节时间<2ms(对于1kHz带宽)
- 位置估算误差:
- 稳态误差<5°
- 动态跟踪延迟<100us
- 效率测试:
- 轻载效率(20%负载)>80%
- 额定点效率>90%
典型问题波形诊断:
- 高频振荡:PI参数过激进或采样延迟过大
- 估算角度抖动:滑模增益过高或滤波器截止频率过低
- 启动失败:反电动势阈值设置不合理或开环加速太快
我在实际项目中发现,使用STM32G431的HRTIM定时器(如果有)可以进一步提升PWM分辨率,特别适合高速电机控制。另外,将滑模观测器与锁相环(PLL)结合,能显著改善低速时的位置估算精度。
