系列文章目录

`



文章目录

  • 系列文章目录
  • 一、计算六相MOS管输入波形
  • 二、电机模块搭建
  • 三、Clark变换与park变换
  • 四、PID电流与速度
  • 五、PID MATLAB仿真结果
  • 结束语



FOC MATLAB仿真文件链接:
基于MATLAB 2018a版本,低于这个版本的请谨慎下载,高于这个版本的可以兼容。

一、计算六相MOS管输入波形

在第七篇的时候在svpwm过程中计算出了三相的比较值,这个比较值最终是一个马鞍波形,但是最终到MOS管的是需要上管和下管相对的总共六相波形,当然在实际上有些驱动芯片是自带这个功能的,还有如果使用高级定时器生成六相波形的话也是可以自动生成的,但在MATLAB中还是需要处理一下的。

一样这里还是使用function模块:

STM32CUBEMX开启FPU stm32 foc_学习


MATLAB代码为:

function [CH1,CH1N,CH2,CH2N,CH3,CH3N]  = PWM(CNT,CCR1,CCR2,CCR3)

if(CNT<CCR1)
    CH1=0;
    CH1N=1;
else
    CH1=1;
    CH1N=0;
end

if(CNT<CCR2)
    CH2=0;
    CH2N=1;
else
    CH2=1;
    CH2N=0;
end

if(CNT<CCR3)
    CH3=0;
    CH3N=1;
else
    CH3=1;
    CH3N=0;
end

就是使用三角波和比较值进行对比,三角波就是模拟定时器的计数模式,三角波参数如下图:

STM32CUBEMX开启FPU stm32 foc_学习_02


仿真结果如下:

STM32CUBEMX开启FPU stm32 foc_matlab_03

二、电机模块搭建

三个重要的模块,首先是MOS管模块,选用的是Universal Bridge这个模块,电机选用的是Permanent Magnet Synchronous Machine,此外还有一个powergui模块,在做离散分析的时候必须要加的,虽然没有连接,但是不加会报错,连接框图如下:

STM32CUBEMX开启FPU stm32 foc_stm32_04


其中参数调节还是比较麻烦的,参数一旦不对,对输出影响特别大,下面是调试好久我用的一组参数,其中上面有一个直流电源电压大小为311,MOS管参数如下:

STM32CUBEMX开启FPU stm32 foc_MATLAB_05


powergui模块参数如下:

STM32CUBEMX开启FPU stm32 foc_MATLAB_06


电机参数如下:

STM32CUBEMX开启FPU stm32 foc_matlab_07

STM32CUBEMX开启FPU stm32 foc_学习_08


STM32CUBEMX开启FPU stm32 foc_STM32CUBEMX开启FPU_09

三、Clark变换与park变换

下面就是我们熟悉的Clark变换和park变换了:

STM32CUBEMX开启FPU stm32 foc_学习_10


里面内容具体可以看之前的文章。

四、PID电流与速度

连接图如图所示:

STM32CUBEMX开启FPU stm32 foc_matlab_11


这里直接使用了PID模块,因为MATLAB是自带PID模块的,所以不用像上一篇一样自己搭建一个,那个只是方便理解PID,当然,自己搭也是可以的。

PI参数如下:

STM32CUBEMX开启FPU stm32 foc_STM32CUBEMX开启FPU_12


PID参数如下:

STM32CUBEMX开启FPU stm32 foc_学习_13


用到的一些变量的定义:

在空白处右键,打开下面这个设置:

STM32CUBEMX开启FPU stm32 foc_MATLAB_14


STM32CUBEMX开启FPU stm32 foc_STM32CUBEMX开启FPU_15


然后按照上图所示依次点击,找到初始化函数,参数写入如下:

Ts = 10e-6;

R = 0.958;
Ld = 5.25e-3;
Lq = 12e-3;
Pn = 4;
flux = 0.1827;

五、PID MATLAB仿真结果

给定初速度500,仿真结果如下:

STM32CUBEMX开启FPU stm32 foc_MATLAB_16

结束语

这一系列到此就先告一段落了,等过一段时间才可能出下一个系列,所有仿真模型几乎在最后这个里面都可以找到。