4. BLDC电机工作原理与六步换相控制
无刷直流电机(BLDC)把传统有刷电机的机械换相改成了电子换相:转子仍是永磁体,定子绕组按一定顺序通电,使定子磁场始终“追着”转子磁场转动。要让电机连续旋转,控制器必须知道转子当前处在什么位置,再决定哪两相通电、第三相悬空。本节围绕反电动势、霍尔换相逻辑、六步换相时序,以及基于 STM32 定时器与 GPIO 的实现展开。
一、反电动势:BLDC 的“发电机”特性
BLDC 的每相绕组在旋转时都会切割转子磁场,产生反电动势(Back-EMF)。理想情况下,反电动势为梯形波,幅值与转速成正比:
E = Ke · ω
其中 Ke 为反电动势常数(V·s/rad),ω 为机械角速度
反电动势有两个关键作用。第一,它决定了某一时刻哪一相“适合”被驱动:在六步换相中,任意时刻只有两相导通,第三相悬空,悬空相的反电动势过零点恰好对应换相时刻,这就是无霍尔传感器方案的基础。第二,它限制了高速时的电流:电源电压 Udc 减去反电动势后,才是真正加在绕组电阻和电感上的电压,因此转速越高,可用的驱动电压越小,电流越难继续增大。
以一台 24V、Ke=0.05V·s/rad 的 BLDC 为例,当转速为 3000rpm(约 314rad/s)时,反电动势约为 15.7V,留给绕组压降的电压只剩约 8.3V。这说明高速下必须依靠提前换相或弱磁策略,否则电流会迅速下降,转矩不足。
二、霍尔传感器与换相逻辑
有霍尔方案中,三个霍尔开关按电角度 120° 间隔安装在定子上,转子每转过 60° 电角度,三个霍尔输出就组合出一个新的 3 位状态码。一个电周期共 6 个状态,对应 6 个换相区间。常见霍尔安装方式下,状态码按 001→011→010→110→100→101 循环(具体顺序取决于霍尔安装与相序定义,实际应以实测为准)。
每个状态码唯一对应一组“哪两相导通、电流方向如何”。例如状态 001 时,可令 A 相上桥臂导通、B 相下桥臂导通,C 相悬空;状态 011 时,改为 A 相上桥臂、C 相下桥臂导通。这样定子磁场每次跳变 60° 电角度,始终领先转子磁场约 60°~120°,从而产生持续转矩。
三、六步换相时序
六步换相的本质是:每个电周期分成 6 个 60° 区间,每个区间内两相导通、一相悬空,6 个区间依次循环。若以 A、B、C 三相和上桥臂(+)、下桥臂(-)表示,一种常见的正转换相顺序为:
| 步序 | 导通相 | 电流方向 | 悬空相 | 霍尔状态示例 |
|---|---|---|---|---|
| 1 | A+ / B− | A→B | C | 001 |
| 2 | A+ / C− | A→C | B | 011 |
| 3 | B+ / C− | B→C | A | 010 |
| 4 | B+ / A− | B→A | C | 110 |
| 5 | C+ / A− | C→A | B | 100 |
| 6 | C+ / B− | C→B | A | 101 |
反转时只需把上述顺序倒过来执行。换相时刻由霍尔状态变化触发,因此换相频率与转速严格同步:转速越高,霍尔跳变越快,换相也越快。若用定时器产生 PWM,通常让上桥臂做 PWM 调制、下桥臂常通,或反之,以控制平均电压和电流。
四、基于 STM32 定时器与 GPIO 的换相实现
在 STM32 上实现六步换相,核心是三件事:用定时器产生 PWM 控制导通相的平均电压;用 GPIO 或定时器互补输出控制六个桥臂的开关;用外部中断或定时器输入捕获读取霍尔状态,并在状态变化时更新换相表。
以 STM32F103 为例,可选用 TIM1 的高级定时器,其 CH1/CH2/CH3 及互补通道 CH1N/CH2N/CH3N 正好驱动三相全桥的六个 MOS 管。霍尔信号 H1/H2/H3 接到 PA0/PA1/PA2,配置为外部中断或定时器编码器模式。换相表可用一个 8 元素数组表示,索引为霍尔状态码,值为对应 CCR 寄存器和使能通道的配置。
// 换相表:索引为霍尔状态 (H1H2H3),值为导通相配置
// 示例:状态 001 → A+ / B−,即 CH1 高、CH2 低
const uint8_t commTable[8] = {
0x00, // 000 无效
0x12, // 001 A+ B−
0x13, // 011 A+ C−
0x23, // 010 B+ C−
0x21, // 110 B+ A−
0x31, // 100 C+ A−
0x32, // 101 C+ B−
0x00 // 111 无效
};
void BLDC_Commute(uint8_t hallState) {
uint8_t cfg = commTable[hallState & 0x07];
// 根据 cfg 设置 TIM1 各通道输出与 GPIO 方向
// 例如 cfg=0x12 表示 CH1 上桥 PWM,CH2 下桥常通
TIM1->CCR1 = duty; // 上桥 PWM 占空比
TIM1->CCR2 = 0; // 下桥常通
// 其余通道关闭
}
换相中断服务函数中,先读取霍尔状态,再查表更新 TIM1 的 CCR 和 CCER 寄存器。为避免换相瞬间上下桥直通,必须插入死区时间,TIM1 的 BDTR 寄存器可配置死区,典型值 0.5~2μs,具体取决于 MOS 管开关速度和驱动电路。
五、启动与低速问题
BLDC 在静止或极低速时反电动势很小,无霍尔方案无法判断转子位置,因此通常采用“三段式启动”:预定位、开环加速、切换到闭环。有霍尔方案则简单得多,上电后直接读霍尔状态即可换相,但要注意霍尔安装误差会导致换相点偏移,可通过实验微调换相提前角来改善转矩脉动。
实际调试时,可先用示波器观察某一相的反电动势波形和霍尔信号,确认两者相位关系;再在低速下用电流探头观察相电流,若电流波形在换相点附近出现明显尖峰,说明换相时刻或死区设置需要调整。这些观察结果比单纯看转速更能反映换相逻辑是否正确。