首页 > 评测 > 分分钟带你入门无刷电机控制——P-NUCLEO-IHM001套件评测

分分钟带你入门无刷电机控制——P-NUCLEO-IHM001套件评测

  • 作者:刘昆磊
  • 来源:21ic
  • [导读]
  • 电动机作为当今各个领域的动力主要来源,如今全世界大约二分之一的发电量被电机消耗掉。这样,它的控制能效至关重要。ST(意法半导体)公司致力于建立高效电机控制生态系统,不仅有适用于电机控制的微处理器MCU、电机驱动IC,还提供有免费且易于使用的电机控制软件算法,协助电机控制工程师快速实现高效的电机矢量控制方案。

三、P-NUCLEO-IHM001入门

在ST的生态系统中,为P-NUCLEO-IHM001套件提供了非常丰富的开发工具,有ST推出的STM32 CUBEMX配置工具可使用图形化界面完成STM32微处理器的初始化配置工作,有IAR、MDK、GCC-based IDEs等集成IDE。另外ST还提供HAL软件库和标准库方便用户快速实现软件功能。

除此之外,ST公司还针对电机开发提供了方便快捷且免费的MC 6-STEP LIB软件库,还有基于PC的免费MC WORKBENCH软件,可简化电机控制固件库的自定义设置,帮助用户设置不同的电机。最新算法库(v4.2)引入一个便利的“Motor Profiler”工具,能够自动侦测电机参数,自动配置电机控制算法库,做到了一接触即可进行微调(One-Touch Tuning)的方式。

下面我们分别使用两种方法来测试一下它们的使用,体验一下ST提供的软件库和工具的方便快捷。

1、基于X-CUBE-SPN7测试

(1)X-CUBE-SPN7软件包介绍

ST公司提供的X-CUBE-SPN7软件包是一个基于STM32Cube扩展软件包,程序采用了ST最新推出的HAL库。软件库包含了在STM32运行所需的驱动程序、初始化函数和控制L6230接口等。软件包采用了HAL库,可方便用户在NUCLEO-F030R8、NUCLEO-F103RB、NUCLEO-F302R8、NUCLEO-F401RE等核心板上迁移而不需要过多的修改程序。软件包还提供了驱动P-NUCLEO-IHM001套件的例程。

X-CUBE-SPN7软件包的下载地址:http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1920/PF262647

分分钟带你入门无刷电机控制——P-NUCLEO-IHM001套件测评8633.png

图3-1 X-CUBE-SPN7软件包下载

所述STM32Cube固件的结构可以分成3个层,每层之间相互独立,层与层之间通过API接口函数交互,如下所示:

分分钟带你入门无刷电机控制——P-NUCLEO-IHM001套件测评8713.png

图3-2 X-CUBE-SPN7软件包结构

Level 0:这个层又分成了3个子层:

板级支持包(BSP):这个层提供了硬件板卡的内部组件和外部资源的API接口,包括音频编解码器,IO扩展器,触摸屏,SRAM驱动器,LCD驱动器等。这里的组件是相对于外部电路资源,它们都是STM32微控制器的内部硬件资源,可以移植到其他开发板上。而BSP驱动程序是针对特定电路板的外设元件的驱动,比如用户LED或按钮,这部分提供的API接口函数的命名规则是BSP_FUNCT_Action(),比如:BSP_LED_Init()是开发板的用户LED的初始化函数,BSP_LED_On()是点亮LED的函数。

硬件抽象层(HAL):这一层提供了与低一级的驱动程序和上层的接口,用户不需要涉及更多的硬件信息,使用HAL层接口函数就可以访问片内外设I2C、SPI和UART等。

Level 1:这一层又被分成2个子层

中间件组件层:该层包含了USB主机和设备库、STemWin、FreeRTOS、FATFS、LwIP、PolarSSL库等。

基于中间层的实例:每个中间件组件带有一个或多个实例(也称为应用)来给开发者参考使用。

Level 2:该层给出了基于中间层的实时和图形工程实例应用。

(2)下面使用IAR软件和X-CUBE-SPN7软件包测试

在这里选择大家熟悉的IAR作为开发环境,基于X-CUBE-SPN7软件包。完成的功能为,P-NUCLEO-IHM001套件上电后,10秒后自动启动电动机运行,初始速度为2000rpm,运行10秒后速度调整为4000rpm,运行10秒后速度调整为6000rpm,运行10秒停止电机,之后重复上述过程。

为了快速实现功能,测试X-CUBE-SPN7软件包,我在这里在自带的实例工程的基础上修改完成。

首先将X-CUBE-SPN7软件包解压,找到P-NUCLEO-IHM001套件的NUCLEO-F302R8核心板例程,位置在STM32CubeExpansion_SPN7_V1.0.0\Projects\Multi\Examples\MotorControl\EWARM\STM32F302R8-Nucleo这个位置,如下图。

分分钟带你入门无刷电机控制——P-NUCLEO-IHM001套件测评9642.png

图3-3 X-CUBE-SPN7软件包例程

打开IAR工程如下图,可以看到工程文件结构相当清楚。

分分钟带你入门无刷电机控制——P-NUCLEO-IHM001套件测评9693.png

图3-4 X-CUBE-SPN7软件包例程结构

在使用X-CUBE-SPN7软件的时候,如下图的MC_SixStep_param.h文件非常重要,里面保存了基本的梯形6步法电机控制的参数设置。

分分钟带你入门无刷电机控制——P-NUCLEO-IHM001套件测评9792.png

图3-5 MC_SixStep_param.h文件结构

由上面可以看到,参数设置分为2大部分,基本参数和高级参数设置。我们首先来分析一下基本参数设置:

分分钟带你入门无刷电机控制——P-NUCLEO-IHM001套件测评9870.png

图3-6 基本参数

NUM_POLE_PAIRS表示使用的电机的极对数,后面的7表示BR2804-1700Kv-1型三相无刷直流电动机的极对数是7。

DIRECTION表示电机的旋转方向,0表示正转,1表示反转,在这里要注意电机的接线必须符合前面的介绍。

TARGET_SPEED表示电动机的初始目标速度,3000表示3000rpm。

POTENTIOMETER表示是否使用电位器调整电机的速度,0表示禁止,1表示允许,默认是允许的。

高级参数在这里就不过多介绍了。

接下来看一下main_F302.c文件下的主函数。

首先是系统资源的初始化部分,可以看到,这里初始化时钟和片内外设资源。

分分钟带你入门无刷电机控制——P-NUCLEO-IHM001套件测评10167.png

图3-7 主函数初始化

接下来是调用梯形6步电机控制库的初始化函数,对梯形6步使用到的各种硬件软件初始化。

分分钟带你入门无刷电机控制——P-NUCLEO-IHM001套件测评10223.png

图3-8 6步法初始化

下面是主函数的死循环,在里面有关于6步发电机控制实例的说明和参考API函数,以及给用户提供的编程位置。

分分钟带你入门无刷电机控制——P-NUCLEO-IHM001套件测评10289.png

图3-9 主函数用户代码添加位置

我们为了实现预期的功能,修改MC_SixStep_param.h文件中的基本参数。

分分钟带你入门无刷电机控制——P-NUCLEO-IHM001套件测评10350.png

图3-10 修改电机基本参数

main_F302.c文件中添加自己的程序。

分分钟带你入门无刷电机控制——P-NUCLEO-IHM001套件测评10390.png

图3-11 添加用户代码

之后编译下载调试程序,发现程序完成预期的效果,上个视频,大家可以看到,这里使用X-CUBE-SPN7软件包只需几步就完成了预期的目标。

视频3-1 X-CUBE-SPN7软件包测试

  • 本文系21ic原创,未经许可禁止转载!

网友评论