今天我想对FOC电机控制中编码器读取数据的补偿进行更深入的讲解。

这个补偿的核心是为了解决一个关键问题:“时间不同步”。

补偿的核心原理:预测与对齐

想象一下这个场景:

  1. 在 t₀ 时刻,微控制器依据ADC采样了电机的相电流。

  2. 也是在 t₀ 时刻(或非常接近的时刻),微控制器从编码器读取了转子的位置信息 θ(t₀)

  3. 随后,微控制器开始执行复杂的FOC算法(Clarke、Park、PI调节、反Park、SVPWM),这需要一定的时间 T_calc

  4. 计算出的新PWM占空比,要到下一个PWM周期开始时(t₀ + T_pwm)才会被更新到硬件寄存器中并真正输出给电机。

这里就出现了两个延迟:

  • 计算延迟 T_calc

  • PWM更新延迟 T_pwm

总延迟 T_delay = T_calc + T_pwm

障碍的本质是:
你用来计算FOC的电流和位置,是 t₀ 时刻的“旧”数据。而你计算出的电压矢量,却要等到 t₀ + T_delay 时刻才施加到电机上。在这段延迟时间里,转子已经继续向前转动了一个角度 Δθ

倘若你仍然使用旧的位置