
1. 从电刷到无刷为什么换了个换向方式电机就脱胎换骨了很多人第一次接触无刷电机是从拆开一个航模或者四轴飞行器开始的。拆开一看里面就三根线没有传统马达屁股后面那两片碳刷也没有铜换向器转子是一圈磁钢定子是绕好的铜线圈。通电之后它转得飞快而且几乎听不到电刷摩擦的沙沙声。这时候脑子里冒出来的第一个问题通常是没有电刷电流怎么换向转子上的磁场怎么跟着定子转这个问题的答案就是无刷电机整个技术体系的起点。传统有刷电机靠碳刷和换向器做机械换向电流方向是被物理结构强制切换的。无刷电机把这个换向动作从机械结构里拿了出来交给了电子电路去做。换句话说有刷电机是硬件换向无刷电机是软件换向。这个转变带来的连锁反应非常深远没有了电刷摩擦效率上去了寿命上去了噪音下来了但代价是必须有一套电子控制器来告诉线圈什么时候该通电、什么时候该断电。我刚开始接触无刷电机的时候总觉得它比有刷电机高级后来才明白它本质上不是更高级而是把复杂度从电机本体转移到了控制器上。电机本体反而变简单了——定子绕组加转子磁钢没有易损的机械接触件。但控制器要实时知道转子现在转到哪个位置了才能决定下一拍该给哪两相通电。这个知道转子位置的能力就是无刷电机能不能转起来、转得顺不顺的核心。这篇文章适合几类人看一是刚入门电机控制的学生或者爱好者想搞明白无刷电机到底怎么工作的二是做嵌入式开发需要写无刷电机驱动代码的工程师三是做硬件选型需要在有刷和无刷之间做决策的产品开发者。我会从最基本的电磁原理讲起把换向逻辑、转子位置检测、控制策略、实际调试中的坑一层一层拆开。不堆公式但关键的计算和参数会给出具体数字和推导过程让你看完能自己动手算一遍。2. 拆开看本质定子绕组、转子磁钢和那三根线的秘密2.1 定子绕组怎么排布决定了电机是内转还是外转无刷电机的定子铁芯上开有槽槽里嵌着铜线绕组。最常见的三相无刷电机定子绕组按星形或者三角形连接引出三根相线。这三根线不是随便接的它们对应的是三个相位差120度的绕组组。你如果拿万用表量一下三根线之间的电阻通常两两之间的阻值是一样的这说明三相绕组是对称的。绕组的排布方式直接决定了电机的极对数和转矩特性。比如一个12槽的定子配上14极的转子磁钢这是航模上非常常见的外转子无刷电机配置。12个槽里绕三相每相占4个槽绕组按照一定的规律跨槽绕制通电之后在气隙里形成旋转磁场。极对数越多同样转速下电频率越高控制器需要输出的PWM频率也越高但低速转矩会更好。这里有个容易混淆的概念槽数和极数是两个独立的设计参数。槽数说的是定子铁芯上有多少个绕线槽极数说的是转子上一共有多少个磁极N极和S极加起来。极对数则是极数除以2。比如14极的转子极对数就是7。电机的电气转速和机械转速之间的关系是电气频率 机械转速 × 极对数。一个7极对的无刷电机如果机械转速是1000转每分钟那电气频率就是1000除以60再乘以7约等于116.7赫兹。控制器里的换向逻辑必须按照这个电气频率来切换否则就会失步。2.2 转子磁钢的排列方式影响的是反电动势波形转子上的磁钢可以是表贴式的也可以是内嵌式的。表贴式磁钢贴在转子铁芯表面气隙磁场接近方波或者梯形波这种电机通常配六步换向控制也就是常说的方波驱动。内嵌式磁钢埋在转子铁芯内部气隙磁场更接近正弦波适合用正弦波驱动也就是磁场定向控制。反电动势波形这个事很多人一开始不太在意但它直接决定了你该用什么控制方式。表贴式磁钢的无刷电机反电动势波形是梯形波平顶部分比较宽用六步换向的时候在平顶区域通电转矩波动相对小。如果你硬要用正弦波驱动去推一个梯形波反电动势的电机效率不会最优但也能转。反过来内嵌式磁钢的正弦波反电动势电机用六步换向去推转矩脉动就会很明显低速的时候尤其难受。我实测过几个不同型号的外转子无刷电机用示波器抓相反电动势波形表贴式的确实能看到明显的平顶而内嵌式的波形更圆滑。这个波形用示波器看的时候记得要匀速手动旋转转子或者用另一个电机拖着转才能看到稳定的反电动势波形。直接通电转的时候反电动势被驱动电压盖住了看不清楚。2.3 三根相线的通电顺序就是换向的全部秘密无刷电机转起来的本质是定子绕组产生的磁场在空间上不断跳步拉着转子磁钢跟着走。三相无刷电机有六种通电状态对应六个换向步。每一步给两相通电第三相悬空。比如第一步A相正、B相负、C相悬空第二步A相正、C相负、B相悬空以此类推。这六步走完一个循环转子转过一对极的距离。这个六步换向的逻辑可以用一个简单的状态表来表示。假设三相分别叫U、V、W那么六步的通电状态是U正V负、U正W负、V正W负、V正U负、W正U负、W负U正。每一步持续60度电角度。控制器要做的就是按照这个顺序在正确的时间点切换通电状态。切换的时机就是靠转子位置检测来决定的。这里有个细节每一步通电的两相电流方向是固定的但电流大小可以通过PWM来调节。也就是说换向决定的是哪两相通电、电流往哪个方向流PWM决定的是通多少电。这两个维度是独立的。很多初学者会把换向和调速混在一起其实换向是方向问题调速是大小问题分开理解会清晰很多。3. 没有电刷控制器怎么知道转子转到哪了3.1 霍尔传感器最直接但最占地方的位置检测方案霍尔传感器是无刷电机里最常见的位置检测元件。三个霍尔传感器按照120度电角度间隔安装在定子附近转子磁钢转过去的时候霍尔传感器输出高低电平的变化。三个霍尔组合起来每个电周期能给出六个不同的状态码正好对应六步换向的六个位置。霍尔传感器的安装位置非常讲究。它必须和定子绕组的相位对齐否则换向时机就会偏。偏一点点电机还能转但效率会下降发热会增加。偏多了电机可能启动困难或者干脆转不起来。我遇到过一批电机霍尔安装位置有偏差空载转起来看着正常一加负载就失步。后来用示波器同时抓霍尔信号和相反电动势对比相位关系才发现霍尔超前了将近30度电角度。重新调整霍尔位置之后带载能力明显改善。霍尔传感器的好处是简单、直接、成本低低速性能好启动的时候就知道转子位置。缺点是霍尔元件本身怕高温电机内部温度高了之后霍尔可能失效或者输出漂移。另外霍尔传感器占用了电机内部的物理空间对于超小型电机来说有时候放不下。3.2 无传感器检测靠反电动势猜位置省了元件但多了算法无传感器控制是无刷电机里非常热门的方向。它的思路是电机转起来之后悬空的那一相会产生反电动势反电动势的过零点就对应着换向时机。控制器通过检测反电动势的过零点就能推算出转子位置不需要霍尔传感器。这个方法听起来很巧妙但有一个致命的短板电机静止或者转速很低的时候反电动势幅值太小根本检测不到。所以无传感器控制通常需要一个启动过程先强制换向把电机拖到一定转速等反电动势足够大了再切换到无传感器模式。这个启动过程如果做得不好启动失败率会很高尤其是带载启动的时候。我调试无传感器驱动的时候最头疼的就是启动阶段。强制换向的频率爬升曲线要跟电机的转动惯量和负载匹配。爬升太快电机跟不上会失步爬升太慢启动时间太长用户体验差。后来我总结了一个经验先给一个较低的固定频率让电机转起来然后按照一个加速度曲线慢慢升频同时监测反电动势。一旦反电动势过零检测稳定了立刻切闭环。这个切换点不能太早也不能太晚太早反电动势不稳太晚电机可能已经失步了。3.3 两种方案的实测对比什么时候该用霍尔什么时候该省掉对比项霍尔传感器方案无传感器方案低速性能好零速就知道位置差低速反电动势太弱启动可靠性高直接闭环启动依赖启动算法带载启动难成本略高霍尔元件加线缆低省掉霍尔和连接线高温适应性差霍尔怕高温好没有怕高温的元件算法复杂度低查表换向高需要过零检测和启动逻辑适用场景低速大转矩、频繁启停高速风扇、水泵等连续运行这个表是我自己踩坑之后总结的。如果你做的是云台电机或者机器人关节需要低速平稳和频繁启停霍尔方案更稳妥。如果你做的是散热风扇或者水泵一直高速转无传感器方案成本更低可靠性也不差。当然现在也有混合方案低速用霍尔高速切无传感器但算法复杂度会更高。4. 六步换向和磁场定向控制两种驱动思路的取舍4.1 六步换向简单粗暴但够用适合大多数入门场景六步换向是最基础的无刷电机驱动方式。它的逻辑非常直接根据霍尔状态或者反电动势过零点查表决定当前该给哪两相通电。每一步持续60度电角度六步一个循环。实现起来代码量很小一个状态机加一个PWM输出就能搞定。但六步换向有一个固有的问题转矩脉动。因为每一步通电的60度里电流方向不变但反电动势是变化的所以转矩不是恒定的。在换向的瞬间电流需要从一相切换到另一相如果切换太快会产生电压尖峰切换太慢中间会有一个死区转矩掉下去。这个转矩脉动在低速的时候特别明显你能听到电机发出咔咔的声音就是换向脉动引起的。我刚开始写六步换向代码的时候换向时机就是按照霍尔状态变化来触发的。后来发现霍尔状态变化的那一刻其实并不是最优的换向点。因为霍尔安装有公差而且霍尔本身有响应延迟。更好的做法是在霍尔状态变化之后再延迟一个可调的角度再换向。这个延迟角度需要根据具体电机来调调好了转矩脉动会小很多。这个技巧在航模电调里很常见叫进角调整。4.2 磁场定向控制把电流拆成两个分量转矩控制更精细磁场定向控制英文缩写FOC是现在中高端无刷电机驱动的主流方案。它的核心思想是把三相电流通过坐标变换拆成两个分量一个用来产生转矩一个用来产生磁场。然后分别控制这两个分量让转矩分量跟着期望转矩走磁场分量保持为零或者一个固定值。这个思路听起来抽象但用起来效果非常明显。FOC驱动下的无刷电机低速可以转得非常平稳几乎没有六步换向那种咔咔声。转矩响应也快因为电流是连续控制的不是六步那种跳变。但代价是算法复杂了很多需要做克拉克变换、帕克变换、空间矢量调制还要两个电流环的PI调节器。对控制器的算力要求也高普通的8位单片机跑不动至少得用32位的。我实际对比过同一个电机在六步换向和FOC下的表现。六步换向空载电流大概0.3安培FOC空载电流只有0.15安培左右效率差异很明显。带载的时候FOC的温升也比六步换向低不少。但FOC的调试难度确实大电流环的PI参数如果调不好电机会啸叫或者震荡。我调FOC的时候先用一个很小的电流给定慢慢加大同时用示波器看相电流波形直到波形接近正弦才算调好。4.3 选型建议不是越复杂越好匹配需求才是关键很多人一上来就想上FOC觉得六步换向太低级。但实际项目里选哪种方案要看需求。如果你的应用对噪音和转矩平稳性要求不高比如只是一个散热风扇六步换向完全够用代码简单调试快成本低。如果你做的是云台、机器人关节、电动工具对低速平稳性和转矩响应有要求那FOC是更好的选择。还有一个折中方案正弦波驱动。它不需要完整的FOC坐标变换只是把六步换向的方波电流改成正弦波电流换向点还是靠霍尔或者反电动势。这样转矩脉动比六步换向小算法又比FOC简单。我有些项目就是用正弦波驱动效果介于两者之间性价比不错。5. 从零调试一台无刷电机我踩过的坑和总结的步骤5.1 上电之前先用示波器和万用表做三项检查拿到一台无刷电机不要急着上电。先做三项检查第一用万用表量三根相线之间的电阻确认三相绕组没有断路或者短路两两之间的阻值应该基本一致。第二用手转动转子感受一下有没有卡顿或者异响轴承如果坏了转起来会有明显的阻力。第三用示波器抓相反电动势波形匀速转动转子看三相反电动势是否对称幅值是否接近。这三项检查花不了几分钟但能避免很多后续的麻烦。我有一次拿到一个二手电机量电阻发现两相之间阻值明显偏小拆开一看绕组绝缘漆破损匝间短路了。如果直接上电轻则驱动报错重则烧控制器。还有一次电机转起来有周期性异响后来发现是转子磁钢有一块松动了高速转的时候离心力把它甩偏了。5.2 霍尔相位校准用示波器同时看霍尔和反电动势如果电机带霍尔下一步就是校准霍尔相位。方法很简单用示波器的一个通道看某一相的反电动势另一个通道看霍尔信号匀速转动转子观察霍尔跳变沿和反电动势过零点之间的关系。理想情况下霍尔跳变应该发生在反电动势过零点附近具体超前还是滞后取决于控制策略。我习惯把霍尔跳变调整到反电动势过零点之后30度电角度左右这样换向的时候电流建立更充分转矩脉动小。但这个角度不是固定的不同电机、不同控制方式会有差异。调整的方法是改变霍尔的安装位置或者如果霍尔是固定在PCB上的那就只能通过软件里加延迟来补偿。软件补偿的好处是不用拆电机坏处是延迟角度会随转速变化高速的时候补偿不准。5.3 启动调试从强制换向到闭环切换的完整过程无传感器电机的启动调试是最考验耐心的环节。我的做法是分三步第一步用很低的频率强制换向让电机慢慢转起来观察电流波形确认没有异常。第二步逐步提高强制换向的频率同时监测反电动势找到反电动势幅值足够大的转速点。第三步在这个转速点切换到闭环观察切换瞬间电流和转速有没有突变。这个过程中最容易出问题的地方是切换点。切换太早反电动势还不稳定闭环会失步切换太晚强制换向和实际转子位置偏差太大切换瞬间会抖一下。我一般会在反电动势过零检测连续稳定五个周期之后才允许切换。这个连续稳定的判断条件可以设得严一点宁可多等几个周期也不要贸然切换。5.4 带载测试电流环和速度环的PI参数怎么调电机空载转起来只是第一步带载之后才是真正的考验。带载测试的时候先加一个小负载观察电流和转速的响应。如果电流震荡说明电流环的PI参数太激进比例增益太大或者积分时间太短。如果响应太慢负载加上去之后转速掉了很多才恢复说明比例增益太小。我调PI参数的习惯是先把积分时间设得很长相当于只有比例控制然后慢慢加大比例增益直到电流开始震荡再往回退一点。比例增益定下来之后再慢慢减小积分时间直到消除稳态误差同时不引起震荡。速度环的调试类似但速度环的输出是电流环的给定所以速度环的带宽要比电流环低一般取电流环带宽的五分之一到十分之一。6. 那些说明书不会告诉你的实战经验6.1 换向死区不处理会烧管处理过头会掉转矩六步换向的每一步切换都涉及一相关断、另一相开通。如果关断和开通同时进行上下桥臂有可能瞬间直通也就是常说的 shoot through电流直接从电源正极流到负极管子瞬间就烧了。所以必须设置死区时间让关断先完成再开通。死区时间一般是几百纳秒到一微秒具体看管子的开关速度。但死区时间不是越长越好。死区期间电流通过续流二极管走会产生额外的损耗而且电压波形会畸变。死区太长低速的时候转矩会明显下降。我一般会把死区时间设到刚好够用然后用示波器看桥臂中点电压波形确认没有直通尖峰同时死区引起的畸变可以接受。6.2 PWM频率的选择高了开关损耗大低了电流纹波大PWM频率决定了电流的纹波大小和开关损耗。频率高电流纹波小电机运转更平稳但开关损耗大控制器发热多。频率低开关损耗小但电流纹波大低速的时候能听到明显的啸叫。对于大多数无刷电机PWM频率在8千赫兹到20千赫兹之间比较合适。8千赫兹以下人耳能听到啸叫20千赫兹以上开关损耗明显增加。我一般会选16千赫兹左右刚好在听觉范围边缘开关损耗也可以接受。如果电机电感比较小电流纹波大可以适当提高频率到20千赫兹以上。6.3 电容选型母线电容不是越大越好要看纹波电流母线电容的作用是吸收换向时产生的电压尖峰和纹波电流。很多人觉得电容越大越好其实不然。电容太大上电瞬间的充电电流会很大可能触发电源的过流保护。而且大电容的体积也大布局上占地方。选母线电容关键看两个参数耐压和纹波电流承受能力。耐压要高于母线电压的1.5倍以上留足余量。纹波电流承受能力要大于实际纹波电流的有效值。实际纹波电流和电机的相电流、PWM频率、换向方式都有关系可以用示波器抓母线电流波形然后估算有效值。我一般会选低ESR的电解电容或者固态电容并联一个小的陶瓷电容滤高频。6.4 温度保护别等冒烟了才想起来无刷电机和控制器都有温度极限。电机绕组的绝缘等级决定了最高允许温度一般B级绝缘是130度F级是155度。控制器上的功率管和电解电容也有温度限制电解电容一般不超过105度。我习惯在电机绕组里埋一个NTC热敏电阻在控制器功率管附近也放一个。温度超过阈值就降功率或者停机。这个保护逻辑看起来简单但能避免很多烧机事故。有一次我测试一个电机负载加得太大绕组温度一路升到140度NTC触发了降功率保护电机自动降速避免了一场火灾。如果没有这个保护绕组绝缘可能就击穿了。7. 无刷电机在几个典型场景里的表现差异7.1 航模动力高转速、高功率密度散热是瓶颈航模上用的无刷电机特点是转速极高动辄几万转功率密度很大。这种电机通常极对数少绕组匝数少线径粗目的是降低电感让电流能快速建立。控制器方面航模电调一般用六步换向因为转速太高FOC的算法来不及算。换向进角需要根据转速动态调整转速越高进角越大否则反电动势会限制电流。航模电机的散热是个大问题。高速旋转的时候转子与空气摩擦产生大量热量而且电机体积小散热面积有限。我见过不少航模电机飞完一块电池下来外壳烫得手都摸不得。所以航模电机一般会设计成外转子结构转子外壳直接暴露在气流里靠飞行时的气流散热。地面测试的时候如果没有气流电机很容易过热。7.2 云台稳定低速平稳性是第一优先级FOC几乎是标配云台电机的要求和航模电机完全相反。云台需要极低的速度甚至要能停在任意角度不动。这就要求转矩脉动极小否则画面会抖。所以云台电机几乎都用FOC驱动而且极对数很多绕组匝数多电感大电流纹波小。云台电机的另一个特点是中空轴设计中间要过线。这种结构对绕组的排布有特殊要求槽满率不能太高否则线过不去。我拆过一个云台电机定子绕组绕得非常整齐每槽的铜线根数都是精确计算的留出了中间的空心通道。这种电机的转矩常数很高同样的电流能产生更大的转矩适合低速大转矩的场景。7.3 电动工具大转矩、宽调速范围启动电流要限住电动工具里的无刷电机需要很大的启动转矩而且调速范围要宽。启动的时候电流会冲到很大如果不限制电源和控制器都受不了。所以电动工具的控制器一般会有软启动逻辑让电流慢慢爬升而不是一下子给满。电动工具还有一个特点是负载变化剧烈。钻头卡住的时候电流瞬间飙升控制器要能快速响应要么限流要么停机保护。我调试过一个电动工具的驱动限流阈值设得太高钻头卡住的时候电流冲到30安培才保护管子已经快扛不住了。后来把限流阈值降到20安培响应时间也缩短了保护效果就好多了。8. 写在最后一些零散但有用的经验调试无刷电机这些年我最大的体会是理论很重要但手上的感觉更重要。同一个型号的电机不同批次的霍尔安装位置可能有细微差异反电动势波形也可能不完全一样。你不能指望一套参数打天下每换一个电机至少要把霍尔相位和换向进角重新确认一遍。还有一个经验是示波器比万用表有用得多。万用表只能看稳态的电阻和电压示波器能看到换向瞬间的波形、反电动势的过零点、PWM的纹波。很多问题用万用表量半天量不出来用示波器一看波形就明白了。我建议做无刷电机调试的人手边至少有一台双通道示波器最好带电流探头。最后说一个关于参数整定的心得不要一次改多个参数。调PI的时候先调比例再调积分调换向进角的时候先固定转速再变负载。每次只改一个变量观察效果记录下来。这样虽然慢但能建立起参数和现象之间的对应关系。时间长了你看到波形异常就能大概猜出是哪个参数的问题。这种直觉是调试无刷电机最值钱的东西。