3、角度获取:编码器如何提供转子绝对位置与电角度
好,咱们进入第三个核心话题。FOC 控制里,角度信息就是灵魂。没有准确的角度,电流解耦就是空谈,转矩输出也会乱套。我见过不少新手,上来就调 PI 参数,结果电机嗡嗡响就是转不起来——最后发现是编码器角度根本没对上。
说白了,FOC 需要两个角度:转子绝对位置和电角度。前者告诉你在机械空间里转子转到哪了,后者告诉你磁场应该怎么定向。编码器就是干这个活的。
3.1 绝对位置 vs 电角度:别搞混了
先理清概念。我刚开始做 FOC 时也犯过糊涂,以为编码器读出来的角度直接就能扔进 Park 变换。其实不是这么回事。
| 角度类型 | 含义 | 范围 | 用途 |
|---|---|---|---|
| 机械绝对位置 | 转子在物理空间中的实际角度 | 0° ~ 360°(机械) | 速度计算、位置环、多圈累计 |
| 电角度 | 磁场定向所需的电气角度 | 0° ~ 360°(电气) | Park 变换、逆 Park 变换 |
它们之间差一个极对数倍数。比如一个 4 对极的电机,转子转一圈机械角度,电角度已经跑了 4 圈。你想想看,如果直接把机械角度扔进 Park,电流解耦全乱套。
核心公式:
θe = (θm × P) mod 360°
其中 θe 是电角度,θm 是机械角度,P 是极对数。
3.2 编码器怎么读出绝对位置
编码器分两大类:增量式和绝对式。我个人的习惯是,只要成本允许,优先用绝对式。为什么?因为上电即知位置,不用找零位,省心太多。
3.2.1 绝对式编码器
绝对式编码器内部有码盘,每个位置对应唯一的二进制码。上电后直接读寄存器就能拿到 0~360° 内的绝对角度。常用的通信接口有 SPI、SSI、BiSS-C 等。
举个例子,我用过一款 17 位单圈绝对式编码器,分辨率是 360° / 2¹⁷ ≈ 0.0027°。这个精度对于大多数伺服应用已经绰绰有余。
我的经验: 读绝对式编码器时,注意 SPI 时钟频率不要超过芯片手册的上限。我曾经在项目里为了追求速度把时钟拉到 10 MHz,结果数据偶尔跳变,排查了两天才发现是时序裕量不够。
3.2.2 增量式编码器 + 找零位
增量式编码器只输出 A、B、Z 三路脉冲。上电时不知道转子在哪,必须通过 Z 信号或者预定位来找零位。我早期做的一个风机项目用的就是增量式,每次上电都要让电机转一圈找 Z 脉冲,那个过程噪音大、还容易抖动。
增量式的角度计算流程:
- 上电时角度未知,记录为 0
- 通过 A/B 脉冲计数,累加得到相对角度
- 遇到 Z 脉冲时,将角度重置为预设的零位值
- 之后继续累加计数
注意: 增量式编码器掉电后角度丢失。如果系统要求掉电保持位置,必须加电池备份或者改用绝对式。
3.3 从机械角度到电角度的转换
拿到机械角度后,乘以极对数再取模,就得到电角度。但这里有个坑——初始相位对齐。
编码器的 0° 机械位置,不一定对应电角度的 0°。因为电机绕组和磁钢的安装有偏差。所以我们需要做一次校准,把编码器零位和电机反电动势零位对齐。
我常用的校准方法:
- 给电机通一个固定的 d 轴电流(比如 Id = 1A,Iq = 0)
- 转子会被拉到 d 轴对齐位置
- 此时记录编码器角度,作为偏移量
- 后续电角度 = (机械角度 - 偏移量) × 极对数
校准后的电角度计算公式:
θe = ((θm - θoffset) × P) mod 360°
3.4 角度获取的完整流程
下面这张图是我在项目中常用的角度处理链路,你可以参考一下:
3.5 实际项目中的避坑指南
做了这么多年电机控制,我在角度获取上踩过的坑真不少。挑几个典型的说说:
- 编码器安装偏心: 机械安装时编码器轴心和电机轴心不重合,会导致角度周期性误差。我曾经用示波器抓电流波形,发现每转一圈就有一次畸变,最后发现是联轴器没装正。
- SPI 通信干扰: 编码器线缆和功率线走同一个线槽,高频噪声会耦合进时钟和数据线。我建议编码器线用屏蔽双绞线,并且远离功率线至少 10 cm。
- 电角度初始相位错误: 校准偏移量如果算错 180°,电机能转但效率极低,还会发热。我习惯在校准后用手转动转子,观察反电动势波形和电角度是否对齐。
- 多圈溢出处理: 增量式编码器长时间运行后,计数值可能溢出。需要软件做圈数管理,或者用 32 位计数器。
我的小技巧: 在调试阶段,把机械角度和电角度同时通过 DAC 输出到示波器。一眼就能看出角度转换是否正确,比看寄存器快多了。
3.6 不同编码器方案的对比
最后给个对比表,方便你选型时参考:
| 方案 | 上电位置 | 分辨率 | 成本 | 抗干扰 | 适用场景 |
|---|---|---|---|---|---|
| 绝对式(SPI) | 立即获取 | 高(12~20位) | 高 | 好 | 伺服、机器人、高端设备 |
| 增量式(A/B/Z) | 需找零位 | 中(取决于倍频) | 低 | 中 | 风机、泵、通用变频 |
| 磁编码器(SPI) | 立即获取 | 中(10~14位) | 中 | 中(易受外磁场干扰) | 紧凑空间、低成本伺服 |