单片机
返回首页

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

2025-09-23 来源:cnblogs

  • 硬件准备

  • 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


    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. 烧录成功


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

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

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


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外遥控音量控制

  • LM317过压保护

  • 12V转110V/220V 500W逆变器

  • DS1669数字电位器

    相关电子头条文章