3、无感启动核心技术:高频注入法、初始位置辨识、开环强拉与闭环切换

无感启动,说白了就是电机在零速或极低速时,没有编码器告诉你转子在哪儿,你还得把它稳稳拽起来,再平滑切到闭环。这一章我们拆开揉碎了讲:高频注入怎么找位置、开环强拉怎么给力矩、切换那一刻怎么不摔跟头。

核心逻辑一句话:无感启动 = 位置辨识(知道转子在哪) + 开环强拉(不管位置先转起来) + 平滑切换(从开环跳到闭环不抖)。

无感启动核心技术流程 初始位置辨识 高频注入 / 脉冲法 开环强拉 I/F 控制 / 恒流升频 闭环切换 速度/角度对齐 高频注入细节 • 载波频率:500Hz ~ 2kHz • 幅值:5% ~ 15% 额定电压 • 解调:带通 + 锁相环 开环强拉参数 • 起始频率:0.5 ~ 2 Hz • 电流斜坡:0.1 ~ 0.5 A/s • 频率斜坡:1 ~ 5 Hz/s 切换判据 • 速度 > 5% 额定转速 • 角度误差 < 30° 电角度 • 电流环稳定 目标:零速 → 低速 → 中高速,全程无感、无抖动 三个阶段环环相扣,任何一个环节参数不对,启动就失败

3.1 高频注入法:让转子自己“说话”

电机静止时,转子位置信息藏在哪儿?藏在磁路的凸极效应里。高频注入法就是往定子绕组里灌一个高频电压信号,然后从电流响应里把位置信息“解调”出来。

我个人习惯用旋转高频注入,因为实现简单,对凸极率要求不高。具体做法是:在静止坐标系(αβ)注入一个高频旋转电压矢量,频率通常选 500Hz ~ 1kHz,幅值控制在额定电压的 5% ~ 10%。

经验值参考:对于表贴式永磁同步电机(SPMSM),凸极率只有 1.05 ~ 1.15,高频注入的信噪比偏低。我建议把载波频率降到 400Hz 左右,幅值提到 12%,同时把带通滤波器的 Q 值做高一点。内嵌式(IPMSM)就好办多了,凸极率 1.5 以上,随便注。

解调过程分三步:

  1. 带通滤波:从电流采样里提取出载波频率附近的成分,滤掉基波和噪声。
  2. 同步解调:用注入信号的相位做乘法,把位置信息搬到直流分量上。
  3. 锁相环跟踪:用 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% 额定转速),反电动势够大了,观测器能工作了,这时候就要从开环切到闭环。切换做不好,电机会“咯噔”一下,轻则转速波动,重则过流停机。

切换的核心是 角度和速度的无缝对接:

  1. 角度对齐:开环运行时,我们用的是给定角度(积分出来的)。闭环时,观测器会输出一个估计角度。切换瞬间,这两个角度可能有偏差。我通常的做法是:在切换前一个周期,把观测器角度锁存下来,然后让开环角度慢慢“靠”过去,而不是直接跳变。
  2. 速度对齐:开环的速度是给定的斜坡值,闭环的速度是观测器算出来的。如果两者不一致,速度环输出会突变。我建议在切换前让速度环输出跟踪开环的电流给定,这样切换时电流不会跳。
  3. 电流环保持:切换瞬间,电流环的 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 值 位置估计抖动大 降低载波频率,提高幅值,收窄带宽
初始位置 脉冲宽度、电压幅值、比较阈值 启动瞬间倒转 增加脉冲宽度,提高电压,改用长脉冲法
开环强拉 起始频率、斜坡率、电流幅值、功角 启动失步或过流 降低斜坡率,增大电流,调整功角
闭环切换 切换转速、对齐步数、积分器处理 切换瞬间抖动或过流 提高切换转速,增加对齐步数,保持积分器

嗯,这一章的内容就到这里。无感启动的这三个核心技术——高频注入、开环强拉、闭环切换——每一个单独拿出来都能讲半天,但实际调试时它们是一个整体。参数之间互相影响,你得有耐心,一个一个调,观察波形,记录数据。我当年刚入行时,光调一个无感启动就花了三周,每天盯着示波器看电流波形看到眼花。但一旦调顺了,那种成就感,嗯,值得。