4. 换相逻辑基础:六步换相法、120°与180°导通、霍尔传感器换相

换相,说白了就是告诉电机「该轮到哪一组线圈通电了」。

我刚开始接触BLDC时,总觉得换相很神秘。后来拆了几个电机驱动板,对着霍尔信号一个个测,才明白——其实就是个有规律的开关动作。今天咱们就把这个规律彻底讲透。

4.1 六步换相法:最经典的换相节奏

六步换相,也叫梯形控制。名字听着复杂,其实就六个状态循环跑。

BLDC电机有三相绕组:U、V、W。每一时刻,只有两相通电,一相悬空。六步换相就是把这「两相通电」的组合,按顺序切换六次,完成一个电周期。

核心规律:

  • 任何时候只有两相导通
  • 导通相中,一相流入电流(正),一相流出电流(负)
  • 第三相不参与通电(悬空)
  • 每60°电角度切换一次状态

我习惯把六步换相的状态画成一张表,调试时对照着看,非常直观。

步序 电角度范围 U相 V相 W相
1 0° ~ 60° + - 悬空
2 60° ~ 120° + 悬空 -
3 120° ~ 180° 悬空 + -
4 180° ~ 240° - + 悬空
5 240° ~ 300° - 悬空 +
6 300° ~ 360° 悬空 - +

你看,每个状态持续60°电角度。六个状态走完,转子刚好转了一圈(电角度)。

我的小技巧: 在Simulink里建一个六步状态机,用Stateflow或者MATLAB Function Block实现。我习惯用查表法——把六个状态存成一个数组,根据霍尔信号索引切换。比if-else嵌套清爽多了。

4.2 120°导通 vs 180°导通

这两个概念,很多初学者容易搞混。我简单说一下区别。

120°导通: 每相MOS管导通120°电角度,然后关断60°。这就是六步换相的标准模式。每相电流波形是方波,导通区间正好120°。

180°导通: 每相MOS管导通180°电角度。这时候三相同时通电,不再是「两相通电一相悬空」。电流波形更接近正弦波,但控制复杂得多。

对比项 120°导通 180°导通
同时导通相数 2相 3相
电流波形 方波 近似正弦波
转矩脉动 较大 较小
控制复杂度 低 高
适用场景 低成本、低速应用 高性能、高速应用

注意: 180°导通不能直接用六步换相的逻辑。它需要SVPWM(空间矢量脉宽调制)或者正弦波调制。我见过有人把六步换相的表直接套到180°导通上,结果电机抖得像筛子——千万别这么干。

我个人习惯,做风机、水泵这类对转矩脉动不敏感的项目,用120°导通就够了。但如果是做伺服或者机器人关节,我会选180°导通+SVPWM。

4.3 霍尔传感器换相原理

霍尔传感器,就是电机的「位置眼睛」。三个霍尔元件间隔120°(或60°)安装在定子上,检测转子磁极的位置。

每个霍尔输出高电平或低电平。三个霍尔组合起来,就是3位二进制数,一共8种状态。其中6种是有效状态,对应转子的6个位置区间。剩下2种(000和111)是非法状态——正常情况下不会出现。

霍尔状态和换相步序的对应关系,是换相逻辑的核心。

霍尔状态 (H3 H2 H1) 对应电角度区间 应执行的换相步序
001 0° ~ 60° 步1 (U+, V-)
101 60° ~ 120° 步2 (U+, W-)
100 120° ~ 180° 步3 (V+, W-)
110 180° ~ 240° 步4 (V+, U-)
010 240° ~ 300° 步5 (W+, U-)
011 300° ~ 360° 步6 (W+, V-)

嗯,这里要注意:霍尔状态和换相步序的对应关系,取决于霍尔元件的安装位置和电机绕线方式。不同电机可能不一样。我建议你拿到电机后,先用手转动转子,用示波器抓一下霍尔波形,再对照这个表确认。

避坑指南: 我曾经遇到过一批电机,霍尔信号在换相边界有毛刺。直接读霍尔状态做换相,结果在边界处来回跳,电机嗡嗡响。后来加了20μs的消抖滤波,问题就解决了。在Simulink建模时,记得加一个「霍尔消抖」模块。

4.4 换相逻辑的Simulink实现思路

在Simulink里搭换相逻辑,我一般分三步走:

  1. 霍尔信号采集与解码: 三个霍尔信号进来,组合成3位二进制数,查表得到当前电角度区间。
  2. 换相状态机: 根据电角度区间,输出对应的MOS管开关信号(6个PWM控制信号)。
  3. 死区时间插入: 上下桥臂切换时,插入死区时间,防止直通短路。

下面是一个简单的Simulink换相逻辑伪代码,用MATLAB Function Block实现:

function [U_H, U_L, V_H, V_L, W_H, W_L] = commutation_logic(H1, H2, H3)
% 霍尔状态解码
hall_code = H3*4 + H2*2 + H1;

% 换相表:根据霍尔状态输出MOS管信号
% 1表示上桥导通,-1表示下桥导通,0表示悬空
switch hall_code
    case 1  % 001
        phase_state = [1, -1, 0];  % U+, V-, W悬空
    case 5  % 101
        phase_state = [1, 0, -1];  % U+, W-
    case 4  % 100
        phase_state = [0, 1, -1];  % V+, W-
    case 6  % 110
        phase_state = [-1, 1, 0];  % V+, U-
    case 2  % 010
        phase_state = [-1, 0, 1];  % W+, U-
    case 3  % 011
        phase_state = [0, -1, 1];  % W+, V-
    otherwise
        phase_state = [0, 0, 0];   % 非法状态,全部关断
end

% 输出6个MOS管信号
U_H = (phase_state(1) == 1);
U_L = (phase_state(1) == -1);
V_H = (phase_state(2) == 1);
V_L = (phase_state(2) == -1);
W_H = (phase_state(3) == 1);
W_L = (phase_state(3) == -1);
end

这段代码看着简单,但实际项目里我会加几个保护:

  • 非法状态检测:如果霍尔状态是000或111,立刻关断所有MOS管
  • 换相超时保护:如果长时间没有霍尔跳变,判断为堵转,执行保护
  • 软换相:在换相瞬间,不要立刻切换电流方向,而是先关断再开通,减少电流冲击

4.5 换相逻辑知识体系总览

下面这张图,把本章的核心知识点串起来了。你可以把它当作换相逻辑的「地图」。

换相逻辑知识体系 换相逻辑知识体系 换相方式选择 120°导通(六步换相) 180°导通(SVPWM) 霍尔传感器位置检测 霍尔状态解码(3→6) 六步状态机查表 MOS管开关信号输出 编码器/观测器位置检测 SVPWM矢量合成 三相占空比计算 PWM调制输出 死区插入 + 保护逻辑 本章重点:120°导通路径

从图上你能看到,120°导通和180°导通是两条不同的技术路线。咱们这门课主要走左边这条路——霍尔传感器+六步换相。这是入门最快、最稳的路径。

再次提醒: 霍尔换相表不是通用的。不同电机、不同霍尔安装位置,换相表可能不一样。我建议你在Simulink里做一个「换相表配置」的接口,方便调试时在线修改。别把换相表写死在代码里——我吃过这个亏,换了一个电机型号,改代码改到怀疑人生。