无感 FOC:高频注入法(HFI)

系列:电机控制系列 - 第 12 篇 难度:⭐⭐⭐⭐ 适用:IPM 电机(电感凸极)

前言

SMO 在低速失效 → 需要高频注入法(HFI)

HFI 优势

  • ✅ 零速/低速性能好
  • ✅ 不依赖反电动势
  • ❌ 需要电感凸极(IPM)

一、高频注入原理

1.1 电感凸极效应

IPM 电机:Ld < Lq

 d 轴(磁极方向):磁路磁阻小 → Ld 小
 q 轴(垂直磁极):磁路磁阻大 → Lq 大
 
 电感随位置变化:
 L(θ) = (Ld + Lq)/2 + (Lq - Ld)/2 · cos(2θ)

1.2 高频注入

注入信号(高频电压):

 vd_hf = V_inj · sin(ωh·t)  // d 轴注入
 vq_hf = 0
 
 其中:
 - V_inj:注入幅值(50-200V)
 - ωh:注入频率(500-2000 Hz)

响应电流(包含位置信息):

 id_hf ≈ V_inj / (ωh·Ld) · cos(2θ_error)
 iq_hf ≈ V_inj / (ωh·Lq) · sin(2θ_error)
 
 其中:θ_error = θ_true - θ_est

二、HFI 实现

 /**
  * @brief 高频注入
  */
 void HFI_Update(HFI_t *hfi, float *vd, float *vq, float id, float iq) {
     // 1. 注入信号
     float v_inj = hfi->v_inj * sinf(hfi->theta_inj);
     hfi->theta_inj += 2.0f * M_PI * hfi->freq_inj * hfi->dt;
     
     *vd += v_inj;
     
     // 2. 提取高频分量(带通滤波)
     float id_hf = Bandpass_Filter(id, hfi->freq_inj);
     float iq_hf = Bandpass_Filter(iq, hfi->freq_inj);
     
     // 3. 解调(乘以注入频率)
     float demod = 2.0f * id_hf * sinf(hfi->theta_inj);
     
     // 4. 低通滤波 → 位置误差
     float error = LPF(demod);
     
     // 5. PLL 跟踪
     hfi->theta_est += hfi->pll_kp * error * hfi->dt;
     
     // 归一化
     if (hfi->theta_est > 2.0f * M_PI) hfi->theta_est -= 2.0f * M_PI;
     if (hfi->theta_est < 0) hfi->theta_est += 2.0f * M_PI;
 }

三、HFI + SMO 融合

 /**
  * @brief 混合无感控制
  */
 void Sensorless_Hybrid_Update(FOC_t *foc) {
     if (foc->omega_m < 0.1f) {
         // 低速:高频注入
         HFI_Update(&foc->hfi, &foc->vd, &foc->vq, foc->id, foc->iq);
         foc->theta_e = foc->hfi.theta_est;
     } else {
         // 高速:滑模观测器
         SMO_Update(&foc->smo, ...);
         foc->theta_e = foc->smo.theta_est;
     }
 }

四、总结

HFI 核心要点

  1. 利用电感凸极效应
  2. 高频电压注入 → 高频电流响应
  3. 解调提取位置误差
  4. 仅适用于 IPM 电机

下一篇弱磁控制

最后修改:2026 年 03 月 14 日
如果觉得我的文章对你有用,请随意赞赏