1. 编码器基础与换相原理
各位同学好,我是老周。做电机控制这些年,我最大的感触就是——编码器选型和换相逻辑,是整套系统的地基。地基没打好,后面FOC调得再好也白搭。今天咱们就从最基础的编码器分类讲起,把增量式和绝对式的区别、霍尔换相逻辑、六步换相和FOC换相的核心差异,一次性说透。
1.1 增量式编码器 vs 绝对式编码器
先问个问题:你上电之后,电机转子在什么位置?
增量式编码器回答不了这个问题。它只能告诉你「从上次断电到现在,我转了多少步」。绝对式编码器则不同,一上电就知道当前绝对角度。这个差异,决定了它们各自的应用场景。
| 对比项 | 增量式编码器 | 绝对式编码器 |
|---|---|---|
| 上电位置 | 未知,需回零 | 已知,直接读取 |
| 输出信号 | A/B/Z 脉冲 | SSI/BiSS/SPI 数字码 |
| 抗干扰能力 | 脉冲易受干扰 | 数字传输,抗干扰强 |
| 成本 | 低 | 高 |
| 典型应用 | 伺服电机、步进电机 | 机器人关节、高端数控 |
1.2 霍尔传感器与编码器换相逻辑
霍尔传感器,说白了就是三个开关。电机转一圈,三个霍尔输出 6 种状态组合。每个状态对应一个 60° 电角度区间。
编码器呢?它提供的是连续角度信息。精度高得多,但上电时不知道位置。所以很多方案是「霍尔粗定位 + 编码器精跟踪」——霍尔告诉控制器「转子大概在哪个扇区」,编码器再给出精确角度。
核心逻辑:
- 霍尔:6 个状态 → 60° 分辨率 → 用于六步换相
- 编码器:连续角度 → 0.1° 甚至更高 → 用于 FOC 换相
- 混合方案:霍尔做初始定位,编码器做运行跟踪
我曾经在一个项目中遇到过霍尔信号抖动导致换相错乱的问题。排查了两天,最后发现是霍尔安装位置偏差了 2 度。嗯,机械公差有时候比软件bug更隐蔽。
1.3 电机换相的基本原理
换相,就是按照转子位置,切换定子绕组的通电顺序。让磁场始终「追着」转子跑。
六步换相(方波控制)
六步换相,也叫方波控制。每 60° 电角度切换一次通电状态。每次只有两相通电,第三相悬空。
优点:控制简单,硬件成本低。
缺点:转矩脉动大,低速有噪音。
// 六步换相状态表(以 BLDC 为例)
// 状态 0: A+ B- C悬空
// 状态 1: A+ B悬空 C-
// 状态 2: A悬空 B+ C-
// 状态 3: A- B+ C悬空
// 状态 4: A- B悬空 C+
// 状态 5: A悬空 B- C+
void six_step_commutation(uint8_t hall_state) {
switch(hall_state) {
case 0b001: set_pwm(PHASE_A_H, PHASE_B_L, PHASE_C_NONE); break;
case 0b011: set_pwm(PHASE_A_H, PHASE_B_NONE, PHASE_C_L); break;
case 0b010: set_pwm(PHASE_A_NONE, PHASE_B_H, PHASE_C_L); break;
case 0b110: set_pwm(PHASE_A_L, PHASE_B_H, PHASE_C_NONE); break;
case 0b100: set_pwm(PHASE_A_L, PHASE_B_NONE, PHASE_C_H); break;
case 0b101: set_pwm(PHASE_A_NONE, PHASE_B_L, PHASE_C_H); break;
default: break;
}
}
FOC 换相(正弦波控制)
FOC 换相,也叫矢量控制。它不搞「开关切换」,而是用 SVPWM 合成任意方向的电压矢量。理论上,每 1° 甚至更细的粒度都可以换相一次。
优点:转矩平滑,效率高,噪音低。
缺点:计算量大,需要高精度角度反馈。
1.4 本章知识体系
下面这张图,是我自己总结的编码器换相知识框架。你把它记在脑子里,后面每一章都会用到。
这张图把编码器分类和换相方式串在了一起。你注意看左侧的「霍尔粗定位 + 编码器精跟踪」——这是工业界最常用的混合方案。右侧的 SVPWM 矢量合成,则是 FOC 的核心。
好了,第一章就到这里。编码器基础打牢了,后面讲换相性能优化的时候,你才能理解为什么有些参数调了没用,有些参数动一下就是质变。