Skip to content
项目

ZhuYanzhen1/miniFOC has 1,117 GitHub stars and 281 forks. GitHot measured +1 stars in 24 hours and +2 in 7 days. Last checked 2026-11-11 00:09 UTC. Last push 2023-11-17.

这些数字如何统计

你还在为有刷电机的高噪声、低响应速度和低寿命而烦恼吗?这个项目是一个20块钱就能搞定的FOC无刷电机控制方案!This project is a FOC (Field Oriented Control) BLDC Motor control scheme that can be done for 3$!

可以做什么

  • Using space vector pulse width modulation
  • Torque control without current sensor
  • Rotational speed closed loop control
  • Rotation angle closed loop control

实测星标增长

24小时
+1
7天
+2
15天
更新延迟
1个月
更新延迟

各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。

README_CN.md

原文

LOGO

    Version  Build  License        English / 中文

    你还在买十几块钱一个的直流有刷电机的驱动模块吗?你还在为有刷电机的高噪声、低响应速度和低寿命而烦恼吗?来看看这个项目吧,一个20块钱就能搞定的FOC无刷电机控制方案!miniFOC内置了力矩闭环控制器,为你提供一个通过3线UART口就能控制的无刷电机控制器。本项目的软件及硬件设计完全遵循AGPL-3.0开源协议。

注:miniFOC V2版本正在开发中(dev分支),拟支持电流环和无感FOC算法,敬请期待。


简介

    本开源项目旨在实现一种在国内(中国)就可以以及低成本实现的FOC (Field Oriented Control) 方案,示例电路中选用的元件均为国产芯片。FOC在控制BLDC (Brushless Direct Current)电机上有诸多的好处,主要有如下几点优势:

  1. FOC则完全没有转速的限制,不论在什么转速下都可以实现精确的控制。
  2. FOC的换向性能极其优秀,最高转速下正反转切换可以非常顺畅。
  3. FOC还可以以能量回收的形式进行刹车控制。
  4. FOC可以实现力矩、速度、位置三个闭环控制。
  5. FOC驱动器的噪音会比电调小很多,效率也比电调高很多。

    但是由于FOC的计算量大、原理复杂,所以需要很高成本的控制器,这也使得FOC在很多场景下都没有得到推广和使用。在经过了半年的研究和迭代之后,本人将FOC涉及大量计算的代码进行了深度优化,也重新根据国内的供应链进行了选型,希望本开源项目能够帮助国内的广大开发者们用上有优秀性能的BLDC电机,为开源社区贡献一份力量。


开源方案对比

开源方案 miniFOC simpleFOC ODrive FpOC
主控制器 GD32F130G6U6 ATmega328P STM32F405RGT6 FPGA
驱动芯片 EG2133 L6234 DRV8301 MP6540
闭环频率 30kHz (max) 830Hz (max) 8kHz (typical) 18kHz (typical)
是否有电流环 否 否 是 是
驱动功率 90W 120W 960W 90W
成本价格(大约) 20¥ 100¥ 300¥ 150¥

    从上表格中可以看出,miniFOC所采用的方案可以实现在低成本下达到较高的性能。同时由于重新根据国内的供应链进行了选型,所以在器件的选择上没有那么局限,提供了很多替代方案。在2021年芯片供应紧缺的情况下能将FOC的成本降至约20元,这也证明了本项目在成本上的优化程度和巨大潜力。


性能参数

  • 输入电压范围:5V~18V(你可以根据这里的教程修改电路以适应更高的电压)。
  • 最大驱动电流:5A(你可以根据这里的教程修改电路以实现更大的驱动电流)。
  • FOC详细参数:无电流环控制,采用SVPWM (Space Vector Pulse Width Modulation)。
  • 通信参数:UART串口通信波特率115200,采用中容量数传协议进行数据传输。
  • 微控制器参数:Cortex-M3内核,72MHz主频,32KB Flash,4KB SRAM。

功能特性

  • 采用空间矢量脉冲宽度调制方法
  • 实现无电流传感器力矩控制
  • 实现转动速度闭环控制
  • 实现转动角度闭环控制
  • 实现自动相序检测和相序矫正

开发环境

  • EDA工具:立创EDA(采用标准版免费许可证,无LICENSE纠纷)。
  • 编译工具链:gcc-arm-none-eabi 10-2020-q4-major
  • 烧录工具:OpenOCD 0.11.0-1
  • 集成开发工具:CLion 2021.2.3 #212.5457.51
  • 上位机开发工具:Qt 5.14.2 (MinGW 7.3.0 64bit)
  • 操作系统及工具链:
    • Win10 + MinGW + CLion + gcc-arm-none-eabi + OpenOCD
    • Ubuntu20.04 + make + cmake + gcc-arm-none-eabi + OpenOCD

入门指南

入门请参考本项目的wiki页面。
我们还提供了国内镜像仓库地址。
你可以访问Github Page以了解代码中的函数及变量的用法等信息。
**注意:**由于主要开发部署都在Github上进行,Gitee只是作为国内镜像仓库存放代码,会有wiki和issue等更新不及时的问题。您可在此访问Github源仓库。


BUG报告 & 功能需求

请使用Issue Tracker报告错误和需求功能,并遵循以下要求:

1.在不同选项卡上突出显示选项卡。 2.如果窗口未聚焦,不要让更新消失。


许可证

源代码根据AGPL-3.0许可证发布。

组织:AcmeTech
作者:朱彦臻
维护人:朱彦臻, [email protected]

    该产品已经在Windows 10、Ubuntu 18.04和20.04下进行了测试。这是一个研究代码,希望它经常更改,并且不承认任何特定用途的适用性。

探索相关项目