编码器校准

FOC 编码器零点与偏移量标定笔记

1. 初始位置定位 (Rotor Alignment)

1.1 初始位置定义

对电机进行矢量控制(FOC)的前提,是必须明确转子的初始位置,或将其直接定位到已知的初始位置。在 FOC 坐标系中,各轴的定义如下:

坐标系说明
\(\alpha\beta\) 静止坐标系\(\alpha\)固定,与定子 A 相轴线重合
ABC 三相静止坐标系A(U)轴固定,与 \(\alpha\) 轴重合
转子永磁体N 极固定于转子本体
\(dq\) 同步旋转坐标系\(d\)随转子同步旋转,与转子磁极(N 极)方向一致

坐标系关系

1.2 零点校准

\(dq\) 坐标系下的 \(d\)(转子磁极方向)转到与 \(\alpha\beta\) 坐标系下的 \(\alpha\)(定子 A 相轴线)重合,此时的电角度 \(\theta = 0°\) ,称为电机的电气零点

1.3 转子对齐条件

当电角度 \(\theta = 0°\) 时,注入电流满足 \(I_d = I_m\)\(I_q = 0\) 。根据克拉克(Clarke)和帕克(Park)变换可知,这会在 A 相轴线方向产生一个方向固定不变的恒定磁场,从而将转子永磁体(N 极)吸引并最终对齐至 \(\alpha\) 轴方向,实现零角度的初始定位。

1Id ≠ 0   // 注入 d 轴电流,产生固定方向的磁场
2Iq = 0   // q 轴电流为零,不产生转矩,转子不会旋转

2. 编码器校准原理

2.1 安装偏差 \(\theta_{\text{offset}}\)

编码器安装完成后,电机 A 相轴线与编码器 Z 相(零点标志位)的相对物理位置便已固定。然而,由于编码器通常由人工手动安装,其初始 0° 位置很难与电机转子磁极( \(d\) 轴)的 0° 位置完美重合,必然存在安装偏差:

编码器 0° ≠ 电机 d 轴 0°

为了修正这一偏差,引入 \(\theta_{\text{offset}}\) (电角度偏移量),它是电角度零点编码器机械零点之间的偏移量。该偏差由机械安装决定,只要后续不拆卸编码器,该值就是恒定不变的。因此,只需在初次标定后将 \(\theta_{\text{offset}}\) 写入控制器程序进行软件补偿。

\[\text{真实电角度} = \text{当前编码器读取角度} - \theta_{\text{offset}}\]

偏移量示意图

2.2 角度关系

符号含义说明
\(\theta_{\text{mech}}\)编码器读出的机械角度已知量,单位:rad 或 °
\(\theta_{\text{elec}}\)电角度\(\theta_{\text{elec}} = \theta_{\text{mech}} \times p\)\(p\) = 极对数)
\(\theta_d\)实际注入 FOC 的电角度\(\theta_d = \theta_{\text{elec}} - \theta_{\text{offset}}\)

补充公式:

电角度 = 机械角度 × 极对数

2.3 增量式编码器的上电预定位

增量式编码器不具备断电位置记忆功能,每次系统上电时,控制器无法确知转子的绝对物理位置(转子初始角度是随机的)。因此,断电重启后必须进行初始相位对齐(预定位)。通常采用以下两种方式:

方式说明
手动定位通过人工手动旋转电机轴,将其对齐到已知的零度物理标记处。
\(I_d\) 直流注入定位(强拉)在未知真实电角度的情况下,向电机注入特定的直流电流( \(I_d > 0, I_q = 0\) ),产生一个固定方向的定子磁场。该磁场会强制将转子拖拽并锁定至预设的"假电角度"。待转子稳定后,控制器即可将当前位置标定为基准的"真电角度",完成零位初始化。

注意: 绝对式编码器自带绝对位置信息,上电即可直接读取真实角度,无需预定位校准。增量式编码器则必须重新校准。


3. 校准与启动步骤

3.1 前提假设

  • 编码器可以正常读取角度。
  • 电机旋转一圈,编码器读数能在 0° ~ 360° 之间线性变化。

3.2 核心原理

把转子强制拉到电气零点,此时编码器告诉你的电角度,就是偏移量 \(\theta_{\text{offset}}\)

强制对齐操作:注入 \(V_d > 0, V_q = 0\) ,定子线圈会产生一个方向固定不变的恒定磁场,转子被磁力拉到 \(d\) 轴 = 0° 的位置,此过程不需要电机转圈

3.3 ABZ 编码器校准流程

核心思路:D 轴注入 → 锁定转子并清零 → 旋转找 Z → 读取 Offset

步骤操作说明
1D 轴强定位给电机注入直流电( \(I_d = I_{\text{test}}, I_q = 0\) ),此时转子被强行吸合到电角度 \(0°\) 的位置。
2等待稳定延时等待转子完全静止(通常 100ms ~ 300ms)。
3强行清零在转子被锁死、完全静止后,软件直接将单片机里的编码器计数器清零(设为起点)。
4旋转找 Z撤销直流电,让电机开环转动起来(例如通过 V/F 控制慢速旋转,或者用手拨动转子)。
5捕获 Z 相当电机转到某个位置,触发 Z 相脉冲中断,单片机立刻读取那一瞬间的编码器读数。
6记录 Offset此时读出来的角度值,直接就是偏移角 \(\theta_{\text{offset}}\) ,写入 Flash 保存。

绝对式编码器 无需步骤 4~5,在步骤 2 转子锁定后,直接读取编码器角度即可得到 \(\theta_{\text{offset}}\)

3.4 关键参数设置

参数推荐值说明
对齐电流 \(I_d\)额定电流的 10% ~ 30%过小则吸合力不足,转子无法可靠对齐;过大则可能引起磁饱和或发热。
对齐延时100ms ~ 300ms需等待转子振荡衰减至静止,确保读数稳定。
开环慢转速度30 ~ 60 RPM速度足够慢,确保能可靠捕获 Z 相脉冲,同时避免错过中断。

GitHub Discussions

评论区

使用 GitHub 登录,欢迎友好交流。