第 7 章 进阶工程篇:无传感器 FOC + 弱磁扩速 + 死区补偿
0. 本章定位前 6 章已经实现有传感器 FOC霍尔 / 编码器能稳定跑电机。本章进入进阶内容覆盖无传感器 FOC 核心SMO 滑模观测器最常用、最稳反电势观测、角度估算、锁相环 PLL启动策略I/F 开环拖动 闭环切换弱磁扩速控制高速更有劲死区补偿解决低速抖动、波形畸变量产必备过流 / 过压 / 过温 / 堵转保护学完本章你就能做出无传感器、高速、安静、可靠的工业级 FOC 驱动。1. 无传感器 FOC为什么要做省掉霍尔 / 编码器成本更低线更少可靠性更高安装更简单无机械磨损核心难点没有传感器怎么知道转子角度 θ答案通过电压、电流模型估算反电动势 EMF从中提取角度。最成熟、工程最稳的方案SMO 滑模观测器 Sliding Mode Observer2. SMO 滑模观测器原理极简工程版2.1 核心思想在 αβ 坐标系建立虚拟电机数学模型让观测电流不断逼近实际电流。当观测电流 实际电流时观测器内部就能算出反电势 eα​,eβ​。2.2 电压方程αβ2.3 滑模控制律工程上常用符号函数 饱和函数抑制抖振I^观测电流k滑模增益sat饱和函数替代 sign减少抖动2.4 观测电流迭代MCU 中用欧拉离散迭代即可。3. 从反电势 → 电角度 θPLL 锁相环观测到 eα​,eβ​ 后角度不能直接 arctan太抖。必须用PLL 锁相环滤波 提取角速度 角度积分。3.1 角度误差3.2 PI 调节得到电角速度3.3 积分得到角度这就是无传感器角度可直接替换霍尔 / 编码器角度进入 FOC。4. SMO PLL 完整工程代码typedef struct { float Ialpha_hat; // 观测α电流 float Ibeta_hat; // 观测β电流 float ealpha_hat; // 观测α反电势 float ebeta_hat; // 观测β反电势 float theta_hat; // 估算角度 float omega_hat; // 估算电角速度 float K_smo; // 滑模增益 float Rs; // 相电阻 float Ls; // 相电感 float Ts; // 控制周期 }SMO_HandleTypeDef; SMO_HandleTypeDef smo; // 饱和函数 float sat(float x) { if(x 0.05f) return 1.0f; if(x -0.05f) return -1.0f; return x / 0.05f; } // SMO滑模观测器 void SMO_Calc(float Valpha, float Vbeta, float Ialpha, float Ibeta) { float s_alpha smo.Ialpha_hat - Ialpha; float s_beta smo.Ibeta_hat - Ibeta; float sat_a sat(s_alpha); float sat_b sat(s_beta); // 电流观测迭代 smo.Ialpha_hat smo.Ts*(Valpha - smo.Rs*smo.Ialpha_hat smo.K_smo*sat_a)/smo.Ls; smo.Ibeta_hat smo.Ts*(Vbeta - smo.Rs*smo.Ibeta_hat smo.K_smo*sat_b)/smo.Ls; // 反电势估计 smo.ealpha_hat -smo.K_smo * sat_a; smo.ebeta_hat -smo.K_smo * sat_b; } // PLL锁相环计算角度 void PLL_Calc(void) { float sin_theta sinf(smo.theta_hat); float cos_theta cosf(smo.theta_hat); // 角度误差 float err smo.ebeta_hat * cos_theta - smo.ealpha_hat * sin_theta; // PI得到电角速度 smo.omega_hat PI_Calc(PLL_PI, 0.0f, err); // 角度积分 smo.theta_hat smo.omega_hat * smo.Ts; if(smo.theta_hat 2*PI) smo.theta_hat - 2*PI; if(smo.theta_hat 0) smo.theta_hat 2*PI; }使用时直接把smo.theta_hat当作 θ 传入 Park 变换即可。5. 无传感器 FOC 启动I/F 开环拖动无传感器低速反电势太小观测不到必须开环拖动到中速再切闭环。5.1 I/F 策略固定 Id0给定较小 Iq比如额定 10%角度 θ 按目标频率匀速递增电机被磁场 “拖着转”当转速足够高如 300~500rpm切 SMO 闭环5.2 切换条件估算转速稳定PLL 误差小持续稳定若干 ms切换时要平滑过渡避免冲击抖动。6. 弱磁扩速控制 Id0高速更强表贴式 PMSM 高速时反电势超过母线电压电机被 “钳住” 上不去。弱磁原理给负的 Id 电流抵消永磁磁场降低反电势工程实现当 Valpha² Vbeta² 接近电压极限自动输出负 Id实现超基速扩速优点最高转速提升 30%~100%高速力矩更足7. 死区补偿解决低速抖动、噪音逆变器上下管不能同时导通必须加死区时间但会导致电压波形畸变低速抖动、啸叫电流谐波大工程补偿方法根据电流方向修正每一相的占空比if(Iu 0) CCRU dead_comp; else CCRU - dead_comp; if(Iv 0) CCRV dead_comp; else CCRV - dead_comp; if(Iw 0) CCRW dead_comp; else CCRW - dead_comp;dead_comp为死区等效电压对应的占空比补偿值。补偿后低速极度安静电流波形接近正弦效率明显提升8. 保护逻辑必须全加8.1 过流保护硬件比较器快速关断 PWM软件 ADC 实时判断1.5 倍额定立即停机8.2 母线过压 / 欠压启动欠压禁止工作过压立即关 PWM8.3 过温保护NTC 采样80℃降额90℃停机8.4 堵转保护长时间大电流 低转速判定堵转停机保护8.5 启动失败保护开环拖动一定时间仍不转判定故障停止输出9. 完整无传感器 FOC 调度流程上电 → 电流校准 → 开环I/F拖动 → 转速达标 → 切SMOPLL闭环 → 弱磁自动调节 → 死区实时补偿 → 全程保护中断内执行ADC 采样Clark 变换SMO 观测PLL 角度Park 变换电流环 PI弱磁 Id 计算反 Park死区补偿SVPWM 输出10. 调试无传感器 FOC 常见问题10.1 开环能转一切闭环就抖SMO 增益不合适PLL 参数不对角度方向反了Rs/Ls 参数不准10.2 低速能转高速失控弱磁没开观测器带宽不足采样噪声大10.3 电机啸叫尖锐滑模抖振大饱和函数区间太小PLL 噪声大10.4 偶尔丢步、重启切换条件太激进角度跳变电源压降大11. 全系列总结从第 1 章到第 7 章完整覆盖方波六步换相Clark/Park 坐标变换Id0 FOC 电流环SVPWM 调制有传感器整机系统无传感器 SMOPLL弱磁、死区补偿、保护