3. 离线标定法:手动旋转转子、记录反电动势过零点、查表补偿
离线标定法,说白了就是「先测后补」。
你想想看,电机装到系统里以后,角度偏差是固定的。那既然它不变,我们能不能提前把它测出来,存成一张表,运行时直接查?
当然可以。这就是离线标定法的核心思路。
我个人习惯叫它「笨办法」,但你别小看它。我在项目里遇到过好几次,在线补偿搞不定的时候,最后都是靠离线标定兜底的。它不依赖复杂的算法,也不吃算力,只要你的操作流程规范,精度完全可以做到 0.5° 以内。
3.1 离线标定的基本原理
先理清一个概念:我们说的「电角度偏差」,其实是编码器零位和真实反电动势零位之间的固定偏移。
离线标定要做的,就是手动把转子转到某个已知的电气位置,然后读编码器的值,两者一减,偏差就出来了。
核心公式:
θ偏差 = θ编码器 - θ真实电气
其中 θ真实电气 通过反电动势过零点确定。
嗯,这里要注意:反电动势过零点,就是相反电动势从负变正(或从正变负)的那个瞬间。这个点对应的电气角度是 0°(或 180°),非常精确。
3.2 操作步骤:一步一步来
我直接给你一套我验证过很多次的流程。你照着做,基本不会翻车。
- 准备工作
- 电机空载,三相线接好,但不要上驱动。
- 用示波器探头夹在任意两相之间(比如 U-V 相)。
- 编码器供电,确保能读到位置值。
- 手动旋转转子
- 用扳手或手轮,缓慢匀速地转动转子。
- 速度不要太快,我建议控制在 10-30 rpm 左右。
- 转一整圈以上,确保覆盖所有电气周期。
- 记录过零点
- 观察示波器上的反电动势波形。
- 当波形穿过零线时(从负到正),记录此时的编码器位置值。
- 重复记录多个过零点(至少 6 个,对应 3 个电气周期)。
- 计算偏差
- 每个过零点对应的电气角度是已知的(0°, 60°, 120°...)。
- 用编码器值减去理论电气角度,得到偏差。
- 取多次测量的平均值,作为最终补偿值。
- 生成查表
- 如果偏差随位置变化(比如齿槽效应影响),就按角度分段存表。
- 如果偏差基本恒定,直接存一个常数就行。
我的小技巧:
我曾经在测一个 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 知识体系总览
下面这张图,把离线标定的整个流程串起来了。你一看就明白。
这张图把五个步骤串起来了。你照着这个流程走一遍,离线标定基本就掌握了。
嗯,最后说一句:离线标定虽然「笨」,但它是理解电角度偏差的基础。你把这个搞透了,后面学在线补偿会轻松很多。