STM32使用SimpleFOC库实现直流无刷电机的开环驱动详解

M创动工坊提供mcdgf.taobao.com

  • 硬件准备
  • STM32核心板,2804电机和SimpleFOC mini驱动板(M创动工坊提供),ST-link,12V直流电源,USB线等

  • 软件准备
    1. 安装微软的Vscode,网上很多教程,且有说明书

    安装好stlink驱动

    1. 打开vscode并安装PlatformIO插件。其他的一些中文插件、AI插件等等,根据需要安装

    1. 打开插件,新建工程

    1. 重要的设置

    1. Ini文件设置,这是关键

    lib_deps =

            askuric/Simple FOC@ 2.3.4

    board_build.mcu = stm32f103c6t6

    board_upload.maximum_size = 32768

    upload_protocol = stlink

    debug_tool = stlink

    build_flags = -Os

    写好后,记得点保存,就开始自动下载库,右下角

    设置到这里就结束了。

  • 接线
  • 根据程序定义,接线

    Simplefoc mini板与STM32接线:

    1. In1-2-3分别接STM32板子的A8,A9,A10,这是三个PWM引脚
    2. en接STM32板子的A11,这是使能引脚
    3. GND接GND

    STM32与ST-Link接线

    按STM32和ST-link的丝印接即可

    STM32与USB转串口模块接线

    USB供电,microUSB接口。

    到此,线已接完。

  • 编程
    1. 开始编程

    打开默认是这样的

    按arduino格式C++语言,写入以下代码,代码就不做注释了,可以直接复制粘贴到AI,如DEEPSEEK上,让它帮忙逐行解析。

    1. #include <SimpleFOC.h>
    2. #define PIN_PWM_U   PA8
    3. #define PIN_PWM_V   PA9
    4. #define PIN_PWM_W   PA10
    5. #define PIN_ENABLE  PA11
    6. BLDCDriver3PWM driver = BLDCDriver3PWM(PIN_PWM_U, PIN_PWM_V, PIN_PWM_W, PIN_ENABLE);
    7. BLDCMotor motor = BLDCMotor(7);  // 极对数为 7 的无刷电机
    8. void setup() {
    9.   // 1. 先把 EN 拉到“失能”
    10.   pinMode(PIN_ENABLE, OUTPUT);
    11.   digitalWrite(PIN_ENABLE, LOW);
    12.   // 2. 驱动器参数
    13.   driver.voltage_power_supply = 12; // 实际 12V 电源
    14.   driver.voltage_limit = 4.0;       // 限制到 4V,减少电流与发热
    15.   driver.pwm_frequency = 20000;     // 20kHz
    16.   driver.enable_active_high = true; // PA11 拉高时才使能 MS8313
    17.   driver.init();                    // 初始化驱动器
    18.   // 4. 连接电机、初始化
    19.   motor.linkDriver(&driver);
    20.   motor.voltage_limit = 2.0;        // 电机端相电压限幅到 2V
    21.   motor.controller = MotionControlType::velocity_openloop;
    22.   motor.init();
    23.   // 5. 打开 EN
    24.   digitalWrite(PIN_ENABLE, HIGH);
    25. }
    26. void loop() {
    27.   motor.move(15);  // 15 rad/s 开环
    28. }

    就这么多!

  • 实现
    1. 编译烧录

    1. 插上USB,开始烧录

    确定驱动安装正确,设备管理器中,可以看到这两个。

    1. 烧录成功

    接上电源测试,电机就开始转动了。

    不过这样电机会有异响,会异响,会异响!会发烫,会发烫,会发烫,这里只是演示一下,验证硬件是否有故障,接线是否正确。

    这不是硬件故障的问题,是控制的缘故。

    开环的解决方案,暂时不会,有知道的朋友,欢迎告诉我,谢谢!

    接下来试用闭环,可以解决这个问题。

    到此,测试结束!本文档主要针对M创动工坊淘宝店提供硬件,mcdgf.taobao.com

    作者:M创动工坊

    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32使用SimpleFOC库实现直流无刷电机的开环驱动详解

    发表回复