3. 离线标定方法一:直流注入法

直流注入法,说白了就是给电机定子通一个直流电压,让转子自己跑到一个已知位置去。这个方法我用了很多年,简单、可靠,尤其适合产品初期的角度标定。你想想看,电机刚上电时,转子在哪儿你根本不知道,但通过直流注入,就能让转子乖乖地转到你想要的位置。

3.1 基本原理

直流注入法的核心思想其实很简单:

  • 给电机某两相(比如U相和V相)通入直流电流
  • 定子会产生一个固定的磁场方向
  • 转子永磁体会被这个磁场吸引,转到与定子磁场对齐的位置
  • 此时记录编码器或霍尔传感器的读数,就是初始电角度

我在项目中遇到过一个问题:有些工程师以为随便通个电流就行,结果转子转不到位,角度偏差很大。嗯,这里要注意,直流注入的电流大小和方向都是有讲究的。

关键点:直流注入法标定的是转子磁极的d轴位置。当转子与定子磁场完全对齐时,电角度为0°(或某个已知角度)。

3.2 操作步骤

我个人习惯把直流注入法分成五个步骤,每一步都不能省:

  1. 电机断电确认——确保电机处于自由状态,没有外部负载拖拽
  2. 选择注入相序——通常选择U-V相注入,V-W相或W-U相也可以,但需要对应好角度关系
  3. 施加直流电压——从0开始缓慢增加,直到转子开始转动并稳定
  4. 等待转子稳定——一般需要1-3秒,转子会有一个微小的振荡然后停稳
  5. 记录位置传感器读数——此时读数就是初始电角度

我曾经在调试一个60kW的永磁同步电机时,发现转子总是停不稳。后来发现是电流给的太大,转子过冲了。所以电流大小要适中,能让转子转动就行,别太大。

3.3 注入电流的选择

电流选多大?这个没有固定公式,但我给你一个经验范围:

电机类型 额定电流比例 注入时间 注意事项
小功率(<100W) 10%-20% 1-2秒 电流太小可能转不动
中功率(100W-5kW) 5%-15% 2-3秒 注意电机发热
大功率(>5kW) 3%-8% 3-5秒 必须监控温度

警告:直流注入时间不宜过长!长时间通直流电会导致电机绕组发热,严重时可能烧毁电机。我见过有人为了省事,通10秒直流,结果电机冒烟了。

3.4 代码实现

下面是我常用的直流注入标定代码片段。注意,这里用的是SVPWM的矢量控制框架:

// 直流注入标定函数
// 输入:注入相选择(0:U-V, 1:V-W, 2:W-U)
// 输出:标定后的电角度值
float dc_injection_calibration(uint8_t phase_sel) {
    float angle_calibrated = 0.0f;
    
    // 1. 关闭电流环,直接控制占空比
    svpwm_disable_current_loop();
    
    // 2. 根据注入相选择,设置固定占空比
    switch(phase_sel) {
        case 0: // U-V相注入
            // U相正,V相负,W相悬空
            svpwm_set_duty(0.15f, -0.15f, 0.0f);
            break;
        case 1: // V-W相注入
            svpwm_set_duty(0.0f, 0.15f, -0.15f);
            break;
        case 2: // W-U相注入
            svpwm_set_duty(-0.15f, 0.0f, 0.15f);
            break;
    }
    
    // 3. 等待转子稳定(建议200ms以上)
    delay_ms(500);
    
    // 4. 读取编码器或霍尔位置
    angle_calibrated = encoder_get_position();
    
    // 5. 关闭注入,恢复自由状态
    svpwm_set_duty(0.0f, 0.0f, 0.0f);
    svpwm_enable_current_loop();
    
    return angle_calibrated;
}

技巧:实际应用中,我建议做三次标定取平均值。每次标定后让电机自由转动一下,再重新注入。这样可以消除机械摩擦带来的重复性误差。

3.5 直流注入法的核心流程

为了让你更直观地理解整个过程,我画了一张流程图:

直流注入法标定流程图 直流注入法标定流程 开始标定 选择注入相序(U-V/V-W/W-U) 施加直流电压(缓慢增加) 等待转子稳定(1-3秒) 记录编码器/霍尔读数 标定完成,关闭注入 注意事项 • 电流从0缓慢增加 • 避免转子过冲 • 监控绕组温度 常见问题 • 转子不动 → 电流太小 • 转子抖动 → 电流不稳 • 角度偏差大 → 重复标定

3.6 优缺点分析

直流注入法不是万能的,它有明显的优点和缺点:

优点 缺点
实现简单,不需要复杂算法 电机必须能自由转动
标定精度较高(±1°以内) 有负载时无法使用
适用于各种永磁同步电机 标定时间较长(几秒)
不需要额外的硬件 电机发热问题

我的建议:如果你的电机在出厂前可以做一次空载标定,直流注入法是最省事的方案。但如果是现场标定或者电机已经装在设备里了,那就得考虑其他方法了。

3.7 避坑指南

最后,我把自己踩过的坑总结一下,你遇到了可以直接对照:

  • 转子没转到位——我曾经遇到过电机摩擦力矩太大,给的电流不够,转子只转了30°就卡住了。解决办法:先用手转动一下转子,确认机械部分没问题。
  • 角度重复性差——每次标定结果都不一样?大概率是电流波动太大。检查一下直流电源或者PWM的稳定性。
  • 标定完电机跑飞——这个我印象很深,有一次标定完忘了把角度偏移量写入参数,结果电机一启动就飞车了。所以标定完一定要保存参数!
  • 霍尔信号跳变——如果用的是霍尔传感器,标定完要检查一下霍尔边沿是否与标定角度对应。我曾经遇到过霍尔安装偏差导致角度跳变的问题。