凸极效应与信号解耦:电机凸极效应原理
好,咱们接着聊高频注入。上一章我们把高频信号怎么注入到电机里讲清楚了。但有个问题——你注入的信号,怎么从反馈里把位置信息“捞”出来?
这就绕不开一个核心概念:凸极效应。
说白了,就是电机转子在转的时候,它的电感不是均匀的。d轴和q轴的电感不一样。我刚开始做无感FOC时,总觉得这玩意儿是理论上的东西,直到有一次在实验室调一个内置式永磁同步电机(IPMSM),发现高频响应信号里藏着明显的周期性波动。嗯,那就是凸极效应在“说话”。
1.1 凸极效应的物理本质
为什么会有凸极效应?你想想看,永磁体嵌在转子铁芯里,磁路结构不对称。d轴(永磁体方向)磁阻大,电感小;q轴(交轴方向)磁阻小,电感大。
用公式表达就是:
Ld ≠ Lq
对于IPMSM,通常Lq > Ld。这个差值ΔL = Lq - Ld,就是我们做高频注入的“信号源”。
我在项目中遇到过一台表贴式电机(SPMSM),Ld和Lq几乎相等,凸极效应弱到可以忽略。那时候高频注入基本失效,最后只能换用其他方法。所以,凸极效应是高频注入的前提。
核心要点:凸极效应越强,高频注入的信噪比越高,位置估计越准。
1.2 凸极率的工程意义
我们定义一个参数叫凸极率:
ρ = Lq / Ld
ρ越大,凸极效应越明显。一般IPMSM的ρ在1.5~3之间。我见过一些特殊设计的电机,ρ能做到4以上,那种电机做高频注入简直不要太爽。
| 电机类型 | Ld (mH) | Lq (mH) | 凸极率 ρ | 高频注入适用性 |
|---|---|---|---|---|
| SPMSM | 0.5 | 0.52 | 1.04 | 差 |
| IPMSM (普通) | 0.4 | 0.8 | 2.0 | 好 |
| IPMSM (高凸极) | 0.3 | 1.2 | 4.0 | 优秀 |
我的经验:如果凸极率低于1.2,建议别用高频注入,信噪比太低,容易误判。我曾经在一个项目里硬着头皮用,结果位置估计抖得像筛子。
高频信号在dq轴下的响应
好,现在我们把高频信号注入到电机里。信号进了电机,会怎么响应?
我们注入的是高频电压信号,通常加在d轴或q轴上。我个人习惯在d轴注入,因为这样对转矩的影响最小。
2.1 高频电压方程
在dq旋转坐标系下,电机的电压方程是:
vd = Rs·id + Ld·(did/dt) - ωe·Lq·iq
vq = Rs·iq + Lq·(diq/dt) + ωe·Ld·id + ωe·ψf
注意,这里ωe是电角速度。但在高频注入时,我们注入的频率远高于基波频率。所以,ωe项可以忽略。为什么呢?因为高频信号变化太快,反电动势跟不上。
简化后的高频模型:
vdh ≈ Ld·(didh/dt)
vqh ≈ Lq·(diqh/dt)
你看,高频下电机就变成了一个纯电感负载。电阻和反电动势的影响可以忽略。
关键洞察:高频响应只与电感有关,而电感又和转子位置相关。这就是我们能从高频响应中提取位置信息的根本原因。
2.2 高频电流响应
我们注入一个高频正弦电压:
vdh = Vh·sin(ωh·t)
那么d轴的高频电流响应是:
idh = -(Vh/(ωh·Ld))·cos(ωh·t)
q轴类似。但注意,如果转子位置有偏差,d轴和q轴之间会有耦合。这个耦合信号里就藏着位置信息。
我刚开始做时,总搞不清为什么高频电流里会有位置信息。后来想明白了:你注入的是d轴信号,但转子没对准,信号就会耦合到q轴。这个耦合量正比于位置误差。
2.3 位置误差的提取
假设我们估计的转子位置是θ̂,实际位置是θ。误差Δθ = θ - θ̂。
在估计的dq坐标系下,高频电流响应为:
îdh = I0·cos(ωh·t)
îqh = I0·sin(2Δθ)·cos(ωh·t)
注意看,q轴的高频电流幅值正比于sin(2Δθ)。当Δθ很小时,sin(2Δθ) ≈ 2Δθ。所以,q轴高频电流的幅值直接反映了位置误差。
避坑指南:我曾经犯过一个错误——直接用îqh的瞬时值做误差信号。结果发现噪声大得离谱。后来才意识到,应该先解调,提取幅值,再做处理。千万别偷懒。
带通/低通滤波器设计
信号提取出来了,但里面混着各种噪声。基波分量、开关噪声、测量噪声……我们需要滤波器来“提纯”。
我个人习惯用两级滤波:带通滤波器(BPF) 提取高频分量,低通滤波器(LPF) 提取误差信号。
3.1 带通滤波器设计
BPF的作用是从电流采样信号里把高频分量捞出来。中心频率就是注入频率ωh。
我用的是二阶带通滤波器,传递函数:
H(s) = (2·ζ·ωc·s) / (s² + 2·ζ·ωc·s + ωc²)
其中ωc是中心频率,ζ是阻尼系数。我一般取ζ=0.707,这样带宽适中,响应快。
带宽怎么选?太宽了噪声多,太窄了信号衰减大。我建议带宽取注入频率的10%~20%。
// 数字BPF实现(二阶IIR)
// 采样频率 fs = 10kHz, 中心频率 fh = 500Hz, 带宽 BW = 100Hz
float b0 = 0.0201;
float b1 = 0.0;
float b2 = -0.0201;
float a1 = -1.5610;
float a2 = 0.6414;
float bpf_filter(float input) {
static float x1 = 0, x2 = 0, y1 = 0, y2 = 0;
float output = b0*input + b1*x1 + b2*x2 - a1*y1 - a2*y2;
x2 = x1; x1 = input;
y2 = y1; y1 = output;
return output;
}
注意:IIR滤波器有相位延迟。如果你对实时性要求高,可以考虑用FIR。但FIR阶数高,计算量大。我在一个低成本MCU上用过IIR,效果还行,就是要注意系数精度。
3.2 低通滤波器设计
经过BPF后,我们得到了高频电流信号。然后需要解调——乘以一个同频的参考信号,再低通滤波,提取幅值。
解调后的信号包含直流分量(就是我们要的误差信号)和2倍频分量。LPF的任务就是滤掉2倍频分量。
我用的是一阶低通滤波器,简单可靠:
H(s) = 1 / (1 + τ·s)
截止频率fc = 1/(2πτ)。我一般取fc为注入频率的1/10左右。
// 一阶数字LPF
// 截止频率 fc = 50Hz, 采样频率 fs = 10kHz
float alpha = 0.0314; // alpha = 2π·fc/fs
float lpf_filter(float input) {
static float y_prev = 0;
float output = alpha * input + (1 - alpha) * y_prev;
y_prev = output;
return output;
}
我的经验:alpha值别选太大,否则滤波效果差。也别太小,否则响应太慢。我一般先仿真调好参数,再移植到MCU上。有一次在仿真里跑得好好的,上机就炸了——原来是定点数精度不够。嗯,这个坑我踩过。
3.3 滤波器设计总结
| 滤波器类型 | 作用 | 推荐参数 | 注意事项 |
|---|---|---|---|
| 带通滤波器 (BPF) | 提取高频分量 | 中心频率 = 注入频率 带宽 = 10%~20% 中心频率 |
IIR注意系数精度 FIR注意计算量 |
| 低通滤波器 (LPF) | 提取误差信号 | 截止频率 = 1/10 注入频率 | alpha值适中 注意响应速度 |
说白了,滤波器设计就是在噪声抑制和响应速度之间找平衡。没有完美的参数,只有适合你项目的参数。
核心思路回顾:
- 凸极效应 → 电感随位置变化
- 高频注入 → 电感影响电流响应
- BPF提取高频 → 解调 → LPF提取误差
- 误差信号 → 位置估计
好,这一章的内容就到这儿。滤波器设计这块,我建议你多动手仿真,调调参数,感受一下不同参数对系统的影响。纸上得来终觉浅,绝知此事要躬行。