系列文章目录
`
一、stm32 FOC从零学习开发(一)FOC概念
二、stm32 FOC从学习开发(二)Clark变换与MATLAB仿真
三、stm32 FOC从学习开发(三)park变换与MATLAB仿真
四、stm32 FOC从学习开发(四)svpwm算法(1)
五、stm32 FOC从学习开发(五)svpwm算法(2)
六、stm32 FOC从学习开发(六)基于均值零序分量注入的载波SVPWM算法
七、stm32 FOC从学习开发(七)svpwm算法MATLAB仿真
八、stm32 FOC从学习开发(八)PID基础MATLAB仿真
九、stm32 FOC从学习开发(九)FOC MATLAB仿真
一、Clark变换的作用
在我们FOC控制的时候,第一步就是采集两相电流,在理论中我们一般说采集三相电流,但在实际中运用最多的是采集两个电阻的相电流,因为根据基尔霍夫定律,第三相电流是可以根据另外两相电流算出来的。
基尔霍夫电流定律:所有进入某节点的电流的总和等于所有离开这节点的电流的总和。
实际中还有单电阻采样和三电阻采样,三电阻采样和两电阻类似,就是把三相的电流都采样出来,而单电阻采样就会比较麻烦些,在于电流采样时间要进行计算,这里就不多做延伸了。
在实际中电机应该就是如上图所接,可以把线圈中的电流抽象出来。
上图中所示的A、B、C就是代表三相线圈中的电流,但我们经常使用的坐标是正交坐标,也就是直角坐标系,这三个量明显是非正交的,那我们就可以转化为如图所示是α、β坐标系,而且将A、B、C三个变量转换成了两个变量,信息量却没有变少,自然更便于我们处理。
二、Clark变换
根据上图中的位置,根据简单的投影坐标计算,可以得到:
注意除了投影坐标,前面还多个2/3,这个是等幅值变换,加上这个才能够使变换后的幅值和变换前的一样,看到这个有人说是匝数比,有人说是系数,以个人理解来看,这个是由A、B、C三轴坐标系转换成两轴坐标系时所生成的,在两轴坐标系中,我们的投影规则自然是按照90度进行投影,但在三轴120度的坐标系中,我们仍然按照了直角投影的规则转换为直角坐标系,于是才产生了这个系数,之后我们可以看到,在进行反Clark变换和park变换的时候就不用有这个系数,因为这些变换都是在直角坐标系中完成的。
将上式转换为矩阵:
三、反Clark变换
同样根据投影坐标计算,可以根据α、β的值反推出A、B、C的电流值,这就是反Clark变换,得出公式:
将上式转换为矩阵,从矩阵的角度理解这个就是Clark变换的转置矩阵,所以反Clark变换也可以用转置矩阵来表示:
四、MATLAB仿真
使用MATLAB的simulink仿真可以很好的将理论显现出来,并且验证是否正确,在MATLAB创建如下图仿真:
其中Clark与反Clark变换可以使用Fcn模块来实现,我这里进行了封装,
Clark变换:
反Clark变换:
这里直接使用的是三角函数来变换的,也可以将这几个值算出来,都是一样的:
Clark变换:
反Clark变换:
五、仿真结果
第一个就是生成的正弦波形,第二个是Clark变换后的波形,第三个就是反Clark后的波形。
MATLAB使用的版本为2018a,代码放在下面,有兴趣的可以自取:https://download.csdn.net/download/bing_xin_/88196496