3、无感启动核心技术:高频注入法、初始位置检测、开环启动策略
好,咱们进入正题。无感启动,说白了就是电机在不知道转子在哪的情况下,硬生生把它拽起来,再平稳切换到闭环。这活儿听着就难,对吧?
我刚开始接触无感伺服时,也犯过嘀咕:没有编码器,怎么知道转子朝哪边?怎么保证一上电不反转?后来踩了不少坑,才摸清楚这里面的门道。今天我把最核心的三板斧——高频注入、初始位置检测、开环启动策略——掰开了讲给你听。
核心逻辑一句话:无感启动 = 先通过高频注入找到转子大概位置 → 再用特定脉冲精确锁定 → 最后用开环策略把电机推到足够速度,切换到闭环观测器。
3.1 高频注入法:无感定位的“眼睛”
高频注入,说白了就是往电机里灌一个高频电压信号,然后通过检测电流响应来“看”转子位置。为什么能看?因为电机转子有凸极性——d轴和q轴的阻抗不一样。这个差异会调制高频电流,我们解调出来就能得到位置信息。
我个人习惯把高频注入分成两类:
- 旋转高频注入:注入一个旋转的高频电压矢量,适合内嵌式永磁同步电机(IPMSM)。
- 脉振高频注入:在估计的d轴方向注入脉振信号,计算量小,收敛快。
我的经验:脉振高频注入在低速段表现更好,尤其是零速附近。我在一个纺织项目里用过,启动时抖动比旋转注入小很多。但要注意,注入频率一般选500Hz~1kHz,幅值控制在额定电压的5%~10%,太大会产生噪音和损耗。
代码实现上,核心就是注入信号和解调。给你看一段简化的脉振注入逻辑:
// 脉振高频注入 - 简化示意
float theta_est = 0.0f; // 估计角度
float sin_hf = sin(omega_hf * t); // 高频载波
float Vd_hf = V_hf_amp * sin_hf; // d轴注入电压
float Vq_hf = 0.0f;
// 电流采样 & 解调
float id_hf = LPF(id_sampled * sin_hf); // 混频+低通
float iq_hf = LPF(iq_sampled * sin_hf);
// 误差提取
float err = id_hf * sin(2*theta_est) - iq_hf * cos(2*theta_est);
// PI调节器更新theta_est
theta_est += Kp * err + Ki * integral(err);
注意:高频注入只适用于零低速。速度起来后,反电动势足够强,就该切到观测器了。我曾经见过有人全程用高频注入,结果高速时电流畸变严重,电机嗡嗡响——那是把高频信号当噪音放大了。
3.2 初始位置检测:别让电机“反着转”
高频注入能给出一个大致位置,但有个问题:它只能检测到转子磁极的轴线方向,分不清N极还是S极。换句话说,它告诉你转子在0°还是180°?它说不准。
你想想看,如果启动时位置差了180°,电机会怎样?反转!这在很多场合是致命的——比如电梯、起重机,反转就是事故。
怎么解决?我常用的方法是脉冲电压比较法:
- 先通过高频注入锁定d轴方向(0°或180°)。
- 在估计的d轴正方向施加一个短时脉冲电压。
- 检测电流响应峰值。如果电流大,说明磁路饱和,脉冲方向与磁极一致(N极)。
- 如果电流小,说明方向反了,把角度加上180°。
| 脉冲方向 | 电流响应 | 结论 |
|---|---|---|
| 正向脉冲 | 电流峰值大 | 当前方向为N极,位置正确 |
| 正向脉冲 | 电流峰值小 | 当前方向为S极,需加180° |
| 负向脉冲 | 电流峰值大 | 负方向为N极,需调整 |
避坑指南:我曾经在一个风机项目里,因为脉冲宽度设得太短(只有20μs),电流还没建立起来就采样了,结果N/S极判断老是出错。后来我把脉宽调到100μs,电流稳定后再采样,问题就解决了。记住,脉冲宽度要大于电流上升时间的3~5倍。
3.3 开环启动策略:从静止到闭环的“桥梁”
位置知道了,接下来就是怎么把电机转起来。无感启动最怕什么?失步。一旦失步,电流乱窜,电机抖动,甚至过流报警。
我常用的开环启动策略是I-F控制(电流-频率控制)。说白了,就是强制给定一个旋转的电流矢量,带着转子跑。核心参数有三个:
- 启动电流幅值:一般取额定电流的80%~120%,太小带不动负载,太大容易过流。
- 加速度:通常50~200 Hz/s,负载惯性大就慢点加。
- 切换速度:当转速达到额定转速的5%~10%时,切到闭环观测器。
给你看一个典型的启动曲线:
// I-F 开环启动 - 速度斜坡
float speed_ref = 0.0f;
float current_ref = I_start; // 启动电流
float accel = 100.0f; // Hz/s
while(speed_ref < switch_speed) {
speed_ref += accel * dt;
theta_ref += speed_ref * dt * 2 * PI;
// 电流环:给定电流在估计的q轴
id_ref = 0.0f;
iq_ref = current_ref;
// 执行电流环PI控制
// ...
// 检查是否达到切换条件
if(speed_ref >= switch_speed) {
// 切换到闭环观测器
enable_closed_loop();
}
}
我的习惯:启动电流不要一步到位。我会先给一个30%的预励磁电流,保持50ms,让磁场建立起来,再斜坡上升到目标电流。这样能减少冲击。另外,加速度曲线用S型比直线型更平滑,电机不会“咯噔”一下。
3.4 三个技术的配合要点
这三个技术不是孤立的,它们是一个链条。我总结了一个配合流程:
- 上电 → 高频注入:快速估算转子位置,精度±10°以内。
- 脉冲检测:确定N/S极,修正位置误差到±2°以内。
- I-F开环启动:从零速加速到切换速度(通常50~100rpm)。
- 切换闭环:观测器接管,进入正常伺服模式。
重要提醒:切换瞬间最容易出问题。如果开环角度和观测器角度差太大,电流会突变。我建议在切换前做一次角度对齐:把观测器角度慢慢拉近开环角度,再瞬间切换。这个“软切换”能避免很多麻烦。
嗯,以上就是无感启动的三个核心技术。说白了,高频注入是“探路”,初始位置检测是“校准”,开环启动是“牵引”。三者配合好了,无感启动就能做到平稳、快速、不反转。你在调参时,可以按这个顺序一步步来,别跳步。