1. 电机控制基础:直流电机与无刷直流电机(BLDC)的区别、BLDC的工作原理、霍尔传感器与反电动势检测
大家好,我是你们这门课的老朋友。今天咱们正式开篇,聊聊电机控制最基础的东西。
说实话,我刚开始接触电机控制那会儿,也踩过不少坑。记得第一次调BLDC,电机死活不转,我还以为是代码写错了,折腾了一整天,最后发现是霍尔传感器的线序接反了。嗯,这种经历,我相信你们以后也会遇到。
好,废话不多说,咱们直接进入正题。
1.1 直流电机与无刷直流电机(BLDC)的区别
先说说最传统的直流电机。你想想看,一个直流电机,里面有什么?转子、定子、电刷、换向器。电流通过电刷和换向器,流进转子线圈,产生磁场,然后和定子的永磁体相互作用,转子就转起来了。
这个结构简单吧?但问题也出在这里——电刷和换向器是机械接触的。摩擦会产生火花,会磨损,时间长了就得换。我在一个工业项目里见过,一台直流电机用了不到半年,电刷就磨没了,生产线直接停摆。那叫一个惨。
那BLDC呢?说白了,就是把电刷和换向器给去掉了。转子变成永磁体,定子变成线圈。电流怎么换向?靠电子控制器,也就是我们常说的驱动器。没有机械接触,没有火花,寿命长得多。
我列个表,你们对比一下:
| 对比项 | 直流电机 | BLDC |
|---|---|---|
| 换向方式 | 机械电刷+换向器 | 电子换向(控制器) |
| 寿命 | 短(电刷磨损) | 长(无磨损件) |
| 噪音 | 大(电刷摩擦) | 小 |
| 效率 | 较低(摩擦损耗) | 较高 |
| 控制复杂度 | 简单(直接调电压) | 复杂(需要换向逻辑) |
| 典型应用 | 玩具、小家电 | 无人机、电动车、机器人 |
所以,如果你要做高性能、长寿命的项目,BLDC几乎是唯一的选择。但代价就是——你得学会怎么控制它。
1.2 BLDC的工作原理
BLDC怎么转起来的?我尽量用大白话讲清楚。
BLDC的定子上有三组线圈,通常接成星形(Y型)。转子是一块永磁体,有N极和S极。要让转子转,就得让定子线圈产生的磁场,始终“追着”转子跑。
具体怎么做?
假设转子现在处于某个位置,N极指向某个方向。我们给某两组线圈通电,产生一个磁场,这个磁场会吸引转子的N极,同时排斥S极。转子就会转到一个新的位置。然后我们马上切换通电的线圈组合,让磁场也跟着转,转子就会继续转下去。
这个过程,就叫“换向”。
我举个例子,六步换向法,这是最基础的:
- 第一步:A相正,B相负,C相悬空
- 第二步:A相正,C相负,B相悬空
- 第三步:B相正,C相负,A相悬空
- 第四步:B相正,A相负,C相悬空
- 第五步:C相正,A相负,B相悬空
- 第六步:C相正,B相负,A相悬空
每换一次,转子转60度电角度。六步下来,正好一圈。当然,实际电机有极对数,机械角度和电角度不一样,这个后面再细说。
核心要点:BLDC的换向,本质就是根据转子位置,决定哪两相通电、电流方向如何。位置信息不准,换向就乱,电机就会抖、会啸叫,甚至烧管子。
1.3 霍尔传感器与反电动势检测
好,现在问题来了:我怎么知道转子当前在什么位置?
两种主流方法:霍尔传感器,或者反电动势检测。
1.3.1 霍尔传感器
霍尔传感器,说白了就是一个磁场检测开关。把它装在定子上,转子转过来,磁场变化,霍尔输出高低电平。
通常BLDC内部会装三个霍尔传感器,间隔120度电角度。三个霍尔输出组合起来,就能判断转子在哪个60度扇区。
我给你们一个典型的霍尔输出表(假设霍尔是低电平有效):
| 扇区 | 霍尔A | 霍尔B | 霍尔C |
|---|---|---|---|
| 0°~60° | 0 | 1 | 1 |
| 60°~120° | 0 | 0 | 1 |
| 120°~180° | 1 | 0 | 1 |
| 180°~240° | 1 | 0 | 0 |
| 240°~300° | 1 | 1 | 0 |
| 300°~360° | 0 | 1 | 0 |
有了这个表,换向就简单了。每次霍尔状态变化,就知道转子进了新扇区,然后按对应的换向表去通电就行。
个人经验:霍尔传感器的安装位置非常关键。我遇到过一批电机,霍尔装偏了1~2度,结果电机高速运行时效率直接掉了5%。后来我让产线加了个工装,保证霍尔安装精度在0.5度以内,问题才解决。
1.3.2 反电动势检测
霍尔传感器好用,但有个缺点——它需要额外的线,而且霍尔本身也会坏。有些场合,比如压缩机、风扇,电机内部空间小,装不了霍尔。怎么办?
这时候就用反电动势检测,也叫“无传感器”控制。
原理是这样的:当BLDC的某一相处于“悬空”状态时(不通电),转子旋转会在该相线圈上感应出一个电压,这个电压就叫反电动势(BEMF)。
反电动势的波形,和转子位置有直接关系。通过检测反电动势过零点,就能推算出转子位置。
具体做法:
- 在六步换向的每一步中,总有一相是悬空的
- 我们检测悬空相的电压,和电机中性点电压(或虚拟中性点)比较
- 当反电动势过零时,说明转子正好转到某个特定位置
- 然后延迟30度电角度,就是下一次换向的时机
我给你们看一段伪代码,理解一下思路:
// 反电动势过零检测伪代码
while(1) {
// 假设当前是A相正,B相负,C相悬空
// 检测C相电压
bemf_c = read_adc(PIN_C);
// 和虚拟中性点比较
if (bemf_c > virtual_neutral) {
// 过零事件发生
zero_crossing_flag = 1;
// 记录时间
last_zc_time = current_time;
}
// 如果过零后延迟了30度电角度
if (zero_crossing_flag && (current_time - last_zc_time > delay_30deg)) {
// 执行换向
commutation_next();
zero_crossing_flag = 0;
}
}
注意:反电动势检测在电机低速时很难用。因为转速低,反电动势信号太弱,容易被噪声淹没。所以无传感器BLDC通常需要“开环启动”——先不管位置,硬推着转子转起来,等转速够了再切换到反电动势检测。这个启动过程,我当年调了整整两周才稳定。
小结
这一章我们聊了:
- 直流电机和BLDC的根本区别——有没有电刷
- BLDC的工作原理——六步换向,让磁场追着转子跑
- 转子位置检测的两种方法:霍尔传感器(简单可靠)和反电动势检测(无传感器,省成本)
下一章,我会带大家深入FOC矢量控制的核心——Clark变换和Park变换。说白了,就是怎么把三相电流变成更容易控制的量。到时候见。