1. 电机控制基础:直流电机与无刷直流电机的区别、BLDC电机结构、工作原理、反电动势与换相逻辑

大家好,欢迎来到《无刷直流电机控制算法精讲》的第一章。

做电机控制这些年,我见过不少新手一上来就啃FOC、SVPWM,结果连最基本的换相逻辑都没搞明白。说实话,这就像没学会走路就想跑。今天这一章,咱们先把地基打牢。

1.1 直流电机与无刷直流电机的区别

先聊聊最基础的问题:有刷直流电机和无刷直流电机,到底差在哪?

有刷直流电机,你拆开看,里面有两个关键部件:电刷换向器。电流通过电刷,经过换向器,再流到转子线圈。转子转起来,换向器跟着转,自动切换电流方向。嗯,这个设计很巧妙,但问题也很明显——电刷会磨损。

我在项目里遇到过一台有刷电机,跑了不到2000小时,电刷就磨没了。换电刷倒是不贵,但停机维护的时间成本太高了。

无刷直流电机(BLDC)就不一样了。它把线圈放到了定子上,转子变成了永磁体。没有电刷,没有换向器。那怎么换向呢?靠电子控制器。说白了,就是用电子开关代替了机械换向。

做个对比,你一看就明白:

对比项 有刷直流电机 无刷直流电机
换向方式 机械换向器+电刷 电子控制器(MOSFET)
寿命 短(电刷磨损) 长(无磨损部件)
效率 较低(摩擦损耗) 较高(一般85%以上)
噪音 较大(电刷火花) 较小
控制复杂度 简单(直接调压) 复杂(需要换相逻辑)
成本 较高(控制器成本)

你想想看,现在无人机、电动车、扫地机器人,为什么都用BLDC?就是因为效率高、寿命长、噪音小。代价就是控制起来麻烦一些。

1.2 BLDC电机结构

BLDC电机从结构上看,主要分三部分:定子转子位置传感器(有些没有)。

定子:上面绕了三相线圈,通常接成星形(Y型接法)。这三相就是U、V、W。我习惯叫它们A、B、C,其实一回事。

转子:上面贴了永磁体。常见的有两种贴法:表贴式和内嵌式。表贴式简单,控制起来也容易。内嵌式呢,有磁阻转矩可以利用,效率更高,但控制算法要复杂一些。

位置传感器:最常见的是霍尔传感器。三个霍尔元件,相隔120度安装。转子转一圈,霍尔输出三个高低电平信号,组合起来就是6个状态。这6个状态,正好对应6个换相时刻。

核心要点:霍尔传感器不是必须的。无感控制(Sensorless)就是通过检测反电动势来推算转子位置。但起步阶段,我建议你先用带霍尔的电机练手,把换相逻辑跑通了再说。

1.3 工作原理

BLDC的工作原理,说白了就是一句话:让定子磁场始终领先转子磁场90度电角度

为什么会这样?因为电磁转矩的公式是:

T = Kt × I × sin(θ)

其中θ是定子磁场和转子磁场的夹角。当θ=90度时,sin(θ)=1,转矩最大。所以控制器的任务,就是不断切换定子绕组的通电方式,让这个夹角始终保持在90度附近。

我举个例子你就懂了。假设现在转子在0度位置,定子通电让A相和B相产生磁场,把转子往前拉。转子转到60度了,控制器马上切换通电方式,换成B相和C相通电。转子再转到120度,再切换...就这样,一步一步把转子推着转。

这个过程,就是六步换相法。每一步转子转60度电角度,六步就是360度,一个完整的电周期。

1.4 反电动势与换相逻辑

反电动势(Back EMF),是理解BLDC控制的关键。转子转动时,永磁体的磁场切割定子线圈,线圈里就会感应出电压。这个电压和施加的电压方向相反,所以叫反电动势。

反电动势的大小和转速成正比:

E = Ke × ω

其中Ke是反电动势常数,ω是转速。

这里有个坑,我踩过。有一次调试一个高速电机,转速到了10000RPM,反电动势直接飙到了母线电压的80%。这时候如果还按低速时的PWM占空比来驱动,电流根本灌不进去。嗯,这就是为什么高速时要弱磁控制的原因,后面章节会细讲。

个人经验:反电动势的波形是梯形波,不是正弦波。这是BLDC和PMSM(永磁同步电机)的本质区别。BLDC的反电动势是梯形波,所以用方波驱动(六步换相)效率最高。PMSM的反电动势是正弦波,必须用正弦波驱动(FOC)。

再来说换相逻辑。以带霍尔的BLDC为例,换相逻辑是这样的:

  1. 读取三个霍尔传感器的状态(H1, H2, H3)
  2. 根据状态查表,确定当前转子位置区间
  3. 决定哪两相通电,哪一相悬空
  4. 控制MOSFET开关,执行换相

霍尔状态和换相的关系,我整理了一张表:

霍尔状态 (H1,H2,H3) 转子位置区间 通电相 电流方向
101 0° - 60° A+ B- A→B
100 60° - 120° A+ C- A→C
110 120° - 180° B+ C- B→C
010 180° - 240° B+ A- B→A
011 240° - 300° C+ A- C→A
001 300° - 360° C+ B- C→B

代码实现起来也不复杂,我贴一段伪代码:

// 霍尔状态到换相表的映射
const uint8_t commutation_table[8] = {
    0b000,  // 无效状态
    0b001,  // 001 -> C+B-
    0b010,  // 010 -> B+A-
    0b011,  // 011 -> C+A-
    0b100,  // 100 -> A+C-
    0b101,  // 101 -> A+B-
    0b110,  // 110 -> B+C-
    0b111   // 无效状态
};

void motor_commutation(void) {
    uint8_t hall_state = read_hall_sensors();
    uint8_t phase_pattern = commutation_table[hall_state];
    set_mosfet_driver(phase_pattern);
}

避坑指南:我曾经在换相时刻没处理好死区时间,导致上下桥臂直通,MOSFET瞬间烧毁。切记,换相时一定要加死区时间,一般设置为1-3微秒。另外,霍尔信号有抖动,建议做软件滤波,不然换相会不稳定。

好了,第一章的内容就到这里。总结一下:

  • BLDC和有刷电机的本质区别在于换向方式
  • BLDC结构:定子线圈 + 永磁体转子 + 霍尔传感器(可选)
  • 工作原理:六步换相,让定子磁场始终领先转子90度
  • 反电动势是梯形波,和转速成正比
  • 换相逻辑:读霍尔状态 → 查表 → 执行换相

下一章,咱们聊聊PWM调制方式和电流采样。这些东西看着简单,但调不好的话,电机要么嗡嗡响,要么直接不转。到时候见。