2. 六步换向法精讲:三相全桥驱动拓扑、六步换向时序表、120°与60°霍尔布局差异

六步换向法,说白了就是让无刷电机转起来的“基本功”。很多新手一上来就盯着FOC(磁场定向控制),觉得六步换向太简单。但我做了这么多年电机控制,可以负责任地告诉你:六步换向调不好,FOC也白搭。底层的换向逻辑、时序、霍尔布局,任何一个环节出问题,电机要么抖得像筛子,要么直接烧MOS管。

这一章,咱们就把六步换向法的底裤扒干净。从三相全桥拓扑讲起,再到换向时序表,最后重点对比120°和60°霍尔布局的差异。嗯,这里要注意,很多教材把120°和60°布局讲得云里雾里,我争取用最直白的方式说清楚。

2.1 三相全桥驱动拓扑:六步换向的“硬件舞台”

六步换向法需要一套三相全桥电路来执行。这个拓扑结构,你可以把它想象成三个半桥电路拼在一起,每个半桥控制电机的一相绕组。

我个人习惯把三相全桥画成六个开关管(MOSFET或IGBT),分成上桥臂和下桥臂。上桥臂三个管子(Q1、Q3、Q5)分别接电源正极,下桥臂三个管子(Q2、Q4、Q6)接电源负极。电机三相绕组(U、V、W)就接在上下桥臂的中间点。

核心要点:六步换向的本质,就是按照特定顺序,每次导通两个开关管(一个上桥臂+一个下桥臂),让电流从一相流入,另一相流出,第三相悬空。这样就在定子绕组上产生旋转的磁场,拉着转子转。

下面这张SVG图,把三相全桥拓扑和六步换向的电流路径画清楚了。你可以看到每一步,电流是怎么从电源正极,经过上桥臂管子,流入电机绕组,再从另一个绕组流回下桥臂管子,最后回到电源负极。

三相全桥驱动拓扑与六步换向电流路径 VCC GND Q1 Q3 Q5 Q2 Q4 Q6 电机 U V W 电流路径:Q1→U→V→Q4 六步换向每一步只导通两个开关管:一个上桥臂 + 一个下桥臂,第三相悬空

实战小技巧:我在调试全桥驱动时,习惯先在电路板上留出测试点,用示波器探头分别勾住U、V、W三个输出端。这样能快速验证换向时序是否正确,避免直接上电烧管子。

2.2 六步换向时序表:让电机转起来的“节拍器”

六步换向,顾名思义,就是六个换向步骤。每个步骤对应一个特定的开关管导通组合。这六个步骤循环执行,电机就转起来了。

你想想看,如果换向顺序错了,或者时序不对,电机要么不转,要么反转,要么电流飙升。所以,搞懂这个时序表是基本功中的基本功。

下面这个表格,就是六步换向的标准时序表。假设我们用的是120°霍尔布局(后面会细讲),霍尔信号HA、HB、HC会给出6种状态组合,每种状态对应一组开关管导通组合。

步骤 HA HB HC 导通上桥臂 导通下桥臂 电流方向
1 1 0 1 Q1 (U+) Q4 (V-) U → V
2 1 0 0 Q1 (U+) Q6 (W-) U → W
3 1 1 0 Q3 (V+) Q6 (W-) V → W
4 0 1 0 Q3 (V+) Q2 (U-) V → U
5 0 1 1 Q5 (W+) Q2 (U-) W → U
6 0 0 1 Q5 (W+) Q4 (V-) W → V

警告:千万不要搞错霍尔信号的逻辑电平!我曾经遇到过一批电机,霍尔输出是开漏极,需要外部上拉电阻。如果忘记加上拉,霍尔信号一直浮空,换向时序全乱,电机直接堵转,MOS管瞬间冒烟。嗯,那次教训挺深刻的。

这个时序表怎么用?很简单:MCU读取霍尔传感器的三个输出引脚,得到一组3位二进制数(比如101),然后查表找到对应的步骤,再配置三相全桥的六个开关管。每次换向,其实就是把当前导通的管子关掉,把下一组管子打开。

我个人习惯在代码里用一个数组来存这个时序表,用霍尔值作为索引直接查表。这样换向响应快,延迟小。

// 六步换向时序表(120°霍尔布局,正转)
// 索引:霍尔值 (HA, HB, HC) 组合成的3位二进制数
// 值:{上桥臂导通位, 下桥臂导通位}
// 位定义:bit0=Q1(U+), bit1=Q3(V+), bit2=Q5(W+)
//         bit3=Q2(U-), bit4=Q4(V-), bit5=Q6(W-)

const uint8_t commutation_table[8] = {
    0b000000,  // 0b000 - 无效状态
    0b001001,  // 0b001 - 步骤6: Q5(W+), Q4(V-)
    0b010010,  // 0b010 - 步骤3: Q3(V+), Q6(W-)
    0b000110,  // 0b011 - 步骤2: Q1(U+), Q6(W-)
    0b100100,  // 0b100 - 步骤5: Q5(W+), Q2(U-)
    0b001100,  // 0b101 - 步骤1: Q1(U+), Q4(V-)
    0b011000,  // 0b110 - 步骤4: Q3(V+), Q2(U-)
    0b000000   // 0b111 - 无效状态
};

// 换向函数,在霍尔中断中调用
void commutation_step(uint8_t hall_value) {
    uint8_t drive_bits = commutation_table[hall_value];
    // 直接写入GPIO寄存器,驱动三相全桥
    GPIOA->ODR = (GPIOA->ODR & 0xFFC0) | drive_bits;
}

避坑指南:我曾经在项目里直接用霍尔值作为数组索引,结果发现有些电机在高速旋转时,霍尔信号会有毛刺,导致读到无效状态(0b000或0b111)。后来我加了一个简单的状态机,只有连续两次读到相同有效状态才执行换向,毛刺问题就解决了。

2.3 120°与60°霍尔布局差异:两种“世界观”

霍尔传感器在电机里的安装位置,直接决定了换向时序。最常见的两种布局是120°电角度和60°电角度。很多初学者搞不清它们的区别,我尽量用最直白的方式讲清楚。

说白了,120°布局和60°布局,区别在于三个霍尔传感器在定子上的相对位置。120°布局,三个霍尔相隔120°电角度安装;60°布局,三个霍尔相隔60°电角度安装。

你可能会问:就这点区别?嗯,区别大了去了。它们会导致霍尔信号的跳变顺序、换向点位置、甚至电机启动方式都不一样。

下面这张SVG图,把两种布局的霍尔信号波形和换向点画出来了。你可以直观地看到,120°布局的霍尔信号是三个相位差120°的方波,而60°布局的信号是三个相位差60°的方波。

120° vs 60° 霍尔布局信号对比 120° 布局 HA HB HC 60° 换向间隔 60° 布局 HA HB HC 30° 换向间隔(更频繁) 120°布局:每60°电角度换向一次,霍尔信号跳变沿就是换向点 60°布局:每30°电角度换向一次,换向频率翻倍,对MCU处理速度要求更高

两种布局的核心差异,我整理在下面这个表格里了。你可以对照着看,选型时心里就有数了。

对比项 120° 布局 60° 布局
霍尔安装间隔 120° 电角度 60° 电角度
换向间隔 60° 电角度 30° 电角度
每圈换向次数 6次(电气周期) 12次(电气周期)
霍尔状态组合 6种有效状态 6种有效状态
状态跳变顺序 每次只变1位 每次变1位或2位
启动方式 可直接根据霍尔定位 需要预定位或强制启动
转矩脉动 较大 较小(换向更频繁)
MCU负载 较低 较高(中断更频繁)

关键区别:120°布局的霍尔信号每次只变化一位(格雷码特性),所以换向点就是霍尔信号的跳变沿。而60°布局的霍尔信号有时会同时变化两位,这意味着换向点不一定在跳变沿上,需要额外的逻辑来判断。我个人更推荐新手先用120°布局,调试起来简单很多。

为什么会这样?你想想看,120°布局的三个霍尔信号,相位差120°,组合起来就是6种状态,每次换向只改变一个霍尔的状态。这就像走楼梯,一步一个台阶,很稳。而60°布局,三个霍尔信号相位差60°,虽然也是6种状态,但状态跳变时,有时会跳过中间状态,直接变两位。这就好比走楼梯时偶尔会跨两级台阶,容易踩空。

我在项目中遇到过用60°布局的电机,启动时霍尔状态不确定,需要先强制转一个角度才能定位。后来我改用120°布局的电机,启动就顺畅多了。当然,60°布局也有它的优势——换向更频繁,转矩脉动更小,适合对噪音和振动要求高的场合。

注意:千万不要以为霍尔布局只是硬件的事!软件里换向时序表必须和霍尔布局匹配。我曾经接手过一个项目,硬件是60°布局,但软件里用的却是120°的时序表,结果电机反转、电流失控。后来花了整整两天才排查出来。嗯,从那以后,我每次拿到新电机,第一件事就是确认霍尔布局,然后重新生成时序表。

最后,给你一个实用的判断方法:用示波器同时抓三个霍尔信号,看它们之间的相位差。如果相邻两个信号的上升沿相差60°电角度,那就是120°布局;如果相差30°电角度,那就是60°布局。这个方法我在现场调试时用过无数次,百试百灵。