无刷电机AX BY CZ磁轴详解:从120°轴系到FOC坐标变换

发布时间:2026/11/4 10:53:29
无刷电机AX BY CZ磁轴详解:从120°轴系到FOC坐标变换

搞无刷电机控制的,基本绕不开“轴”这个字。前阵子有个朋友拿着驱动器调试记录跑过来问我:“AX、BY、CZ 是不是按垂直轴线划分的?我一直以为是三根互相垂直的轴,可对着电机看了半天也没找到。”我当时就笑了,这个问题几乎每个入门 BLDC 的人都会踩一次。答案是:AX、BY、CZ 不是互相垂直的三个坐标轴,而是三相无刷电机定子绕组的三条磁场轴线,空间上互差 120° 电角度。

真正互相垂直的是后面控制里用到的 αβ 静止轴和 dq 旋转轴。这三个“AX、BY、CZ”的名字,来源于三相绕组的端子标号,也直接决定了换相时序、霍尔安装位置、FOC 坐标变换的零点。无论你是在调方波控制的无感方案,还是在写 FOC 的矢量控制,把这三条轴的物理意义吃透,后面的调试会顺很多。这篇文章我从绕组结构讲起,一路讲清楚 120° 轴系、Clarke/Park 变换、电角度极对数这些绕不开的东西,最后整理几个现场调试最容易翻车的轴系误区。全文没有复杂的矩阵推导,适合刚接触电机控制的嵌入式工程师、正在做 BLDC 驱动板的硬件攻城狮,以及还在跟电机模型死磕的学生。

1. AX BY CZ 到底指哪里:从绕组结构说起

1.1 绕组怎么绕,“AX”就怎么来

你拆开一台无刷电机的定子,看到的是一圈开槽硅钢片,槽里嵌着三组漆包线线圈。这三组线圈分别叫 A 相绕组、B 相绕组、C 相绕组。三相星形连接时,三个绕组的一端接在一起形成中性点 N,另外三个端子引出就是电机线的三根相线。但在电机内部图纸和绕组展开图里,每一相绕组的两端通常标成:A 相首端为 A、末端为 X;B 相首端为 B、末端为 Y;C 相首端为 C、末端为 Z。

“AX”就是 A 相绕组的完整代号,意思是“A 相绕组从首端 A 到末端 X 的整个线圈组”。电流从 A 端流入、从 X 端流出,和从 X 端流入、从 A 端流出,产生的磁场方向正好相反。所以 AX 并不是一个空间里的“坐标轴名字”,它更像是一个绕组的物理身份标签。电机设计图纸里标注的 AX、BY、CZ,就是告诉你这三套线圈分别负责产生那一相的磁动势。

很多新手把 AX、BY、CZ 理解成 XYZ 直角坐标轴,是因为中学数学里 X、Y、Z 三轴互相垂直。但电机三相绕组从来都不是按 90° 来布的,否则三相合成的旋转磁场根本转不起来。三相系统要形成圆形旋转磁场,三个绕组必须隔 120° 电角度,这就是“三相”这个词背后的几何意义。

1.2 磁场轴线不是一根金属轴

既然 AX 是“A 相绕组的磁轴”,那这个轴到底在电机的哪个位置?它是不是定子铁芯上的一根实心杆?不是的。磁场轴线是一根数学上的虚拟方向线,代表的是“A 相绕组通电后,它产生的磁场在空间中的主要方向”。

你想象一下:把 A 相绕组看成一个通电螺线管,电流在定子槽里绕行,会沿径向方向产生一个磁动势向量。这个向量所在的方向,就是 A 相磁轴的方向。B 相绕组、C 相绕组同样各自有一个磁动势方向。这三个方向在空间上相差 120° 电角度,而不是在某个圆周上均匀分布的三个机械点。

这里有个容易混淆的点:磁场轴线的位置与绕组的具体槽数、嵌线方式有关,也受极对数影响。对 2 极电机来说,三相磁轴在圆周上确实相隔 120° 机械角度;但对 4 极电机,一个电周期对应半个机械圆周,所以三相磁轴在机械角度上只相隔 60°。这就是为什么搞控制的人总把“电角度”挂在嘴边,而不是直接说“空间角度”。

1.3 为什么是 120°,而不是 90° 或 180°

三相电的电气相位本来就差了 120° 电角度:A 相电流落后 B 相 120°、B 相落后 C 相 120°、C 相再落后 A 相 120°。要让三个时间上相差 120° 的正弦电流,合成为一个大小恒定的旋转磁场,就必须让三相绕组在空间上也相差 120°。这是数学上的必然结果,不是设计人员随便拍的。

如果像直角坐标系那样把三根轴摆成 90°,三个磁动势向量无论怎么合成,都不可能得到一个圆形旋转磁场。工程上常常听到“椭圆磁场”“转矩脉动大”“电机噪音大”,很多时候就是因为某一相磁动势的方向没有落在正确的 120° 位置——这通常发生在维修电机时嵌线错位、下线跨距不对,或者自己不正规地重绕了绕组。

搞电机驱动的人不需要会自己绕电机,但需要记住一个基本结论:AX、BY、CZ 三条线互成 120° 电角度,它们共同围成一个平面里的三相轴系,这个轴系是静止的(相对定子),也是后面所有坐标变换的起点。

2. 坐标系才是真正垂直的部分:从 abc 到 αβ 再到 dq

2.1 静止三相轴系:为什么控制里要“减一相”

AX、BY、CZ 三条互成 120° 的静止轴,组成了三相静止坐标系,控制领域习惯写成 abc 坐标系。abc 坐标系的三个轴不是互相垂直的,这给计算带来了麻烦:力矩、电流、电压这些物理量在三个互不正交的轴上求解,矩阵里全是带根号的耦合项。

我最早接触坐标变换时也懵:好好的三相电流,为什么要转成两相?原因是,三相绕组在空间上互成 120°,而实现同样旋转磁场的条件,最少只需要两个互相正交的轴就能描述。三个非正交量里其实有一个冗余:任意时刻三相电流之和为零(星形连接下没有中线),所以真正独立的信息只有两个。

这就是 Clarke 变换的动机:把三相静止轴系 abc,投影到两相静止轴系 αβ 上。α 轴通常与 A 相磁轴重合,β 轴逆时针超前 α 轴 90°。这时候 αβ 两轴才是真正互相垂直的。很多人在示波器上看到两路相差 90° 的正弦波形,那多半是 αβ 坐标系下的信号,不是直接测到的相电压相电流。

Clarke 变换的等幅值形式也很简单:

  • Iα = Ia - (1/2)Ib - (1/2)Ic
  • Iβ = (√3/2)(Ib - Ic)

如果三相电流平衡,Iα 就等于 Ia。这个“α 轴跟 A 相磁轴重合”的约定,直接影响编码器零点的标定,后面我会专门讲。

2.2 Park 变换:真正转着的垂直轴

αβ 轴虽然垂直,但还是静止的。电机转子在转,定子电流合成出的磁场如果始终静止,就没办法和转子磁场保持稳定的相对位置,也就不可能持续出力。为了让控制变量变成直流分量,还要再做一次变换,把 αβ 静止坐标系旋转起来,跟转子磁场同步转,这就是 Park 变换,得到 dq 轴系。

d 轴方向指向转子永磁磁场的方向,也叫直轴;q 轴领先 d 轴 90° 电角度,叫交轴。d 轴和 q 轴是严格垂直的。但请注意,这个垂直和 AX、BY、CZ 没有任何关系:AX、BY、CZ 是定子三相磁轴,d、q 是转子旋转坐标系的轴。前者静止、后者跟着转子转。

FOC 控制里,id 控制励磁分量,iq 控制转矩分量。为什么大家天天调电流环就调这两个数?因为它们解耦了:永磁同步电机中电磁转矩基本正比于 iq,而 id 通常被指令压到 0(表贴式电机),或者用来做弱磁控制(内置式电机)。如果你在调试某个电机时发现电流环设定 id=0,iq 给了值电机却不转,十有八九是 d 轴零点没对准,把转子磁场方向认错了。

2.3 机械角度、电角度和极对数的换算关系

电角度 θe 和机械角度 θm 之间有个绕不开的系数:极对数 p。

θe = p × θm

这解释了为什么霍尔传感器在定子上不是随便间隔 60° 机械角度的,而是要按 120°/p 的机械角度来布。如果是一台 4 极电机(p=2),三个霍尔之间的机械间隔就是 60°;2 极电机才是 120°。换相逻辑、FOC 电角度反馈读数,全部以电角度为基准。

这里还牵扯出另一个容易懵的坑:“换相时每 60° 电角度跳一次扇区”的 60°,跟三相磁轴之间的 120° 不是一回事。六步换相里,每 60° 电角度,转子位置跨越一个扇区,此时需要切换一次导通状态;而三相绕组的空间位置间隔是 120° 电角度。这两个数一个是“事件发生间隔”,一个是“空间几何位置”,混在一起很多人就开始怀疑自己是不是把接线接错了。我自己调试时习惯先在纸上画一圈电角度刻度,标注好三相磁轴位置和六个扇区边界,再去看示波器波形,思路会清楚非常多。

3. 实际项目里这些轴怎么用:换相、FOC 与霍尔对齐

3.1 六步换相:反电动势过零点是怎么跟三相轴线对应的

无感方波控制(六步换相)不计算矢量角度,只判断转子在哪个扇区。判断方法最常用是反电动势过零检测:当转子磁场扫过某相磁轴时,该相反电动势正好过零,再过 30° 电角度就该换相了。

把这个过程落到 AX、BY、CZ 三条磁轴上来看:转子永磁体转一圈,它的磁场会挨个扫过 AX、BY、CZ 三条轴线,每扫过一次,对应相的反电动势就从正变负或从负变正。所以只要检测到三相反电动势的过零点顺序,就能大致知道转子的电角度区间。六个扇区边界,正好在三相磁轴的 0°、60°、120°、180°、240°、300° 这些位置附近。

实操中,很多人用比较器加定时器捕获反电动势过零信号。但有个细节:过零点检测出来之后不能立刻换相,因为此时定子磁动势方向和转子磁场方向夹角过小,转矩太小,需要延迟 30° 电角度再换相。这个延迟时间不是固定数,而是根据当前转速算出来的:延迟时间 = 30° 对应的电角度 / 当前转速(换算成角速度)。转速越高,延迟时间越短。我见过不少新手的板子,电机转起来之后电流波形很烂,电机嗡嗡响,就是省了这个 30° 相位补偿,或者只做了一个固定延时,导致高速时严重滞后。

3.2 FOC 控制里,αβ 和 dq 怎么配合

FOC 的电流采样电流先做 Clarke 得到 αβ,再结合转子角度做 Park 得到 id、iq。这里转子角度的来源就非常关键:它必须是真实转子磁场位置的电角度,而不是随便一个光电编码器的机械角度。如果你的编码器只输出机械角度,必须乘以极对数 p,再减去一个初始零点偏置,才能送给 Park。

初始零点偏置是什么?就是“编码器 0 位对应的转子磁场方向和 A 相磁轴的夹角”。标定的办法很多:可以给电机通一个固定的 d 轴电流指令,让转子锁到 d 轴与定子 A 相磁轴对齐的位置,再记下编码器角度;也可以反拖电机用示波器看反电动势过零,同步记录编码器读数。不管哪种方法,核心都是把“转子的实际磁场方向”和“控制器里认为的 d 轴方向”对上。

如果没有对齐,最常见的故障是:电机低速抖动、电流幅值很大但转矩很小、带载时失步、甚至上电瞬间反转。而且这种故障是“慢速现象”,容易被误判成硬件问题。我之前接过一个案子,客户说电机空载正常,带载就啸叫,换了驱动板也如此。查到最后就是编码器零点偏置差了 15° 电角度,带载后 iq 和真实转矩之间存在夹角,电流环疯狂拉升裕量才导致啸叫。把偏置改准之后,电流波形立刻干净了。

3.3 霍尔传感器和三相轴线的对应关系

霍尔传感器在定子上的安装位置,也应该用三相磁轴来理解。三个霍尔元件通常安装在定子的 A、B、C 三相磁轴位置(或略微偏移)。转子磁极扫过这些霍尔时,输出高低电平组合,就得到 6 种扇区状态码。

接线时务必注意:霍尔信号线 A、B、C 对应的是三相磁轴 A、B、C,不是随便接驱动器上的三个霍尔输入。接错之后,换相表看起来“有规律”,但实际导通时刻全部错位,电机要么完全不动,要么像卡住一样一抽一抽。我调试无刷电机时的习惯是,先用手慢慢转动转子,用示波器同时抓三个霍尔输出和其中一相反电动势波形,确认霍尔翻转时刻与反电动势过零点的相位关系。如果反电动势过零发生在霍尔翻转前后 30° 电角度的位置,说明霍尔装得没有大问题;如果差得很远,就要怀疑霍尔电气角度偏了或者相序反了。

霍尔扇区状态跟三相轴线的这种对应关系,也是为什么底层驱动库里的“换相表”写起来非常讲究。网上的换相表模板很多,但直接套用很可能转子方向反了,因为同一个霍尔状态码在不同电机会对应不同扇区,取决于霍尔是 60° 间隔安装还是 120° 间隔安装,以及霍尔元件本身是输出高电平有效还是低电平有效。真按教科书写死,换电机必炸。

4. 调试时最容易翻车的几个“轴”误区

4.1 误区:把 AX BY CZ 当成 XYZ 直角坐标

这是最基础也最常见的误解。每次有人问“AX、BY、CZ 是不是垂直轴”,我都建议他把“电角度”三个字放在最前面。三相绕组轴线和三相电流相位都是 120° 电角度;而 αβ、dq 才是真正正交的轴系。如果你正在看 FOC 资料,看到 d 轴和 q 轴垂直,千万别往回套:那说的不是三相绕组轴线。

从调试角度讲,怎么验证自己对轴系的理解对不对?很简单。锁住电机转子,给驱动器发一个固定的电角度指令(比如让 d 轴角度等于 0°),然后手动缓慢旋转编码器角度,观察电机有没有一个明显的“锁定-受阻-松脱”过程。如果电机没有跟随角度变化的锁定感,说明轴系方向定义错了,要么 A 相磁轴和控制器 α 轴没对齐,要么电角度方向跟转子旋转方向相反。这种小实验在电机带载状态不稳时特别有用,能快速排除软件问题。

4.2 误区:电角度与机械角度的零点没对齐

机械角度零点,通常是编码器信号中的 Index 或 Z 信号位置;电角度零点,则是 d 轴与 A 相磁轴重合的位置。两者几乎不可能天然重合,必须人为补偿。很多控制代码里有一个 angleOffset 参数,用途就是这个。这个参数标定出来的值如果差 90° 电角度,你的 id 和 iq 就完全互换角色:你以为在给 iq 转矩电流,实际上在给 id 励磁电流,电机就像个弹簧一样来回抖。

现场标定时我建议搞一个固定流程:第一步,把控制器电流环目标设为 iq=0、id 给一个很小的正电流(要小于电机额定,防止发热);第二步,慢慢转动转子,记录下转子停稳时编码器角度,这个角度就是“d 轴实际方向对应的编码器值”;第三步,如果想让编码器零点对应的电角度为 0°,把 angleOffset 设为负的这个角度;第四步,上电后给 iq 小电流,确认转子能正常朝指定方向输出转矩。整个过程用调试器看着角度变量来操作,比盲调快得多。

4.3 排查思路与实操建议

遇到电机转不动、转起来像“抽风”,不要一上来就怀疑芯片烧了。总结一条我惯用的排查顺序:

  1. 先确认三相相序。拿示波器抓母线电压和三相端电压,看波形是不是互差 120° 电角度。如果是三路一样的波形,相序接错是头号嫌疑。
  2. 再看霍尔或编码器。用手慢慢转转子,检查霍尔状态码是不是按 1-3-2-6-4-5 这类顺序循环(具体顺序跟霍尔安装方式有关),顺序乱跳就是霍尔接线或者供电问题。
  3. 然后是反电动势。示波器探头接电机任意一相线,另一根接中性点,手动转转子,看到正弦波里嵌着脉冲毛刺就说明可能有匝间短路或接地不良;正常情况是一段一段干净的梯形波。
  4. 最后才怀疑控制参数。PID 参数给得过大,电流环震荡,也会出现类似换相错误的现象,但波形上会有明显的谐波尖峰。

还有个很实用的技巧:准备一台可以空转的电机,把相线拆掉,用手转动转子,用示波器同时测三相线电压。如果三路波形的峰峰值一致、相位间隔均匀,再去做代码层面的对齐,能把硬件问题提前过滤掉。这个习惯帮我避免了很多次“软件改了半天结果发现是电机接线短路”的无用功。

实际调试时,我还有一个屡试不爽的小经验:用一支记号笔在电机尾端轴承座上画出转子初始位置标记,每做一次零点标定就做一个新标记,避免下次更换编码器或霍尔后忘记原来的零点位置。很多项目板子换个人接手就乱,不是软件不行,而是现场没有任何物理基准。把轴系关系理解成“电角度空间里的几何关系”之后,这些问题其实都有规律可循,每次遇到异常都先回到三相磁轴和 120° 这个基本框架上想一遍,大概率比翻代码更快找到根因。