
此文的主要评测对象是基于NUCLEO-G431RB 开发板实现电机控制的软硬件环境。 硬件环境:控制板:Nucleok-G431RB;功率控制板:X-NUCLEO-IHM07M1;受控电机:BR2804-1700KV-1无刷电机; 软件环境:电机参数设置及配置工具:ST Motor Control SDK 5.4.3工程代码的生成工具:STM32CubeMX;应用功能开发工具:STM32CubeIDE 2 G0 G% ]- G) l0 G 2 \* o* K/ \6 x, U* x 一、硬件介绍 ![]() ▲ X-NUCLEO-IHM07M1正面照 下图是Nucleo-G431RB控制板与X-NUCLEO-IHM07M1扩展板的主要功能引脚标识,电机程序控制的时候,可以参考这两图进行引脚的矫正与配置。 ![]() ▲ X-NUCLEO-IHM07M1 . |- {$ u, _* d$ [' s ![]() & m* O6 J9 y l7 `- ^3 E
![]() ![]() ▲ 控制板、功率板、电机实验实物连接 ![]() ▲ 功率板下的Nucleo-G431RB控制板 8 M: P% i, a9 G/ V+ P; P6 q; X 二、MCSDK 5.4.3 电机参数配置工具 电机是表贴式与内嵌式的区分方式如下图: ![]() + x1 q! F; t; ^ F0 p 软件主要界面如下图: ![]() ▲ ST Motor Profiler 系统主界面 7 y8 i/ ?& W5 ~$ T ![]() ( ^1 u1 s2 e- ^ 选择好板卡后输入相关参数,并连接板卡,如果这板卡是第一次连接,会提示下载电机参数配置的测试固件。下载好后,点击“Start Profile”根据输入的参数(转速、最大电流以及I-PMSM的Ld/Lq比值)对电机的运行进行配置,并自动分析出电机的各项运行参数,例如:最大转速、最大扭矩、最大加速度等。电机运行参数调校得是一个漫长得过程,根据需要的场景可利用这个功能进行相关参数的粗调。如下图:![]() ![]() ![]() 保存窗体 覆盖同名文件提示 顺便说一下:离开“Motor Profiler”工具,最好将工具与开发板的固件断开,方便其他应用程序使用,恢复到下图状态即可。 ![]() 9 k b' s! H A" z: l 2、MotorControl Workbench 5.4.3 相关参数的设定及电机控制代码生成。 : M2 W" |8 L1 K" }, R0 R# Q8 M 第一步:新建项目 ![]() + n* `' ?7 G+ G 在新建项目窗体中,选择控制板、功率板信号以及运行的电机名称,这里的电机名称实际上是包含了一些列电机参数的文件,下图是工具中默认的电机参数配置。 ![]() ![]() ▲ 新建项目窗体 ' Y$ F5 z4 H1 a4 |, Y2 H 通过“Motor Profiler”创建的电机参数,下拉框旁边的垃圾图标 可对“Motor Profiler”生成的参数文件进行删除。项目创建好后,会根据控制板、功率板和电机的信息生成项目信息提示。! N( ?9 Q2 r* j ![]() ▲ 新建项目信息 ![]() ▲ 控制面板按钮的菜单位置 ![]() ▲ 控制操控面板 ![]() 0 R/ h; @: \; Y5 w6 k# I 一般的调节顺序是,先调节电机自身参数,然后调节温度传感器、电流传感器、过载电流保护、速度传感器、电源控制器等功率板电路及参数,最后调节控制板电路及参数(从右至左)。通过“Motor Profiler”的电机参数生成的项目电机参数可以不用调整,这都是实际测得的;功率板电路的接口对照功率板的电路原理图进行调整,功率阈值等内容根据电路原理的电器电路进行设定;控制板的相关参数参考单路原理图、板间接口进行调整,详细的描述请异步电堂电机相关课程,有详细的功能描述和电机控制原理知识。! c. A& V) r- }特别说明一下,在 “MotorControl Workbench 5.4.3”中,自动生成的控制板引脚与实际的不符,这会让项目生成的代码无法正确驱动电机,这里需要对照原理图逐一检查。避免控制板的电路和芯片出现异常。4 O4 w' w; A8 i% h# M3 F X-Nucleo-IHM07M1-3Sh 的电机驱动控制方案搭配有F302R8和G431RB的控制板,二者使用的引脚几乎一致,只有少部分区别,主要的DAC、ADC、温度等配置是一样的,在用G431RB控制板搭建电机驱动方案时,可参考F302R8方案中的配置内容。 ![]() ▲ Nucleo-F302R8电机驱动控制方案 ![]() ▲ Nucleo-G431RB电机驱动控制方案 ![]() ▲ 代码生成按钮 ![]() ▲ 项目代码生成与更新 ![]() ▲ 代码生成中的提示 ![]() ▲ 代码生成完成后 8 _4 G+ K! N6 g$ E, o3 ~6 @" o7 s 三、用STM32CubeMX生成用户应用代码 ![]() % \$ S' @% K: F$ K9 h 在项目代码生成目录有一个“MCSDK543_G431RB.ioc”的项目文件,可用CubeMX工具打开该文件,添加修改对电机控制之外内容,用Cubemx自动生成其相关初始化配置代码。4 f! H' }2 w) g( F* i这里验证Nucleo-G431RB对功率板的电机控制,暂不加入相关设备(略过),有兴趣的请观看电堂精心准备的《STM32电动机控制应用系列讲座》专题进行学习。因为篇幅有限不在这里深入描述。 # C I* z; e. |2 @+ Y+ Y0 n 四、用STM32CubeIDE对整体项目代码生成及验证 1 p- k" k! O8 J# p3 h! B 在“MotorControl Workbench”工具中生成的工程代码类型是“ST STM32CubeIDE”,在ST STM32CubeIDE导入相关工程即可实现代码的编译与下载验证(位置:FileàImport)按钮。![]() ▲ Import菜单功能位置 % [( o9 }" [& Q. j选择“Existing Projects into Workspace”进行外部工程项目的导入; 2 H5 j9 J. h/ A r6 R' T1 J ![]() ▲ 选择导入外部工程到工作区 ![]() ▲ 选择项目导入目录,ST STM32CubeIDE会在其子目录下搜索出项目工程 ; Y8 ^$ a4 H5 `3 t5 S! }8 W 当工程文件导入后,工程文件的结构如下图:Application是应用代码,Drivers是G431RB的各类片内设备驱动,电机控制文件在Middlewares目录下。当系统编译后会生成Debug目录,存放各类.O文件。![]() ▲ 项目的工程结构 ![]() ▲ 选择Main.c文件 e' p7 @( X/ S- H6 T \$ N. ] 通过“MotorControl Workbench”生成的工程项目,只有相应的结构,并没有电机的启动停止的操作(按键电机停止运转除外),可以在用户代码区添加这么两行指令。9 `! z. D: u; `/ k7 z5 Y' M1、 设置以速度模式运行1号电机2、 启动1号电机 ![]() ▲ 添加的电机启动代码 ' A# k% l: v; a) y7 t, b1 J' { 程序经过编译、下载到Nucleo-G431RB控制板,接通电机电源,重启控制板,这时功率板连接的电机开始运转,按下控制板的用户按键,电机停止转动,按下Reset键,电机重新运转。 ![]() ▲ 电机运行效果图 |
![]() ![]() ![]() ![]() ![]() ![]() |
感谢分享! |
MCSDK FOC应用详解
STM32F10xxx 正交编码器接口应用笔记 及源代码
基于STM32定时器ETR信号的应用示例
STM32 生态系统|基于STM32WB的低功耗蓝牙应用(一)
《无刷直流电机控制应用 基于STM8S系列单片机》
STM32定时器触发SPI逐字收发之应用示例
【银杏科技ARM+FPGA双核心应用】STM32H7系列10——ADC
【银杏科技ARM+FPGA双核心应用】STM32H7系列57——MDK_FLM
【STM32图书分享之九】—《STM32F 32位ARM微控制器应用设计与实践》
无刷直流电机控制应用+基于STM8S系列单片机---电子书