
此文的主要评测对象是基于NUCLEO-G431RB 开发板实现电机控制的软硬件环境。 硬件环境:控制板:Nucleok-G431RB;功率控制板:X-NUCLEO-IHM07M1;受控电机:BR2804-1700KV-1无刷电机;9 }. J: m1 x9 T- y 软件环境:电机参数设置及配置工具:ST Motor Control SDK 5.4.3工程代码的生成工具:STM32CubeMX;应用功能开发工具:STM32CubeIDE % s+ Z- `( [: k# i" Q5 |3 W 一、硬件介绍 ![]() ▲ X-NUCLEO-IHM07M1正面照 ( O* W- H8 h7 h" `3 w 该功率板带有CN7和CN10各38PIN(双排)的插座,用于实现与Nucleo系列的控制板连接,二者扣合在一起组合成电机控制的实验板。X-NUCLEO-IHM07M1主要可连接的控制板有STM32F302R8、STM32F303RE、STM32G431RB等。) f( F1 I9 P c+ w6 \2 r$ r) R5 x下图是Nucleo-G431RB控制板与X-NUCLEO-IHM07M1扩展板的主要功能引脚标识,电机程序控制的时候,可以参考这两图进行引脚的矫正与配置。 ![]() ▲ X-NUCLEO-IHM07M1 ( G+ K1 [6 N2 g# A' ` ![]() ![]() ![]() ▲ 控制板、功率板、电机实验实物连接 ![]() ▲ 功率板下的Nucleo-G431RB控制板 二、MCSDK 5.4.3 电机参数配置工具 9 i& f8 O# Y9 `+ F! e& }+ z 1、ST Motor Profiler,是一个电机配置工具,通过它可以快速配置所控制电机的相关参数,在“Select Boards”按钮中,选择控制板和功率板的组合,在右侧输入电机的磁对数(Pole Pairs)、最大转速(Max Speed)、最大电流(Max Current)、供电电压(VBus),以及电机磁场类型(magnetic)是表面贴式(SM-PMSM),还是内嵌式(I-PMSM):/ i& I3 N9 o5 z: N1 }; ]9 t电机是表贴式与内嵌式的区分方式如下图: ![]() # i) E- ~+ X) L 软件主要界面如下图: ![]() ▲ ST Motor Profiler 系统主界面 0 o5 N4 i' M6 B- l# a9 W+ A ![]() / h( j: Z3 X+ L6 t 选择好板卡后输入相关参数,并连接板卡,如果这板卡是第一次连接,会提示下载电机参数配置的测试固件。下载好后,点击“Start Profile”根据输入的参数(转速、最大电流以及I-PMSM的Ld/Lq比值)对电机的运行进行配置,并自动分析出电机的各项运行参数,例如:最大转速、最大扭矩、最大加速度等。电机运行参数调校得是一个漫长得过程,根据需要的场景可利用这个功能进行相关参数的粗调。如下图:![]() ' U* @( @' ?7 u- O: M 电机参数配置好后,点击“Save”按钮进行保存,待” MotorControl Workbench”工具中进行使用。保存窗体中输入电机参数的文件名和描述即可。% X& q& F& Y. y# r
![]() ![]() 保存窗体 覆盖同名文件提示 顺便说一下:离开“Motor Profiler”工具,最好将工具与开发板的固件断开,方便其他应用程序使用,恢复到下图状态即可。 ![]() ( d, q+ y0 G7 A3 g0 u* q 2、MotorControl Workbench 5.4.3 相关参数的设定及电机控制代码生成。 第一步:新建项目 ![]() 9 K5 L2 Q3 ]4 D: N 在新建项目窗体中,选择控制板、功率板信号以及运行的电机名称,这里的电机名称实际上是包含了一些列电机参数的文件,下图是工具中默认的电机参数配置。 ![]() ![]() ▲ 新建项目窗体 项目创建好后,会根据控制板、功率板和电机的信息生成项目信息提示。8 Q) r3 g, u7 v0 E6 n3 h6 h9 } ![]() ▲ 新建项目信息 ![]() ▲ 控制面板按钮的菜单位置 ![]() ▲ 控制操控面板 ![]() 特别说明一下,在 “MotorControl Workbench 5.4.3”中,自动生成的控制板引脚与实际的不符,这会让项目生成的代码无法正确驱动电机,这里需要对照原理图逐一检查。避免控制板的电路和芯片出现异常。7 g! ~! [% R! k' g' J X-Nucleo-IHM07M1-3Sh 的电机驱动控制方案搭配有F302R8和G431RB的控制板,二者使用的引脚几乎一致,只有少部分区别,主要的DAC、ADC、温度等配置是一样的,在用G431RB控制板搭建电机驱动方案时,可参考F302R8方案中的配置内容。 ![]() ▲ Nucleo-F302R8电机驱动控制方案 ![]() ▲ Nucleo-G431RB电机驱动控制方案 ![]() ▲ 代码生成按钮 - R9 R5 f! i# g+ A% P7 v 第一次生成的代码时“UPDATE”按钮是灰色的,选择Cubemx版本、选择开发工具、选择固件库版本,以及驱动方式,点击“GENERATE”按钮后就会在项目保存目录下生成该项目的代码。这里选择的开发工具是ST STM32CubeIDE。 ![]() ▲ 项目代码生成与更新 ![]() ▲ 代码生成中的提示 ![]() ▲ 代码生成完成后 三、用STM32CubeMX生成用户应用代码 ![]() 这里验证Nucleo-G431RB对功率板的电机控制,暂不加入相关设备(略过),有兴趣的请观看电堂精心准备的《STM32电动机控制应用系列讲座》专题进行学习。因为篇幅有限不在这里深入描述。 四、用STM32CubeIDE对整体项目代码生成及验证 # o: \4 P7 K3 N' W. I 在“MotorControl Workbench”工具中生成的工程代码类型是“ST STM32CubeIDE”,在ST STM32CubeIDE导入相关工程即可实现代码的编译与下载验证(位置:FileàImport)按钮。![]() ▲ Import菜单功能位置 选择“Existing Projects into Workspace”进行外部工程项目的导入; # Q" X! c* ^5 Y( _& U ![]() ▲ 选择导入外部工程到工作区 ![]() ▲ 选择项目导入目录,ST STM32CubeIDE会在其子目录下搜索出项目工程 ![]() ▲ 项目的工程结构 ! w' }: J/ j1 k& W2 o4 ^ 工程的main函数及入口在main.c文件中,芯片引脚、设备驱动相关的初始化和功能应用在此文件中。跟普通的STM32工程文件结构相似,流程相同。![]() ▲ 选择Main.c文件 . t, U) f$ ^% R; X 通过“MotorControl Workbench”生成的工程项目,只有相应的结构,并没有电机的启动停止的操作(按键电机停止运转除外),可以在用户代码区添加这么两行指令。1、 设置以速度模式运行1号电机2、 启动1号电机 ![]() ▲ 添加的电机启动代码 2 k/ l5 K1 J( H$ W" i4 Q+ Q 程序经过编译、下载到Nucleo-G431RB控制板,接通电机电源,重启控制板,这时功率板连接的电机开始运转,按下控制板的用户按键,电机停止转动,按下Reset键,电机重新运转。 ![]() ▲ 电机运行效果图 7 H6 T- m* s% E4 C 至此Nucleo-G431RB的电机应用项目软硬件环境搭建及功能验证结束了,不过这才是电机控制的开始,后续很多关于无刷电机控制理论的实验内容需要进行,例如上位机控制通讯、电机启动优化、其他无刷电机及功率板的验证、无刷电机低速率转矩的理论和实验、无刷电机的加减速控制等等,无刷电机相关的控制的知识盛宴已准备就绪,有了ST的这套开发工具,控制论的学习不再仅限于理论,还有实验与发现。: l9 ?/ W& R+ [* ?9 X9 e; A |
![]() ![]() ![]() ![]() ![]() ![]() |
感谢分享! |
STM32F10xxx 正交编码器接口应用笔记 及源代码
基于STM32定时器ETR信号的应用示例
STM32 生态系统|基于STM32WB的低功耗蓝牙应用(一)
《无刷直流电机控制应用 基于STM8S系列单片机》
STM32定时器触发SPI逐字收发之应用示例
【银杏科技ARM+FPGA双核心应用】STM32H7系列10——ADC
【银杏科技ARM+FPGA双核心应用】STM32H7系列57——MDK_FLM
【STM32图书分享之九】—《STM32F 32位ARM微控制器应用设计与实践》
无刷直流电机控制应用+基于STM8S系列单片机---电子书
STM32 USB的程序,包含固件、驱动和测试用的应用程序