4. 离线标定法:通过注入直流电流定位磁极、利用反电动势过零点校准、手动补偿表的建立
聊完了在线补偿,咱们来看看另一种思路——离线标定。说白了,就是在电机正式跑起来之前,先把电角度偏差摸清楚,做成一张表存起来。运行时直接查表,省去在线计算的麻烦。
我个人习惯把这种方法叫做「笨办法里的聪明招」。为什么这么说?因为它的原理简单,实现起来也不复杂,但效果往往出奇的好。我在一个伺服项目里用过,位置精度从原来的几度误差直接压到了0.5度以内。
4.1 直流定位法:给电机一个「初始姿态」
离线标定的第一步,是让电机转子停在一个已知的、可重复的位置。怎么做?注入直流电流。
你想想看,给电机三相绕组通入一个固定的直流电流矢量,会产生一个静止的磁场。这个磁场会拉着转子转到某个特定位置。只要电流矢量的方向是确定的,转子停的位置就是确定的。
具体操作步骤是这样的:
- 选择电流矢量方向:通常选在A相轴线上,也就是给A相通正电流,B、C相通负电流(大小各为一半)。
- 注入电流:缓慢增加电流到目标值,保持1~2秒,让转子稳定下来。
- 记录编码器值:此时编码器输出的位置值,就是电角度0°对应的机械位置。
- 重复验证:换个方向再试一次,比如B相轴线,看转子是否停在预期位置。
4.2 反电动势过零点校准:用物理信号「对表」
直流定位法虽然简单,但精度有限。为什么?因为电流矢量和转子磁极之间,总存在一个微小的角度差,这是由电流环的响应延迟和死区效应造成的。
那怎么校准呢?我的做法是用反电动势过零点作为参考基准。反电动势是电机自己产生的电压信号,它和转子磁极的位置是严格同步的,不受控制器延迟影响。
校准流程是这样的:
- 拖转电机:用外力(或者让电机空转)把电机拖到一个稳定的转速,比如500rpm。
- 检测反电动势过零点:用比较器或者ADC采样三相端电压,找到每一相反电动势过零的时刻。
- 对比编码器值:在过零时刻,记录编码器的位置值。理论上,A相反电动势过零时,电角度应该是0°(或180°,取决于定义)。
- 计算偏差:实际编码器值和理论值之间的差,就是电角度偏差。
| 校准方法 | 精度 | 适用场景 | 缺点 |
|---|---|---|---|
| 直流定位法 | ±2° ~ ±5° | 快速标定、低精度要求 | 受电流环延迟影响 |
| 反电动势过零点 | ±0.5° ~ ±1° | 中高精度、有拖转条件 | 需要外部拖转或空载 |
| 高频注入法 | ±0.1° ~ ±0.5° | 高精度、零速标定 | 算法复杂、需要额外硬件 |
核心要点: 反电动势过零点校准,本质上是「用物理信号修正控制信号」。我建议至少做3次重复测量取平均值,可以滤掉转速波动带来的随机误差。
4.3 手动补偿表的建立:把偏差「固化」下来
校准做完,得到的是一个偏差值。但问题是,这个偏差不是固定的——它随转速、负载、温度变化。怎么办?
我的做法是:在多个工况点下分别做校准,然后把结果存成一张表。运行时根据当前工况查表,做线性插值补偿。
建立补偿表的步骤:
- 确定工况点:比如转速从0到3000rpm,每500rpm取一个点;负载从0到额定负载,每25%取一个点。
- 逐点校准:在每个工况点下,用反电动势法或高频注入法测出偏差。
- 数据平滑:把测出来的数据做一次中值滤波或滑动平均,去掉异常点。
- 存入Flash:把平滑后的数据按固定格式存入非易失存储器。
// 补偿表结构示例
typedef struct {
uint16_t speed_rpm; // 转速,单位rpm
uint16_t load_percent; // 负载百分比,0~100
int16_t angle_offset; // 电角度偏差,单位0.1度
} AngleCompEntry;
// 假设有10个转速点 × 5个负载点 = 50个条目
#define COMP_TABLE_SIZE 50
AngleCompEntry comp_table[COMP_TABLE_SIZE] = {
{0, 0, 12}, // 0rpm, 0%负载, 偏差1.2度
{0, 25, 15}, // 0rpm, 25%负载, 偏差1.5度
// ... 其他条目
};
4.4 离线标定的整体流程
把上面三步串起来,就是完整的离线标定流程。我画了一张图,方便你理解整个逻辑。
嗯,这张图把整个流程串起来了。从直流定位开始,到反电动势校准,再到多工况标定、数据平滑,最后存入Flash。每一步都有它的作用,缺一不可。
离线标定法的最大优势是:运行时零计算开销,查表就行。缺点也很明显——标定过程耗时,而且如果电机参数变化(比如磁钢退磁),补偿表就失效了,需要重新标定。
总结一下: 离线标定法适合量产场景,每台电机出厂前做一次标定,把补偿表写入控制器。我在一个工业伺服项目里就是这么干的,效果稳定,客户很满意。如果你做的是小批量或者研发样机,可以考虑在线补偿,灵活度更高。