基于STM32-MAT的无刷直流电机控制代码的自动生成方法技术

技术编号:34180981 阅读:12 留言:0更新日期:2022-07-17 13:05
本发明专利技术公开了一种基于STM32

Automatic generation method of Brushless DC motor control code based on stm32-mat

【技术实现步骤摘要】
基于STM32

MAT的无刷直流电机控制代码的自动生成方法


[0001]本专利技术属于无刷直流电动机控制
,特别涉及一种基于STM32

MAT的无刷直流电机控制的可移植C代码自动生成的方法,以便于控制算法的实现,加快电机控制从设计到实现的过程。

技术介绍

[0002]随着集成电路技术的快速发展,具有高性能、多功能、低功耗等特性的32位MCU在嵌入式系统设计中慢慢替代8位MCU并成为了首选。但是32位MCU命令操作多、系统的软硬件设计变得更复杂等问题也随之出现。STM32系列微控制器作为基于ARM Cortex-M3内核的嵌入式应用产品,也面临着同样的问题。为此意法半导体(ST)公司推出STM32CubeMX软件来提高开发者的开发效率,该软件是用于实现STM32系列单片机图形化配置的工具,开发者可利用其提供的可视化外设、引脚等配置功能来快速实现项目的初始化。
[0003]而后又有基于Matlab和STM32CubeMX联合开发的STM32

MAT工具箱的推出,该工具箱是Matlab&Simulink中用于图形化开发STM32的插件,它提供了用来配置STM32芯片的MCU CONFIG模块并包含了STM32芯片上的几乎所有资源,如GPIO、ADC、DAC、CAN、I2C、I2S、REGISTER、SPI、TIMERS、USART、xWDG等等。这样就可以在STM32CubeMX初始化配置的基础上,利用STM32

MAT工具箱以及Matlab&Simulink已有的模块进行控制算法实现和代码生成模型的搭建,最后用Embedded Coder生成可读、可移植的C代码,从而实现了代码自动生成。
[0004]在传统的开发过程中既需要建立算法模型又需要编写程序去实现相应算法,同时还有繁杂的初始化配置,但是利用Matlab&Simulink、STM32

MAT以及STM32CubeMX就可以将算法模型建立和相应编程融为一体,大大减少了代码的手动编写量,在保证代码质量的同时极大地加快了设计开发的过程。
[0005]无刷直流(Brushless Direct Current,简写为BLDC)电机的基本结构由电机本体、功率驱动电路及霍尔(HALL)位置传感器三者组成。无刷直流电机本体在结构上与永磁同步电机相似,主要由包含电枢绕组的定子和带有永磁体的转子组成,正如名称指出的那样,BLDC电机不用电刷来换向,而是使用电子换向。位置传感器在BLDC电机中起着检测转子磁极位置、为逻辑开关电路提供正确换相信息的作用。控制逻辑是先通过霍尔位置传感器得到转子磁极位置并转化成电信号传送给逻辑开关电路,功率驱动电路根据传过来的电信号把电源输出功率以特定的时序规律分配给无刷直流电机定子的三相绕组,使电机电枢中的电流随着转子位置的变化进行相应次序的换向,从而产生步进式旋转磁场,驱动永磁转子连续不断地旋转,最终达到驱动电机的效果。其中,功率驱动电路采用两两导通的模式,每一时刻都有一个上桥臂和一个下桥臂导通,从而实线电机两相导通,第三相悬空。
[0006]由于无刷直流电机的控制算法便于在Matlab上实现,且在建立代码生成模型所需的模块在STM32

MAT和Matlab&Simulink中均能找到,故在此利用上述工具来实现无刷直流电机转速、电流双闭环控制的模型搭建以及代码生成。

技术实现思路

[0007]本专利技术的目的是针对上述目前无刷直流电机STM32代码开发效率的不足,提供了一种利用Matlab&Simulink和STM32CubeMX来实现无刷直流电机STM32的转速、电流双闭环控制代码的生成方法。
[0008]本专利技术采用以下技术方案来实现:
[0009]基于STM32

MAT的无刷直流电机控制代码的自动生成方法,包括以下步骤:
[0010]步骤S1:在STM32CubeMX先建立.ioc工程文件,完成对STM32芯片的相关型号和引脚功能的相关设置。
[0011]步骤S2:在Matlab&Simulink上设计控制系统的算法模块,即用Matlab function编写电机控制算法。
[0012]步骤S3:在Matlab&Simulink新建一个空白Model,设置软件相关参数并保存。
[0013]步骤S4:在新建Model的Simulink Library Browser中找到STM32

MAT的工具箱,将MCU CONFIG中的STM32_Config模块拖入模型文件,使其与STM32CubeMX生成的.ioc工程相关联。
[0014]步骤S5:利用步骤S2编写的Matlab function模块和STM32

MAT的元件建立自动生成代码的模型,点击Build生成相应代码。
[0015]步骤S6:生成的代码位于.ioc工程文件夹中,利用Keil5等相关开发工具直接打开编译,烧写到硬件芯片中进行验证。
[0016]本专利技术的有益效果在于:
[0017]本专利技术解决了当今STM32项目开发周期慢的问题,本专利技术通过STM32CubeMX软件对外设、引脚等进行图形化配置,同时又借助Matlab实现了相应的控制算法,最后利用STM32

MAT工具箱在Simulink上搭建图形化模型并自动生成控制代码,可以帮助开发人员从复杂的寄存器编程、繁杂的外设以及各种控制算法的代码化等工作中解放出来,大大提高了开发效率;同时能够实现不同芯片之间的代码移植,提升了移植效率,降低了嵌入式系统的开发成本和门槛。
附图说明
[0018]图1为电机代码自动生成流程图;
[0019]图2为单电阻采样电路图;
[0020]图3为算法模型及相应输出配置图;
[0021]图4为三路霍尔信号处理图;
[0022]图5为转速、电流双闭环控制图;
[0023]图6为完整代码生成模型图。
具体实施方式
[0024]接下来将结合具体实施例和附图对本专利技术进行详细说明。
[0025]本专利技术所采用的开发板有ST官方推出的X

NUCLEO

IHM07M1 3SH和NUCLEO

F103RB,其中X

NUCLEO

IHM07M1 3SH是一款专门用于PMSM和BLDC的电机驱动板,电机驱动板驱动芯片型号为L6230。所述无刷直流电机型号为2836,电机有两组线(Hall传感器线和
电机三相线),工作电压24V,最大转速12000rpm。
[0026]如图1所示,基于STM32

MAT的无刷直流电机控制代码的自本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于STM32

MAT的无刷直流电机控制代码的自动生成方法,其特征在于,包括以下步骤:步骤S1:在STM32CubeMX先建立.ioc工程文件,完成对STM32芯片的型号和引脚功能的设置;步骤S2:在Matlab&Simulink上设计控制系统的算法模块,即用Matlab function编写电机控制算法;步骤S3:在Matlab&Simulink新建空白Model,设置软件相关参数并保存;步骤S4:在新建Model的Simulink Library Browser中找到STM32

MAT的工具箱,将MCU CONFIG中的STM32_Config模块拖入模型文件,使其与STM32CubeMX生成的.ioc工程相关联;步骤S5:利用步骤S2编写的Matlab function模块和STM32

MAT的元件建立自动生成代码的模型,点击Build生成相应代码;步骤S6:生成的代码位于.ioc工程文件夹中,利用Keil5开发工具直接打开编译,烧写到硬件芯片中进行验证。2.根据权利要求1所述的基于STM32

MAT的无刷直流电机控制代码的自动生成方法,其特征在于:所述步骤S1中,芯片型号选择基于ARM Cortex

M3内核的STM32F103RB。3.根据权利要求1所述的基于STM32

MAT的无刷直流电机控制代码的自动生成方法,其特征在于:所述步骤S2中,根据无刷直流电机六步换向顺序建立Matlab Function算法模型。4.根据权利要求1所述的基于STM32

MAT的无刷直流电机控制代码的自动生成方法,其特征在于:所述步骤S4中,在Target support package

STM32 Adapter工具箱中取出TIM模块,配置为TIM1,其中TIM1的三个通道与STM32CubeMX配置的相对应,将三个引脚分别连至Matlab Function的CH1、CH2、CH3,该操作是将Matlab Function产生的三相PWM波连至对应的功率驱动电路的上桥...

【专利技术属性】
技术研发人员:王家军杨智成辛壮壮
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1