1. 无感FOC低速困境与HFI的破局逻辑
1.1 为什么低速段成了无感FOC的“灯下黑”
搞过PMSM无感FOC的兄弟都清楚一个尴尬的现实:中高速区间反电动势足够大,用隆贝格观测器或者滑模观测器都能把转子位置估得七七八八,波形也漂亮。可一旦转速掉到额定转速的5%以下,甚至直接堵转到零速,反电动势幅值趋近于零,信噪比急剧恶化,观测器就像蒙着眼睛找路——理论上有解,实际上全是噪声。
这个问题的本质在于:反电动势法依赖的是转子运动产生的感应电压,而低速时这个电压小到被逆变器非线性、死区效应、电流采样噪声完全淹没。你就算把观测器带宽拉满,也只是把噪声放大而已。所以业内共识是——低速段必须换一套物理机制来提取位置信息,不能再指望反电动势了。
高频注入(HFI)就是在这个背景下被大规模工程化的。它的核心思想很朴素:既然转子不动或者转得慢,那我就主动往电机里“打”一个高频信号,利用电机本身的凸极效应(d轴和q轴电感不等)来探测转子在哪个方向。这就像你在黑暗的房间里想知道门在哪,与其等光线自己出现,不如主动喊一声听回声——凸极效应就是那个“回声”的物理基础。
1.2 凸极效应:HFI赖以生存的物理根基
PMSM按转子结构分两大类:表贴式(SPM)和内置式(IPM)。表贴式的永磁体贴在转子表面,d轴和q轴电感基本相等,凸极率接近1,HFI基本没法用。内置式永磁体嵌在转子铁芯内部,q轴磁路经过铁芯,d轴磁路经过永磁体,而永磁体的磁导率接近空气,所以Ld < Lq,凸极率通常在1.5到3之间。这个电感差异就是HFI的“信号源”。
从数学上看,电机的电压方程在dq坐标系下可以写成:
ud = Rs*id + Ld*d(id)/dt - ωe*Lq*iq uq = Rs*iq + Lq*d(iq)/dt + ωe*Ld*id + ωe*ψf当注入频率远高于基波频率时,电阻压降和反电动势项可以忽略,方程退化为纯电感模型。此时如果你在估计的d轴方向注入高频电压,电流响应中会包含转子实际位置与估计位置之间夹角的信息。把这个信息解调出来,就能得到位置误差信号,再通过锁相环(PLL)或者龙贝格观测器收敛到真实位置。
1.3 方波注入 vs 正弦波注入:为什么选方波
HFI的注入波形选择上有两条路:正弦波注入和方波注入。早期方案多用正弦波,因为频谱干净、解调简单。但正弦波注入有个硬伤——需要低通滤波器(LPF)来提取包络,而LPF会引入相位延迟,压缩控制带宽,动态响应变慢。你想想,低速时本来就想让电机响应快一点,结果LPF一加,带宽掉到几十赫兹,跟蜗牛一样。
方波注入的优势在于:方波在频域上是一系列奇次谐波的叠加,能量集中在注入频率附近,而且不需要LPF。你可以直接用电流差分来提取位置误差信号,省掉了滤波环节,带宽可以做到几百赫兹甚至上千赫兹。代价是电流纹波和噪声会大一些,但对低速应用来说,这个代价完全值得。
具体来说,方波注入通常在一个PWM周期内注入正负交替的电压脉冲,然后在下一个周期采样电流差分。由于方波频率等于PWM频率的一半,电流差分天然就是高频响应,基波分量在差分中被抵消掉了。这个技巧在工程上非常实用,后面我会详细展开。
注意:方波注入对电流采样时序要求极高,必须保证在电压矢量作用的中点采样,否则会引入严重的采样误差。这一点在调试时如果忽略,位置估算会直接发散。
2. d轴方波高频注入的算法原理推导
2.1 坐标系约定与注入信号定义
在推导之前,先把坐标系说清楚。我们定义两套坐标系:实际转子坐标系dq和估计转子坐标系d̂q̂。两者之间的夹角为Δθ = θ - θ̂,也就是位置估计误差。HFI的目标就是把这个Δθ驱动到零。
注入信号选择在估计的d̂轴方向注入方波电压,幅值为Vh,频率为PWM频率的一半。为什么选d轴而不是q轴?因为d轴注入时,电流响应中的位置误差信号与Δθ的正弦值成正比,在Δθ接近零时线性度好,适合小误差收敛。q轴注入虽然也能用,但信号形式会多一个余弦项,解调时容易产生死区。
注入电压的数学表达为:
V_inj = Vh * sign(sin(ωh*t)) (沿d̂轴方向)其中ωh = 2π*fh,fh = f_pwm/2。在实际实现中,方波就是每个PWM周期交替改变注入电压的符号,所以离散化后就是:
第k个周期:V_inj[k] = Vh * (-1)^k这个交替序列在频域上对应一个频率为f_pwm/2的方波,其基波分量就是我们需要的注入频率。
2.2 高频电流响应的推导过程
在估计的d̂q̂坐标系下,高频电压方程可以写成:
[Vd̂h] [Ld̂d̂ Ld̂q̂ ] [d(id̂h)/dt] [Vq̂h] = [Lq̂d̂ Lq̂q̂ ] [d(iq̂h)/dt]其中电感矩阵是实际dq电感经过坐标变换后的结果。经过推导(这里省略中间旋转矩阵的展开过程),可以得到:
Ld̂d̂ = L0 + L1*cos(2Δθ) Lq̂q̂ = L0 - L1*cos(2Δθ) Ld̂q̂ = Lq̂d̂ = L1*sin(2Δθ)其中L0 = (Ld+Lq)/2是平均电感,L1 = (Ld-Lq)/2是半差电感。对于IPM电机,Lq > Ld,所以L1 < 0。
由于只在d̂轴注入电压,Vq̂h = 0,代入方程并求解电流微分:
d(id̂h)/dt = Vd̂h * Lq̂q̂ / (Ld̂d̂*Lq̂q̂ - Ld̂q̂²) d(iq̂h)/dt = -Vd̂h * Ld̂q̂ / (Ld̂d̂*Lq̂q̂ - Ld̂q̂²)分母是电感矩阵的行列式,化简后为Ld*Lq,与Δθ无关。所以:
d(id̂h)/dt = Vd̂h * (L0 - L1*cos(2Δθ)) / (Ld*Lq) d(iq̂h)/dt = -Vd̂h * L1*sin(2Δθ) / (Ld*Lq)关键就在第二个式子:q̂轴的高频电流微分与sin(2Δθ)成正比。这就是位置误差信号的来源。当Δθ趋近于零时,sin(2Δθ) ≈ 2Δθ,信号与误差成线性关系,非常适合用PLL收敛。
2.3 方波差分提取位置误差信号
上面得到的是电流微分,实际系统中我们采样的是电流本身。方波注入的巧妙之处在于:由于注入电压正负交替,相邻两个PWM周期的电流差分可以近似代替微分。
具体操作:在第k个周期注入+Vh,采样电流id̂[k]和iq̂[k];在第k+1个周期注入-Vh,采样电流id̂[k+1]和iq̂[k+1]。那么电流差分:
Δiq̂ = iq̂[k+1] - iq̂[k] ≈ -2*Vh*Ts*L1*sin(2Δθ) / (Ld*Lq)其中Ts是PWM周期。这个差分信号直接包含了sin(2Δθ),而且基波分量在差分中被抵消(因为基波电流在相邻周期变化很小)。这就是方波注入不需要LPF的根本原因。
得到Δiq̂后,乘以一个增益系数并送入PLL:
ε = Kp * Δiq̂ ω̂ = Kp_pll * ε + Ki_pll * ∫ε dt θ̂ = ∫ω̂ dtPLL的带宽设计需要权衡:带宽太高会放大噪声,太低则收敛慢。工程上通常把PLL带宽设在50到200Hz之间,具体取决于注入频率和电流采样噪声水平。
2.4 参数敏感性与交叉耦合补偿
HFI有一个绕不开的问题:它对电感参数敏感。如果Ld和Lq的标定值与实际值偏差较大,位置误差信号会出现直流偏置,导致估算位置与实际位置之间存在稳态误差。更麻烦的是,随着电流增大,铁芯饱和会导致电感变化,凸极率下降,HFI的信噪比恶化。
交叉耦合效应是另一个坑。当电机带载时,q轴电流产生的磁通会影响d轴电感的饱和程度,导致电感矩阵出现交叉项。这个交叉项在位置误差信号中表现为一个与负载电流相关的干扰分量。工程上的补偿方法是:根据iq的符号和大小,对位置误差信号加一个前馈补偿项。这个补偿系数需要通过实验标定,通常做成一个一维查表。
实操心得:在标定补偿系数时,建议在多个负载点下测量位置误差,然后拟合出补偿曲线。不要只在一个负载点标定,否则负载变化时位置估算会漂移。
3. 工程实现中的关键细节与参数整定
3.1 注入频率与幅值的选取原则
注入频率的选择有一个硬约束:必须远高于基波频率,同时远低于电流环带宽。通常注入频率取PWM频率的一半,比如PWM频率10kHz,注入频率就是5kHz。这个频率足够高,基波分量在差分中被充分抑制;同时又足够低,电流环能跟得上。
注入幅值的选取更微妙。幅值太小,电流响应信噪比不够,位置估算抖动大;幅值太大,电流纹波和噪声增加,可能触发过流保护,还会产生可听噪声。经验公式是:注入电压幅值取母线电压的5%到10%。比如母线电压300V,注入幅值取15V到30V。实际调试时从10%开始往下调,直到位置估算波形刚好稳定为止。
注入频率和幅值之间还有一个耦合关系:注入频率越高,同样幅值下的电流响应越小(因为阻抗随频率增加)。所以如果提高注入频率,需要相应提高注入幅值来维持信噪比。这个权衡关系可以用一个简单公式估算:
Ih ≈ Vh / (ωh * Ld)其中Ih是高频电流幅值。一般希望Ih在额定电流的10%到20%之间。
3.2 电流采样时序与死区补偿
方波注入对电流采样时序的要求可以用“苛刻”来形容。由于注入电压在相邻周期交替变号,电流差分对采样时刻的偏差极其敏感。如果采样时刻偏离电压矢量作用的中点,差分信号中会混入基波电流的变化量,导致位置误差信号出现纹波。
具体操作上,建议使用PWM中心对齐模式,在计数器的峰值或谷值触发ADC采样。对于三相电流采样,要确保采样窗口足够宽,避开开关噪声。如果使用单电阻采样,方波注入会更加复杂,因为单电阻采样需要在特定矢量下才能重构三相电流,而方波注入会打乱矢量序列。所以方波HFI通常配合三电阻或双电阻采样使用。
死区效应是另一个隐形杀手。逆变器的死区时间会导致实际输出电压与指令电压之间存在偏差,这个偏差在方波注入下会表现为位置误差信号的直流偏置。补偿方法是根据电流方向对占空比进行修正,补偿量等于死区时间除以PWM周期再乘以母线电压。这个补偿在低速时尤其重要,因为死区电压相对于注入电压的比例更大。
3.3 PLL参数整定与带宽设计
PLL是HFI的位置收敛环节,它的参数整定直接决定了位置估算的动态性能和稳态精度。PLL本质上是一个二阶系统,其闭环传递函数可以写成标准形式:
H(s) = (2ζωn*s + ωn²) / (s² + 2ζωn*s + ωn²)其中ωn是自然频率,ζ是阻尼比。工程上通常取ζ = 0.707(临界阻尼),ωn根据需要的收敛时间确定。如果希望位置估算在100ms内收敛,ωn大约取30到50rad/s。
PLL的比例增益Kp_pll和积分增益Ki_pll与ωn和ζ的关系为:
Kp_pll = 2ζωn Ki_pll = ωn²但实际调试时不能直接套公式,因为位置误差信号中还有噪声和干扰。建议先用较小的带宽(ωn = 20rad/s)让系统稳定收敛,然后逐步提高带宽直到位置估算出现明显抖动,再回退20%作为最终值。
注意:PLL带宽不能超过注入频率的十分之一,否则会把注入频率附近的噪声放大,导致位置估算失稳。比如注入频率5kHz,PLL带宽不要超过500Hz。
3.4 低速到高速的平滑切换策略
HFI只在低速段有效,中高速段还是要靠反电动势观测器。两者之间的切换是一个工程难点。如果切换时位置估算角度跳变,电机会出现转矩冲击甚至失步。
平滑切换的核心是:在切换区间内,同时运行HFI和观测器,然后对两个位置估算值进行加权融合。加权系数根据转速线性过渡,比如转速在额定转速的3%到8%之间时,HFI权重从1线性降到0,观测器权重从0线性升到1。切换过程中要确保两个估算器的角度在同一坐标系下,否则融合没有意义。
另一个细节是:切换前要让观测器的状态变量收敛到与HFI一致的值,否则切换瞬间观测器输出会跳变。工程上的做法是在切换区间内,用HFI的估算角度去初始化观测器的积分器状态,实现“软切换”。
4. 常见问题排查与实战避坑指南
4.1 位置估算抖动大、收敛慢的排查思路
位置估算抖动是HFI调试中最常见的问题。排查时按以下顺序逐项检查:
| 排查项 | 可能原因 | 解决方法 |
|---|---|---|
| 电流采样噪声 | ADC采样时刻偏离中点,或采样窗口太窄 | 调整采样触发时刻,增加采样保持时间 |
| 注入幅值不足 | 信噪比低,位置误差信号被噪声淹没 | 适当提高注入幅值,但不超过母线电压15% |
| PLL带宽过高 | 放大了注入频率附近的噪声 | 降低PLL带宽,增加低通滤波 |
| 死区补偿不当 | 位置误差信号存在直流偏置 | 重新标定死区补偿系数 |
| 电感参数偏差 | 凸极率估计错误,信号幅值异常 | 重新测量Ld和Lq,更新参数 |
收敛慢通常是PLL积分增益太小,或者注入频率太低导致电流响应幅值不够。可以先示波器抓一下q轴电流差分波形,如果波形幅值很小,说明注入幅值或频率需要调整。
4.2 带载时位置误差漂移的补偿方法
空载时位置估算很准,一带载就漂移,这是交叉耦合效应在作怪。补偿方法是:在位置误差信号中减去一个与iq成正比的补偿项:
ε_comp = ε - Kc * iq其中Kc是补偿系数,需要通过实验标定。标定步骤:在多个负载点下运行电机,记录位置误差和iq,然后线性拟合出Kc。注意Kc的符号与电机凸极类型有关,IPM电机通常Kc为正。
如果补偿后仍有残余误差,可能是电感饱和导致的凸极率变化。这时需要做电感-电流查表,根据id和iq实时查表得到Ld和Lq,然后更新HFI的增益系数。这个查表在高端驱动器里很常见,但对普通应用来说,简单的线性补偿已经够用。
4.3 方波注入产生的可听噪声怎么抑制
方波注入的频率在PWM频率的一半,通常在5kHz到10kHz之间,正好在人耳最敏感的频段。电机绕组和铁芯在这个频率下会产生明显的啸叫,用户体验很差。
抑制噪声的方法有几种:一是采用随机注入频率,让方波频率在PWM频率的一半附近随机抖动,把窄带噪声变成宽带噪声,听感上会好很多。二是采用正弦波注入替代方波,但会牺牲带宽。三是提高注入频率到15kHz以上,超出人耳听觉范围,但这要求PWM频率至少30kHz,对功率器件和控制器算力都是挑战。
实际产品中,如果噪声要求严格,通常会选择随机频率方波注入加上机械隔音措施。纯算法层面很难完全消除可听噪声,这是HFI的固有代价。
4.4 零速堵转时的位置辨识与启动策略
零速堵转是HFI最擅长的场景,但启动瞬间仍有一个问题:初始位置未知,HFI需要一定时间收敛。如果直接闭环启动,收敛过程中电机会抖动甚至反转。
工程上的启动策略是:先开环注入高频信号,等待PLL收敛(通常50到100ms),确认位置估算稳定后再切换到闭环。收敛判据是位置误差信号的幅值小于阈值,且持续多个周期。这个等待时间对用户体验有影响,但为了可靠性必须保留。
如果应用要求快速启动,可以先用脉冲注入法做初始位置辨识,把转子吸引到已知位置,然后再启动HFI。脉冲注入法是在定子绕组中施加短时电压脉冲,根据电流响应幅值判断转子位置。这个方法速度快但精度有限,通常作为HFI的粗定位辅助。
实操心得:在零速堵转测试时,建议先用示波器观察位置误差信号的收敛过程,确认PLL在100ms内稳定。如果收敛时间超过200ms,检查注入幅值是否足够,或者PLL带宽是否太低。
5. 从算法到代码:核心环节的实现参考
5.1 注入与解调的主循环伪代码
下面给出一个简化的方波HFI主循环伪代码,展示注入、采样、解调和PLL的完整流程。实际实现中需要根据具体MCU的PWM和ADC配置进行调整。
// 每个PWM周期执行一次 void HFI_ISR(void) { static int32_t sign = 1; static int32_t iq_prev = 0; // 1. 注入方波电压到d轴 int32_t vd_inj = sign * VH; int32_t vq_inj = 0; // 2. 坐标变换到alpha-beta,送入SVPWM // ... 省略SVPWM和PWM寄存器更新代码 // 3. 等待电流采样完成 // ... 省略ADC触发和等待代码 // 4. 读取三相电流,Clarke/Park变换到d̂q̂ int32_t id_hat = ...; int32_t iq_hat = ...; // 5. 计算q轴电流差分 int32_t delta_iq = iq_hat - iq_prev; iq_prev = iq_hat; // 6. 根据注入符号调整差分方向 int32_t error = sign * delta_iq; // 7. PLL更新 int32_t omega_hat = KP_PLL * error + KI_PLL * integral; integral += error; theta_hat += omega_hat * TS; // 8. 翻转注入符号 sign = -sign; }这段代码的关键点在于:差分方向要根据注入符号调整,否则位置误差信号的符号会随注入周期翻转,PLL无法收敛。另外,积分器需要做限幅,防止积分饱和导致位置估算失控。
5.2 参数整定的实操步骤
参数整定建议按以下步骤进行,每一步都要用示波器或上位机观察波形:
- 确定注入频率:取PWM频率的一半,比如PWM 10kHz,注入频率5kHz。
- 确定注入幅值:从母线电压的5%开始,逐步提高到位置误差信号幅值达到电流采样噪声的5倍以上。
- 整定PLL比例增益:先设积分增益为零,逐步提高比例增益直到位置估算开始跟踪转子,但仍有稳态误差。
- 整定PLL积分增益:逐步提高积分增益直到稳态误差消除,但不要出现超调或振荡。
- 验证带载性能:在50%和100%额定负载下测试位置估算精度,如果误差超过5度,加入交叉耦合补偿。
- 验证切换性能:在低速到中速的切换区间内观察位置估算是否平滑过渡,如有跳变,调整切换权重曲线。
5.3 代码实现中的常见陷阱
第一个陷阱是定点数溢出。电流差分信号在定点数运算中容易溢出,尤其是注入幅值较大时。建议在差分计算前先做右移,或者使用32位以上的累加器。
第二个陷阱是PLL积分器饱和。当位置误差信号出现较大干扰时,积分器会累积到限幅值,导致位置估算卡死。解决方法是对积分器做抗饱和处理,当输出达到限幅时停止积分。
第三个陷阱是坐标变换角度错误。HFI中使用的角度是估计角度θ̂,而不是实际角度。如果误用了实际角度,位置误差信号会恒为零,PLL无法收敛。这个错误在调试时不容易发现,因为波形看起来“很正常”,但电机就是转不起来。
注意:在调试HFI时,建议先用开环方式注入,手动旋转转子,观察位置误差信号是否随转子角度变化。如果信号不变,说明坐标变换或解调环节有问题。
6. 性能边界与适用场景的理性评估
6.1 HFI的精度极限在哪里
HFI的位置估算精度受限于几个因素:电流采样分辨率、注入频率与基波频率的比值、电感参数的准确性。在理想条件下,HFI可以做到±1度以内的位置精度。但实际系统中,电流采样噪声、死区效应、电感饱和等因素会把精度拉到±3到±5度。
这个精度对于大多数低速应用已经足够,比如电动工具的启动、压缩机的低速运行、电动车的蠕行模式。但如果应用要求位置精度在±1度以内,比如高精度伺服,HFI可能不够用,需要配合编码器或者更高阶的观测器。
6.2 什么场景适合用HFI,什么场景不适合
HFI适合的场景:内置式PMSM、低速或零速运行、对成本敏感(不需要编码器)、对噪声容忍度较高。典型应用包括家电电机、电动工具、低速电动车、泵类负载。
HFI不适合的场景:表贴式PMSM(凸极率太低)、高速运行(反电动势法更合适)、对噪声要求极高(方波注入有啸叫)、对位置精度要求极高(HFI精度有限)。另外,如果电机电感随电流变化剧烈,HFI的标定工作量会很大,需要权衡开发成本。
6.3 与其他低速位置估算方法的对比
除了HFI,低速位置估算还有几种方法:脉冲注入法、旋转高频注入法、INFORM法。脉冲注入法速度快但精度低,适合初始位置辨识。旋转高频注入法精度高但需要LPF,带宽受限。INFORM法利用逆变器本身的开关状态提取位置信息,不需要额外注入,但实现复杂且对采样时序要求极高。
方波HFI在带宽和实现复杂度之间取得了较好的平衡,是目前工程上最主流的选择。它的缺点是噪声和参数敏感性,但通过合理的补偿和滤波设计,可以满足大多数应用需求。
| 方法 | 精度 | 带宽 | 噪声 | 实现复杂度 | 适用场景 |
|---|---|---|---|---|---|
| 方波HFI | ±3-5度 | 高 | 中 | 中 | 低速通用 |
| 旋转HFI | ±2-3度 | 低 | 低 | 中 | 低速高精度 |
| 脉冲注入 | ±10-15度 | 低 | 高 | 低 | 初始位置辨识 |
| INFORM | ±3-5度 | 中 | 低 | 高 | 低速低噪声 |
7. 调试工具与实验平台搭建建议
7.1 硬件平台的最低配置要求
调试HFI对硬件平台有一定要求。MCU需要支持中心对齐PWM和高速ADC采样,主频建议在100MHz以上,因为HFI的计算量比普通FOC大不少。电流采样建议用三电阻或双电阻方案,单电阻方案在方波注入下实现难度很大。
逆变器的死区时间要尽量小,建议在0.5微秒以下,否则死区补偿的难度会增加。母线电压采样要准确,因为注入幅值通常按母线电压的比例设定,母线电压波动会直接影响注入幅值。
7.2 上位机观测工具的使用技巧
调试HFI时,上位机观测工具是必不可少的。建议同时观测以下变量:估计角度θ̂、实际角度(如果有编码器)、位置误差信号ε、q轴电流差分Δiq̂、PLL输出ω̂。把这些变量同时显示在示波器上,可以快速定位问题。
如果位置误差信号波形杂乱,先检查电流采样是否干净。可以把电流采样值直接上传到上位机,观察是否有周期性干扰。如果干扰频率与PWM频率相关,说明采样时序有问题;如果与注入频率相关,说明解调环节有问题。
7.3 从实验台到产品的移植注意事项
实验台上跑通的HFI代码,移植到产品上往往会遇到新问题。第一个问题是电机参数不一致,实验台上的电机和产品电机可能来自不同批次,电感差异会导致位置估算精度下降。解决方法是在产品上重新标定电感参数和补偿系数。
第二个问题是工作环境变化,比如温度变化导致永磁体磁通和电感变化,进而影响HFI性能。高端产品会做温度补偿,根据温度查表调整注入幅值和PLL增益。普通产品至少要在高低温下验证HFI的稳定性,确保不会出现失步。
第三个问题是EMC干扰,产品上的功率器件开关噪声可能耦合到电流采样通道,导致位置估算抖动。解决方法包括增加采样滤波、优化PCB布局、使用屏蔽线等。这些措施在实验台上往往被忽略,但在产品上必须考虑。
我个人在实际操作中的体会是,HFI的调试过程很像调音,参数之间相互耦合,没有一套放之四海而皆准的配置。同样的代码在不同电机上表现可能完全不同,必须根据具体电机和负载特性做针对性整定。最耗时的往往不是算法本身,而是排查采样噪声、死区补偿、参数偏差这些“非算法”问题。建议在项目初期就预留足够的调试时间,不要低估HFI的工程化难度。