3. 离线校准方法:直流定位法(DC alignment)的原理与实现步骤

直流定位法,圈里人常叫它 DC alignment。这名字听着挺唬人,其实原理特别朴素——你给电机定子绕组通一个固定的直流电流,让它自己产生一个静止的磁场,把转子硬生生“拽”到一个已知的电气角度上。

说白了,就是暴力对零位。我刚开始做 FOC 的时候,总觉得这方法太粗暴,会不会把电机搞坏?后来发现,只要参数选对,这反而是最可靠、最不容易出幺蛾子的校准方式。

3.1 原理:为什么直流能把转子“锁”住?

咱们先回忆一下电机的基本原理。你给三相绕组通入直流电,比如 A 相接正,B 相和 C 相接负,定子内部就会形成一个固定的合成磁动势矢量。这个矢量指向一个确定的方向,比如 0° 电角度。

转子是永磁体,它自己也有磁场。两个磁场之间会产生转矩,让转子转到和定子磁场对齐的位置。一旦对齐,转矩就变成零,转子就停在那儿不动了。

核心结论: 直流定位法就是利用磁阻最小原理,让转子自然收敛到定子磁场的方向。此时,编码器读到的位置,就是我们要找的零位偏移量。

这里有个细节我提一下。你通入的电流必须足够大,能克服电机的齿槽转矩和负载摩擦力。否则转子可能卡在半路上,对不准。嗯,后面我会讲电流怎么选。

3.2 实现步骤:手把手教你做 DC alignment

我个人习惯把 DC alignment 拆成 5 步。每一步都有坑,我踩过不少,下面给你列清楚。

  1. 步骤一:确定注入电流矢量方向

    通常我们选择 A 相轴线作为 0° 参考。也就是让定子磁场指向 A 相绕组的正方向。对应的电流分配是:I_A = I_ref,I_B = -0.5 * I_ref,I_C = -0.5 * I_ref。这样合成矢量就在 0°。

  2. 步骤二:注入直流电流

    通过 PWM 控制逆变器,把上面算好的电流注入到电机绕组里。注意,要使用电流闭环控制,确保实际电流等于目标值。

  3. 步骤三:等待转子稳定

    转子从当前位置转到目标位置需要时间。你需要等待它完全停稳。怎么判断停稳?看编码器读数,连续 N 个采样周期的数值变化小于 1 个脉冲,就算稳定了。

  4. 步骤四:记录编码器位置

    稳定后,读取编码器的原始计数值。这个值就是对应 0° 电角度的位置。

  5. 步骤五:计算偏移量并保存

    偏移量 = 0° 对应的编码器值。把这个值写入非易失性存储器(比如 Flash 或 EEPROM),以后每次上电直接读取。

我的经验: 步骤三里,不要只靠延时等待。我见过有人延时 500ms 就认为稳定了,结果负载大的时候根本没到位。一定要用编码器读数做判稳条件,这才是工程思维。

3.3 注入电流大小选择:小了拉不动,大了烧电机

电流选多大?这是 DC alignment 里最关键的参数。选小了,转子被齿槽转矩卡住,对不准;选大了,绕组发热严重,搞不好会烧 MOS 管。

我一般按下面这个逻辑来选:

考虑因素 说明 推荐做法
齿槽转矩 电机本身的定位力矩,需要克服 电流产生的转矩至少是齿槽转矩的 3 倍
负载摩擦力 外部负载带来的阻力 如果带载校准,需要额外增加电流
绕组热容量 电流流过绕组会发热 定位时间短,可以用额定电流的 50%~80%
磁路饱和 电流太大,铁芯饱和,定位精度反而下降 不要超过额定电流的 100%

我常用的经验公式:

I_dc_alignment = 0.7 * I_rated
其中 I_rated 是电机的额定相电流(有效值)

举个例子,一个额定电流 5A 的电机,我一般用 3.5A 做 DC alignment。这个值既能克服大多数齿槽转矩,又不会让绕组在几秒钟内过热。

我曾经踩过的坑: 有一次给一个 200W 的小电机做校准,我图省事用了 1A 电流。结果转子死活对不准,编码器读数来回跳。后来一查,那个电机的齿槽转矩特别大,1A 根本拉不动。换成 2.5A 后,一次就稳了。

3.4 定位时间设定:不是越长越好

定位时间包括两部分:转子从初始位置转到目标位置的动态过程时间,加上稳定判定的等待时间。

动态过程时间取决于电机的机械时间常数和负载惯量。对于大多数中小功率电机(几十瓦到几百瓦),这个时间通常在 100ms~500ms 之间。

稳定判定时间我一般设 50ms~100ms。也就是连续 5~10 个采样周期(每个周期 10ms)编码器读数都不变,就认为稳定了。

总定位时间建议:

  • 空载:200ms ~ 500ms
  • 带轻载:500ms ~ 1s
  • 带重载:1s ~ 2s

你可能会问,时间设长一点不是更保险吗?理论上是的,但实际工程中要考虑产线节拍。如果每个电机校准花 2 秒,一天生产 10000 台,那就是 5.5 小时的纯校准时间。所以,在保证精度的前提下,时间越短越好。

3.5 整体流程:一张图看懂

下面这张 SVG 流程图,把 DC alignment 的完整逻辑串起来了。你可以对照着看,每一步做什么、判断条件是什么,一目了然。

直流定位法(DC alignment)流程图 直流定位法(DC alignment)完整流程 开始校准 设置电流矢量方向(0°) 注入直流电流 I_ref 等待转子稳定(判稳) 编码器稳定? 否(继续等待) 是 记录编码器位置值 校准完成 关键参数 • 电流大小:0.7×额定电流 • 定位时间:200ms~2s • 判稳条件:编码器读数不变

3.6 几个容易忽略的细节

最后,我再唠叨几个实战中容易翻车的地方:

  • 电流环带宽要够: 注入电流时,电流环的带宽至少要 1kHz,否则实际电流跟不上指令,定位效果会打折扣。
  • PWM 死区补偿: 小电流时,死区效应会导致电流波形畸变。我建议在 DC alignment 时把死区补偿打开,或者干脆用较大的电流来规避这个问题。
  • 多极对电机: 对于极对数大于 1 的电机,DC alignment 只能确定一个电角度周期内的位置。如果编码器是多圈绝对值型,还需要额外的逻辑来确认机械零位。
  • 温度影响: 绕组电阻随温度变化,同样的电压指令在不同温度下产生的电流不一样。所以一定要用电流闭环,不要用开环电压。

我的习惯: 每次做完 DC alignment,我都会把编码器值打印出来看一眼。如果连续做 5 次,每次偏差都在 1~2 个脉冲以内,说明校准质量很好。如果偏差很大,那就要检查电流是否稳定、机械连接是否松动。

好了,DC alignment 的原理和实现就讲到这里。这个方法虽然简单,但用好了,能解决 FOC 里 80% 的角度偏差问题。剩下的 20%,我们后面几章再聊。