4、旋转高频注入法原理

好,咱们今天聊聊旋转高频注入法。说实话,这是我最喜欢的一种无传感器控制方法。为什么?因为它物理概念清晰,实现起来也不复杂。我在做伺服驱动器项目时,最早用的就是这种方法来获取零速和低速下的转子位置。

4.1 旋转高频电压注入

先说说怎么把高频信号注入进去。说白了,就是在咱们正常的基波电压上,叠加一个高频旋转电压矢量。

这个高频电压矢量长什么样?

V_dh = V_h * cos(ω_h * t)
V_qh = V_h * sin(ω_h * t)

其中 V_h 是高频电压幅值,ω_h 是高频角频率。我一般选 500Hz 到 1kHz 之间,具体看电机参数和开关频率。

你想想看,这个电压矢量在 dq 坐标系下是旋转的。它转得很快,比基波频率快得多。这样做的目的是什么?就是为了让高频信号和基波信号在频域上能分开。

个人经验:高频幅值不能太大,否则会产生 audible noise(可听噪声)。我一般取额定电压的 5%-10%。太大了吧,电机嗡嗡响;太小了吧,信噪比不够。这个平衡点需要在实际系统中调试。

4.2 旋转高频电流响应分析

电压注入进去了,电流会怎么响应?嗯,这里就有意思了。

对于凸极电机(比如内置式永磁同步电机 IPMSM),d 轴和 q 轴的阻抗不一样。d 轴电感大,q 轴电感小。所以同样的高频电压,在 d 轴和 q 轴上产生的电流幅值就不一样。

电流响应可以写成:

I_dh = V_h / (ω_h * L_d) * sin(ω_h * t)
I_qh = V_h / (ω_h * L_q) * cos(ω_h * t)

注意看,这里 L_d 和 L_q 不一样。所以合成的电流矢量就不是一个完美的圆,而是一个椭圆。

我在项目中遇到过一个问题:一开始用理想模型算出来的电流响应,和实际测到的总对不上。后来发现是忽略了定子电阻的影响。高频下,电阻虽然小,但也不能完全忽略。

参数 符号 典型值 影响
d轴电感 L_d 0.5-2 mH 决定电流幅值
q轴电感 L_q 1-4 mH 决定凸极比
定子电阻 R_s 0.1-1 Ω 引起相位偏移
高频频率 ω_h 500-2000 Hz 影响分离效果

4.3 位置解调原理

好,现在我们有电流响应了。怎么从里面把转子位置信息提取出来?

核心思想是这样的:电流椭圆的指向,就反映了转子位置。因为 d 轴电感小,电流在 d 轴方向上的分量就大。所以椭圆的长轴方向就是 d 轴方向。

具体怎么解调?我常用的方法是:

  1. 先把三相电流变换到静止 αβ 坐标系
  2. 用带通滤波器提取高频电流分量
  3. 对高频电流做幅值解调
  4. 通过反正切或者锁相环得到位置角

代码实现大概是这样的:

// 提取高频电流分量
i_alpha_hf = bandpass_filter(i_alpha, omega_h);
i_beta_hf = bandpass_filter(i_beta, omega_h);

// 幅值解调
i_alpha_demod = i_alpha_hf * cos(omega_h * t);
i_beta_demod = i_beta_hf * sin(omega_h * t);

// 低通滤波后得到位置信息
i_alpha_dc = lowpass_filter(i_alpha_demod);
i_beta_dc = lowpass_filter(i_beta_demod);

// 计算位置角
theta_est = atan2(i_beta_dc, i_alpha_dc) / 2;

避坑指南:我曾经在解调时忘记除以2,结果位置角差了180度。为什么?因为电流响应中的位置信息是2倍电角度。你想想看,d轴和q轴相差90度,但电流椭圆转一圈,位置信息就重复了两次。所以最后一定要除以2。

还有一个细节:解调出来的位置角是电角度,不是机械角度。对于多对极电机,还需要根据极对数换算。

我个人习惯在解调后加一个锁相环(PLL)。为什么?因为直接反正切出来的角度噪声大,而且容易跳变。PLL 可以平滑角度,还能估算转速。

核心要点总结:

  • 旋转高频注入利用电机凸极性
  • 电流响应呈椭圆形,长轴指向d轴
  • 解调时注意除以2和极对数换算
  • 建议加PLL提高角度估计质量

好了,旋转高频注入法的原理就讲到这里。说白了就是:注入高频电压,观察电流响应,从电流椭圆里提取位置信息。这个方法在零速和低速下效果很好,但到了中高速就不太行了。为什么?因为基波频率高了,和高频信号不好分离。下一章咱们会讲脉振高频注入法,那又是另一种思路。