高频注入foc方案应用于无感PMSM永磁同步电机驱动器,实现稳定无抖动堵转功能,附源码原理图与...
高频注入foc方案,无感pmsm 永磁同步电机 无刷电机驱动器 stm32的版本,堵转力矩有,不发散,不抖动或反转,低速有力。 清单:源码,原理图,matlab仿真。
高频注入这玩意儿在无感FOC里算是硬核操作了。玩过无刷电机的都知道,低速和零速状态下位置观测器容易翻车,常规滑膜观测直接躺平。我们这次在STM32F4上实现的方案,实测能在200转以下稳定输出,堵转时力矩直接拉满不抖不飘,最骚的是没出现过反转这种尴尬场面。
硬件部分必须死磕电流采样精度,三相下桥臂电阻采样配合运放做差分输入(见图1)。重点说下运放输出端接的RC滤波,这里用了两个并联的0.1uF陶瓷电容,实测能干掉高频干扰又不影响信号相位。MOSFET驱动电路特别加了米勒钳位,防止开关瞬间的电压毛刺搞事情。
代码里最核心的是高频信号注入模块。在PWM载波中断里搞事情:
// 高频信号注入 static void HF_Injection(void) { static float hf_angle = 0; hf_angle += _2PI * HF_FREQ * PWM_PERIOD; Vh = HF_AMPLITUDE * sinf(hf_angle); // 高频电压分量 Vl = HF_AMPLITUDE * cosf(hf_angle); // 注入到alpha-beta轴 Valpha += Vh; Vbeta += Vl; }这波操作在alpha-beta坐标系下注入正交高频信号,注意这里用的是电压叠加而不是电流环直接操作。实测发现如果注入幅度超过母线电压的15%,观测器响应会明显变快,但转矩脉动也会增大。
高频注入foc方案,无感pmsm 永磁同步电机 无刷电机驱动器 stm32的版本,堵转力矩有,不发散,不抖动或反转,低速有力。 清单:源码,原理图,matlab仿真。
位置观测器用改进型锁相环结构,关键在解调环节:
// 高频响应解调 void Demodulate_HF(void) { float i_alpha_hf = Current_Alpha * sin_hf_angle; float i_beta_hf = Current_Beta * cos_hf_angle; // 交叉解调获取位置误差 Position_Error = (i_beta_hf - i_alpha_hf) * HF_GAIN; // 锁相环更新 Est_Angle += (Est_Speed + Position_Error) * DT; Est_Speed += Position_Error * SPEED_LOOP_KI; }这里用了正交解调配合PI调节,注意DT必须严格等于PWM周期。有个坑是当电机完全静止时,解调出的信号信噪比暴跌,这时候需要动态调整观测器带宽——我们搞了个自适应算法,当检测到速度低于50RPM时自动提升HF_GAIN系数。
堵转检测机制是另一个重点,在电流环里加了双重判断:
if(fabsf(Iq_Ref) > STALL_THRESHOLD && fabsf(Est_Speed) < 10) { Stall_Counter++; if(Stall_Counter > 50) { // 触发过流保护前先降频 PWM_Frequency /= 2; Current_Limit *= 0.7; } } else { Stall_Counter = 0; }这逻辑比单纯电流限制聪明多了,实测堵转时电流能稳定在设定值的±3%以内。注意降频操作必须配合死区时间调整,否则MOSFET发热会爆炸。
Matlab仿真文件里最有用的是磁饱和模型(见Simulink图),这个直接关系到高频信号幅值的选择。建议先用仿真确定电机电感参数,实测发现电感误差超过20%时观测器精度会断崖式下跌。
源码包里有个hiddenfeature:在motorpara.h里修改HFPHASESHIFT参数,可以微调高频信号相位补偿。这个对某些电感不对称的电机有奇效,比如某国产电机厂的产品相位偏差能到15度。
