标题: 基于proteus的stm32 BLDC电机控制器的设计思路 [打印本页]
作者: xuhe123 时间: 2020-1-9 17:13
标题: 基于proteus的stm32 BLDC电机控制器的设计思路
这是我嵌入式应用的一个项目,使用STM32CubeMX和keil软件进行编程。断断续续花了好几天完成,期间踩了很大hal库的坑和proteus的坑。
感觉做这个仿真的人很少,现在把资源分享给大家,因为程序还在修改还没有提交,所以先分享一下我粗略的设计思路
一、设计思路:
使用STM32CubeMX软件进行资源初始化(Cube资源配置很方便),使用HAL库进行程序设计。
图1 资源配置图
二、功能介绍:
三、功能的实现方法:
- 可调转速通过可调电阻和STM32的ADC功能,实现500-4596范围的速度调节。使用的是简单的比例控制,并未使用复杂的PID控制(太难了,一直调不好)。
- 通过定时器1的PWM互补输出六路PWM控制电机的转动,驱动器使用L293D和IRF540 MOS管。
- 换向使用的是外部中断,测速使用的是定时器2的三鹿输入捕获,这里有一个坑,proteus中三路输入捕获无法同时工作,本来打算三路都做测速逻辑,但是速度变化很大,所以最后只使用了一路作为测速通道。
- 正反转使用的是外部中断。
- 显示转速和目标转速使用的是lcd1602,在proteus仿真中,显示转速有一定的延时和误差(其实是proteus的仿真太慢了,多开一个任务就慢的要死)
图2 电机刚启动,速度未达到最小速度500
速度未达到最小速度时加载很快,大概加载到300rpm左右开始pid控制。
图3 仿真过程中
图4 仿真过程中
图5 反转时的调速过程
仿真过程中可以看到定时器PWM输出之间的切换以及脉宽的变化。
图6 接近稳定时
图7 稳定后增大转速
图8 反转时接近稳定
由于proteus中stm32 的定时器计时很坑,延时根本不对,需要修改芯片的时钟源频率,改大了仿真慢,改小了又不准,所以ADC采样值和转速之间只能近似转换,也造成了目标转速和实际转速的误差。
图9 整体电路图
以上的Word格式文档51黑下载地址:
设计报告.docx
(755.87 KB, 下载次数: 190)
作者: hellowC8051 时间: 2020-1-10 08:46
谢谢分享
作者: 嵌入式xiaobai 时间: 2020-1-14 10:00
可以分享一下程序吗?
作者: xuhe123 时间: 2020-1-14 10:47
后面会分享,我是基于ucosii写的
作者: liangweichao 时间: 2020-3-9 08:39
谢谢分享,继续加油
作者: zcllom 时间: 2020-3-11 16:47
期待,现在进展如何?
作者: bouna 时间: 2020-3-19 16:13
the source code please
作者: 华亭信客 时间: 2020-3-22 21:12
厉害了 我的哥,能不能共享下代码,学习一下
作者: 后起之秀 时间: 2020-5-1 12:46
楼主能把代码分享一下吗?
作者: 杨重阳 时间: 2020-12-8 10:46
楼主,急需您的代码
作者: 拖典你是谁 时间: 2020-12-9 21:34
大神,可否分享下源码哦,谢谢了
作者: xuhe123 时间: 2020-12-29 16:24
在我的另一个帖子
作者: xuhe123 时间: 2020-12-29 16:25
在我的另一个帖子
作者: liuyiyi 时间: 2021-4-15 16:23
写的很是不错看贴就跟贴
作者: mick32 时间: 2022-4-20 04:09
"I will share it later, I wrote it based on ucosii"
any news ? ...
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |