3、无感启动核心技术:高频注入法、初始位置辨识、开环强拉与闭环切换
无感启动,说白了就是电机在零速或极低速时,没有编码器告诉你转子在哪儿,你还得把它稳稳拽起来,再平滑切到闭环。这一章我们拆开揉碎了讲:高频注入怎么找位置、开环强拉怎么给力矩、切换那一刻怎么不摔跟头。
核心逻辑一句话:无感启动 = 位置辨识(知道转子在哪) + 开环强拉(不管位置先转起来) + 平滑切换(从开环跳到闭环不抖)。
3.1 高频注入法:让转子自己“说话”
电机静止时,转子位置信息藏在哪儿?藏在磁路的凸极效应里。高频注入法就是往定子绕组里灌一个高频电压信号,然后从电流响应里把位置信息“解调”出来。
我个人习惯用旋转高频注入,因为实现简单,对凸极率要求不高。具体做法是:在静止坐标系(αβ)注入一个高频旋转电压矢量,频率通常选 500Hz ~ 1kHz,幅值控制在额定电压的 5% ~ 10%。
经验值参考:对于表贴式永磁同步电机(SPMSM),凸极率只有 1.05 ~ 1.15,高频注入的信噪比偏低。我建议把载波频率降到 400Hz 左右,幅值提到 12%,同时把带通滤波器的 Q 值做高一点。内嵌式(IPMSM)就好办多了,凸极率 1.5 以上,随便注。
解调过程分三步:
- 带通滤波:从电流采样里提取出载波频率附近的成分,滤掉基波和噪声。
- 同步解调:用注入信号的相位做乘法,把位置信息搬到直流分量上。
- 锁相环跟踪:用 PI 调节器锁定转子位置角。
// 高频注入解调伪代码(简化版)
// 输入:i_alpha, i_beta(采样电流)
// 输出:theta_est(估计转子位置)
// 1. 带通滤波
i_alpha_hf = bandpass_filter(i_alpha, fc, Q);
i_beta_hf = bandpass_filter(i_beta, fc, Q);
// 2. 同步解调(乘以注入信号)
// 注入信号:V_inj * cos(w_hf * t)
epsilon = i_alpha_hf * cos(w_hf * t) + i_beta_hf * sin(w_hf * t);
// 3. 锁相环
theta_est = pll(epsilon, Kp_pll, Ki_pll);
注意:高频注入在极低速(< 1 Hz)效果很好,但转速一高,反电动势会把注入信号淹没。一般超过 5% 额定转速就要切出去了。我曾经在一个风机项目里忘了做切换逻辑,结果电机在 10Hz 时高频注入还在跑,电流波形乱成一团,差点烧了驱动板。
3.2 初始位置辨识:别让电机倒转
高频注入能给出位置,但给的是磁极方向,不是 N/S 极。什么意思?就是它告诉你转子在 0° 还是 180°,但分不清是 N 还是 S。如果搞反了,启动瞬间电机会倒转半圈。
怎么区分?我常用的方法是 脉冲电压法:
- 先沿高频注入估计的方向发一个短脉冲(比如 0.5ms,50% 额定电压)。
- 测电流响应幅值。
- 再沿反方向发一个同样脉冲。
- 比较两次电流峰值:大的那个方向就是 N 极方向。
为什么?因为磁路饱和效应——N 极方向磁路更饱和,电感更小,电流上升更快。这个差异虽然只有 5% ~ 10%,但足够可靠。
避坑指南:我曾经在低温环境下(-20°C)做初始位置辨识,永磁体磁链变弱,饱和效应几乎消失,脉冲法完全失效。后来我改用“短脉冲 + 长脉冲”组合:短脉冲看饱和,长脉冲看反电动势积分。低温下长脉冲法更稳定。
3.3 开环强拉:I/F 控制与恒流升频
位置知道了,但转速还是零。这时候不能直接切闭环——反电动势太小,观测器算不准。所以需要开环强拉,把电机从零速“拖”到中低速。
最常用的方法是 I/F 控制(电流-频率控制):
- 给定一个固定电流幅值(比如额定电流的 30% ~ 50%)。
- 让电流矢量的角度以固定斜率增加(相当于频率斜坡)。
- 电机转子会被电流矢量“拖着”同步旋转。
参数怎么设?我一般这样起步:
| 参数 | 推荐范围 | 说明 |
|---|---|---|
| 起始频率 | 0.5 ~ 2 Hz | 太低力矩不够,太高容易失步 |
| 频率斜坡 | 1 ~ 5 Hz/s | 负载惯量大时取小值 |
| 电流幅值 | 30% ~ 60% 额定电流 | 带载启动时取上限 |
| 电流斜坡 | 0.1 ~ 0.5 A/s | 避免电流冲击 |
一个小技巧:开环强拉时,电流矢量的角度要超前转子实际位置一个角度(叫“功角”或“负载角”),才能产生正向力矩。这个角度一般设 30° ~ 60° 电角度。如果设太小,力矩不够;设太大,容易过流。我习惯在启动初期用 45°,等转速稳定后再逐渐减小到 10° 左右,为切换做准备。
3.4 闭环切换:最怕的那一下抖动
开环强拉到了目标转速(比如 5% ~ 10% 额定转速),反电动势够大了,观测器能工作了,这时候就要从开环切到闭环。切换做不好,电机会“咯噔”一下,轻则转速波动,重则过流停机。
切换的核心是 角度和速度的无缝对接:
- 角度对齐:开环运行时,我们用的是给定角度(积分出来的)。闭环时,观测器会输出一个估计角度。切换瞬间,这两个角度可能有偏差。我通常的做法是:在切换前一个周期,把观测器角度锁存下来,然后让开环角度慢慢“靠”过去,而不是直接跳变。
- 速度对齐:开环的速度是给定的斜坡值,闭环的速度是观测器算出来的。如果两者不一致,速度环输出会突变。我建议在切换前让速度环输出跟踪开环的电流给定,这样切换时电流不会跳。
- 电流环保持:切换瞬间,电流环的 PI 积分器不要清零,保持切换前的输出值,避免电流突变。
// 切换逻辑伪代码
if (speed_est > SWITCH_THRESHOLD && angle_error < 30_deg) {
// 1. 锁存观测器角度
theta_openloop_last = theta_openloop;
theta_observer_latch = theta_observer;
// 2. 渐进对齐(持续 5 ~ 10 个 PWM 周期)
for (i = 0; i < ALIGN_STEPS; i++) {
theta_openloop += (theta_observer_latch - theta_openloop_last) / ALIGN_STEPS;
// 输出电流矢量使用 theta_openloop
}
// 3. 切换标志置位
is_closed_loop = TRUE;
// 4. 速度环积分器初始化
speed_integrator = current_openloop / Kp_speed;
}
血的教训:有一次我在一个高速主轴项目里做切换,负载惯量特别大(电机转子本身就很重,还带个砂轮)。我按常规设了 5% 额定转速切换,结果每次切换都抖得厉害。后来我把切换转速提高到 15%,同时把角度对齐步数从 5 步加到 20 步,问题才解决。记住:大惯量负载,切换转速要高,对齐要慢。
3.5 参数调优实战清单
最后,我把无感启动的参数调优要点列成一个清单,你调试时可以对照检查:
| 阶段 | 检查项 | 典型问题 | 解决方向 |
|---|---|---|---|
| 高频注入 | 载波频率、幅值、滤波器 Q 值 | 位置估计抖动大 | 降低载波频率,提高幅值,收窄带宽 |
| 初始位置 | 脉冲宽度、电压幅值、比较阈值 | 启动瞬间倒转 | 增加脉冲宽度,提高电压,改用长脉冲法 |
| 开环强拉 | 起始频率、斜坡率、电流幅值、功角 | 启动失步或过流 | 降低斜坡率,增大电流,调整功角 |
| 闭环切换 | 切换转速、对齐步数、积分器处理 | 切换瞬间抖动或过流 | 提高切换转速,增加对齐步数,保持积分器 |
嗯,这一章的内容就到这里。无感启动的这三个核心技术——高频注入、开环强拉、闭环切换——每一个单独拿出来都能讲半天,但实际调试时它们是一个整体。参数之间互相影响,你得有耐心,一个一个调,观察波形,记录数据。我当年刚入行时,光调一个无感启动就花了三周,每天盯着示波器看电流波形看到眼花。但一旦调顺了,那种成就感,嗯,值得。