3. 偏差校准原理:开环校准法、闭环校准法、基于高频注入的校准法

好,咱们进入正题。电角度偏差怎么找回来?说白了,就是让控制器知道电机转子到底转到哪了。我这些年用过的方法,归纳起来就三大类:开环、闭环、高频注入。每种都有它的脾气,咱们一个一个聊。

核心观点:没有万能的方法。开环适合调试阶段,闭环适合中高速,高频注入专治零速低速。选哪个,看你项目最头疼什么。

3.1 开环校准法

开环校准,是我刚入行时最先接触的方法。原理很简单:给电机通一个固定的电流矢量,让转子自己转到某个位置,然后读编码器的值,记下来。

具体怎么做?我习惯分三步走:

  1. 给一个固定的 d 轴电流(比如 Id = 2A),q 轴电流给 0。这时候定子磁场会把转子拉到 d 轴方向。
  2. 等转子稳定。一般等个 1-2 秒,看电流反馈不再波动了,就说明转子停稳了。
  3. 读编码器值,记作 θ_offset。以后每次上电,实际角度 = 编码器读数 - θ_offset。

我在项目中遇到过一个问题:如果电机带负载,或者摩擦力比较大,转子可能拉不到位。你想想看,转子还没转到 d 轴位置呢,你就把角度记下来了,那偏差能准吗?

我的小技巧:做开环校准时,先给一个较大的电流(额定电流的 30%-50%),然后慢慢减小到 10%,再读角度。这样能克服静摩擦力,定位更准。

开环校准的优缺点很明显:

优点 缺点
实现简单,代码量少 精度受负载影响大
不需要额外的硬件 电机必须能自由转动
调试速度快 不适合带载启动的场景

3.2 闭环校准法

开环搞不定的时候,就得闭环上了。闭环校准的核心思路是:让电机转起来,然后通过观测反电动势或者电流响应,反推角度偏差。

我常用的闭环校准流程是这样的:

  • 速度环闭合,让电机以恒定低速旋转(比如 100 rpm)。
  • 观测 q 轴电流。如果角度偏差为 0,q 轴电流应该很平稳。如果偏差不为 0,q 轴电流会有一个直流偏置或者波动。
  • 调整角度偏移量,直到 q 轴电流的波动最小。

为什么会这样?因为角度偏差会导致 Park 变换不准确,d 轴和 q 轴的分量会串扰。说白了,你以为是 d 轴电流,其实里面混了 q 轴的分量。

注意:闭环校准时,电机必须能自由旋转。如果电机被机械卡死,或者负载惯性特别大,这个方法就不灵了。我曾经在一个大惯量转台上吃过亏,电机转是转了,但角度偏差一直收敛不了,后来发现是负载太大,速度环响应太慢。

闭环校准的精度比开环高不少,一般能做到 ±1° 电角度以内。但它有个前提:电机得有反电动势。转速太低的时候,反电动势信号太弱,就不好使了。

3.3 基于高频注入的校准法

这是我最喜欢的方法,也是解决零速低速校准难题的利器。高频注入,说白了就是往电机里注入一个高频电压信号,然后通过检测电流响应来提取转子位置信息。

原理我简单说一下:

  1. 注入高频信号:通常在 d 轴注入一个高频正弦电压(比如 500 Hz - 1 kHz,幅值 5%-10% 的额定电压)。
  2. 检测电流响应:因为电机凸极效应,d 轴和 q 轴的阻抗不一样。转子位置不同,电流响应也不同。
  3. 解调位置信息:通过带通滤波器提取高频电流分量,再经过解调算法,就能得到角度偏差。

我给大家看一段伪代码,理解一下核心逻辑:

// 高频注入校准伪代码
// 注入频率: 800 Hz, 幅值: 0.1 pu

void HFI_Calibration(void)
{
    // 1. 注入高频电压到 d 轴
    Vd_inject = A_inject * sin(2 * PI * f_inject * t);
    
    // 2. 采样三相电流,做 Clarke/Park 变换
    Id_meas = Park_Transform(Ia, Ib, Ic, theta_est);
    Iq_meas = Park_Transform(Ia, Ib, Ic, theta_est);
    
    // 3. 带通滤波,提取高频分量
    Id_high = BandPass_Filter(Id_meas, f_inject);
    Iq_high = BandPass_Filter(Iq_meas, f_inject);
    
    // 4. 解调:乘以同频参考信号,再低通滤波
    error_signal = Id_high * cos(2 * PI * f_inject * t);
    error_signal = LowPass_Filter(error_signal, 50 Hz);
    
    // 5. 用 PI 调节器跟踪角度偏差
    theta_offset += Kp * error_signal + Ki * integral(error_signal);
}

经验之谈:高频注入的幅值和频率要选好。幅值太小,信噪比不够;幅值太大,会产生 audible noise(就是电机嗡嗡响)。我一般从 10% 额定电压开始试,听声音不对就降下来。

三种方法怎么选?我整理了一个对比表:

方法 适用场景 精度 实现难度
开环校准 调试阶段、空载 ±3° ~ ±5° 低
闭环校准 中高速运行 ±1° ~ ±2° 中
高频注入 零速、低速、带载 ±0.5° ~ ±1° 高

下面这张图,是我自己总结的三种方法的知识体系,帮你快速建立全局观:

电角度偏差校准方法体系 开环校准法 闭环校准法 高频注入法 固定电流矢量定位 读取编码器偏移量 恒定低速旋转 观测 q 轴电流波动 迭代调整偏移量 注入高频电压信号 带通滤波提取响应 解调 + PI 跟踪 选型建议 调试阶段 → 开环 | 中高速运行 → 闭环 | 零速低速带载 → 高频注入 实际项目中,我经常把开环和闭环组合使用,先粗调再精调

嗯,到这里三种方法的原理就讲完了。我个人建议,如果你刚开始做电机控制,先从开环校准入手,把流程跑通。等遇到精度瓶颈了,再上闭环或者高频注入。别一上来就搞复杂的,容易把自己绕进去。