3. 偏差校准原理:开环校准法、闭环校准法、基于高频注入的校准法
好,咱们进入正题。电角度偏差怎么找回来?说白了,就是让控制器知道电机转子到底转到哪了。我这些年用过的方法,归纳起来就三大类:开环、闭环、高频注入。每种都有它的脾气,咱们一个一个聊。
核心观点:没有万能的方法。开环适合调试阶段,闭环适合中高速,高频注入专治零速低速。选哪个,看你项目最头疼什么。
3.1 开环校准法
开环校准,是我刚入行时最先接触的方法。原理很简单:给电机通一个固定的电流矢量,让转子自己转到某个位置,然后读编码器的值,记下来。
具体怎么做?我习惯分三步走:
- 给一个固定的 d 轴电流(比如 Id = 2A),q 轴电流给 0。这时候定子磁场会把转子拉到 d 轴方向。
- 等转子稳定。一般等个 1-2 秒,看电流反馈不再波动了,就说明转子停稳了。
- 读编码器值,记作 θ_offset。以后每次上电,实际角度 = 编码器读数 - θ_offset。
我在项目中遇到过一个问题:如果电机带负载,或者摩擦力比较大,转子可能拉不到位。你想想看,转子还没转到 d 轴位置呢,你就把角度记下来了,那偏差能准吗?
我的小技巧:做开环校准时,先给一个较大的电流(额定电流的 30%-50%),然后慢慢减小到 10%,再读角度。这样能克服静摩擦力,定位更准。
开环校准的优缺点很明显:
| 优点 | 缺点 |
|---|---|
| 实现简单,代码量少 | 精度受负载影响大 |
| 不需要额外的硬件 | 电机必须能自由转动 |
| 调试速度快 | 不适合带载启动的场景 |
3.2 闭环校准法
开环搞不定的时候,就得闭环上了。闭环校准的核心思路是:让电机转起来,然后通过观测反电动势或者电流响应,反推角度偏差。
我常用的闭环校准流程是这样的:
- 速度环闭合,让电机以恒定低速旋转(比如 100 rpm)。
- 观测 q 轴电流。如果角度偏差为 0,q 轴电流应该很平稳。如果偏差不为 0,q 轴电流会有一个直流偏置或者波动。
- 调整角度偏移量,直到 q 轴电流的波动最小。
为什么会这样?因为角度偏差会导致 Park 变换不准确,d 轴和 q 轴的分量会串扰。说白了,你以为是 d 轴电流,其实里面混了 q 轴的分量。
注意:闭环校准时,电机必须能自由旋转。如果电机被机械卡死,或者负载惯性特别大,这个方法就不灵了。我曾经在一个大惯量转台上吃过亏,电机转是转了,但角度偏差一直收敛不了,后来发现是负载太大,速度环响应太慢。
闭环校准的精度比开环高不少,一般能做到 ±1° 电角度以内。但它有个前提:电机得有反电动势。转速太低的时候,反电动势信号太弱,就不好使了。
3.3 基于高频注入的校准法
这是我最喜欢的方法,也是解决零速低速校准难题的利器。高频注入,说白了就是往电机里注入一个高频电压信号,然后通过检测电流响应来提取转子位置信息。
原理我简单说一下:
- 注入高频信号:通常在 d 轴注入一个高频正弦电压(比如 500 Hz - 1 kHz,幅值 5%-10% 的额定电压)。
- 检测电流响应:因为电机凸极效应,d 轴和 q 轴的阻抗不一样。转子位置不同,电流响应也不同。
- 解调位置信息:通过带通滤波器提取高频电流分量,再经过解调算法,就能得到角度偏差。
我给大家看一段伪代码,理解一下核心逻辑:
// 高频注入校准伪代码
// 注入频率: 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° | 高 |
下面这张图,是我自己总结的三种方法的知识体系,帮你快速建立全局观:
嗯,到这里三种方法的原理就讲完了。我个人建议,如果你刚开始做电机控制,先从开环校准入手,把流程跑通。等遇到精度瓶颈了,再上闭环或者高频注入。别一上来就搞复杂的,容易把自己绕进去。