当前位置: 首页 > news >正文

无刷电机控制 - 基于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驱动:

  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。后续,电流采样使用10kHz

在这里插入图片描述


文章转载自:
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://www.dtcms.com/a/281443.html

相关文章:

  • 清华提出MoPPS,将贝叶斯流式推断引入提示选择领域,加速Reasoning Model训练
  • 工单系统在数字化转型中的战略价值与实践
  • HTML的重要知识
  • 深度学习图像增强方法(一)
  • 【机器学习】第一章 概述
  • HTML(下)
  • Linux RAID1 创建与配置实战指南(mdadm)
  • package_tsak 和 promise 的区别
  • gerrit设置教程
  • 【记录】Ubuntu20.04安装mysql
  • 苍穹外卖跳过支付后的来单提醒调整及相关问题解决办法
  • LLM 常见面试题 2
  • STM32小实验二--流水灯
  • 性能提升30% ONLYOFFICE 文档 9.0.3 版本已发布:onlyoffice二次开发三件套-学习中心安装及使用指南-新手必备
  • Hello Kitty Cosmos光影特展北京首展开幕,沉浸式数字艺术+跨界非遗焕新超级IP
  • 【机器学习深度学习】大模型本地化部署指南:Ollama、vLLM、LMDeploy 与 ModelScope 深度解析
  • 记录一次使用crontab未执行的排错过程
  • 电脑桌面整理工具,一键自动分类
  • BPE(字节对编码)和WordPiece 是什么
  • Python 函数的维护性与复用性
  • Gartner《JavaScript: Top Use Cases, Frameworks and Architecture Constraints》学习心得
  • AI Agent :从核心概念到高级实践的系统性探索
  • Cursor Git
  • iOS V2签名网站系统源码/IPA在线签名/全开源版本/亲测
  • C++中的模板参数 vs 函数参数:编译期与运行期的分界线
  • 使用llama-factory进行qwen3模型微调
  • 2025 XYD Summer Camp 7.14 模考
  • 理解TCP如何稳定、高效地 工作在网络上的关键
  • PyTorch笔记6----------神经网络案例
  • esp32使用ESP-IDF在Linux下的升级步骤,和遇到的坑Traceback (most recent call last):,及解决