3. 电机基础:直流无刷电机(BLDC)工作原理与数学模型
各位同学,咱们今天聊聊直流无刷电机,也就是BLDC。说实话,我刚入行那会儿,觉得这玩意儿挺玄乎的——明明叫“直流”电机,里面却没有电刷,那电流怎么换向?后来亲手调了几个项目才明白,它的精髓就在于“电子换向”这四个字。
3.1 从有刷到无刷:一个简单的进化
有刷电机大家应该都见过,转子上的线圈通过电刷和换向器接触,机械地切换电流方向。这结构简单,但问题也明显:电刷会磨损,会产生火花,效率还低。我做过一个高速风机项目,有刷电机跑了不到200小时,电刷就磨没了,客户投诉得我头皮发麻。
BLDC的思路很直接:把电刷和换向器扔掉,让转子变成永磁体,定子上放线圈。那谁来换向?用电子开关(MOSFET或IGBT)配合位置传感器,精确控制电流什么时候进、什么时候出。说白了,就是把机械换向变成了电子换向。
核心区别一句话:有刷电机靠机械接触换向,BLDC靠电子开关换向。没有电刷,就没有磨损,寿命长得多。
3.2 BLDC的结构长什么样?
BLDC电机主要由三部分组成:
- 定子:硅钢片叠成的铁芯,上面绕有三相绕组。通常是星形接法,也有三角形接法,但我个人习惯用星形,因为中线可以引出做电流检测。
- 转子:永磁体,常见的是钕铁硼(NdFeB)材料,磁能积高,体积小。我有个项目为了省成本用了铁氧体,结果转矩密度上不去,后来还是换回了钕铁硼。
- 位置传感器:通常是霍尔传感器,三个霍尔元件相隔120°安装,用来检测转子位置。也有无传感器方案,后面会讲。
嗯,这里要注意:霍尔传感器的安装精度直接影响换向时机。偏差个几度,转矩脉动就上来了。我曾经吃过这个亏,后来每次打样都要求PCB板厂把霍尔焊盘位置公差控制在±0.1mm以内。
3.3 工作原理:六步换向法
BLDC最经典的驱动方式是六步换向法,也叫120°导通方式。什么意思呢?就是每个时刻只有两相导通,第三相悬空。每60°电角度换一次相,一个电周期换六次。
你想想看,转子永磁体转到一个位置,霍尔传感器检测到信号,控制器就知道该给哪两相通电了。通电的定子绕组产生磁场,拉着转子继续转。转到下一个位置,霍尔信号变了,控制器再切换通电组合。如此循环,电机就转起来了。
我画个图帮你理解:
上图里,A、B、C是三相绕组,N、S是转子永磁体。霍尔传感器H1、H2、H3检测转子位置,控制器根据信号决定哪两相通电。换向顺序是固定的:A+B- → A+C- → B+C- → B+A- → C+A- → C+B-,然后回到A+B-,循环往复。
3.4 数学模型:别怕,其实不复杂
很多同学一看到数学模型就头疼。别急,咱们一步步来。BLDC的数学模型,说白了就是三个电压方程加一个转矩方程。
三相绕组的电压方程可以写成:
Va = R * Ia + L * dIa/dt + Ea
Vb = R * Ib + L * dIb/dt + Eb
Vc = R * Ic + L * dIc/dt + Ec
其中:
- Va、Vb、Vc 是三相端电压
- R 是每相电阻
- L 是每相电感(忽略互感,简化处理)
- Ia、Ib、Ic 是相电流
- Ea、Eb、Ec 是反电动势
反电动势的形状是梯形波,这是BLDC和永磁同步电机(PMSM)最大的区别。PMSM的反电动势是正弦波,所以控制方式也不一样。我有个同事把BLDC当PMSM控,结果转矩脉动大得离谱,查了两天才发现是反电动势波形不匹配。
反电动势的表达式:
Ea = Ke * ω * f(θ)
Eb = Ke * ω * f(θ - 120°)
Ec = Ke * ω * f(θ - 240°)
Ke是反电动势常数,ω是电角速度,f(θ)是梯形波函数,在120°导通区间内为±1,换向区间线性过渡。
转矩方程就简单了:
Te = (Ea * Ia + Eb * Ib + Ec * Ic) / ω
Te是电磁转矩。从公式可以看出,转矩是反电动势和电流的乘积除以转速。所以要想转矩平稳,电流波形必须和反电动势波形匹配。这就是为什么六步换向法在换向瞬间会产生转矩脉动——电流切换时,反电动势和电流的配合不是完美的。
我的经验:实际项目中,反电动势的梯形波并不是理想的平顶。由于齿槽效应和磁路饱和,波形会有畸变。这时候如果还用理想模型算电流,转矩脉动肯定大。我一般会先测一下实际的反电动势波形,然后做前馈补偿。
3.5 转矩脉动的根源
说到转矩脉动,这是BLDC绕不开的话题。我总结了一下,主要有三个来源:
- 换向脉动:六步换向法每60°换一次相,换向瞬间电流突变,转矩跟着跳。这是最根本的脉动来源,频率是6倍基频。
- 齿槽转矩:转子永磁体和定子齿槽之间的磁阻变化引起的。这个和电流无关,电机不转的时候也有。我有个精密定位项目,齿槽转矩太大,低速时抖得不行,后来用了斜槽设计才压下去。
- 电流谐波:PWM调制带来的高频谐波,以及死区时间引起的畸变。这些谐波会叠加到基波上,产生额外的转矩脉动。
注意:换向脉动在低速时尤其明显。因为低速时反电动势小,电流大,换向瞬间的电流冲击相对更剧烈。如果你做的是低速大扭矩应用(比如机器人关节),一定要重视这个问题。
3.6 一个简单的控制代码示例
下面是一个基于STM32的六步换向控制核心代码,我简化了,只保留换向逻辑:
// 霍尔信号读取与换向表
const uint8_t commutation_table[8] = {
0x00, // 无效状态
0x36, // 101 -> A+B- (Q1=1, Q4=1)
0x2C, // 011 -> B+C- (Q3=1, Q6=1)
0x1A, // 001 -> A+C- (Q1=1, Q6=1)
0x2E, // 010 -> B+A- (Q2=1, Q3=1)
0x34, // 110 -> C+A- (Q2=1, Q5=1)
0x1C, // 100 -> C+B- (Q4=1, Q5=1)
0x00 // 无效状态
};
void BLDC_Commutation(void) {
uint8_t hall_state;
// 读取三个霍尔传感器的状态
hall_state = (HAL_GPIO_ReadPin(HALL_A_PORT, HALL_A_PIN) << 2) |
(HAL_GPIO_ReadPin(HALL_B_PORT, HALL_B_PIN) << 1) |
HAL_GPIO_ReadPin(HALL_C_PORT, HALL_C_PIN);
// 查表得到PWM控制字
uint8_t pwm_ctrl = commutation_table[hall_state];
// 写入PWM寄存器,切换导通相
TIM1->CCER = pwm_ctrl;
}
这段代码的核心就是查表。霍尔状态组合成一个3位二进制数,查表得到对应的PWM输出配置。实际项目中还要加电流限幅、速度环、启动逻辑等,但换向逻辑就这么简单。
3.7 避坑指南
最后分享几个我踩过的坑:
- 霍尔安装角度:三个霍尔必须严格相隔120°电角度。我有个项目因为霍尔板焊接歪了,换向时序全乱,电机嗡嗡响就是不转。后来用示波器量霍尔信号才发现相位不对。
- 死区时间:上下桥臂切换时一定要加死区,否则直通短路,MOSFET瞬间烧毁。我刚开始做的时候死区设得太短,炸了好几个管子才长记性。
- 电流采样时机:不要在PWM开关瞬间采样电流,那是噪声最大的时候。我习惯在PWM周期的中间点采样,这时候电流最平稳。
好了,BLDC的基础就讲到这里。内容不算多,但都是干货。你把这些搞懂了,后面分析转矩脉动就有底了。