一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

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

2022-07-16 09:56:04 来源:中国专利 TAG:

基于stm32-mat的无刷直流电机控制代码的自动生成方法
技术领域
1.本发明属于无刷直流电动机控制技术领域,特别涉及一种基于stm32-mat的无刷直流电机控制的可移植c代码自动生成的方法,以便于控制算法的实现,加快电机控制从设计到实现的过程。


背景技术:

2.随着集成电路技术的快速发展,具有高性能、多功能、低功耗等特性的32位mcu在嵌入式系统设计中慢慢替代8位mcu并成为了首选。但是32位mcu命令操作多、系统的软硬件设计变得更复杂等问题也随之出现。stm32系列微控制器作为基于arm cortex-m3内核的嵌入式应用产品,也面临着同样的问题。为此意法半导体(st)公司推出stm32cubemx软件来提高开发者的开发效率,该软件是用于实现stm32系列单片机图形化配置的工具,开发者可利用其提供的可视化外设、引脚等配置功能来快速实现项目的初始化。
3.而后又有基于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代码,从而实现了代码自动生成。
4.在传统的开发过程中既需要建立算法模型又需要编写程序去实现相应算法,同时还有繁杂的初始化配置,但是利用matlab&simulink、stm32-mat以及stm32cubemx就可以将算法模型建立和相应编程融为一体,大大减少了代码的手动编写量,在保证代码质量的同时极大地加快了设计开发的过程。
5.无刷直流(brushless direct current,简写为bldc)电机的基本结构由电机本体、功率驱动电路及霍尔(hall)位置传感器三者组成。无刷直流电机本体在结构上与永磁同步电机相似,主要由包含电枢绕组的定子和带有永磁体的转子组成,正如名称指出的那样,bldc电机不用电刷来换向,而是使用电子换向。位置传感器在bldc电机中起着检测转子磁极位置、为逻辑开关电路提供正确换相信息的作用。控制逻辑是先通过霍尔位置传感器得到转子磁极位置并转化成电信号传送给逻辑开关电路,功率驱动电路根据传过来的电信号把电源输出功率以特定的时序规律分配给无刷直流电机定子的三相绕组,使电机电枢中的电流随着转子位置的变化进行相应次序的换向,从而产生步进式旋转磁场,驱动永磁转子连续不断地旋转,最终达到驱动电机的效果。其中,功率驱动电路采用两两导通的模式,每一时刻都有一个上桥臂和一个下桥臂导通,从而实线电机两相导通,第三相悬空。
6.由于无刷直流电机的控制算法便于在matlab上实现,且在建立代码生成模型所需的模块在stm32-mat和matlab&simulink中均能找到,故在此利用上述工具来实现无刷直流电机转速、电流双闭环控制的模型搭建以及代码生成。


技术实现要素:

7.本发明的目的是针对上述目前无刷直流电机stm32代码开发效率的不足,提供了一种利用matlab&simulink和stm32cubemx来实现无刷直流电机stm32的转速、电流双闭环控制代码的生成方法。
8.本发明采用以下技术方案来实现:
9.基于stm32-mat的无刷直流电机控制代码的自动生成方法,包括以下步骤:
10.步骤s1:在stm32cubemx先建立.ioc工程文件,完成对stm32芯片的相关型号和引脚功能的相关设置。
11.步骤s2:在matlab&simulink上设计控制系统的算法模块,即用matlab function编写电机控制算法。
12.步骤s3:在matlab&simulink新建一个空白model,设置软件相关参数并保存。
13.步骤s4:在新建model的simulink library browser中找到stm32-mat的工具箱,将mcu config中的stm32_config模块拖入模型文件,使其与stm32cubemx生成的.ioc工程相关联。
14.步骤s5:利用步骤s2编写的matlab function模块和stm32-mat的元件建立自动生成代码的模型,点击build生成相应代码。
15.步骤s6:生成的代码位于.ioc工程文件夹中,利用keil5等相关开发工具直接打开编译,烧写到硬件芯片中进行验证。
16.本发明的有益效果在于:
17.本发明解决了当今stm32项目开发周期慢的问题,本发明通过stm32cubemx软件对外设、引脚等进行图形化配置,同时又借助matlab实现了相应的控制算法,最后利用stm32-mat工具箱在simulink上搭建图形化模型并自动生成控制代码,可以帮助开发人员从复杂的寄存器编程、繁杂的外设以及各种控制算法的代码化等工作中解放出来,大大提高了开发效率;同时能够实现不同芯片之间的代码移植,提升了移植效率,降低了嵌入式系统的开发成本和门槛。
附图说明
18.图1为电机代码自动生成流程图;
19.图2为单电阻采样电路图;
20.图3为算法模型及相应输出配置图;
21.图4为三路霍尔信号处理图;
22.图5为转速、电流双闭环控制图;
23.图6为完整代码生成模型图。
具体实施方式
24.接下来将结合具体实施例和附图对本发明进行详细说明。
25.本发明所采用的开发板有st官方推出的x-nucleo-ihm07m1 3sh和nucleo-f103rb,其中x-nucleo-ihm07m1 3sh是一款专门用于pmsm和bldc的电机驱动板,电机驱动板驱动芯片型号为l6230。所述无刷直流电机型号为2836,电机有两组线(hall传感器线和
电机三相线),工作电压24v,最大转速12000rpm。
26.如图1所示,基于stm32-mat的无刷直流电机控制代码的自动生成方法,包括以下步骤:
27.步骤1:打开stm32cubemx软件,选择专门的nucleo-f103rb工程模板,新建cube工程,芯片型号选择基于arm cortex-m3内核的stm32f103rb。
28.步骤2:rcc接口的配置:high speed clock(hse)选择bypass clock source;low speed clock(lse)选择crystal/ceramic resonator。sys配置timebase source(hal的时基源)选择systick(滴答定时器)。usart2配置:mode(方式)选择asynchronous(异步通信),软件将自动分配usart2_rx、usart2_tx分别对应pa3、pa5管脚。
29.步骤3:tim1配置:配置三路pwm模式1输出,其中pwm载波频率是20khz=72m/(2 1)/(1199 1),各通道初始pwm波是500,并使能tim1 update interrupt。该配置用于输出pwm波至功率驱动电路。
30.步骤4:tim2配置:开启三路选择input capture direct mode(输入直接捕获模式),并使能xor功能,polarity selection选择rising edge,ic selection选择direect,并开启定时器中断。该配置用于实现对霍尔信号进行采集分析的功能。
31.步骤5:配置adc1:adc1的mode选择in11,即配置在pc1引脚,data alignment选择right alignment,continue conversion mode选择enable,sampling time选择7.5cycles,同时使能adc1的dma功能。本发明adc采用电机电流工作在单电阻采样模式下,如图2所示,电机电流与adc采样电流之间的关系式为(jp1,jp2不接):
32.v=3*0.33*i
33.其中:0.33为采样电阻的阻值,i为电机电流,v为放大3倍后的电机电流。本次配置用于采样电机电流引脚,可实现对电机速度的反馈。
34.步骤6:配置adc2:adc2的mode选择in9,即配置在pb1引脚,data alignment选择right alignment,continue conversion mode选择enable,sampling time选择239.5cycles。本次配置用于配置速度参考电位器的输入,即对电机速度的设定值进行采样。
35.步骤7:将pc10、pc11和pc12普通i/o功能配置为gpio_output模式,默认输出为低。本次配置用于输入相应电平信号至功率驱动电路。
36.步骤8:完成以上初始化配置后,将工程命名为bldc_control,集成开发工具(toolchain/ide)选择mdk-arm v5。在code generator(代码生成器)中选择generated files框,勾选generated periphera initialization as a pair of

.c/.h’files peripheral(每个外设生成对应的的.c文件和.h头文件)。hal settings勾选set all free pins as analog(to optimize the power consumption)设置未使用的引脚为模拟方式,优化系统的功耗。最后保存工程file-》save project,暂时不生成代码,只生成对应的bldc_control.ioc文件。
37.步骤9:安装stm32-mat软件,并将安装路径添加至matlab搜索路径下,并将matlab的工作环境切换到bldc_control.ioc的存放地址上。再启动simulink,新建模型命名为bldc_control,并进行模型的基本设置:code generation(代码生成器)中的system target file(系统目标文件)选择stm32.tlc;stm32 options(stm32选项)中勾选
stm32cubemx path update,并添加stm32cubemx软件的安装目录;solvor中solvor options-》type选择为fixed-step,additional parameters-》fixed-step size设置为1/10000;stm32project files(stm32工程文件):把源文件getbuffptr.c和对应的头文件getbuffptr.h添加到bldc_control工程文件中。然后点击保存生成空白的bldc_control.slx模型,且其保存地址要与bldc_control.ioc的相同。
38.步骤10:打开simulink library browser(simulink的库),找到target support package-stm32adapter(即stm32-mat),将其中的mcu config模块添加到bldc_control.slx模型中。双击打开该模块,在select stm32 configuration file(stm32配置文件)中选择加载stm32cubemx软件生成的bldc_control.ioc文件。
39.步骤11:根据无刷直流电机六步换向顺序建立matlab function算法模型,并添加至bldc_control.slx,其中电机六步换向顺序规则见下表1。
40.表1换向顺序表
[0041][0042][0043]
步骤12:如图3所示,在target support package-stm32 adapter工具箱中取出tim模块,配置为tim1,其中tim1的三个通道与stm32cubemx配置的相对应,将三个引脚分别连至matlab function的ch1、ch2、ch3,该操作是将matlab function产生的三相pwm波连至对应的功率驱动电路的上桥臂中。再取出gpio模块,配置为gpioc,选择其中的pin10、pin11、pin12引脚,并将这三个引脚分别连至matlab function的ch1n、ch2n、ch3n,该操作是将matlab function产生的三相电平信号传送至对应的功率驱动电路的下桥臂中。
[0044]
步骤13:如图4所示,同样在上述工具箱中取出tim模块,配置为tim2,该模块有六个引脚,其中有三个用来捕获霍尔传感器的位置信号的chx freq,剩下的三个chx reg val是用来计数霍尔传感器高电平信号个数的。将chx freq引脚先连至uint16模块进行数据类型转换,再将转化后的数据先后连至bitiwise operator模块和arithshift模块进行相应的位操作,最后分别连接至matlab function的ha、hb、hc引脚上。其中的数据位操作是为了方便matlab function中的算法编写。
[0045]
步骤14:再将上步tim2模块上的三个chx reg val的计数个数相加,并通过其与电机转速的比例关系来确定电机的实时转速,故通过gain模块来将其转化为0-1的区间后作转速、电流双闭环控制环节的外环速度环的速度反馈值。后取出adc模块并配置为adc2,且引脚选择为ch9,该模块是用来读取速度参考电位器的adc信号的,同样先利用gain模块来将其转化为0-1的区间,再把它当作外环速度环的速度设定值。
[0046]
步骤15:将外环速度环pid的输出作为内环电流环的输入,即作为电流环的设定值。再取出adc模块并配置为adc2,且引脚选择为ch11,该模块是对电机电流的采样,与上述步骤类似,先利用gain模块来将其转化为0-1的区间,再把它当作内环速度环的电流反馈值。将内环速度环的输出作为matlab function的duty输入,配合matlab function的算法实现了对pwm波的占空比进行调节。其中双闭环控制模块如图5所示,且转速、电流闭环控制环节均采用pid控制方法。
[0047]
步骤16:至此便完成了本发明的代码生成模型的搭建,完整模型图如图6所示。点击embedded coder中的build进行代码生成,最后下载到编译软件进行代码的修改和验证,并可对代码生成模型进行相应修改。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献