3、六步换向法:基于霍尔信号的换向逻辑、导通时序、120°与60°相位区别

好,咱们今天聊点实在的。六步换向法,说白了就是让无刷电机转起来的最经典套路。你想想看,电机里面三个线圈,谁先通电、谁后通电、什么时候断电,这都得有个规矩。霍尔传感器就是那个报信的,告诉我们转子现在转到哪了。

我个人习惯把六步换向法叫做“三板斧”——每转一圈,砍六下。每一下对应一个换向状态。霍尔信号一变,我就知道该换下一斧了。

3.1 霍尔信号的换向逻辑

先说说霍尔传感器怎么工作的。三个霍尔元件,装在电机定子上,相隔120°或60°电角度。转子上的磁钢转过去,霍尔就输出高或低电平。三个霍尔拼在一起,就是一个3位的二进制数。

嗯,这里要注意:霍尔信号不是连续的,它是离散的。每60°电角度变化一次。所以一圈360°,正好6个状态。

核心逻辑:霍尔信号 → 解码 → 确定转子位置 → 选择导通相

我在项目中遇到过一个问题:霍尔信号有毛刺,导致换向乱跳。后来加了软件滤波,每次检测到变化后延迟几十微秒再确认,问题就解决了。

3.2 导通时序详解

六步换向,每一步只导通两相。一相进电流,一相出电流,第三相悬空。这叫“两两导通”方式。

举个例子,假设我们用的是120°相位的霍尔安装方式。霍尔信号从101变到100时,对应的导通相就要切换。

霍尔信号 (H3 H2 H1) 导通相 (正极→负极) 转子位置 (电角度)
101 A+ → B- 0° ~ 60°
100 A+ → C- 60° ~ 120°
110 B+ → C- 120° ~ 180°
010 B+ → A- 180° ~ 240°
011 C+ → A- 240° ~ 300°
001 C+ → B- 300° ~ 360°

你看这个表,是不是很规整?每个状态持续60°,然后跳到下一个。这就是六步换向的“步”。

我曾经调试一个风机项目,发现电机在低速时抖动厉害。查了半天,原来是换向时序和霍尔信号没对齐。说白了,就是霍尔安装位置有偏差,导致换向点提前或滞后了。

3.3 120°与60°相位区别

这个问题,很多初学者搞混。我简单说一下。

120°相位:三个霍尔传感器在空间上相隔120°电角度。这是最常见的安装方式。霍尔信号的变化顺序是:101 → 100 → 110 → 010 → 011 → 001。每个状态之间跳变一位。

60°相位:三个霍尔传感器在空间上相隔60°电角度。信号变化顺序是:101 → 001 → 011 → 010 → 110 → 100。每个状态之间可能跳变两位。

我的经验:120°相位更容易做软件解码,因为每次只变一位,不容易出错。60°相位虽然也能用,但抗干扰能力稍差。我建议新手先用120°。

你想想看,为什么会有这两种区别?其实是因为霍尔元件的安装位置不同。有些电机厂家为了节省成本,把霍尔装在PCB板的一侧,自然就成了60°。但说实话,从控制算法角度看,两者本质是一样的——都是6个状态,只是映射关系不同。

3.4 代码实现示例

下面给一段简单的换向逻辑代码。我用的是C语言风格,实际项目中可以根据你的MCU调整。

// 霍尔信号到导通相的映射表 (120°相位)
const uint8_t commutation_table[8] = {
    0,          // 000 - 无效状态
    0b001001,   // 001 - C+ B-
    0b000110,   // 010 - B+ A-
    0b010010,   // 011 - C+ A-
    0b100100,   // 100 - A+ C-
    0b011000,   // 101 - A+ B-
    0b000000,   // 110 - B+ C-
    0           // 111 - 无效状态
};

void six_step_commutation(uint8_t hall_value) {
    uint8_t phase_pattern = commutation_table[hall_value];
    if (phase_pattern == 0) {
        // 无效霍尔状态,保持当前导通或停机
        return;
    }
    // 写入PWM寄存器,控制MOSFET导通
    write_pwm(phase_pattern);
}

注意:霍尔信号为000或111时,属于无效状态。这通常发生在电机静止或霍尔损坏时。我建议在代码里加一个超时保护,如果长时间检测到无效状态,就关闭所有MOSFET,防止烧管子。

3.5 实际调试中的避坑指南

我曾经在一个无人机项目中吃过亏。电机转起来嗡嗡响,效率还低。查了两天,发现是霍尔信号线太长,受到了PWM高频干扰。

解决办法其实很简单:

  • 霍尔信号线用双绞线,远离功率线
  • 在MCU引脚上加RC滤波,R=1kΩ,C=10nF
  • 软件里做去抖,连续采样3次一致才确认

还有一个坑:霍尔传感器的供电电压。有些霍尔是5V的,有些是3.3V的。如果你的MCU是3.3V,霍尔输出5V,那就得加电平转换。我见过有人直接连,结果MCU引脚烧了。

3.6 小结

六步换向法,说白了就是跟着霍尔信号走。信号变,我就换。120°和60°的区别,只是映射表不同,核心逻辑一样。

嗯,最后说一句:霍尔传感器虽然好用,但也不是万能的。高温、振动、磁场干扰都会影响它。如果你要做高可靠性产品,建议加上无传感器备份控制。这个我们后面章节会讲。

记住:六步换向是基础,但真正让电机跑得顺,还得靠电流环和速度环的配合。别急,一步步来。