换相原理:FOC六步换相法、霍尔传感器与编码器换相差异、换相表生成逻辑
换相,说白了就是让电机转子持续转下去的关键动作。你想想看,电机绕组通电产生磁场,转子永磁体跟着跑,跑到一定位置你就得换下一组绕组通电,不然转子就卡住了。这个「换」的时机和顺序,就是换相的核心。
我刚开始做FOC的时候,总觉得换相是个很基础的事,不就是按顺序通电嘛。直到有一次在高速电机上调试,换相时序差了那么几微秒,电机直接啸叫失步,我才意识到——换相这事,远没你想的那么简单。
FOC六步换相法
六步换相法,也叫方波控制或梯形控制。它把电机的电周期分成6个扇区,每个扇区只给两相绕组通电,第三相悬空。每转60°电角度换一次相,一个电周期刚好6步。
具体来说,三相逆变桥有6个开关管(上桥臂3个,下桥臂3个),每次只导通两个管——一个上桥臂,一个下桥臂。这样电流从一相流入,从另一相流出,第三相不参与。
六步换相的通电模式(以BLDC为例):
- Step 1: A+ B- C悬空
- Step 2: A+ B悬空 C-
- Step 3: A悬空 B+ C-
- Step 4: A- B+ C悬空
- Step 5: A- B悬空 C+
- Step 6: A悬空 B- C+
这里有个关键点:换相时刻必须和反电动势过零点对齐。我在项目里见过不少新手,换相表写对了,但换相时机没对准,结果电机扭矩波动大得离谱。嗯,这个后面会细说。
霍尔传感器与编码器换相差异
霍尔传感器和编码器都能提供转子位置信息,但它们的换相逻辑完全不同。
| 对比项 | 霍尔传感器 | 编码器 |
|---|---|---|
| 位置分辨率 | 60°电角度(3个霍尔) | 取决于线数,可达0.1°以下 |
| 换相触发方式 | 电平跳变触发 | 角度阈值触发 |
| 换相精度 | 粗,存在安装偏差 | 高,可软件补偿 |
| 低速性能 | 好,零速也能检测 | 增量式需上电找零 |
| 抗干扰能力 | 强,信号幅值大 | 弱,易受噪声影响 |
| 成本 | 低 | 高 |
霍尔传感器换相,靠的是三个霍尔元件输出的高低电平组合。每个电周期有6种状态,每种状态对应一个60°扇区。换相时刻就是霍尔状态变化的瞬间——说白了,硬件帮你定了换相点。
编码器换相就不一样了。编码器输出的是连续角度值,换相点由软件设定。你可以把换相点设在任意角度,甚至可以根据负载情况动态调整。我做过一个项目,电机带载启动时扭矩不够,我就把换相角提前了5°,效果立竿见影。
避坑提醒: 我曾经在霍尔换相的项目里吃过亏——霍尔安装位置有机械偏差,导致换相点偏移了十几度。电机空载跑没问题,一带载就抖。后来我加了霍尔校准流程,用编码器做基准,把霍尔换相点软件修正了。所以,如果你用霍尔,一定要做安装偏差补偿。
换相表生成逻辑
换相表,本质上是一个查找表。输入是转子位置(扇区号),输出是三相逆变桥的开关状态。
生成换相表的核心逻辑分三步:
- 确定扇区划分:把0~360°电角度分成6个扇区,每个扇区60°。扇区0通常从0°开始,但也可以偏移。
- 确定每个扇区的通电模式:根据电机绕组的空间分布,决定哪个扇区该给哪两相通电。
- 映射到开关管状态:把通电模式翻译成6个开关管的导通/关断信号。
下面是一个典型的换相表示例(假设电机正转):
// 换相表:扇区号 -> 开关管状态 (Q1~Q6)
// Q1: A上桥, Q2: A下桥, Q3: B上桥, Q4: B下桥, Q5: C上桥, Q6: C下桥
// 1表示导通, 0表示关断
const uint8_t commutation_table[6] = {
// Q1 Q2 Q3 Q4 Q5 Q6
0b001001, // 扇区0: A- B悬空 C+
0b001100, // 扇区1: A悬空 B- C+
0b100100, // 扇区2: A+ B- C悬空
0b100010, // 扇区3: A+ B悬空 C-
0b010010, // 扇区4: A悬空 B+ C-
0b010001 // 扇区5: A- B+ C悬空
};
这里要注意:换相表的顺序必须和电机绕组的相序匹配。如果电机反转,就把表倒序读,或者重新生成一张反转表。
我的经验: 换相表生成后,一定要在低速下验证。我习惯用手转动转子,同时用示波器看相电流波形。如果换相顺序错了,电流波形会明显畸变,甚至出现负扭矩。另外,换相表里的开关管状态要加死区时间,防止上下桥臂直通。我一般设1~2μs的死区,具体看开关管的开关速度。
换相逻辑的SVG流程图
下面这张图展示了从转子位置到换相输出的完整流程:
从流程图可以看出,霍尔和编码器在「扇区判断」这一步分道扬镳。霍尔靠硬件中断触发,编码器靠软件定时查询或角度中断。我个人更倾向于编码器方案,因为换相点可以灵活调整,而且能结合SVPWM做更精细的电流控制。
不过话说回来,霍尔方案在低成本、低转速场景下依然很能打。我做过一个电动工具项目,用的就是霍尔换相,成本压到几块钱,效果也不错。关键还是看应用场景。
换相表生成的核心原则:
- 每个扇区只导通两相,第三相悬空
- 换相顺序必须与电机旋转方向一致
- 换相时刻必须与反电动势过零点对齐(或提前/滞后补偿)
- 开关管切换必须加死区时间
最后说一句,换相表不是一成不变的。电机绕组接法(星形/三角形)、磁极对数、甚至温度变化都会影响最佳换相点。我习惯在量产前做一次换相角自动校准,用电流最小或扭矩最大作为优化目标。这样出来的换相表,才是真正适合你那个电机的。