导言


在这里插入图片描述

如上所示,本次实验使用中空三相无刷电机 + STM32F405的FOC电机控制板。

项目地址:

  • Gitee (国内): https://gitee.com/wallace89/MCU_Develop/tree/main/simplefoc15_stm32f405_6_phrase_pwm
  • GitHub: https://github.com/q164129345/MCU_Develop/tree/main/simplefoc15_stm32f405_6_phrase_pwm

一、电机开发板的三相逆变电路分析


在这里插入图片描述
如上图所示,simpleFOC的源码提供两种PWM驱动:

  1. 3PWM
  2. 6PWM

选择哪种驱动,取决于开发板的三相逆变电路的设计。
在这里插入图片描述
在这里插入图片描述
如上所示,从MCU端的TIM1发出6路PWM信号到EG2134,EG2134控制6个MOS组成三相逆变电路。最后,输出端口J14连接三相无刷电机的U、V、W。

FOC控制的三相逆变电路其实很简单!

二、simpleFOC源码移植


2.1、BLDCDriver6PWM

在这里插入图片描述

三、代码


3.1、BLDCDriver6PWM.cpp

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2、BLDCDriver6PWM.h

在这里插入图片描述
在这里插入图片描述

3.3、main.cpp

在这里插入图片描述
在这里插入图片描述

四、测试


在这里插入图片描述
在这里插入图片描述
如上所示,当ARR设置16800/2时,相当于10KHz频率。

五、细节补充


5.1、三相PWM的频率一般设置多少?

典型推荐值:

应用场景 推荐PWM频率范围
工业电机中低速,高功率) 8kHz ~ 20kHz
消费电子(低噪音要求) 20kHz ~ 40kHz
精密伺服控制系统 20kHz ~ 60kHz
小型无刷风扇、电动车轮毂 5kHz ~ 30kHz

在**FOC(Field Oriented Control)控制三相无刷电机(BLDC 或 PMSM)**的应用中,PWM频率的选择非常关键,它会影响电机的控制精度、效率、发热情况以及电磁噪声等。通常,合适的PWM频率取决于以下几个因素:

  1. 电机驱动器的硬件能力

    • MCU的PWM分辨率(时钟频率/定时器位数)是否足够支持高频率;
    • MOSFET或IGBT的开关能力;
    • 电流采样滤波器的响应速度。
  2. 电机参数

    • 感抗(电感较大时,可使用较低频率);
    • 最大工作转速和极对数影响感应电压,进而影响调制。
  3. 电流环控制带宽(采样周期)

    • 一般建议:PWM频率应为电流环采样频率的2倍或以上。
    • 比如:若电流环控制频率为10kHz,PWM应为20kHz或更高。
  4. EMI与电磁噪声

    • 20kHz通常可以避开人耳听觉范围,减少噪声;
    • 高频带来更多的开关损耗,需平衡噪声与效率。

总的来说,我个人偏向PWM频率设置20kHz。所以,本项目的STM32F405的TIM ARR寄存器将改为 16800/2/2 = 4200。

在这里插入图片描述

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐