STM32-FOC(1)STM32 电机控制的软件开发环境
STM32-FOC(2)STM32 导入和创建项目
STM32-FOC(3)STM32 三路互补 PWM 输出
STM32-FOC(4)IHM03 电机控制套件介绍
STM32-FOC(5)基于 IHM03 的无感FOC 控制
STM32-FOC(6)基于 IHM03 的无感方波控制
STM32-FOC(7)基于 MCSDK6.0 控制与调试速度环
【动手学电机驱动】 STM32-FOC(7)基于 MCSDK6.0 控制与调试速度环
- 1. 准备工作
- 1.1 开发环境
- 1.2 硬件连接
- 2. 基于 IHM03 的无感FOC 控制
- 2.1 配置电机控制包
- 2.2 图形化配置
- 2.3 代码编辑、编译与调试
- 3. 使用 MCSDK Pilot 控制与调试
- 3.1 加载上位机 GUI
- 3.2 从上位机控制电机运行
- 3.3 从上位机监控电机运行
- 4. 速度环控制器
- 4.1 电流环 PI 控制器
- 4.2 速度电流双闭环 PI 控制器
P-NUCLEO-IHM03 STM32电机控制套件,为三相、低压和低电流的 BLDC 或 PMSM 电机提供电机控制解决方案。此前我们已经学习了使用 IHM03 电机控制套件开发无感 FOC 电机控制程序的基础操作。
本节在使用 IHM03 电机控制套件开发无感速度环电机控制程序的基础上,详细介绍基于 MCSDK6.0 的速度环控制与调试方法。
1. 准备工作
1.1 开发环境
- 硬件要求
- Windows PC
- X-NUCLEO-IHM16M1 电机驱动扩展板
- STM32 Nucleo 开发板
- 直流电源,输出电压 12 VDC
- 三相无刷电机
- USB Type-A 或 Type-c 至 Micro-B 连接线缆
- 系统要求:
- Windows 操作系统(Windows 7、Windows 8 和 Windows 10)、Linux 64-bit 或 macOS
- USB Type-A 或 Type-c 至 Micro-B 连接线缆,用于将STM32 Nucleo板连接到 PC
- 开发工具
- STM32 电机控制 SDK:X-CUBE-MCSDK
- STM32 图形化配置工具:STM32CubeMX
- 集成开发环境 IDE,可以选择一下三者之一:
- STM32 集成开发环境(STM32CubeIDE)
- Keil 开发套件(MDK-ARM-STR)
- IAR 嵌入式开发环境(IAR-EWARM)
1.2 硬件连接
硬件连接的操作步骤简述如下。详细操作过程可以参见 STM32-FOC(5)基于 IHM03 的无感FOC 控制 第2部分。
- 根据使用的 STM32 Nucleo 开发板和操作模式,检查跳线位置和安装选项。
- 通过 ST-morpho连接器连接(CN7、CN10)X-NUCLEO-IHM16M1 驱动板与 STM32 NUCLEO 开发板。
- 将 3-pin 插接端子插入连接器 CN1 的 3/4/5 输出端,以连接无刷电机。
- 使用 USB 连接线将 STM32 Nucleo 开发板连接到 PC,并下载相应的预编译代码。
- 使用 12V 直流电源为电路板供电,可以选择以下二者之一:
– 使用连接器 CN1 的 2(VIN)和 1(接地)接入 12VDC电源;
– 使用 J4 插孔(2.1/2.5 mm,尖端正极)接入12VDC电源。 - 使用 STM32 电机控制 SDK(X-CUBE-MCSDK)开发和运行应用程序。
2. 基于 IHM03 的无感FOC 控制
基于 IHM03 的无感FOC 控制的操作步骤简述如下。详细操作过程可以参见 STM32-FOC(5)基于 IHM03 的无感FOC 控制 第3部分。
2.1 配置电机控制包
-
打开 电机控制软件开发套件(Motor Control WorkBench),创建新项目。
单击"New Project"按钮,弹出"New Project"对话框。
在 “General Info” 菜单中,设置项目名称为 IHM03_03,选择单电机(1 Motor)、FOC驱动控制算法、Modular 模式。 -
硬件配置。
在 “Motors” 菜单选择电机为 GimBal GBM2804H-100T,在 “Power board” 菜单选择驱动板为 X-NUCLEO-IHM16M1 电机驱动板,在 “Control board” 菜单选择控制板为 NUCLEO-G431RB 控制板。 -
修改配置的电路板和电机的信息。
如果配置的硬件信息与实际产品参数有差异,可以点击相应的模块(蓝色模块),进入该模块的参数配置页面进行修改。
在本例中,电机 GimBal GBM2804H-100T 的默认设置(具体参数与SDK版本有关)为最大电压 10Vdc、最大电流 0.8Apk。这与本套件的配置不一致,因此要点击图中 Motor 蓝色模块,进入电机参数设置页面,将最大电压设为 14.8Vdc、最大电流设为 2.1Apk。 -
完成项目配置后,自动生成一个电机控制项目,并显示项目视图。
- 配置速度位置控制方案。
点击项目视图中的 “Speed Sensing” 蓝色模块,进入速度位置管理界面。在 Main Sensor – Sensor Selection 选项中,选择 Sensor-less(Observer+PLL),即采用无传感器(使用位置观测器+PLL获取实时的转子位置)进行控制。
- 项目生成。
选择菜单 “Generate the project” 按键,根据配置参数生成项目。
跳出 “Project generation” 窗口,选择 STM32CubeMX 版本、固件版本(Firmware Package Version),Target Toolchain 为 STM32CubeIDE。
默认使用 HAL 驱动。
点击 “GENERATE” 按键,生成代码。
2.2 图形化配置
项目生成完成后,点击 “RUN STM32CubeMX” 按键,打开 STM32CubeMX 进行图形化配置。
-
将PA5 管脚设置为 GPIO_Output,可以控制 LD2 灯的开关闪烁。
LD2 闪灯与电机控制无关,但可以用来确认程序烧录和运行是否正常,帮助初学者分析和排除故障。 -
点击 “Project Manager” 菜单按钮,进入工程配置界面。
- 输入项目名称为 “IHM03_03”,选择项目的保存路径。
- 将Toolchain / IDE 设为 STM32CubeIDE(根据用户安装和使用的 IDE 选择,也可以选择 EWARM、MDK-ARM、MakeFile、CMake 等IDE工具)。
- 点击右上角 “GENERATE CODE” 生成代码。
加载完毕后,弹出代码生成提示窗口。点击“ OPEN PROJECT”,进入 STM32CubeIDE。
2.3 代码编辑、编译与调试
-
打开 STM32CubeIDE,导入 IHM03_03 项目。
如果是从 CubeMX 代码生成提示窗口点击“ OPEN PROJECT”,则进入 STM32CubeIDE后自动打开 IHM03_03 项目。 -
在左侧 Project Explorer 中,选择 IHM03_03 – Application – User,打开主程序 main.c ,中断服务程序 tm32g4xx_it.c,stm32g4xx_mc_it.c ,如下图所示。
加入 LED2 闪烁功能,只要在 while(1) 循环中添加以下程序(这与电机控制无关,只供参考):
/* USER CODE BEGIN 3 */HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);/* Insert delay 500 ms */HAL_Delay(500);
- 程序编译与下载
- 用 USB连接线,连接 PC 与 NUCLEO-G431RB 开发板。
- 点击工具栏中 “Build Debug” 按键对程序代码进行编译。
- 点击工具栏中 “Debug” 按键,将程序下载烧录到目标板 NUCLEO-G431RB 。
程序烧录完成后,显示内容如下。
STMicroelectronics ST-LINK GDB server. Version 7.8.0
...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.011Verifying ...
Download verified successfully
Shutting down...
Exit.
- 程序的运行与调试
- 对照 2.1 检查 IHM03 套件硬件连接和电源连接。
- 接通 12Vdc电源。
- 点击工具栏中 “Resume” 按键 或 F8 快捷键,运行程序。
- LED2 灯闪烁(如果加入闪灯程序)。
- 按下蓝色按键 B1,电机开始运行。
- 按下黑色按键 B2,电机停止运行。
3. 使用 MCSDK Pilot 控制与调试
3.1 加载上位机 GUI
MC SDK 提供 UI 库,用于界面调试通讯使用,与 Workbench 之间的交互。
-
打开电机控制软件开发套件(Motor Control WorkBench),单击工具栏的 “Motor Pilot” 按钮,启动电机导向应用程序 ST Motor Pilot。
-
在 ST Motor Pilot 中,点击菜单 “GUI – Load GUI”,根据项目内容选择相应的 QML 图形界面文件,加载上位机程序。
QML(Qt Meta-Language)是一种基于JavaScript的声明性语言,用于描述用户界面和应用程序的行为。它是Qt框架的一部分,广泛应用于跨平台应用程序开发。QML由于其高度的模块化和可重用性,特别适合于嵌入式系统的开发。在QML能够帮助开发者以声明性的方式构建用户界面,这样就可以在不需要深入了解底层图形渲染机制的情况下,创建出性能良好的界面。
如下图所示,加载上位机 GUI 文件 MC_FOC_SDK.qml。
- 连接上位机。
P-NUCLEO-IHM03 STM32电机控制套件 通过串口与上位机(PC)通讯。
3.1 打开上位机(PC)的设备管理器,查看 ST Link 对应的串口的端口号(例如下图中串口为 COM3)。
3.2 在 ST Motor Pilot 中,在 “Port” 设置 ST Link 对应的串口位置,再点击按键 “Connect” 连接。
3.3 连接成功后,ST Motor Pilot 显示电机的运行状态和参数,包括:电机转速,直流母线电压,温度,功率,运行状态,故障代码等。如下图所示,电机处于 “IDLE” 状态。
3.2 从上位机控制电机运行
在 ST Motor Pilot 的左下角的 “Control” 布局框内,设有电机运行的控制按钮。
- 控制环路包含 “SPEED”、“TORQUE” 两个选项。默认选项为 “SPEED”,采用速度环控制;可选选为 “TORQUE”,采用力矩环(电流环)控制。
- 点击 “Start” 按钮,启动电机运行;
- 点击 “Stop” 按钮,停止电机运行;
- 点击 “Stop ramp” 按钮,停止爬坡。
- 点击 “Start” 按钮启动,电机旋转。点击 “Stop” 按钮,停止电机运行。
左侧运行状态栏 显示运行状态为 “RUN”,故障灯全灭 指示无故障;
电机转速表(Speed Control)显示当前的转速测量值;
指示计(Measures)显示电压、温度、功率值;
状态栏(Global Configuration)显示运行状态。
- 寄存器
点击菜单栏中的 “Registers” 按钮,切换到寄存器显示界面,显示设定的寄存器参数的实时值。
3.3 从上位机监控电机运行
- 实时监控
在 寄存器显示界面,选择需要实时监控的参数,点击该参数所在行的 “Configure” 按钮,可以绘制实时变化图。
- 选择速度参考值 SPEED_REF(ID=153),点击对应的 “Configure” 按钮,选择 “Send to new plot” 后按 “Apply”,自动建立绘图框 plot1,将 SPEED_REF 绘制到 plot1 绘图框。
- 选择速度测量值 SPEED_MEAS(ID=89),点击对应的 “Configure” 按钮,选择 “plot1” 后按 “Apply”,将 SPEED_MEAS 也绘制到 plot1 绘图框。
点击 “Start” 按钮启动,点击 “Stopt” 按钮停止,plot1 绘图框实时显示 速度参考值 SPEED_REF、速度测量值 SPEED_MEAS 的运行曲线如下图所示。
- 调节电机运行速度
在上位机调节电机运行的速度参考值,通过电流环可以控制电机转速。
在 ST Motor Pilot 的转速表下方的 “Speed Ramp” 布局框内,用户可以设置电机速度参考值(Target Speed RPM)和斜坡时间(Speed ramp duration),控制电机运行。
6.1 在电机运行过程中,在 “Target Speed RPM” 选框输入转速参考值,斜坡时间不修改(默认值为0),在 plot1 绘图框观察实时显示的 速度参考值 SPEED_REF、速度测量值 SPEED_MEAS 的运行曲线,如下图所示。
6.2 在电机运行过程中,在 “Target Speed RPM” 选框输入转速参考值,同时在 “Duration” 选框输入斜坡时间,在 plot1 绘图框观察实时显示的 速度参考值 SPEED_REF、速度测量值 SPEED_MEAS 的运行曲线。
如下图所示,斜坡时间(Duration)主要影响转速参考值的变化时间,相应地也会影响速度参考值变化时的速度测量值的超调量。
- 调节速度环控制器参数
在 ST Motor Pilot 中,用户可以调整速度环、力矩环、磁链环的 PI 控制器参数。
- 在 ST Motor Pilot 左下方点击 “Advanced Configuration”,打开右侧的状态栏。
- 状态栏选择 Currents_Speed 状态,显示速度环 PI 控制器(Speed PI regulator)的参数 Kp、Ki。
- 本项目中 Kp 默认值为 2730,将其修改为 300,Ki 默认值为 562 不变。
点击 “Start” 启动电机。在 plot1 绘图框观察实时显示的 速度参考值 SPEED_REF、速度测量值 SPEED_MEAS 的运行曲线,如下图所示。
减小 Kp 后,速度环的超调量较大。相应地,电流过冲大,容易触发过流保护。由此,速度环 控制器参数,对于电机的运行非常重要。下节将简单介绍速度环参数整定的基本原则和方法。
减小 Kp,超调量较大。电流过冲大,容易过流保护。
- 故障显示与处理
当电机运行发生故障保护时,自动停止运行,并在状态栏显示故障状态,如下图所示。
如果故障可以自动恢复,点击状态栏 “Ack Faults” 按钮可以使故障复位,进入空闲状态 “IDLE”。如果故障不能自动恢复,则需要断电重启。
4. 速度环控制器
本节是对电机控制速度环和参数整定的介绍。
4.1 电流环 PI 控制器
电流闭环控制,可以精确的控制电机的 Id、Iq 电流值。
电流环的主要作用是在电机启动过程中能够以最大的电流启动,同时对电网电压的波动起及时抗扰的作用,加快动态系统的响应速度,提高系统的稳定性。
4.2 速度电流双闭环 PI 控制器
实际应用通常期望控制电机以设定的转速变化,仅靠电流闭环不能实现。需要加入转速闭环,实现对转速的控制。转速控制器的输出为电流控制器的给定,转速控制器的输出要进行限幅,因为转速控制器的输出限幅值决定了所用电机的最大允许电流。
速度控制系统的拓扑结构,是速度外环、电流内环的双闭环控制系统,如下图所示。
增加𝐾𝑖对电机控制系统的影响与增加弹簧常数相似。系统的阻尼由⻓𝑝增益控制。增加阻尼将减少振荡。
### 4.3 电流环路带宽
电流回路带宽过高会导致电机承受过度的压力,因为高频电流瞬变和噪声会转化为高频扭矩瞬变和噪音。电流环路带宽还有另一个限制:采样频率。
在模拟系统中,电机反馈信号的任何变化都会立即开始对输出控制电压产生影响。但是,使用如图所示的数字控制系统,在PWM周期开始时通过ADC对电机信号进行采样,执行控制计算,并将得到的控制电压存入双缓冲PWM寄存器。这些值在PWM寄存器中处于未使用状态,直到它们在下一个PWM周期开始时被时钟记录到PWM输出。
由于电流控制器处理的带宽比速度回路高,因此通常是电流回路受 PWM 模块的 SH 效应影响最大。由于PWM 模块 SH与电流回路的信号路径串联,其幅度和相位贡献直接增加了电流控制器的开环响应。
在大多数设计中,可以保留 K p s 2 π L \frac{K_p^s}{2\pi L} 2πLKps至少比采样频率低一个数量级。利用这一假设以及速度环调谐过程的约束,可以编写一个通用的“经验法则”表达式:
10 L δ τ < K p s < 2 π L 10 T s \frac{10 L}{\delta \tau} < K_p^s < \frac{2 \pi L}{10 T_s} δτ10L<Kps<10Ts2πL
参考资料:
- P-NUCLEO-IHM03 STM32电机控制套件
- UM2505 - STM32G4 Nucleo-64 boards (MB1367), STMicroelectronics/意法半导体, 2021
- UM2538 - STM32 motor-control pack using the FOC algorithm for three-phase, low-voltage, and low‑current motor evaluationl, STMicroelectronics/意法半导体, 2023
- UM3027 - How to use STM32 motor-control SDK v6.0 workbenc, STMicroelectronics/意法半导体, 2022
- 许少伦等,STM32G4入门与电机控制实战,电子工业出版社,2023
版权声明:
欢迎订阅youcans@qq 原创作品 【动手学电机驱动专栏】
转载必须标注原文链接:(https://blog.csdn.net/youcans/category_12645064.html)
Copyright@youcans 2024
Crated:2024-11