无感 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 核心要点:
- 利用电感凸极效应
- 高频电压注入 → 高频电流响应
- 解调提取位置误差
- 仅适用于 IPM 电机
下一篇:弱磁控制