高频注入法信号提取:BPF、同步轴系与解调滤波对比与实现
1. 项目概述从“注入”到“提取”的闭环搞电机控制的朋友尤其是做永磁同步电机无位置传感器控制的对“高频注入法”这个名词肯定不陌生。它就像是我们在一个漆黑的房间里为了摸清房间的布局和自己在其中的位置主动发出一点声音高频信号然后竖起耳朵仔细分辨回声高频响应电流从而反推出房间的结构和自身方位。今天我们不聊为什么要用高频方波注入也不聊观测器怎么搭建我们聚焦一个非常具体、但往往在理论推导和工程实现中容易被“一笔带过”的核心环节如何从我们采集到的、混杂着各种成分的定子电流里把那个微弱的、携带了转子位置信息的“回声”——高频响应电流——干净利落地提取出来这个提取过程直接决定了后续位置观测的精度和系统的稳定性。如果提取不干净相当于你听到的回声里混进了隔壁装修的噪音、自己的心跳声那你对位置的判断肯定会出错。在基于高频方波注入、并将高频模型建立在旋转的d轴即转子磁链方向坐标系下的方案中提取高频响应电流主要有三种经典思路。很多人可能知道它们的名字带通滤波器BPF法、同步轴系滤波器法、以及解调-低通滤波法。但为什么是这三种它们各自的“脾气秉性”如何在理论上是如何推导和联系的在实际的DSP或MCU代码里又该如何实现和避坑这篇文章我就结合自己的项目经验和理论推导把这层窗户纸彻底捅破让你不仅知道怎么做更明白为什么这么做以及哪种情况下该用哪一招。2. 理论基础与问题定义我们到底要提取什么在深入三种方法之前我们必须统一“战场”和“目标”。高频方波注入法通常是在估计的同步旋转d-q坐标系记为d^e-q^e系的d轴上注入一个幅值为V_inj、频率为ω_inj通常几百Hz到几kHz的方波电压信号。这个方波电压在电机中感生的电流响应包含了丰富的频率成分。2.1 高频方波激励下的电流响应模型当我们对一个PMSM注入高频方波电压时由于电机的电感饱和效应以及磁路不对称凸极性其高频阻抗在d轴和q轴方向是不同的记作L_dh和L_qh。在旋转的d-q坐标系下高频电压方程可以简化为v_dh^e ≈ L_dh * (di_dh^e / dt)v_qh^e ≈ L_qh * (di_qh^e / dt)这里忽略了电阻和反电势的高频分量因为在高频下感抗占主导。注入的是d轴方波电压其傅里叶级数展开包含基波ω_inj及其奇次谐波。因此电流响应也主要包含这些频率成分。最关键的是由于L_dh ≠ L_qh在静止的α-β坐标系下观察这个高频电流响应是一个椭圆旋转的轨迹其椭圆的形状和旋转方向就编码了转子的绝对位置信息对于IPMSM或极位置信息对于SPMSM。2.2 信号提取的核心挑战我们的控制芯片如DSP通过ADC采集到的是三相静止坐标系下的电流i_a, i_b, i_c。经过Clarke变换得到i_α, i_β。然后我们用一个估计的角度θ^e通过Park变换将其转换到我们估计的d^e-q^e坐标系下得到i_d^e, i_q^e。此时i_d^e和i_q^e中包含了基波分量用于产生转矩的工频几十Hz电流这是我们控制的主分量。高频响应分量由注入的方波电压激励产生频率为ω_inj及其谐波幅值很小通常为基波电流的5%-15%。噪声开关噪声、测量噪声等。我们的目标就是从i_d^e和/或i_q^e中将第2项——高频响应电流——尽可能无失真、无延迟地分离出来同时彻底抑制第1项和第3项。提取出的信号将送入后续的位置观测器如锁相环PLL或龙伯格观测器进行解调最终得到转子位置和速度的估计值。注意这里有一个关键前提我们讨论的是将高频模型建立在旋转的d轴下的方法。这意味着我们分析高频响应的“视角”是跟着我们估计的d-q轴在旋转的。这与将高频模型建立在静止坐标系下的方法有本质区别后者提取信号的方式通常更简单直接用带通滤波器但动态性能和解耦特性往往不如前者。3. 三种高频响应电流提取方式的理论推导与对比理解了我们要提取的信号特征频率已知、幅值小、混杂在强基波背景中下面我们就来拆解三种提取方式的数学本质和实现形式。3.1 方式一经典带通滤波器法这是最直观、最容易想到的方法。3.1.1 原理推导既然我们要的是频率为ω_inj的信号那么最直接的工具就是带通滤波器。在估计的d^e-q^e坐标系下对电流信号i_d^e和i_q^e分别施加一个中心频率为ω_inj的带通滤波器。i_dh^e BPF(ω_inj) [ i_d^e ] i_qh^e BPF(ω_inj) [ i_q^e ]其中i_dh^e和i_qh^e就是我们提取出的d轴和q轴高频电流响应。为什么需要同时对d轴和q轴滤波因为在高频模型下d轴注入的电压会在q轴产生耦合响应。这个耦合响应的大小与位置误差直接相关i_qh^e ∝ sin(2Δθ) / (L_dh L_qh)其中Δθ是位置估计误差是构造位置误差信号的关键来源之一。因此通常我们需要提取i_qh^e或者同时提取i_dh^e和i_qh^e进行某种运算如求幅值或相位来得到误差信号。3.1.2 实现要点与滤波器设计在数字控制中通常采用二阶或四阶数字带通滤波器如双二阶滤波器。设计时需重点关注中心频率f_c严格等于注入频率f_inj。带宽BW需要权衡。带宽太窄对基波和噪声抑制好但会引入较大的相位滞后影响系统动态响应和稳定性带宽太宽则抑制干扰能力变差提取的信号不纯净。滤波器类型巴特沃斯型通带最平坦切比雪夫型过渡带更陡峭但通带有纹波。在电机控制中巴特沃斯更常用。3.1.3 优缺点分析优点概念清晰实现简单在MCU中容易编程实现。对远离中心频率的干扰如基波有较好的抑制。缺点相位滞后问题这是最致命的缺点。任何模拟或数字滤波器都会在通带内引入频率相关的相位滞后。这个滞后会直接转化为位置观测环路中的附加相位延迟严重时会限制观测器的带宽甚至导致系统不稳定。为了补偿这个滞后往往需要复杂的相位补偿网络。动态性能差当电机转速变化时基波电流频率也在变化。如果基波频率离注入频率较近例如在低速重载时基波频率可能上升到几十Hz与几百Hz的注入频率相隔不远固定中心频率的BPF可能无法完全抑制基波分量导致提取信号中包含基波纹波干扰位置观测。对滤波器参数敏感中心频率必须与注入频率精确匹配否则提取信号幅值衰减影响信噪比。实操心得在早期项目或对动态性能要求不高的场合BPF法可以作为入门选择。但在实际调试中一定要用示波器或仿真工具仔细查看经过BPF后的信号相位滞后了多少个采样周期并在观测器设计时予以考虑。我曾在一个项目中因为忽略了BPF引入的15°相位滞后导致中高速段位置估计出现周期性振荡排查了很久。3.2 方式二同步轴系滤波器法这种方法也称作“解耦网络法”或“复系数滤波器法”它巧妙地利用了旋转坐标系的特性。3.2.1 原理推导其核心思想是在同步旋转的d^e-q^e坐标系下我们关心的正序高频旋转分量由注入激励产生表现为一个固定的复常数或缓慢变化的直流量而基波分量和其他干扰则表现为低频交流量。我们可以构建一个在同步旋转坐标系下的低通滤波器来提取这个“直流”的高频信息。具体操作如下将采集到的i_α, i_β静止坐标系乘以一个旋转因子e^(jω_inj t)变换到一个与高频注入信号同步旋转的坐标系下。这个坐标系的旋转速度就是ω_inj。i_complex i_α j i_β i_sync i_complex * e^(-j ω_inj t) // 注意符号通常是向反方向旋转以“抵消”高频旋转在这个同步旋转坐标系下高频响应分量就变成了“直流”分量或极低频分量而原来的基波分量频率为ω_e则变成了频率为(ω_e - ω_inj)的交流量。由于ω_inj ω_e所以这个差值频率仍然较高。对i_sync的实部和虚部即新坐标系下的d轴和q轴分量施加一个普通的低通滤波器就可以轻松地提取出我们想要的高频响应电流对应的“直流”分量。将提取出的“直流”分量再乘以e^(j ω_inj t)反变换回静止坐标系就得到了纯净的α-β轴高频电流响应i_αh, i_βh。如果需要可以再Park变换到d^e-q^e坐标系。3.2.2 实现要点在数字实现中e^(jω_inj t)体现为sin/cos查找表或实时计算。关键步骤是坐标变换和LPF。坐标变换需要精确的sin/cos值角度为θ_inj ω_inj * t。注入频率固定所以角度可以预计算或通过累加相位生成。低通滤波器设计LPF的截止频率需要远低于|ω_e - ω_inj|以确保能滤除基波变换后的交流量同时又能保留我们需要的“直流”信号。由于ω_inj固定这个条件在大部分工况下容易满足。LPF的阶数可以较低一阶或二阶其相位滞后对最终提取的i_αh, i_βh在静止坐标系下的相位影响是固定的、已知的更容易补偿。3.2.3 优缺点分析优点有效抑制基波通过频率搬移将基波搬移到高频再用LPF滤除理论上对基波的抑制能力极强不受电机运行频率影响。相位特性明确主要相位滞后来源于LPF且LPF作用于“直流”或低频信号其相位滞后特性简单补偿容易。整体相位延迟通常小于BPF法。动态性能较好对电机转速变化不敏感。缺点计算量较大需要两次坐标变换正变换反变换和两次滤波对实部虚部分别LPF对CPU算力要求高于BPF法。对注入频率稳定性要求高如果注入频率ω_inj有抖动或偏差同步旋转坐标系无法完全对齐会导致提取的信号幅值衰减并引入额外纹波。实现相对复杂需要维护一个与注入频率同步的旋转角度。实操心得同步轴系滤波器法在理论上是更优雅的方案。我在一个对低速带载能力要求很高的伺服项目中使用过它。它的确能提供非常干净的高频响应信号。但要注意LPF的截止频率不能设得太低否则会滤除位置误差信号中的动态变化成分影响观测器带宽。一个经验值是LPF截止频率设为位置观测器带宽的5-10倍。3.3 方式三解调-低通滤波法这是在高频方波注入中最常用、最经典的方法它直接利用了方波注入的特性计算效率高且与位置误差信号的提取过程天然结合。3.3.1 原理推导这种方法不需要显式地分离出完整的高频正弦电流波形而是通过一个巧妙的“解调”步骤直接提取出包含位置误差信息的包络或幅值调制信号。步骤如下调制与响应我们在估计的d轴注入一个幅值为V_inj、频率为ω_inj的方波电压V_d^e*。这个方波可以看作是一个载波。获取响应电流测量得到q轴电流i_q^e注意这里通常关注q轴电流响应因为它直接包含sin(2Δθ)信息。同步解调用与注入方波同频同相的方波信号作为解调信号与i_q^e相乘。i_demod i_q^e * sign( sin(ω_inj t) )这里的sign(sin(ω_inj t))就是解调方波其值为1或-1。低通滤波将相乘后的信号i_demod通过一个低通滤波器。ε LPF [ i_demod ]这个LPF输出的信号ε就是解调后的误差信号它与转子位置估计误差Δθ近似成正比关系ε ∝ K * sin(2Δθ) ≈ 2K * Δθ当Δθ很小时可以直接送给PI调节器构成PLL来校正位置估计。3.3.2 数学本质为什么相乘再低通就能提取出误差信号我们可以从频域理解。i_q^e中包含基波分量低频、高频响应分量频率为ω_inj的奇次谐波其幅值受到sin(2Δθ)调制。解调方波是一个周期为T_inj的±1交替信号其傅里叶级数包含基波ω_inj及其奇次谐波。两者相乘在频域上是卷积。i_q^e中频率为ω_inj的分量与解调方波中频率为ω_inj的分量基波相乘会产生一个直流分量和一个2ω_inj的分量。这个直流分量正好正比于sin(2Δθ)后续的LPF其截止频率设得远低于2ω_inj目的就是滤除所有高频分量包括2ω_inj、4ω_inj以及基波与解调波卷积产生的高频项只保留这个我们需要的直流误差信号ε。3.3.3 实现要点严格同步解调方波必须与注入方波严格同频同相否则解调出的直流分量会衰减严重影响信噪比。在数字实现中这很容易保证因为它们源于同一个时基。LPF设计LPF的截止频率是关键。它需要远低于2ω_inj以有效滤除高频纹波。高于期望的位置观测器带宽以保证误差信号的动态响应速度。通常LPF的截止频率设置为位置观测器带宽的2-5倍。LPF本身可以是一阶惯性环节。q轴电流选择为什么通常用i_q^e而不是i_d^e因为理论推导表明在d轴注入下i_q^e中的高频响应幅值与sin(2Δθ)成正比而i_d^e中的高频响应幅值主要包含一个恒定偏置和与cos(2Δθ)相关的项对误差Δθ的灵敏度在零点附近较低。因此使用i_q^e解调得到的误差信号线性度更好。3.3.4 优缺点分析优点计算高效只需要一次乘法运算和一个简单的LPF计算量远小于前两种方法。特别适合在中断服务程序中执行。直接输出误差信号提取信号的过程就是构造位置误差信号的过程一步到位结构简洁。动态性能好LPF的相位滞后影响较小且易于补偿。整个位置观测环路的带宽可以做得很高。对基波抑制能力强解调过程相当于一个以ω_inj为中心的梳状滤波器对基波等低频分量有天然的抑制。缺点对注入频率精度要求高同同步轴系法一样需要稳定的注入频率。提取的是包络而非完整波形这种方法无法得到完整的高频正弦电流波形i_dh^e和i_qh^e。如果某些高级算法需要利用完整的波形信息如进行FFT分析其他谐波此法不适用。存在高频纹波LPF无法完全滤除所有高频分量误差信号ε中会残留少量频率为2ω_inj、4ω_inj等的纹波需要后续观测器具有一定的滤波能力。实操心得解调-低通滤波法是工程实践中的绝对主流尤其是在对实时性要求高的场合。它的简洁和高效无可替代。调试时最关键的两个点是第一确保注入与解调方波的同步性可以用示波器双通道同时观察注入电压命令和q轴电流解调后的波形看其包络是否平滑第二精心设计LPF的参数用扫频或阶跃响应的方式测试其动态特性确保不影响观测器稳定性。我曾通过微调LPF的截止频率将位置观测的收敛时间缩短了30%。4. 三种方式的深入对比与选型指南为了更直观地对比我将三种方式的核心特点总结如下表特性维度带通滤波器法同步轴系滤波器法解调-低通滤波法核心原理频率筛选坐标变换频率搬移同步解调检波输出信号完整的高频正弦电流i_dh^e, i_qh^e完整的高频正弦电流i_αh, i_βh位置误差信号ε(直流或低频)计算复杂度中等高低相位滞后大且随频率变化难补偿中等固定延迟易补偿小主要来自LPF易补偿基波抑制能力一般受BPF带宽和基波频率影响强理论完美抑制强通过解调过程抑制动态性能差受滤波器延迟影响大较好好对注入频率稳定性要求高极高高适用场景对动态性能要求不高的简易实现需要完整高频波形、对基波抑制要求极高的场合绝大多数无位置传感器控制场合选型建议如果你是初学者或做原理验证可以从带通滤波器法入手它直观有助于理解信号流程。如果你的应用场景中基波电流幅值很大且频率变化范围宽如低速重载启动担心基波泄漏干扰高频提取可以考虑同步轴系滤波器法它能提供最纯净的高频信号。对于绝大多数工业伺服、压缩机、风机等高性能PMSM无位置传感器控制系统解调-低通滤波法是最优选择。它完美平衡了性能、复杂度和实时性是经过大量工程实践验证的可靠方案。5. 从理论到代码解调-低通滤波法的DSP实现细节纸上得来终觉浅我们以最常用的解调-低通滤波法为例看看在TI C2000系列DSP的CPU中断中如何用代码实现它。5.1 信号生成与注入首先在PWM载波周期中断例如PWM频率为10kHz中断频率也为10kHz中我们需要生成注入的方波电压。假设我们选择注入频率为1kHz。// 定义 #define INJ_FREQ_HZ 1000.0 // 注入频率 1kHz #define INJ_AMP_V 50.0 // 注入电压幅值 (根据母线电压和调制比确定) #define PWM_FREQ_HZ 10000.0 // PWM频率 10kHz #define INJ_PERIOD_COUNT (PWM_FREQ_HZ / INJ_FREQ_HZ) // 一个注入周期对应的PWM周期数 10 static Uint16 inj_counter 0; // 注入周期计数器 static float inj_signal 1.0; // 解调信号1或-1 // 在PWM中断服务程序中 inj_counter; if (inj_counter INJ_PERIOD_COUNT) { inj_counter 0; inj_signal -inj_signal; // 每个注入周期翻转一次 } // 计算d轴电压指令 Vd_ref // Vd_ref 由电流环PI控制器输出 注入电压 Vd_ref Vd_pi_output (INJ_AMP_V * inj_signal); // 注入方波 // Vq_ref 由电流环PI控制器输出通常不加注入 Vq_ref Vq_pi_output;这样Vd_ref就是一个叠加了1kHz方波的电压指令。5.2 电流采样与坐标变换在ADC中断中通常与PWM中断同步或略有延迟采样三相电流Ia, Ib, Ic。// Clarke变换 float I_alpha Ia; float I_beta (Ia 2.0 * Ib) * ONE_BY_SQRT3; // 简化计算注意系数 // Park变换使用估计的角度 theta_est float cos_theta, sin_theta; cos_theta cos(theta_est); sin_theta sin(theta_est); float Id_meas I_alpha * cos_theta I_beta * sin_theta; float Iq_meas -I_alpha * sin_theta I_beta * cos_theta;现在我们得到了估计d-q坐标系下的电流Id_meas和Iq_meas。5.3 解调与滤波我们使用Iq_meas进行解调因为其高频响应包含sin(2Δθ)信息。// 解调Iq_meas 乘以 解调方波 inj_signal float Iq_demod Iq_meas * inj_signal; // 低通滤波采用一阶数字低通滤波器 // 差分方程: y[n] (1 - K) * y[n-1] K * x[n] // 其中 K Ts / (Ts Tau), Ts为采样周期Tau为滤波器时间常数 #define LPF_TAU 0.001 // 假设截止频率约160Hz (fc1/(2*pi*Tau)) #define LPF_K (1.0 / (PWM_FREQ_HZ * LPF_TAU 1.0)) // 预计算K值 static float lpf_output_prev 0.0; // 滤波器上一次输出 float error_signal (1.0 - LPF_K) * lpf_output_prev LPF_K * Iq_demod; lpf_output_prev error_signal; // 更新状态这个error_signal就是我们最终提取出的、与位置误差Δθ成正比的误差信号ε。5.4 送入位置观测器将error_signal送入一个锁相环PLL或龙伯格观测器来更新估计的速度omega_est和角度theta_est。// 一个简单的PLL实现 #define PLL_KP 10.0 // 比例增益 #define PLL_KI 100.0 // 积分增益 static float pll_integral 0.0; float delta_theta error_signal; // 假设误差信号已近似为Δθ omega_est PLL_KP * delta_theta pll_integral; pll_integral PLL_KI * delta_theta * Ts; // Ts为控制周期 // 积分得到角度 theta_est omega_est * Ts; theta_est fmod(theta_est, 2.0 * PI); // 限制在0-2π代码避坑指南中断同步注入方波的翻转、电流采样、解调运算必须在严格同步的中断中完成任何抖动都会引入噪声。滤波器初始化LPF的初始状态lpf_output_prev最好初始化为0避免启动冲击。数据类型在定点DSP中要特别注意Iq_meas和inj_signal相乘后的数值范围防止溢出。inj_signal用1.0和-1.0表示即可。PLL参数整定PLL_KP和PLL_KI需要根据系统需求整定。PLL_KP影响动态响应速度PLL_KI影响稳态精度和对常值扰动的抑制能力。可以用“先调KP再调KI”的经验法则观察位置估计的收敛过程。6. 常见问题与调试技巧实录即使理论清晰代码无误在实际调试中还是会遇到各种问题。下面分享几个典型问题及其排查思路。6.1 问题一位置估计值噪声大波动剧烈可能原因1注入电压幅值过大或过小。排查用示波器观察相电流波形应该能看到清晰的高频纹波注入频率。如果纹波幅值相对于基波电流太大如超过30%可能引起磁路饱和或带来额外损耗如果太小则信噪比低容易被噪声淹没。通常设置为相电流额定值的5%-15%。解决调整INJ_AMP_V找到一个平衡点。可能原因2LPF截止频率过高。排查检查LPF的截止频率fc_LPF。如果fc_LPF太接近2 * f_inj则高频纹波滤除不干净会直接体现在误差信号和位置估计中。解决降低fc_LPF。确保fc_LPF f_inj / 5是一个比较安全的经验值。例如对于1kHz注入LPF截止频率可设为150-200Hz。可能原因3ADC采样或电流调理电路噪声大。排查在不注入高频电压时即普通FOC运行观察Iq_meas的波形如果本身噪声就很大那么解调后噪声会被放大。解决优化硬件布局加强模拟地隔离检查运放电源或在软件中增加适当的滑动平均滤波需注意相位延迟。6.2 问题二电机在某个转速区间位置估计失准或振荡可能原因1注入频率与PWM频率或其谐波产生干涉。排查检查注入频率f_inj与PWM频率f_pwm的关系。避免f_inj等于f_pwm/n或n*f_pwmn为整数否则开关噪声可能会被同步放大。解决微调注入频率例如从1kHz改为950Hz或1050Hz。可能原因2观测器带宽与机械谐振频率重合。排查位置观测器PLL本身是一个闭环系统其带宽如果设置得过高接近机械系统的谐振频率可能激发振荡。解决降低PLL的比例增益PLL_KP或在前向通道增加一个低通滤波器。可能原因3反电势模型开始起主导作用与高频注入模型冲突。排查这种情况常发生在中高速区域。高频注入法在低速通常10%额定转速下性能优越。当转速升高反电势幅值变大基于反电势的模型如滑模观测器开始更有效。如果两种观测器切换不好会导致振荡。解决实现平滑的观测器切换策略。例如设计一个基于转速的加权函数在低速区完全信任高频注入法在中高速区逐渐过渡到反电势法。6.3 问题三电机启动或低速带载时位置无法收敛或收敛慢可能原因1初始位置误差太大。排查高频注入法通常只能估计相对位置极位置且其收敛范围有限通常在一个电周期内。如果初始位置误差超过90度电角度可能会收敛到错误的位置点。解决结合初始位置检测技术。例如在启动前注入一个短时的高频旋转电压矢量通过检测响应的不对称性来估算初始位置将估计值作为高频注入法的初始值。可能原因2负载转矩过大导致sin(2Δθ)信号饱和或畸变。排查在重载启动时Iq_meas中的基波分量很大可能会影响解调效果。或者过大的转矩电流导致电感饱和使L_dh和L_qh的差值发生变化影响模型准确性。解决适当增加注入电压幅值INJ_AMP_V提高信噪比。或者采用对参数变化更鲁棒的观测器结构如自适应观测器。可能原因3滤波器相位滞后严重影响了观测器稳定性。排查检查整个信号链路的相位延迟包括电流采样保持、ADC转换、滤波器、解调计算等。可以用仿真工具或频率响应分析仪测量开环传递函数的相位裕度。解决如果主要是LPF引起的滞后可以在LPF后或PLL前加入一个相位超前补偿环节。或者尝试使用相位滞后更小的滤波器结构如FIR滤波器但会牺牲一些滤波效果。调试是一个系统工程需要结合理论分析、仿真验证和实验观察。我的习惯是在代码中预留关键的信号观测变量如error_signal,omega_est等通过DSP的DAC模块或串口实时输出到示波器或上位机直观地观察其动态行为这是定位问题最快的方法。记住清晰的信号流和可控的观测点是高效调试的基石。