当前位置: 首页 > news >正文

【动手学电机驱动】 STM32-FOC(1)STM32 电机控制的软件开发环境

STM32-FOC(1)STM32 电机控制的软件开发环境
STM32-FOC(2)STM32 导入和创建项目
STM32-FOC(3)STM32 互补 PWM 输出
STM32-FOC(4)IHM03 电机控制套件介绍
STM32-FOC(5)IHM03 套件无感FOC 控制

【动手学电机驱动】 STM32-FOC(1)STM32 电机控制的软件开发环境

    • 1. STM32 电机控制的 工作流
    • 2. STM32 图形化配置工具(STM32CubeMX)
      • 2.1 下载和安装
      • 2.2 安装支持包
    • 3. STM32 集成开发环境(STM32CubeIDE)
      • 3.1 下载和安装
      • 3.2 新建工程
    • 4. 电机控制软件开发套件(MCSDK)
      • 4.1 下载和安装
      • 4.2 创建新项目
      • 4.3 导入已有的项目
      • 4.4 项目视图
      • 4.5 生成项目
    • 5. MCSDK 电机控制组件
      • 5.1 X-Cube-MCSDK_5.X 中的组件
      • 5.2 电机控制API


本系列从零开始,针对小白介绍使用 STM32 单片机实现 PMSM 电机的 FOC 控制,帮助读者快速上手电机控制。

本节我们首先介绍 STM32 电机控制的工作流,然后安装电机控制开发所需的软件环境。

  • STM32CubeMX:STM32 图形化配置工具
  • STM32CubeIDE:STM32 集成开发环境
  • MCSDK:电机控制软件开发套件

已经完成软件开发环境安装和配置的同学,可以跳过本节。


1. STM32 电机控制的 工作流

STM32 电机控制 SDK 工作流:

  1. 使用 MotorControl Workbench(MCSDK) 创建工程;
  2. 在 STM32CubeMX 中生成代码;
  3. 在 CubeIDE 或 Keil 中打开代码,进行调试、编译与下载;
  4. 使用 MCSDK 可以实现对电机的在线调试、波形观测与状态监测。

在这里插入图片描述


2. STM32 图形化配置工具(STM32CubeMX)

STM32CubeMX 是ST公司推出的图形化配置工具,通过傻瓜化的操作便能实现相关配置,自动创建单片机工程及初始化代码。

STM32CubeMX工具可简化硬件和外设配置过程,而且用于开发的Nucleo板也拥有较高的性价比。同时也提供了丰富的部件供用户选择。

STM32CubeMX集成了HAL库和LL库,生成的代码也是基于这两个库。HAL库是ST标准库后推出的,设计采用高分层思想,当工程更改主控芯片后,所有函数几乎不需要任何更改。HAL库和LL库按外设模块设计,配置时可选择响应模块用不同的库。

STM32CubeMX 可以作为 eclipse 插件形式安装,也可以单独运行,需要安装JAVA运行环境。通过插件式安装,可以将STM32CubeMX 集成在一个IDE,使用十分方便。


2.1 下载和安装

  1. 下载 图形化配置工具(STM32CubeMX)安装程序。
    打开 ST 官网,用户登录,进入CubeMX 下载页面,选择所需的版本进行下载。
    官方下载地址:https://www.st.com.cn/content/st_com/zh/stm32cubemx.html

  2. 双击运行下载的安装程序(例如:SetupSTM32CubeMX-6.12.1-Win.exe,需要 1.2G 空间),根据提示进行安装。
    注意安装路径中不要有中文。
    建议不要安装在系统盘中。

  3. 安装完成后,以管理员身份运行 STM32CubeMX,主界面如下。分为:菜单栏、现有工程(Existing Projects)、新建工程(New Project) 和 软件管理(Manage software installations)。

  • 菜单按钮,用于文件管理、切换视图和帮助等。
  • 现有工程,用于加载近期的工程文件。
  • 新建工程,用于创建新的工程文件。
  • 软件管理,用于检查 STM32CubeMX 的更新机固件包的下载与安装。
    在这里插入图片描述

2.2 安装支持包

  1. 以管理员身份运行 STM32CubmeMX。

  2. 点击 Help - Embedded software packages manager,弹出如下图所示的 MCU 包管理窗口,根据使用的 MCU 型号选择对应的处理器和固件版本。

在这里插入图片描述

  1. 如果已经下载了相应的固件包,可以选择 “From Local…” 从本地安装。如果尚未下载固件包,可以选择 “Install” 在线安装。

安装完成后,MCU 包管理器 Embedded software packages manager 中对应的模块前的方框变成绿色,表明安装成功。


3. STM32 集成开发环境(STM32CubeIDE)

STM32CubeIDE是一体式多操作系统开发工具,是一种高级C/C++开发平台,具有STM32微控制器和微处理器的外设配置、代码生成、代码编译和调试功能。

STM32CubeIDE集成了STM32CubeMX的STM32配置与项目创建功能,以便提供一体化工具体验,并节省安装与开发时间。在通过所选板卡或示例选择一个空的STM32 MCU或MPU,或者预配置微控制器或微处理器之后,将创建项目并生成初始化代码。

STM32CubeIDE还具有标准和高级调试功能,其中包括CPU内核寄存器、存储器和外设寄存器以及实时变量查看、串行线传输监测器接口或故障分析器的视图。


3.1 下载和安装

  1. 下载 STM32 集成开发环境(STM32CubeIDE)安装程序。
    打开 ST 官网,用户登录,进入 STM32CubeIDE 下载页面,选择所需的版本进行下载。
    官方下载地址:https://www.st.com.cn/zh/development-tools/stm32cubeide.html

  2. 双击运行下载的安装程序(例如:st-stm32cubeide_1.16.1_22882_20240916_0822_x86_64.exe),根据提示进行安装。
    注意安装路径中不要有中文。
    建议不要安装在系统盘中。

  3. 安装完成后,打开 STM32 集成开发环境(STM32CubeIDE),主界面如下。

在这里插入图片描述

从上向下依次是 菜单按钮区、最近项目区和例程区。

  • 菜单按钮区,由于创建新项目、加载已有项目或启动 ST电机参数测量工具。
  • 最近项目区,用于加载近期的项目。
  • 例程区,用于加载项目示例。

3.2 新建工程

首次双击打开软件,将自动进入工程路径配置界面,注意工程的保存路径不能带有中文字符。

新建工程的基本操作如下:

  • 点击 Strat new STM32 project,进入工程主界面;
  • 输入芯片型号,进行对应工程的配置;
  • 设置工程名称和路径;
  • 选择芯片固件包的版本;
  • 选择下载器类型(推荐使用ST-LINK);
  • 安装固件支持包(需要登陆账号);
    完成各项配置后,保存工程文件。

关于 STM32CubeIDE 的使用,将在后文详细介绍。


4. 电机控制软件开发套件(MCSDK)

STM32微控制器提供工业标准Arm® Cortex®-M内核的性能,可运行矢量控制控制或FOC模式,广泛应用于空调、家用电器、无人机、建筑和工业自动化、医疗和电动自行车等高性能驱动的应用领域。

4.1 下载和安装

  1. 下载 电机控制软件开发套件(MCSDK)安装程序。
    打开 ST 官网,用户登录,进入MCSDK 下载页面,选择所需的版本进行下载。
    官方下载地址:https://www.st.com.cn/zh/embedded-software/x-cube-mcsdk.html

  2. 双击运行下载的安装程序(例如:en.X-CUBE-MCSDK-FUL_6.3.1.exe,需要 1.2G 空间),根据提示进行安装。
    注意安装路径中不要有中文。
    建议不要安装在系统盘中。

  3. 安装完成后,打开 电机控制软件开发套件(MCSDK),主界面如下。从上向下依次是 菜单按钮区、最近项目区和例程区。

  • 菜单按钮区,由于创建新项目、加载已有项目或启动 ST电机参数测量工具。
  • 最近项目区,用于加载近期的项目。
  • 例程区,用于加载项目示例。
    在这里插入图片描述

4.2 创建新项目

  1. 创建新项目(以IHM03 电机控制套件为例)。
  • 单击"New Project"按钮,弹出"New Project"对话框,在 “General Info” 菜单中进行设置:
    • 在 “Project name” 输入项目名称;
    • 在 “Num.Motors” 选择电机数量为 单电机 或 双电机;
    • 在 “Driving Algorithm” 选择驱动控制算法为 FOC 或 6-step;
    • 在 “Hardware Mode” 选择 Modular 模式;

在这里插入图片描述

  • 进入 “Motors” 菜单,根据 IHM03 电机控制套件的配置,选择电机为 GimBal GBM2804H-100T;

在这里插入图片描述

  • 进入 “Power board” 菜单,根据 IHM03 电机控制套件的配置,选择驱动板为 X-NUCLEO-IHM16M1 电机驱动板;

在这里插入图片描述

  • 进入 “Control board” 菜单,根据 IHM03 电机控制套件的配置,选择控制板为 NUCLEO-G431RB 控制板;

在这里插入图片描述

如果用户的配置有错误(无效),则会弹出一个对话框,通知用户这些选择不允许创建项目,并要求用户修改配置。

  • 有效地完成项目配置后,点击窗口右下方 “>>OK” 按钮,就会自动生成一个电机控制项目,并显示项目视图如下。视图的内容取决于用户配置的电路板和电机的信息。

在这里插入图片描述


4.3 导入已有的项目

在 MCSDK 主视图中单击 LoadProject 按钮,出现一个系统对话框窗口,用户可以选择要加载的项目文件(.stwb6)。
加载的项目出现在 project 视图中,用户可以在其中对其进行细化或修改。


4.4 项目视图

在这里插入图片描述

项目视图由以下部分组成:

  • 工具栏区域,用于控制应用程序导航、项目保存和生成;

  • 硬件区域信息,当前项目的硬件信息显示在该区域。

    • MCU引脚使用和冲突
      鼠标移动到 MCU 型号的位置,会在窗口中显示所选MCU的信息:
      • 产品文件夹:单击将打开所选MCU的产品文件夹页面。
      • 引脚使用和冲突:控制MCU的引脚分配,并接收有关引脚冲突的反馈。
    • 控制板(主控板)
      鼠标移动到控制板型号的位置,会在窗口中显示所选控制板的信息:
      • 数据简介文件夹:单击将打开相关控制板的数据简介。
      • 产品文件夹:点击打开相关产品文件夹页面。
    • 电源板(驱动控制板)
      鼠标移动到驱动控制板型号的位置,会在窗口中显示所选驱动板的信息:
      • 数据简介文件夹:单击将打开相关控制板的数据简介。
      • 产品文件夹:点击打开相关产品文件夹页面。
  • 项目步骤区域,显示需要配置参数的硬件,包括:电机,电源,PWM发生器和其它参数。

  • 硬件配置详细信息区域,用于微调所选硬件功能,方便查看所有主要信息和保护。


4.5 生成项目

单击工具栏区域的 “Generate the project” 会生成用户应用程序项目文件。

弹出一个窗口,允许用户选择目标工具链、固件包版本、驱动器类型,并生成电机控制固件应用程序。

在这里插入图片描述

如果项目文件尚未保存,则会弹出一个信息窗口,指示此项目需要先保存才能生成。使用“Save&Generate ”按钮进行保存和生成。


5. MCSDK 电机控制组件

ST MCSDK 以 STM32Cube 的外部组件方式提供给用户,主要包含三部分:
三相永磁同步电动机固件库(Motor Control FirmWare),ST Motor Control Workbench(ST电机工作台,简称“ST MC WB”),以及由ST MC WB从后台调用的 STM32CubeMX。

ST MCSDK 固件主要由 电机控制座舱(Motor Control Cockpit)、电机控制库(Motor Control Library)和用户界面库(UI Library)组成。电机控制库是底层的组件库,是 ST MCSDK 固件的核心,由一组组件组成,每个组件实现一项特定功能。电机控制座舱将这些组件集成起来,实现完整的电机控制功能。用户界面用于调试通信。

5.1 X-Cube-MCSDK_5.X 中的组件

以源程序提供的组件:

  • bus_voltage_sensor.c,总线电压
  • circle_limitation.c,电压极限限制
  • enc_align_ctrl.c,编码器初始定位控制
  • encoder_speed_pos_fdbk.c,编码器传感器相关
  • hall_speed_pos_fdbk.c,Hall 传感器相关
  • inrush_current_limiter.c,浪涌电流限制
  • mc_math.c,数学计算
  • mc_interface.c,马达控制底层接口
  • motor_power_measurement.c,平均功率计算
  • ntc_temperature_sensor.c,NTC 温度传感
  • open_loop.c,开环控制
  • pid_regulator.c,PID 环路控制
  • pqd_motor_power_measurement.c,功率计算
  • pwm_common.c,TIMER 同步使能
  • pwm_curr_fdbk.c,SVPWM, ADC 设定相关接口
  • r_divider_bus_voltage_sensor.c,实际总线电压采集
  • virtual_bus_voltage_sensor.c,虚拟总线电压
  • ramp_ext_mngr.c,无传感开环转闭环控制
  • speed_pos_fdbk.c,速度传感接口
  • speed_torq_ctrl.c,速度力矩控制
  • state_machine.c,电机状态相关
  • virtual_speed_sensor.c,无传感开环运行相关

以库文件提供的组件:

  • fast_div.c,快速软件除法
  • feed_forward_ctrl.c,前馈控制
  • flux_weakening_ctrl,弱磁控制
  • max_toque_per_ampere,最大转矩控制
  • sto_cordic_speed_pos_fdbk.c,速度和位置反馈Cordic
  • sto_pll_speed_pos_fdbk.c,速度和位置反馈PLL
  • revup_ctrl.c,启动控制

在简单的电机控制应用中通常不需要修改这部分代码,如果在Application MC API层不能满足应用需求时才会需要修改这部分代码。


5.2 电机控制API

在mc_api.c中有各种可以供用户使用的API接口,对于普通的电机控制用户可以不用关心底层的实现,只需要使用这些API就可完成电机控制。
电机库可以支持两个电机,在函数中使用后缀 Motor1 和 Motor2 来区分是电机1还是电机2。 下面以控制电机1 为例来说明API接口的含义。

电机控制API说明

函数名称函数形参函数返回值函数功能
MC_StartMotor1voidbool启动电机
MC_StopMotor1voidbool停止电机
MC_ProgramSpeedRampMotor1hFinalSpeed、hDurationmsvoid设定目标速度以及持续时间
MC_ProgramTorqueRampMotor1hFinalTorque、hDurationmsvoid设定目标力矩以及持续时间
MC_SetCurrentReferenceMotor1Iqdrefvoid设定 Iq,Id 参考
MC_GetCommandStateMotor1voidMCI_Command State_t返回指令执行状态
MC_StopSpeedRampMotor1voidbool停止速度指令执行,速度指令保存为执行停止前速度指令
MC_StopRampMotor1voidvoid停止执行电机正在运行的斜坡
MC_HasRampCompletedMotor1voidbool指令是否执行完成
MC_GetMecSpeedReferenceMotor1voidint16_t返回机械参考速度
MC_GetMecSpeedAverageMotor1voidint16_t返回平均机械速度
MC_GetLastRampFinalSpeedMotor1voidint16_t返回上次指令速度
MC_GetControlModeMotor1voidSTC_Modality_t返回控制模式
MC_GetImposedDirectionMotor1voidint16_t返回电机转动方向
MC_GetSpeedSensorReliabilityMotor1voidbool返回当前速度传感器可信度
MC_GetPhaseCurrentAmplitudeMotor1voidint16_t返回电流值
MC_GetPhaseVoltageAmplitudeMotor1voidint16_t返回电压值
MC_GetIabMotor1voidab_t返回 a,b 相电流
MC_GetIalphabetaMotor1voidalphabeta_t返回 clark 变换后的 Iα,Iβ
MC_GetIqdMotor1voidqd_t返回 park 变换后的 Id,Iq
MC_GetIqdrefMotor1voidqd_t返回 Id, Iq 参考
MC_GetVqdMotor1voidqd_t返回变换电压量 Vd, Vq
MC_GetValphabetaMotor1voidalphabeta_t返回变换电压量 Vα, Vβ
MC_GetElAngledppMotor1voidint16_t返回电角度 DPP 数据
MC_GetTerefMotor1voidint16_t返回电流参考
MC_SetIdrefMotor1hNewIdrefvoid设定电流 Id 参考
MC_Clear_IqdrefMotor1voidvoidIq,Id 数据回到默认值
MC_AcknowledgeFaultMotor1voidbool清除异常状态
MC_GetOccurredFaultsMotor1voiduint16_t得到发生了的故障状态
MC_GetCurrentFaultsMotor1voiduint16_t得到当前的故障状态
MC_GetSTMStateMotor1voidState_t得到电机状态

至此,我们就完成了 STM32 电机控制的软件开发环境的安装和配置。在下节中,我们将介绍如何使用IHM03 电机控制套件。


http://www.mrgr.cn/news/65357.html

相关文章:

  • Harmony Next集成支付宝sdk失败
  • 写了个建表语句 review 的 prompt
  • 解决缓存击穿的代码[最佳实践版]
  • 智慧汇聚:十款企业培训工具打造学习型企业
  • 苍穹外卖WebSocket无法建立连接 (修改前端代码)
  • scp免密上传文件
  • WPF使用Prism框架首页界面
  • CentOS 磁盘扩容
  • 加盟政策包括哪些内容,该怎么制定方案!
  • Linux-shell实例手册-磁盘
  • 【STM32开发之寄存器版】(十五)-数字音频接口I2S基础知识
  • 查看 Nginx 安装目录与配置文件位置的方法
  • 打开cmd窗口并执行cmd命令的Windows脚本(.bat文件)
  • 杭州德沃医美美妆美业精油美容si设计手册展厅设计公司
  • 什么开放式耳机好用?开放式耳机品牌十大排名揭秘误区
  • 产品让在Cesium中绘制迁徙线,把我00后的小同事给蚌埠住了~
  • Swift 开发教程系列 - 第2章:Swift 基础语法
  • 基于STM32的智能手环设计
  • 学习记录:js算法(八十三):全排列
  • 表件数count使用总结
  • 新闻稿件管理:SpringBoot框架技术突破
  • Java复习32(PTA)
  • 【智能算法应用】鹈鹕优化算法求解二维路径规划问题
  • 布朗运动
  • 大数据挖掘有哪些技术要点?
  • Fork突然报错