# FOC无刷电机矢量控制器
**Repository Path**: luheqiu/motor-controller-with-foc
## Basic Information
- **Project Name**: FOC无刷电机矢量控制器
- **Description**: 基于FOC控制算法和STM32主控芯片的双路直流无刷电机控制器
- **Primary Language**: C
- **License**: LGPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 110
- **Forks**: 53
- **Created**: 2021-12-08
- **Last Updated**: 2025-06-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
路何求创想工坊出品 | 硬件&算法工坊
# 【FOC+STM32】双路直流无刷电机矢量控制器-使用文档
## 📕 介绍
控制器主控芯片采用STM32F405RGT6,控制器底层基于HAL库和FreeRTOS实时操作系统,预留CAN、USART、SWD、USB接口各一,便于通信和控制的工程应用。该控制器提供双路无刷电机控制,同时分别预留编码器接口与电压采样接口,适合于有感FOC与无感FOC的控制应用或算法验证。同时该控制板还可以适合于异步电机的矢量控制。
> **注意:此项目为硬件设计与算法验证项目,当前正处于设计和验证阶段,未进行完善的工程应用测试和极限参数的压力测试,请勿直接使用,以避免出现安全问题和财产损失,后续的验证情况会同步更新**
### 演示图片
### 什么是FOC
FOC,即Field Oriented Control的缩写,可以译为磁场定向控制或矢量控制。是一种针对异步电机或直流无刷电机的变频调速方式,具有以下几个特点:
+ 调速范围宽,具有良好低速特性与高速特性
+ 机械特性硬,转速稳定性好
+ 速度可以在整个调速范围内连续控制,平滑性好,可以实现无级调速
+ 可以实现力矩控制与力矩反馈
+ 结构复杂,算法复杂,贵
## 🎬 进度
### 日志
详见: [日志文档](./LOG.md "日志文档")
[ **【2021.12.27】 焊接完成** ](./LOG.md/#20211227-焊接完成 "焊接完成")
[ **【2021.01.09】 查找到两个硬件BUG** ](./LOG.md/#20220113-屏幕驱动编写完成 "查找到两个硬件BUG")
[ **【2021.01.13】 屏幕驱动编写完成** ](./LOG.md/#20220113-屏幕驱动编写完成 "屏幕驱动编写完成")
## ✨ 参数
+ **规格**
- 体积: 99.0mm × 71.5mm × 8.8mm
+ **性能**
- 额定电压 **12V - 36V**
- **双路**直流无刷电机驱动
- 最大持续电流 **2 × 15A**
- **支持**三相霍尔编码器(可根据需要选择性焊接上拉电阻)
- **支持**最大不超过3PIN的数字编码器或其他编码器(如PWM信号的AS5600)
- **不支持**需要ADC采样的模拟编码器
+ **功能**
- 一个可编程LED灯,一个电源指示灯,四个电机状态指示灯
- 板载 OLED 屏显(基于带片选的SPI通信)
- 基于 2 × DRV8303 的双路电机驱动(与OLED共用SPI总线)
- 提供 2 x 3 的UVW电压采样
- 提供 2 x 2 的电流采样,分别为V相和W相
+ **接口**
- CAN x 1
- USART x 1
- TYPE-C USB接口 x 1 (FS全速接口,不支持OTG,不支持供电)
## 📄 BOM表
**FOC_Controller_BOM**
| Comment | Value | Designator | Quantity | Footprint | LibRef | Description | Price/pcs | Price |
|---------------|----------------|--------------------------------------------------------------------------------------------|----------|------------------------------|---------------|------------------------------------------------------------------------|-----------|-------------|
| Cap | 1μF | "C1, C4, C7, C30, C43, C44, C61, C62" | 8 | C 0603\_L | Cap | Capacitor | 0\.0031 | 0\.0248 |
| Cap Pol1 | 100μF | C2 | 1 | C 1206\_M | Cap Pol1 | Polarized Capacitor \(Radial\) | 0\.2 | 0\.2 |
| Cap Pol1 | 22μF | C3 | 1 | CD A\(3216\) | Cap Pol1 | Polarized Capacitor \(Radial\) | 0\.749 | 0\.749 |
| Cap | 10μF | C5 | 1 | C 0603\_M | Cap | Capacitor | 0\.0853 | 0\.0853 |
| Cap Pol1 | 47μF | C6 | 1 | C 1206\_M | Cap Pol1 | Polarized Capacitor \(Radial\) | 0\.2 | 0\.2 |
| Cap | 100nF | "C8, C15, C17, C18, C19, C32, C51, C52, C87" | 9 | C 0603\_L | Cap | Capacitor | 0\.0134 | 0\.1206 |
| Cap | 0\.01μF | C9 | 1 | C 0603\_L | Cap | Capacitor | 0\.0131 | 0\.0131 |
| Cap | 0\.1μF | "C10, C11, C14, C16, C22, C23, C24, C29, C38, C40, C42, C50, C56, C58, C60, C66" | 16 | C 0603\_L | Cap | Capacitor | 0\.0134 | 0\.2144 |
| Cap | 2\.2μF | "C12, C13, C26, C39, C57" | 5 | C 0603\_L | Cap | Capacitor | 0\.186 | 0\.93 |
| Cap | 20pF | "C20, C21" | 2 | C 0603\_L | Cap | Capacitor | 0\.025 | 0\.05 |
| Cap | 4\.7μF 16V X7R | C25 | 1 | C 0603\_L | Cap | Capacitor | 0\.1 | 0\.1 |
| Cap | 1μF 16V X5R | C27 | 1 | C 0603\_L | Cap | Capacitor | 0\.031 | 0\.031 |
| Cap | 4\.7μF | "C28, C34, C49, C65" | 4 | C 0603\_L | Cap | Capacitor | 0\.1 | 0\.4 |
| Cap | 1μF 16V | C31 | 1 | C 0603\_L | Cap | Capacitor | 0\.031 | 0\.031 |
| Cap | 47nF | C33 | 1 | C 0603\_L | Cap | Capacitor | 0\.025 | 0\.025 |
| Cap | 0\.022μF | "C41, C59" | 2 | C 0603\_L | Cap | Capacitor | 0\.025 | 0\.05 |
| Cap | 1000pF | "C45, C46, C67, C68" | 4 | C 0603\_L | Cap | Capacitor | 0\.025 | 0\.1 |
| Cap | 2200pF | "C47, C48, C63, C64" | 4 | C 0603\_L | Cap | Capacitor | 0\.025 | 0\.1 |
| Cap | 100μF | "C69, C70, C71, C72, C73, C74, C75, C76, C77, C78, C79, C80, C81, C82, C83, C84, C85, C86" | 18 | C 1206\_M | Cap | Capacitor | 0\.2 | 3\.6 |
| BLUE\_LED | | D1 | 1 | LED 0603B | LED2 | "Typical RED, GREEN, YELLOW, AMBER GaAs LED" | 0\.07 | 0\.07 |
| SS56 | | D2 | 1 | SMC | Diode BAS70 | Silicon AF Schottky Diode for High\-Speed Switching | 0\.4847 | 0\.4847 |
| GREEN\_LED | | D3 | 1 | LED 0603G | LED2 | "Typical RED, GREEN, YELLOW, AMBER GaAs LED" | 0\.04 | 0\.04 |
| YELLOW\_LED | | "D4, D6" | 2 | LED 0603Y | LED2 | "Typical RED, GREEN, YELLOW, AMBER GaAs LED" | 0\.045 | 0\.09 |
| RED\_LED | | "D5, D7" | 2 | LED 0603R | LED2 | "Typical RED, GREEN, YELLOW, AMBER GaAs LED" | 0\.045 | 0\.09 |
| USB\-C | | J1 | 1 | USB\-C\-SMD\_TYPE\-C\-USB\-5 | USB\-C/S | USB\-C型母接口 | 0\.4844 | 0\.4844 |
| OLED 128\*64 | | J2 | 1 | OLED 0\.96'' 128x64 | Header 30 | "Header, 30\-Pin" | 9\.75 | 9\.75 |
| 三相连接器\-插座 | | "J3, J4" | 2 | MR30PW\-M | 三相连接器\-插座 | | 2\.1 | 4\.2 |
| Inductor | 47μH/3A | L1 | 1 | L\-SMD\-0630 | Inductor | Inductor | 0\.7579 | 0\.7579 |
| USART | | P1 | 1 | SIPA04 | Header 4 | "Header, 4\-Pin" | 0\.04 | 0\.04 |
| M0\_Encoder | | P2 | 1 | SIPB05 | Header 5 | "Header, 5\-Pin" | 0\.06 | 0\.06 |
| CAN | | P3 | 1 | SIPA03 | Header 3 | "Header, 3\-Pin" | 0\.03 | 0\.03 |
| M1\_Encoder | | P4 | 1 | SIPB05 | Header 5 | "Header, 5\-Pin" | 0\.06 | 0\.06 |
| STLINK | | P5 | 1 | SIPA03 | Header 3 | "Header, 3\-Pin" | 0\.03 | 0\.03 |
| KIA50N03BD | | "Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12" | 12 | TO252 \- 3 | N\-MOSFET | | 0\.574 | 6\.888 |
| Res2 | 1K | "R1, R35, R36, R50, R51" | 5 | R 0603\_L | Res2 | Resistor | 0\.006 | 0\.03 |
| Res2 | 12K | R2 | 1 | R 0603\_L | Res2 | Resistor | 0\.006 | 0\.006 |
| Res2 | 22Ω | "R3, R5" | 2 | R 0603\_L | Res2 | Resistor | 0\.005974 | 0\.011948 |
| Res2 | 4\.7K | "R4, R24, R25, R26, R29, R30, R31, R41, R45, R56, R57, R68, R69" | 13 | R 0603\_L | Res2 | Resistor | 0\.006 | 0\.078 |
| Res2 | 43K | "R6, R9, R13, R15, R19, R21, R27" | 7 | R 0603\_L | Res2 | Resistor | 0\.006 | 0\.042 |
| Res2 | 3\.3Ω | R7 | 1 | R 0603\_L | Res2 | Resistor | 0\.009572 | 0\.009572 |
| Res2 | 3\.9K | "R8, R11, R14, R16, R20, R22, R28" | 7 | R 0603\_L | Res2 | Resistor | 0\.006 | 0\.042 |
| Res2 | 0Ω | "R10, R12" | 2 | R 0603\_L | Res2 | Resistor | 0\.006 | 0\.012 |
| Res2 | 910KΩ | R23 | 1 | R 0603\_L | Res2 | Resistor | 0\.006 | 0\.006 |
| Res2 | 60Ω | "R32, R33" | 2 | R 0603\_L | Res2 | Resistor | 0\.010254 | 0\.020508 |
| Res2 | 4\.7KΩ | "R34, R67" | 2 | R 0603\_L | Res2 | Resistor | 0\.006 | 0\.012 |
| Res2 | 1Ω | "R37, R52" | 2 | R 0603\_L | Res2 | Resistor | 0\.006207 | 0\.012414 |
| Res2 | 10 | "R38, R39, R40, R42, R43, R44, R53, R54, R55, R58, R59, R60" | 12 | R 0603\_L | Res2 | Resistor | 0\.006736 | 0\.080832 |
| Res2 | 56Ω | "R46, R47, R61, R62" | 4 | R 0603\_L | Res2 | Resistor | 0\.006778 | 0\.027112 |
| Res2 | 0\.005Ω 4W | "R48, R49, R63, R64, R65, R66" | 6 | R 2512\_M | Res2 | Resistor | 0\.006 | 0\.036 |
| SW\-PB | | S1 | 1 | TSW SMD\-6\*6\*5 | SW\-PB | Switch | 0\.2679 | 0\.2679 |
| XL2011 | | U1 | 1 | SOP8\_N | XL2011 | 5V/2\.1A DC\-DC Buck电源芯片\(<50V\) | 1\.9728 | 1\.9728 |
| CJT1117\-3\.3 | | U2 | 1 | SOT223\_N | Volt Reg | Voltage Regulator | 0\.6873 | 0\.6873 |
| STM32F405RGT6 | | U3 | 1 | LQFP64\-10x10mm | STM32F405RGT6 | No Description Available | 45 | 45 |
| TJA1040 | | U4 | 1 | SOP8\_N | TJA1040 | CAN收发器 | 9\.02 | 9\.02 |
| DRV8303 | | "U5, U6" | 2 | DCA48\_4P42X3P48 | DRV8303 | "THREE PHASE PRE\-DRIVER WITH DUAL CURRENT SHUNT AMPLIFIERS, DCA0048A" | 20 | 40 |
| 8MHz | | Y1 | 1 | OSC 3225\-4P | XTAL | Crystal Oscillator | 1\.9989 | 1\.9989 |
| | | | | | | | | |
| | | | | | | | Total | 129\.472486 |
## 🚀 快速上手
1. 可使用AD软件打开 *FOC_Controller.PcbDoc* 文件,根据需要进行修改或生成Gerber文件发送给PCB板厂进行制作。工艺为四层板,建议外层铜厚1oz及以上,内层铜厚0.5oz及以上。
2. 使用趁手的焊台进行焊接。
3. 检查焊接与上电是否正常。
4. 进行FOC控制代码的设计与验证。(或等我更新)
## 📧 联系我
如有未尽事宜或其他合理问题,可以通过电子邮件联系我
电子邮箱:
个人网站: