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为例,换相逻辑是这样的:
- 读取三个霍尔传感器的状态(H1, H2, H3)
- 根据状态查表,确定当前转子位置区间
- 决定哪两相通电,哪一相悬空
- 控制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调制方式和电流采样。这些东西看着简单,但调不好的话,电机要么嗡嗡响,要么直接不转。到时候见。