【动手学电机驱动】STM32-FOC(8)基于 IHM03 的无感 FOC 控制

STM32-FOC(1)STM32 电机控制的软件开发环境
STM32-FOC(2)STM32 导入和创建项目
STM32-FOC(3)STM32 三路互补 PWM 输出
STM32-FOC(4)IHM03 电机控制套件介绍
STM32-FOC(5)基于 IHM03 的无感方波控制
STM32-FOC(6)基于 IHM03 的无感FOC 控制
STM32-FOC(7)MCSDK Pilot 上位机控制与调试
STM32-FOC(8)MCSDK Profiler 电机参数辨识

【动手学电机驱动】STM32-FOC(8)基于 IHM03 的无感 FOC 控制

  • 1. 开发环境
  • 2. 硬件连接与快速运行
  • 2.1 硬件连接
  • 2.2 快速运行
  • 2.3 跳线配置
  • 3. 无感 FOC 电机控制程序开发
  • 3.1 配置电机控制包
  • 3.2 图形化配置
  • 3.3 代码编辑、编译与调试
  • 4. 更换电机与电机参数设置
  • 此前我们已经学习了 STM32G4 MCU 编程的基本操作,实现了 3路互补带死区 PWM波的生成。
    P-NUCLEO-IHM03 STM32电机控制套件使用FOC算法,为三相、低压和低电流的 BLDC 或 PMSM 电机提供电机控制解决方案。
    本节从 STM32 电机控制包配置开始,介绍使用 IHM03 电机控制套件开发无感 FOC 电机控制程序的基础操作。

    1. 开发环境

    1. 硬件要求
  • Windows PC
  • X-NUCLEO-IHM16M1 电机驱动扩展板
  • STM32 Nucleo 开发板
  • 直流电源,输出电压 12 VDC
  • 三相无刷电机
  • USB Type-A 或 Type-c 至 Micro-B 连接线缆
    1. 系统要求:
  • Windows 操作系统(Windows 7、Windows 8 和 Windows 10)、Linux 64-bit 或 macOS
  • USB Type-A 或 Type-c 至 Micro-B 连接线缆,用于将STM32 Nucleo板连接到 PC
    1. 开发工具
  • STM32 电机控制 SDK:X-CUBE-MCSDK
  • STM32 图形化配置工具:STM32CubeMX
  • 集成开发环境 IDE,可以选择一下三者之一:
  • STM32 集成开发环境(STM32CubeIDE)
  • Keil 开发套件(MDK-ARM-STR)
  • IAR 嵌入式开发环境(IAR-EWARM)
  • 2. 硬件连接与快速运行

    P-NUCLEO-IHM03 STM32电机控制套件已经将演示软件预装在STM32 Flash 中,便于在外设独立模式下进行演示。对于新购买的 IHM03 电机控制套件(没有烧录过其它程序),连接硬件系统后就可以快速运行。

    2.1 硬件连接

    IHM03 电机控制套件硬件连接的操作步骤如下。

    1. X-NUCLEO-IHM16M1 电机驱动板必须通过位于两侧的 CN7 和 CN10 连接器插接到 NUCLEO-G431RB 控制板上, 堆叠如下图所示。
      NUCLEO-G431RB 板上的两个按钮(蓝色用户按钮B1和黑色重置按钮B2)必须保持未覆盖状态。

    1. 将三条电机线 U、V、W 连接到 X-NUCLEO-IHM16M1 电机驱动板上的 CN1连接器。

    2. 配置 NUCLEO-G431RB 控制板上的跳线:

  • 从 USB 为 NUCLEO-G431RB 供电时,要将JP5 的 5V-STLK 源设为 [1-2] 位置(跳线安装在 pin1、pin2 针脚);
  • JP8 的 VREF 设为 [1-1] 位置(跳线安装在 pin1、pin1 针脚);
  • JP6(IDD)设为 ON 状态(安装 2针跳线)。
    1. 配置 X-NUCLEO-IHM16M1 电机驱动板上的跳线,以选择所需的控制算法(如 FOC):
  • J5 设为 ON 状态(安装 2针跳线);
  • J6 设为 ON 状态(安装 2针跳线);
  • 对于 FOC 控制,将跳线设置为:
  • NUCLEO-G431RB 控制板上的 JP4 和 JP7 设为 OFF 状态(不安装跳线);
  • J2 设为 [2-3] 位置(跳线安装在 pin2、pin3 针脚);
  • J3 设为 [1-2] 位置(跳线安装在 pin1、pin2 针脚)。
  • 注意:更改控制模式之前,必须关闭电源电压。

    1. 将 12V/2A 直流电源连接到 NUCLEO-G431RB 控制板上的 CN1 连接端口(mini-USB),或连接到 X-NUCLEO-IHM16M1 电机驱动板上的 J4 连接器(电源插座),并通电(IHM03 套件中标配的云台电机的最大电压为12 VDC)。

    2.2 快速运行

    由于 IHM03 电机控制套件在出厂时已经将演示软件预装在STM32 Flash 中,可以在外设独立模式下进行演示。对于新购买的 IHM03 电机控制套件(没有烧录过其它程序),连接硬件系统后就可以快速运行,具体操作步骤如下。

    1. 按下 NUCLEO-G431RB 控制板上的蓝色按钮 B1,电机就开始转动。

    2. 调节 X-NUCLEO-IHM16M1 电机驱动板上的电位器,可以调节电机的转速。

    注意:对于已使用过的 IHM03 电机控制套件,可能 Flash 中已烧录其它程序(例如上节中的生成 PWM 实验),则不能采用该方式快速运行,而需要按本文内容开发无感 FOC 电机控制程序,才能实现电机控制。

    2.3 跳线配置

    X-NUCLEO-IHM16M1 电机驱动板上的跳线配置,如下图所示。根据跳线选择,可以选择单分流器或三分流器电流传感模式、带上拉的霍尔传感器或编码器,或NUCLEO-G431RB板的外部电源。

    注意 JP4 和 JP7 必须具有相同的配置:对于三分流配置,JP4 和 JP7 都是打开的;对于单分流配置,JP4 和 JP7 都是关闭的。在 PCB 上三分流器或单分流器的正确位置与默认位置一起显示。

    P-NUCLEO-IHM03 板上的主要连接端子的功能如下表所示。

    P-NUCLEO-IHM03 堆叠在 ST-morpho 连接器上,可从控制板的两侧访问公引脚头(CN7和CN10)。它们可用于将 X-NUCLEO-IHM16M1 电源驱动板连接到 NUCLEO-G431RB 控制板。ST morpho连接器上提供MCU的所有信号和电源引脚。

    3. 无感 FOC 电机控制程序开发

    3.1 配置电机控制包

    1. 打开 电机控制软件开发套件(Motor Control WorkBench),创建新项目。
      单击"New Project"按钮,弹出"New Project"对话框,如下图所示。

    1. 在 “General Info” 菜单中进行设置:
    2. 在 “Project name” 输入项目名称;
    3. 在 “Num.Motors” 选择电机数量为 单电机:1 Motor;
    4. 在 “Driving Algorithm” 选择驱动控制算法为 磁场定向控制:FOC;
    5. 在 “Hardware Mode” 选择 Modular 模式;

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

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

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

    1. 完成项目配置后,点击窗口右下方 “>>OK” 按钮,就会自动生成一个电机控制项目,并显示项目视图如下。
      视图的内容取决于用户配置的电路板和电机的信息。
      如果用户的配置有错误(无效),则会弹出一个对话框,通知用户这些选择不允许创建项目,并要求用户修改配置。

    1. 修改配置的电路板和电机的信息。
      如果配置的电路板或电机的信息与实际使用产品有差异,可以点击相应的模块(蓝色模块),进入该模块的参数配置页面进行修改。
      在本例中,电机 GimBal GBM2804H-100T 的默认设置(具体参数与SDK版本有关)为最大电压 10Vdc、最大电流 0.8Apk。这与本套件的配置不一致,因此要点击图中 Motor 蓝色模块,进入电机参数设置页面,将最大电压设为 14.8Vdc、最大电流设为 2.1Apk。

    完成电机参数修改后,点击 “>>OK” 确认,返回电机控制项目视图。如下图所示,此时 Motor 蓝色模块中的电机参数已经被修改为 “14.8Vdc/2.1Apk” 。

    在这个界面,还可以对电机直接进行控制,具体使用方法将在以后的文章中介绍。

    1. 配置速度位置控制方案。

    点击项目视图中的 “Speed Sensing” 蓝色模块,进入速度位置管理界面。

    在 Main Sensor – Sensor Selection 选项中,选择 Sensor-less(Observer+PLL),即采用无传感器(使用位置观测器+PLL获取实时的转子位置)进行控制。

    1. 项目生成。
  • 选择菜单 “Generate the project” 按键,根据配置参数生成项目。
  • 跳出 “Project generation” 窗口,选择 STM32CubeMX 版本、固件版本(Firmware Package Version),Target Toolchain 为 STM32CubeIDE。
  • 默认使用 HAL 驱动。
  • 点击 “GENERATE” 按键,生成代码。
  • 注意选择的固件包的版本,如果没有安装相应版本的固件包,则会自动下载。

    1. 项目生成完成后,点击 “RUN STM32CubeMX” 按键,打开 STM32CubeMX 进行图形化配置。

    3.2 图形化配置

    在 Motor Control WorkBench)中生成项目,点击 “RUN STM32CubeMX” 按键,打开 STM32CubeMX,如下图所示。

    参考点灯实验程序,可以将PA5 管脚设置为 GPIO_Output——这与电机控制无关,只供参考。

    点击 “Project Manager” 菜单按钮,进入工程配置界面。

  • 输入项目名称为 “IHM03_02”,选择项目的保存路径。
  • 将Toolchain / IDE 设为 STM32CubeIDE(根据用户安装和使用的 IDE 选择,也可以选择 EWARM、MDK-ARM、MakeFile、CMake 等IDE工具)。
  • 点击右上角 “GENERATE CODE” 生成代码。
  • 加载完毕后,弹出代码生成提示窗口,如下图所示。点击“ OPEN PROJECT”,进入 STM32CubeIDE。

    3.3 代码编辑、编译与调试

    1. 打开 STM32CubeIDE,导入 IHM03_02 项目。
      如果是从 CubeMX 代码生成提示窗口点击“ OPEN PROJECT”,则进入 STM32CubeIDE后自动打开 IHM03_02 项目。

    2. 在左侧 Project Explorer 中,选择 IHM03_02 – Application – User,打开主程序 main.c ,如下图所示。

  • 主程序 main.c
  • 
      /******************************************************************************
      * @file           : main.c
      * @brief          : Main program body
      ******************************************************************************/
    
    

    如果要加入 LED2 闪烁功能,则要在 while(1) 循环中添加以下程序(这与电机控制无关,只供参考):

      /* Infinite loop */
      while (1)
      {
        /* USER CODE BEGIN WHILE */
    	HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);
    	/* Insert delay 500 ms */
    	HAL_Delay(500);
        /* USER CODE END WHILE */
      }
    

    打开中断服务程序 tm32g4xx_it.c,stm32g4xx_mc_it.c。

  • 中断服务程序 tm32g4xx_it.c
  •   /******************************************************************************
      * @file    stm32g4xx_it.c
      * @brief   Interrupt Service Routines.
      ******************************************************************************/
    
    
  • 中断服务程序 stm32g4xx_mc_it.c,
  •   /******************************************************************************
      * @file    stm32g4xx_mc_it.c
      * @author  Motor Control SDK Team, ST Microelectronics
      * @brief   Main Interrupt Service Routines.
      *          This file provides exceptions handler and peripherals interrupt
      *          service routine related to Motor Control for the STM32G4 Family.
      ******************************************************************************/
    
    

    1. 程序编译
  • 用 USB连接线,连接 PC 与 NUCLEO-G431RB 开发板。
  • 点击工具栏中 “Build Debug” 按键对程序代码进行编译。
    1. 程序下载烧录到目标板
  • 点击工具栏中 “Debug” 按键,将程序下载烧录到目标板 NUCLEO-G431RB 。
  • 程序烧录完成后,显示内容如下。

    STMicroelectronics ST-LINK GDB server. Version 7.8.0
    Copyright (c) 2024, STMicroelectronics. All rights reserved.
    
    Starting server with the following options:
            Persistent Mode            : Disabled
            Logging Level              : 1
            Listen Port Number         : 61234
            Status Refresh Delay       : 15s
            Verbose Mode               : Disabled
            SWD Debug                  : Enabled
    
    Waiting for debugger connection...
    Debugger connected
    Waiting for debugger connection...
    Debugger connected
    Waiting for debugger connection...
          -------------------------------------------------------------------
                           STM32CubeProgrammer v2.17.0                  
          -------------------------------------------------------------------
    
    Log output file:   C:\Users\huang\AppData\Local\Temp\STM32CubeProgrammer_a12524.log
    ST-LINK SN  : 003E00363432511230343838
    ST-LINK FW  : V3J15M7
    Board       : NUCLEO-G431RB
    Voltage     : 3.28V
    SWD freq    : 8000 KHz
    Connect mode: Under Reset
    Reset mode  : Hardware reset
    Device ID   : 0x468
    Revision ID : Rev X
    Device name : STM32G43x/G44x
    Flash size  : 128 KBytes
    Device type : MCU
    Device CPU  : Cortex-M4
    BL Version  : 0xD4
    
    Memory Programming ...
    Opening and parsing file: ST-LINK_GDB_server_a12524.srec
      File          : ST-LINK_GDB_server_a12524.srec
      Size          : 38.10 KB 
      Address       : 0x08000000 
    
    Erasing memory corresponding to segment 0:
    Erasing internal memory sectors [0 19]
    Download in Progress:
    
    File download complete
    Time elapsed during download operation: 00:00:01.011
    
    Verifying ...
    Download verified successfully 
    Shutting down...
    Exit.
    

    1. 程序的运行与调试
  • 对照 2.1 检查 IHM03 套件硬件连接和电源连接。
  • 接通 12Vdc电源。
  • 点击工具栏中 “Resume” 按键 或 F8 快捷键,运行程序。
  • LED2 灯闪烁(如果加入闪灯程序)。
  • 按下蓝色按键 B1,电机控制程序启动。电机指示灯亮,电机旋转。
  • 实验结果如下:
    请添加图片描述

    至此,我们就完成了使用 IHM03 电机控制套件开发基本的无感 FOC 电机控制程序。

    4. 更换电机与电机参数设置

    当更换电机时,需要根据电机参数对配置进行修改。
    一种方法是在 MCSDK 中增加用户自定义的电机型号,我们将在 STM32-FOC(8)MCSDK Profiler 电机参数辨识 详细介绍。另一种方法是通过 IDE 在程序中直接修改电机参数,下面对此进行介绍。

    我们更换另一种型号的直流电机 KJ230F,该电机的主要参数为:

  • 极对数:5
  • 电阻:1.7 ohm
  • 电感:0.0018 H
  • 我们首先介绍 如何在程序中设置电机参数。

    1. 打开硬件参数配置程序 mc_parameters.c,鼠标选中 “parameters_conversion.h” 后按 F3 按键打开;
    /*   * @file    mc_parameters.c */
    
    /* Includes ------------------------------------------------------------------*/
    //cstat -MISRAC2012-Rule-21.1
    #include "main.h" //cstat !MISRAC2012-Rule-21.1
    //cstat +MISRAC2012-Rule-21.1
    #include "parameters_conversion.h"
    #include "r3_2_g4xx_pwm_curr_fdbk.h"
    
    1. 打开包含文件 parameters_conversion.h,鼠标选中 “pmsm_motor_parameters.h” 后按 F3 按键打开;
    /*     * @file    parameters_conversion.h */
    /* Define to prevent recursive inclusion -------------------------------------*/
    #ifndef PARAMETERS_CONVERSION_H
    #define PARAMETERS_CONVERSION_H
    
    #include "mc_math.h"
    #include "parameters_conversion_g4xx.h"
    #include "pmsm_motor_parameters.h"
    #include "drive_parameters.h"
    #include "power_stage_parameters.h"
    

    说明:也可以通过其它方式找到并电机参数定义文件 pmsm_motor_parameters.h,总之打开并修改电机参数定义文件 pmsm_motor_parameters.h 即可。

    1. 打开电机参数定义文件 pmsm_motor_parameters.h,找到其中的电机电气参数定义部分 “MOTOR ELECTRICAL PARAMETERS”,修改如下:
  • 将极对数 POLE_PAIR_NUM 修改为 5;
  • 将定子电阻 RS 修改为 1.7 (ohm);
  • 将定子电感 LS 修改为 0.0018 (H)。
  • 如有需要,可以在该程序后续段落修改最大转速 MOTOR_MAX_SPEED_RPM、电压电流等参数。
  • 修改后的程序如下。

      * @file    pmsm_motor_parameters.h
    /*     * @file    parameters_conversion.h */
    
    /* Define to prevent recursive inclusion -------------------------------------*/
    #ifndef PMSM_MOTOR_PARAMETERS_H
    #define PMSM_MOTOR_PARAMETERS_H
    
    /************************
     *** Motor Parameters ***
     ************************/
    
    /***************** MOTOR ELECTRICAL PARAMETERS  ******************************/
    #define POLE_PAIR_NUM           5 /* Number of motor pole pairs */
    #define RS                      1.69 /* Stator resistance , ohm*/
    #define LS                      0.0018 /* Stator inductance, H
                                                     For I-PMSM it is equal to Lq */
                                                     
    /* When using Id = 0, NOMINAL_CURRENT is utilized to saturate the output of the
       PID for speed regulation (i.e. reference torque).
       Transformation of real currents (A) into int16_t format must be done accordingly with
       formula:
       Phase current (int16_t 0-to-peak) = (Phase current (A 0-to-peak)* 32767 * Rshunt *
                                       *Amplifying network gain)/(MCU supply voltage/2)
    */
    
    #define MOTOR_MAX_SPEED_RPM     1572 /*!< Maximum rated speed  */
    #define MOTOR_VOLTAGE_CONSTANT  5.0 /*!< Volts RMS ph-ph /kRPM */
    #define NOMINAL_CURRENT_A       2.160
    

    1. 重新编译程序,将程序下载烧录到目标板 NUCLEO-G431RB 。
  • 对照 2.1 检查 IHM03 套件硬件连接和电源连接。
  • 驱动板、控制板上电后:
  • LED2 灯闪烁(如果加入闪灯程序)。
  • 按下蓝色按键 B1,电机开始运行。
  • 按下黑色按键 B2,电机停止运行。
  • 至此,我们就完成了对新电机的参数设置。
    如果电机运行异常,例如噪音大,卡顿,则需要进一步调节控制环路的 PI 参数,对此将在后文介绍。

    参考资料:

    1. P-NUCLEO-IHM03 STM32电机控制套件
    2. UM2505 – STM32G4 Nucleo-64 boards (MB1367), STMicroelectronics/意法半导体, 2021
    3. UM2538 – STM32 motor-control pack using the FOC algorithm for three-phase, low-voltage, and low‑current motor evaluationl, STMicroelectronics/意法半导体, 2023
    4. 许少伦等,STM32G4入门与电机控制实战,电子工业出版社,2023

    版权声明:
    youcans@qq 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/143450689)
    Copyright@youcans 2024
    Crated:2024-11

    作者:youcans_

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【动手学电机驱动】STM32-FOC(8)基于 IHM03 的无感 FOC 控制

    发表回复