3. 离线标定法:手动旋转转子、记录反电动势过零点、查表补偿

离线标定法,说白了就是「先测后补」。

你想想看,电机装到系统里以后,角度偏差是固定的。那既然它不变,我们能不能提前把它测出来,存成一张表,运行时直接查?

当然可以。这就是离线标定法的核心思路。

我个人习惯叫它「笨办法」,但你别小看它。我在项目里遇到过好几次,在线补偿搞不定的时候,最后都是靠离线标定兜底的。它不依赖复杂的算法,也不吃算力,只要你的操作流程规范,精度完全可以做到 0.5° 以内。

3.1 离线标定的基本原理

先理清一个概念:我们说的「电角度偏差」,其实是编码器零位和真实反电动势零位之间的固定偏移。

离线标定要做的,就是手动把转子转到某个已知的电气位置,然后读编码器的值,两者一减,偏差就出来了。

核心公式:

θ偏差 = θ编码器 - θ真实电气

其中 θ真实电气 通过反电动势过零点确定。

嗯,这里要注意:反电动势过零点,就是相反电动势从负变正(或从正变负)的那个瞬间。这个点对应的电气角度是 0°(或 180°),非常精确。

3.2 操作步骤:一步一步来

我直接给你一套我验证过很多次的流程。你照着做,基本不会翻车。

  1. 准备工作
    • 电机空载,三相线接好,但不要上驱动。
    • 用示波器探头夹在任意两相之间(比如 U-V 相)。
    • 编码器供电,确保能读到位置值。
  2. 手动旋转转子
    • 用扳手或手轮,缓慢匀速地转动转子。
    • 速度不要太快,我建议控制在 10-30 rpm 左右。
    • 转一整圈以上,确保覆盖所有电气周期。
  3. 记录过零点
    • 观察示波器上的反电动势波形。
    • 当波形穿过零线时(从负到正),记录此时的编码器位置值。
    • 重复记录多个过零点(至少 6 个,对应 3 个电气周期)。
  4. 计算偏差
    • 每个过零点对应的电气角度是已知的(0°, 60°, 120°...)。
    • 用编码器值减去理论电气角度,得到偏差。
    • 取多次测量的平均值,作为最终补偿值。
  5. 生成查表
    • 如果偏差随位置变化(比如齿槽效应影响),就按角度分段存表。
    • 如果偏差基本恒定,直接存一个常数就行。

我的小技巧:

我曾经在测一个 12 对极的电机时,发现每次过零点的偏差都不一样。后来发现是转子没装正,导致机械跳动。后来我加了夹具,偏差就稳定了。所以,机械安装的重复性是离线标定的前提。

3.3 反电动势过零点的判断方法

怎么准确抓到过零点?这里有两个常用方法。

方法 原理 精度 硬件要求
示波器直接观察 看波形穿过零线 高(取决于人眼判断) 示波器 + 差分探头
比较器硬件检测 用比较器输出过零信号 中(有延迟) 比较器电路

我个人更推荐第一种。虽然看起来「原始」,但示波器看到的波形是真实的,没有比较器的延迟和噪声干扰。我在实验室里一直用这个方法,精度完全够用。

3.4 查表补偿的实现

数据测完了,怎么用?

很简单。运行时,读编码器值,减去查到的偏差,就得到真实的电气角度。

// 离线标定查表补偿示例
// 假设偏差表按 60° 电气角度分段

float angle_table[6] = {2.1, 1.8, 2.3, 1.9, 2.0, 2.2}; // 偏差值(度)

float get_compensated_angle(float encoder_angle) {
    // 将编码器角度映射到 0-360°
    float elec_angle = fmod(encoder_angle, 360.0f);
    if (elec_angle < 0) elec_angle += 360.0f;

    // 查表索引
    int idx = (int)(elec_angle / 60.0f);
    if (idx >= 6) idx = 5;

    // 线性插值(可选)
    float frac = (elec_angle - idx * 60.0f) / 60.0f;
    float offset = angle_table[idx] + 
                   (angle_table[(idx+1)%6] - angle_table[idx]) * frac;

    // 补偿
    float real_angle = elec_angle - offset;
    if (real_angle < 0) real_angle += 360.0f;

    return real_angle;
}

注意:

查表补偿的精度取决于表的密度。如果你的电机齿槽效应明显,建议每 10° 甚至 5° 存一个点。我曾经在一个伺服项目里,因为表太稀疏(60° 一个点),导致低速时扭矩波动明显。后来加密到 10° 一个点,问题就解决了。

3.5 离线标定的优缺点

任何方法都有两面性。离线标定也不例外。

  • 优点:
    • 实现简单,不需要复杂算法。
    • 不依赖电机模型,通用性强。
    • 精度可控,只要测得好,结果就准。
  • 缺点:
    • 需要人工操作,效率低。
    • 无法补偿运行中变化的偏差(如温度漂移)。
    • 对机械安装一致性要求高。

说白了,离线标定适合批量生产、工况稳定的场景。如果你的电机装好以后就不动了,那这个方法性价比很高。

3.6 知识体系总览

下面这张图,把离线标定的整个流程串起来了。你一看就明白。

离线标定法流程 离线标定法:手动旋转转子 → 记录过零点 → 查表补偿 1. 准备 2. 手动旋转转子 3. 记录反电动势过零点 4. 计算偏差 5. 生成查表 关键点 • 示波器夹 U-V 相 • 转速 10-30 rpm • 至少记录 6 个过零点 避坑 • 机械安装要重复性好 • 表密度要够(建议 ≤10°) 输出 偏差表 → 运行时查表补偿

这张图把五个步骤串起来了。你照着这个流程走一遍,离线标定基本就掌握了。

嗯,最后说一句:离线标定虽然「笨」,但它是理解电角度偏差的基础。你把这个搞透了,后面学在线补偿会轻松很多。