无刷电机控制 - 基于STM32F405+CubeMX+HAL库+SimpleFOC02 ,完成三相半桥驱动程序BLDCDriver6PWM
导言
如上所示,本次实验使用中空三相无刷电机 + 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驱动:
- 3PWM
- 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频率取决于以下几个因素:
-
电机驱动器的硬件能力
- MCU的PWM分辨率(时钟频率/定时器位数)是否足够支持高频率;
- MOSFET或IGBT的开关能力;
- 电流采样滤波器的响应速度。
-
电机参数
- 感抗(电感较大时,可使用较低频率);
- 最大工作转速和极对数影响感应电压,进而影响调制。
-
电流环控制带宽(采样周期)
- 一般建议:PWM频率应为电流环采样频率的2倍或以上。
- 比如:若电流环控制频率为10kHz,PWM应为20kHz或更高。
-
EMI与电磁噪声
- 20kHz通常可以避开人耳听觉范围,减少噪声;
- 高频带来更多的开关损耗,需平衡噪声与效率。
总的来说,我个人偏向PWM频率设置20kHz。所以,本项目的STM32F405的TIM ARR寄存器将改为 16800/2/2 = 4200。后续,电流采样使用10kHz