STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法

前言

      磁场定向控制又称矢量控制(FOC, 本质上为控制定子电流的幅度和相位,使之产生的磁场和转子的磁场正交,以产生最大的扭矩. PMSM的磁场定向控制框图如下图所示:

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第1张图片

第21讲对比分析了基于ST MotorControl Workbench实现的单电阻FOC有感(hall)算法及单电阻FOC无感算法在代码上的具体差异,知道了其核心差异在MC_Task.C文件中对电机转子位置及转速计算上的差异,那么是否将可将无感FOC的代码手动修改成有感(HALL或其它位置传感器)代码呢,答案是肯定的。本节就让我们一起将20讲的无感FOC代码手动修改成19讲有感(HALL)算法,并让电机成功运转起来。

本节同样用到Beyond Compare文件对比分析工具,对第19、20讲的代码进行差异分析。并用Beyond Compare工具快速将第20讲的代码修改成有感(HALL)FOC算法,好了,直接进入主题。

上一讲我们对比分析后发现第19讲的有感FOC算法和第20讲的无感FOC算法在程序代码上的差异主要集中于INC和SRC两个文件夹中,其中inc文件夹中的主要不同集中在drive_parameters.h、main.h、mc_config.h、parameters_conversion.h、pmsm_motor_parameters.h五个文件;Src文件夹中的主要不同集中在main.c、mc_config.c、mc_tasks.c、stm32f1xx_hal_msp.c、stm32f10x_mc_it.c、user_interface.c六个文件中

直接复制第20讲的工程文件夹,并重命名为Motor22,将其中的文件名也改成Motor22:

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第2张图片

用Beyond Compare工具以文件夹比如方式载入motor19和motor20两个文件夹:

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第3张图片

以motor19中main.h为模板文件,完成对Motor22中main.h文件的修改:

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第4张图片

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第5张图片

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第6张图片

按照main.h的修改模式,完成mc_config.h、parameters_conversion.h两个文件的修改操作drive_parameters.h和pmsm_motor_parameters.h中一些配置参数在有感(HALL)FOC算法中同样适用,所以这两个文件可以不进行修改即可。

      以同样的方式对Src文件夹中的main.c、mc_config.c、mc_tasks.c、stm32f1xx_hal_msp.c、stm32f10x_mc_it.c、user_interface.c进行修改,其中user_interface.c不进行修改亦可

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第7张图片

修改完成后打开KEILL工程文件,将工程目标名改成Motor22(非必需):

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第8张图片

直接编译工程,提示一些链接错误:

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第9张图片

对于motor19的KEILL工程发现,motor19KEILL工程比motor22KEILL工程多包含了Hall_speed_pos_fdbk.c文件,该文件位置/MCSDK_v5.3.3/MotorControl/MCSDK/MCLib/Any/Src/文件夹中:

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第10张图片

手动给motor12KEILL工程增加Hall_speed_pos_fdbk.c文件:

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第11张图片

给motor22KEILL工程增加Hall_speed_pos_fdbk.C文件后重新编译,编译成功:

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第12张图片

烧录固件到开发板,并启动程序 :

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第13张图片

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第14张图片

按开发板上的电机启动按键,可以看到电机成功运转:

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第15张图片

用MotorControl Workbench工具进行控制与查看波形,功能也正常,电机表机也没有了之前纯无感FOC算法中从正速度切换到负速度时电机易死机问题:

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第16张图片

到此,基于ST MCLIB的无感FOC算法代码变有感(hall)FOC算法实验就完成了。也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,每天都会有技术干货推出!!

 

文中源码及资料下载,关注十三公众号:

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第17张图片

在公众号里给十三发送 “下载|STM32 电机教程 22” :

STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法_第18张图片

 

 

你可能感兴趣的:(无感FOC,PMSM,STM32CUBE)