2. 换相原理入门:BLDC与PMSM的换相逻辑、六步换相法、FOC中的转子位置依赖

换相,说白了就是让电机转起来的关键动作。你给绕组通电,转子就会追着磁场跑。但什么时候通哪一相、通多久,这就是换相要解决的问题。

我刚开始做电机驱动时,总觉得换相不就是按顺序通电嘛。后来在项目里烧了好几个MOS管才明白——换相时机差那么几度,电流波形就完全不一样了。嗯,咱们今天就把这事彻底讲清楚。

2.1 BLDC与PMSM:两种电机的换相差异

很多人以为BLDC和PMSM是两种完全不同的东西。其实从结构上看,它们都是永磁同步电机,转子都是永磁体。区别在哪?

  • BLDC(无刷直流电机):反电动势是梯形波,绕组集中绕制。换相逻辑简单粗暴——六步换相法就够了。
  • PMSM(永磁同步电机):反电动势是正弦波,绕组分布绕制。换相需要更精细的正弦电流控制,也就是FOC。

我在一个风机项目里试过用六步法驱动PMSM,结果噪音大得客户直接退货。后来换成FOC,电流波形平滑了,噪音也降下来了。所以选哪种换相方式,得看电机本身的反电动势波形。

对比项 BLDC PMSM
反电动势波形 梯形波 正弦波
绕组形式 集中绕组 分布绕组
推荐换相方式 六步换相法 FOC(磁场定向控制)
转矩脉动 较大 较小
噪音表现 明显 安静
我的经验: 如果你手头只有霍尔传感器,驱动BLDC用六步法完全够用。但要是编码器精度够高,哪怕电机是BLDC,用FOC也能获得更好的性能。

2.2 六步换相法:简单粗暴但有效

六步换相法,也叫120°导通法。每次只给两相绕组通电,第三相悬空。每60°电角度换一次相,一个电周期正好六步。

你想想看,转子转一圈,定子磁场跳六下。每一步的合成磁动势方向都不同,转子就被拉着往前跑。

六步换相的逻辑

  1. 检测转子位置:用霍尔传感器或反电动势过零点检测。
  2. 查换相表:根据当前转子扇区,决定哪两相通电。
  3. 输出PWM:上管和下管按顺序导通,产生旋转磁场。
  4. 等待下一次换相:转子转过60°,重复步骤1。

换相表长这样(以A-B-C相序为例):

扇区 导通相(上管) 导通相(下管) 悬空相
0°~60° A B C
60°~120° A C B
120°~180° B C A
180°~240° B A C
240°~300° C A B
300°~360° C B A
注意: 换相时机必须精确。换早了或换晚了,电流会突变,产生负转矩。我曾经在调试时换相延迟了10°,电机直接抖动得像筛子一样。

六步换相的代码骨架

// 六步换相状态机
typedef enum {
    STEP_1, STEP_2, STEP_3,
    STEP_4, STEP_5, STEP_6
} CommutationStep;

CommutationStep currentStep;

void Commutation_Update(uint8_t hallState) {
    // 根据霍尔状态映射到换相步骤
    switch (hallState) {
        case 0b101: currentStep = STEP_1; break;
        case 0b100: currentStep = STEP_2; break;
        case 0b110: currentStep = STEP_3; break;
        case 0b010: currentStep = STEP_4; break;
        case 0b011: currentStep = STEP_5; break;
        case 0b001: currentStep = STEP_6; break;
        default: break;
    }

    // 根据当前步骤设置PWM输出
    SetPWMByStep(currentStep);
}

2.3 FOC中的转子位置依赖:精度决定一切

FOC和六步法最大的区别在哪?六步法只关心转子在哪个扇区(60°分辨率),而FOC需要知道转子精确的电气角度(通常要求0.1°以内)。

为什么会这样?因为FOC要做Park变换和逆Park变换。这两个变换都需要sin(θ)和cos(θ)的值。角度偏差1°,电流矢量就偏1°,转矩输出就损失一点点。角度偏差大了,电流环直接发散。

FOC换相的核心流程

  1. 采样相电流:Ia、Ib、Ic(通常只采两相,第三相计算得出)。
  2. Clark变换:把三相电流转到αβ坐标系。
  3. Park变换:用转子角度θ,把αβ电流转到dq坐标系。
  4. PI调节:在dq坐标系里控制Id和Iq。
  5. 逆Park变换:用转子角度θ,把dq电压转回αβ坐标系。
  6. SVPWM:生成三相PWM信号。

你看,步骤3和步骤5都依赖转子角度θ。这个θ从哪里来?编码器。

核心结论: FOC的换相精度,直接取决于编码器提供的转子位置精度。编码器分辨率不够,FOC性能就上不去。我见过有人用12位编码器跑FOC,电流环带宽死活调不上去,换成14位编码器,问题立刻解决。

角度误差对FOC的影响

角度误差 对Id/Iq的影响 对转矩的影响
< 1° 可忽略 几乎无影响
1°~5° Id出现耦合分量 转矩损失 < 5%
5°~10° Id/Iq明显耦合 转矩损失 5%~15%
> 10° 电流环可能发散 电机抖动或失步
我的建议: 做FOC时,编码器分辨率至少12位起步。如果要求低速平稳运行,建议14位或更高。别在编码器上省钱,否则后面调参调到怀疑人生。

2.4 换相逻辑与转子位置的关系图

下面这张图展示了六步换相法和FOC在转子位置依赖上的本质区别。

换相逻辑与转子位置依赖关系图 换相逻辑与转子位置依赖关系 六步换相法 霍尔传感器 / 反电动势过零点 检测转子扇区(60°分辨率) 查换相表 确定导通相(两相导通,一相悬空) 输出PWM 产生旋转磁场,拖动转子 等待下一次换相 转子转过60°后重复 FOC(磁场定向控制) 编码器(绝对值/增量式) 检测精确电气角度(0.1°分辨率) Clark + Park变换 依赖sin(θ)和cos(θ) PI调节(Id/Iq控制) 在dq坐标系中调节 逆Park变换 + SVPWM 生成三相PWM信号 六步法:扇区级位置依赖(60°分辨率) | FOC:连续角度依赖(0.1°分辨率)

2.5 换相性能的关键指标

不管用哪种换相方式,有几个指标是通用的。我每次调完换相参数,都会先看这几个数据:

  • 换相延迟:从检测到位置到执行换相的时间。延迟越小,电流波形越平滑。
  • 电流纹波:换相瞬间电流的波动幅度。纹波大说明换相时机或PWM频率有问题。
  • 转矩脉动:输出转矩的波动。六步法天生有脉动,FOC可以做到很低。
  • 效率:换相逻辑越精确,铜损和铁损越小,效率越高。
避坑指南: 我曾经在一个项目里用六步法驱动高速BLDC(10000rpm以上),换相延迟只有几微秒,但电流纹波还是很大。后来发现是PWM频率太低(8kHz),换相瞬间电流来不及续流。把PWM频率提到20kHz,问题解决了。所以换相性能不光是换相逻辑的事,PWM频率、死区时间、采样同步都得一起考虑。

2.6 小结

换相原理说白了就两件事:知道转子在哪,然后给正确的相通电。六步法简单可靠,适合BLDC和低成本场景。FOC精度高、性能好,但依赖高分辨率编码器。

我个人习惯是:先搞清楚电机的反电动势波形,再选换相方式。梯形波用六步法,正弦波用FOC。如果项目对噪音和效率要求高,哪怕电机是BLDC,我也会优先考虑FOC。