1 前言
前面文章中,已经将扩展卡尔曼观测器搭建起来了,这一节就是将扩展卡尔曼实现。其实前面已经把那5个式子列了出来,最重要的是那五个公式中相关的矩阵也已经全部求了出来,只需要在代码中将这个5个式子实现就好了。
2 仿真搭建
foc_control如下:
让电机系统处于有传感器的双闭环状态下,然后使用EKF观测在旁边观测,最后对比一下电机转子的真实
θ
\theta
θ和EKF估算出来
θ
\theta
θ,如下:
可以看到EKF估算出来的
θ
\theta
θ与真实的角度相差无几,说明EKF状态观测器搭建成功。
3 移植
下面再把上述的代码移植到MCU中验证一下EKF观测器的性能。首先还是让电机出处于电流单闭环状态下观察EKF的
θ
\theta
θ输出:
可以看到虽然有点歪曲,这是正常的现象,因为这个时候电机处于速度开环状态下,电流大小与电机转子位置不同步。下面再来看看EKF的滤波效果,下图为EKF输出的
I
α
和
I
β
I_\alpha 和I_\beta
Iα和Iβ以及实际的
I
α
和
I
β
I_\alpha 和I_\beta
Iα和Iβ:
接下来,使用EKF输出的
θ
\theta
θ让电机进行双闭环运行,看看EKF的调速性能,
θ
\theta
θ波形如下:
调速响应如下:
至此,就使用了扩展卡尔曼滤波器实现了电机的无传感器FOC控制。下面贴上我的测试代码: