# BLDC_PID_CONTROL **Repository Path**: dxmcu/bldc_-pid_-control ## Basic Information - **Project Name**: BLDC_PID_CONTROL - **Description**: 本项目为通过lvgl ui 界面和can通讯,发送预设速度和方向向到BLDC(直流无刷电机)主控板。主控板控制BLDC电机按预定的速度和方向转动 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2025-11-29 - **Last Updated**: 2025-11-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 项目介绍 **本项目使用STM32F1 作为主控板,STM32G4 作为执行板,通过CAN总线进行通讯,执行板连接驱动板控制BLDC电机按预定速度旋转,通过PID算法和HALL测速实现闭环控制**。在无干扰时速度只在±2RPM波动,在有干扰时能也能迅速恢复。**本项目的介绍视频放在B站**,欢迎查看 https://www.bilibili.com/video/BV12shHzeE1w/ ,项目框架图如下: ![](assets/images/电机项目readme/IMG-20250802105337435.png) 本项目实物图如下 ![](assets/images/电机项目readme/IMG-20250803153619002.png) ## 主控介绍 主控板硬件使用正点原子STM32F103的开发板,以STM32F1+LVGL+LCD方案实现。**LVGL界面和操控逻辑,以及CAN总线通讯** 由本人开发外,其余代码均采用正点原子代码。 如下为UI界面,支持启动、停止、反转、等功能,同时支持滑块,按钮和键盘方式设置目标速度。同时通过CAN总线接收来自执行板发送到自己速度,并通过仪表盘和显示框具体显示。 ![](assets/images/电机项目readme/IMG-20250803181124619.png) ## 执行板介绍 本项目执行板硬件使用了正点原子的STM32G4开发板,**除上位机相关功能采用正点原子代码外,其余基本由本人编写**,首先是根据原理图使用STM32CUBEMX生成最初的项目,并在此基础上开发。**特别是在电机开发的核心部分和正点原子的方案截然不同,我的方案显然是要优于开发板原方案。主要区别如下:** 1、正点原子贷六步换相,使用的**上桥臂timer pwm,下桥臂GPIO**的驱动方法,而我则是使用**互补PWM+死区时间+原子更新方式**,可参考本人博客[BLDC电机开发之一---六步换相驱动方法讨论]( https://blog.cyytx.com/posts/%E5%85%AD%E6%AD%A5%E6%8D%A2%E7%9B%B8%E9%A9%B1%E5%8A%A8/ ) 2、正点原子的测速方法是在**PWM中断里测速,并且还是单步测速**,有非常大的误差。而我则是使用**定时器中断捕获+整圈测速**的方法速,测速精度可达0.01RPM,可参考本人博客[BLDC电机开发之二-----测速方式和误差讨论](https://blog.cyytx.com/posts/%E6%B5%8B%E9%80%9F%E6%96%B9%E6%B3%95%E5%92%8C%E8%AF%AF%E5%B7%AE%E8%AE%A8%E8%AE%BA/) 3、在PID算法里面,正点使用的是**增量式PID,不过它不做抗饱和,也没做算法优化**,而我则是使用**位置式PID,做了抗饱和以及自适应积分增益算法优化**,可参考本人博客[# BLDC电机开发三----PID自适应积分增益算法优化](https://blog.cyytx.com/posts/pid%E8%87%AA%E9%80%82%E5%BA%94%E7%A7%AF%E5%88%86%E5%A2%9E%E7%9B%8A%E7%AE%97%E6%B3%95%E4%BC%98%E5%8C%96/) ## 性能测试 ### 稳态精度 如图是**黄线是预设速度,红线是实际速** ,在**100~3000RPM 无超调,速度波动只有±2RPM** ![](assets/images/电机项目readme/IMG-20250803161843248.png) 低速时基本无偏差,如在100RPM时,稳定后基本无偏差 ![](assets/images/电机项目readme/IMG-20250803162851773.png) 高速时,如下最大只有±2PPM偏差 ![](assets/images/电机项目readme/IMG-20250803163108378.png) ### 响应速度 **在低速时,100RPM,从开始到稳定需要3.5s** ![](assets/images/电机项目readme/IMG-20250803163553114.png) **高速时,如3000RPM,从0开始到3000PRM只需1.5s** ![](assets/images/电机项目readme/IMG-20250803164049042.png) ### 抗干扰能力 带着厚手套,用力捏住转子一段时间,然后突然松手,模拟干扰,干扰发生后PID迅速响应,干扰消失后,在1s左右就迅速恢复。 ![](assets/images/电机项目readme/IMG-20250803171731641.png)