六步换相法:从原理到实战
六步换相法,说白了就是让无刷电机转起来的「基本功」。我刚开始接触BLDC时,觉得这名字挺唬人,后来发现它其实就是个开关顺序问题。你想想看,电机要转,就得让定子磁场追着转子跑,六步换相就是干这个的。
六步换相的核心原理
无刷直流电机没有电刷,那怎么换向呢?靠电子开关。六个MOS管组成三相全桥,每次导通两个管子,形成一条电流通路。转子每转过60°电角度,我们就切换一次导通组合。转一圈360°,正好六步。
我个人习惯把六步换相理解成「推磨」——你推一下,磨盘转一点;再推一下,又转一点。六步推完,刚好一圈。当然,实际电机里是磁场在推转子,道理一样。
关键点:六步换相的本质是「两两导通,三相六拍」。任何时候只有两相绕组通电,第三相悬空。
我在项目中遇到过一个问题:换相时机稍微偏一点,电机就抖得厉害。后来发现是霍尔信号处理不够快。嗯,这里要注意,换相必须精准,差几微秒都不行。
霍尔传感器的布局
霍尔传感器是电机的「眼睛」。它们告诉控制器:转子现在转到哪了。三个霍尔元件通常相隔120°或60°电角度安装。
我建议你记住这个规律:霍尔传感器的输出是三位二进制数,从001到110(或111到000),每个状态对应一个特定的转子位置。控制器读到这个状态,就知道该换哪一相了。
| 霍尔状态 | 转子位置(电角度) | 导通相 |
|---|---|---|
| 001 | 0°~60° | A+B- |
| 011 | 60°~120° | A+C- |
| 010 | 120°~180° | B+C- |
| 110 | 180°~240° | B+A- |
| 100 | 240°~300° | C+A- |
| 101 | 300°~360° | C+B- |
你看,霍尔状态的变化是有规律的。每次只变化一位,这就是格雷码的特点。我曾经因为没注意这个细节,写了个错误的换相表,电机转得跟抽风似的。
换相时序表
换相时序表就是「什么时候该做什么事」的清单。我一般把它写成数组,放在代码里。每次霍尔中断来了,查表就知道下一步怎么走。
// 120°霍尔布局的换相表
// 索引对应霍尔状态(二进制)
const uint8_t commutation_table[8] = {
0xFF, // 000 - 无效状态
0x36, // 001 - 导通A+B-
0x2C, // 010 - 导通B+C-
0x1A, // 011 - 导通A+C-
0x0E, // 100 - 导通C+A-
0x1C, // 101 - 导通C+B-
0x24, // 110 - 导通B+A-
0xFF // 111 - 无效状态
};
代码里0xFF是无效状态,用来做错误检测。你想想看,如果霍尔信号出问题,读到000或111,那肯定是哪里坏了。我习惯在调试时打印这些异常,能快速定位问题。
小技巧:换相表不要硬编码在中断里。把它做成可配置的,方便调试时切换不同电机。我吃过这个亏,后来都改成查表了。
120°与60°霍尔相位区别
这是新手最容易搞混的地方。120°和60°指的是霍尔传感器之间的电角度间隔。
- 120°布局:三个霍尔相隔120°电角度。输出状态是001→011→010→110→100→101,循环变化。每次只变一位。
- 60°布局:三个霍尔相隔60°电角度。输出状态是001→011→111→110→100→000,循环变化。中间会出现111和000。
说白了,60°布局的霍尔信号里,有两个状态(111和000)是「全高」和「全低」。这在120°布局里是无效状态。我刚开始做项目时,拿了个60°的电机,套用120°的换相表,结果电机死活不转。查了半天才发现是霍尔布局搞错了。
避坑指南:我曾经因为霍尔布局选错,导致电机反转且电流巨大。后来我养成了一个习惯:拿到新电机,先用手转动转子,用示波器看霍尔波形。确认是120°还是60°再写代码。
怎么区分呢?很简单:
- 用手慢慢转动转子,观察三个霍尔信号的变化
- 如果看到111和000出现,那就是60°布局
- 如果只有6个有效状态,那就是120°布局
嗯,这里要注意:有些电机厂家会把60°的霍尔信号内部处理成120°再输出。所以最好还是看数据手册,别光靠猜。
实际项目中的经验
我记得有一次调试高速电机,转速到10000RPM以上时,换相开始乱套。后来发现是霍尔信号的上升沿抖动太大,导致多次触发中断。解决办法很简单:加个硬件滤波,或者在软件里做去抖。
我个人习惯在霍尔中断里只做两件事:读状态、查表、写寄存器。其他计算全部放到主循环里。中断里代码越短越好,否则容易丢步。
你想想看,电机转速越高,换相频率就越高。如果中断处理时间太长,下一波换相来了,上一波还没处理完,那就全乱了。
总结一下:六步换相法虽然基础,但坑不少。霍尔布局、换相时序、中断处理,每个环节都可能出问题。我的建议是:先用手转动转子,验证霍尔信号和换相表对不对,再上电跑。这一步能省你半天调试时间。
好了,六步换相就讲到这里。下一章我们聊聊更高级的FOC控制,那才是真正考验算法功底的地方。