3、FOC电流环调试实战要点:电流采样增益与相位校准

电流环调得好不好,一半的功夫在采样上。我见过不少项目,PI参数调了半天电机还是嗡嗡响,最后发现是采样通道的增益和相位根本没对齐。说白了,你喂给控制器的电流值本身就是错的,那后面的计算再精确也没用。

这一节我们专门聊采样电阻和运放带来的增益误差,以及多通道之间的相位延迟怎么补偿。这些都是我在调试台上踩过坑、流过汗之后总结出来的实战方法。

3.1 采样电阻与运放增益误差的校准

先说说增益误差。理想情况下,你用的采样电阻是1mΩ,运放放大倍数是50倍,那ADC读到的电压应该精确对应母线电流。但现实是——电阻有精度误差,运放有温漂,PCB走线还会引入额外的寄生电阻。

核心思路:用已知的精确电流源注入,反推实际增益,然后软件修正。

具体做法分三步:

  1. 注入已知电流:用高精度电流源(比如Fluke 5500)给采样电阻通一个固定电流,比如10A。如果没有专业设备,也可以用大功率电阻+稳压电源凑合,但精度会差一些。
  2. 读取ADC原始值:记录下此时ADC的读数。注意要多次采样取平均,消除噪声。
  3. 计算实际增益:
    理论电压 = 电流 × 电阻 × 运放倍数
    实际增益 = ADC读数 / 理论电压
    校准系数 = 理论增益 / 实际增益

我在一个项目里遇到过这样的情况:三路采样电阻标称都是1mΩ,但实际测下来,W相那路因为PCB走线长了5mm,等效电阻多了0.03mΩ。别看这零点零几,在100A电流下就是3mV的误差,反映到转矩上就是明显的抖动。

我的习惯:在校准系数里留一个温度补偿项。如果运放温漂大,可以在板上加个NTC,根据温度查表修正增益系数。虽然麻烦,但效果立竿见影。

3.2 采样通道间相位延迟的补偿

增益校准完了,还有相位问题。三相电流采样不是同时发生的——ADC是轮流采的,运放本身也有群延迟。如果电机转速低,这点延迟无所谓;但转速一高,相位差就会导致电流矢量解算错误。

为什么会这样?你想想看,电机在高速旋转时,电流波形变化很快。假设你U相在t0时刻采样,V相在t0+1μs采样,W相在t0+2μs采样。对50Hz工频来说,1μs几乎没影响;但对1000Hz的电流基波,1μs对应的相位差就是0.36°。三个通道累积下来,合成的电流矢量就会偏。

我曾经踩过的坑:有个伺服项目,转速上到6000rpm时电流环开始震荡。查了两天,最后发现是ADC采样时序配置错了——三通道之间差了3个时钟周期。补偿之后,波形立刻干净了。

相位补偿的方法有两种:

方法 原理 适用场景 精度
硬件同步采样 使用同时采样ADC(如ADS8556),所有通道在同一时刻锁存 高端伺服、对相位敏感的应用 高
软件插值补偿 根据已知延迟时间,对采样值进行线性或Sinc插值 成本敏感、已有硬件不支持同步采样 中
PWM触发对齐 将采样点对齐到PWM载波的特定时刻(如载波谷底) 大多数FOC方案 较高

我个人最推荐第三种——PWM触发对齐。它不需要额外硬件,只需要在MCU的PWM模块里配置好触发点。比如,让三相ADC都在PWM载波的最低点触发采样,这样三通道的采样时刻差就只取决于ADC转换时间本身,通常只有几百纳秒。

3.3 增益与相位校准的测试方法

校准做完了,怎么验证对不对?不能光看软件里算出来的系数,得用实际波形说话。

我常用的测试流程是这样的:

  • 静态测试:电机堵转,通入直流电流。用钳形电流表测实际电流,对比ADC读回来的值。三相分别测,看增益误差是否在1%以内。
  • 动态测试:电机空载运行,用示波器同时抓三相电流波形。观察波形是否对称,相位差是否严格120°。如果看到某相波形明显偏大或偏小,那就是增益没校好;如果波形形状对但整体偏移了,那就是相位问题。
  • 闭环验证:给一个固定的Iq指令,看实际反馈的Id是否接近0。如果Id不为0,说明电流矢量解算有误差,大概率是增益或相位没对齐。

一个实用技巧:用示波器的数学运算功能,把三相电流相加。理想情况下,三相电流之和应该为0。如果和不为0,说明采样存在共模误差或增益不一致。这个办法我在现场调试时屡试不爽。

下面这张图总结了整个校准流程的逻辑关系:

电流采样增益与相位校准流程 电流采样校准流程 开始校准 步骤1:增益校准 注入已知电流 读取ADC原始值 计算校准系数 步骤2:相位校准 测量通道延迟 选择补偿方法 写入补偿参数 步骤3:闭环验证 提示:每完成一步,建议用示波器抓波形确认,不要等到最后才发现问题

最后说一句,校准不是一次性的。运放会老化,电阻会漂移,温度变化也会影响增益。我建议在产品出厂前做一次全量程校准,然后在固件里留一个定期自检的接口。这样即使现场环境变了,也能及时发现并修正。