跳到主要内容

开环控制

本教程介绍如何使用开环控制运行 BLDC 电机。

准备工作​

本教程使用以下硬件:

您需要 ST-LINK V2 克隆版来将固件上传到开发板。您可以以低于 5 美元的价格购买廉价的 ST-LINK V2 克隆版。

USB 转串口适配器​

由于 Aotenjo One 开发板没有 USB 端口,因此您需要一个 USB 转串口适配器才能通过串行方式与开发板进行通信。 本教程使用 BlackPill STM32 开发板作为 USB 转串口适配器。也可以使用现成的 USB 转串口适配器,或其他支持此功能的开发板。

提示

您可以使用以下开发板作为 USB 转串口适配器:

  • BlackPill STM32 板
  • BluePill STM32 板
  • ESP32-DevKitC

USB 转串口适配器图

如果您不确定如何使用BlackPill STM32板作为USB转串口适配器,您可以参考串口通信教程。

警告

确保您的 BLDC 电机内阻大于 10Ω;否则,可能会烧毁控制板。

测量方法请参阅如何测量内阻

配置开发环境​

VSCode 与 PlatformIO​

您可以从 VSCode 扩展市场安装 PlatformIO。

STM32CubeProgrammer​

您需要它来将固件烧录到开发板。

克隆代码仓库​

git clone https://github.com/aotenjo-xyz/one.git
cd one

开环控制的示例代码位于examples/openloop目录中,因此如果您使用Linux或macOS,请运行以下命令将示例代码复制到src目录中:

rm src/*
cp examples/open_loop/main.cpp src/
cp examples/open_loop/platformio.ini platformio.ini

对于 Windows,您可以手动复制文件。

快速入门​

  1. 将 Aotenjo One 板连接到 ST-LINK V2 编程器。

    ST-LINK V2 <-> Aotenjo One
    3.3V <---> 3.3V
    GND <---> GND
    SWDIO <---> SWDIO
    SWCLK <---> SWCLK
    RST <---> NRST
    信息

与 BlackPill 不同,STM32G4 系列还需要将控制板的 NRST 引脚连接到 ST-LINK V2 编程器。 或者,您可以在上传过程中按住Aotenjo One板上的NRST按钮来达到相同的效果。 ::: 2. 将 ST-LINK V2 编程器连接到计算机。 3. 在 VSCode 中打开项目文件夹。 4. 单击左侧栏上的 PlatformIO 选项卡,然后单击 Upload 按钮将固件上传到开发板。

  1. 断开ST-LINK V2编程器,然后将电源和BlackPill STM32板连接到Aotenjo One板。最后,将 BlackPill STM32 板连接到您的计算机。

    Power Supply <-> Aotenjo One
    12V <---> VCC
    GND <---> GND

    Aotenjo One <-> Blackpill STM32
    TX <---> PA3 (RX)
    RX <---> PA2 (TX)
    GND <---> GND

    Blackpill STM32 <-> Computer
    USB <---> USB

开环控制设置 6. 单击左侧边栏上的 PlatformIO 选项卡,然后单击 Monitor 按钮以打开串口监视器。 PlatformIO 监视器

  1. 打开电源,在串口监视器中输入以下命令并回车:
    T1

电机此时应以恒定速度旋转。T1 用于设置目标速度,修改其中的数值即可调整转速。 例如,输入 T6.28 将目标速度设置为 6.28 rad/s — 这意味着电机每秒完成一整圈。 您还可以输入负值,例如T-6.28,以相反方向旋转电机。

串口监视器输出

以下视频展示了实际运行效果:

BLDC 电机开环速度控制

使用 Commander 控制电机​

代码使用SimpleFOC库来控制电机,因此您可以使用Commander接口来控制电机。 以下是一些有用的命令:

  • T<value>:设置目标速度(以rad/s为单位)
  • L<value>:设置目标电压(单位:V)
  • ?:获取可用命令

如果您在串口监视器中输入?,您将看到可用命令的列表:

T:target velocity
L:target voltage

您可以通过在串口监视器中输入T来查看当前目标速度,并通过在串口监视器中输入L来查看当前目标电压。

参考​