ucosii+STM32 BLDC电机控制器设计 附源程序Proteus仿真

资料下载地址:ucosii+STM32 BLDC电机控制器设计 附源程序Proteus仿真 

嵌入式,现在把我的程序和设计思路分享给大家。
软件所用版本如下
Proteus版本 SP 8.7
STM32CubeMX 版本 5.4.0
HAL固件库版本 1.8.0
Keil 版本 uVison5
 

一、设计思路:

使用STM32CubeMX软件进行资源初始化(Cube资源配置很方便),使用HAL库进行程序设计。

图1 资源配置图

二、系统功能介绍:

  • 可调转速
  • 可控转动方向
  • 显示转速和目标转速
 

三、软件设计说明:

  • 可调转速通过可调电阻和STM32的ADC功能,实现500-4596范围的速度调节。使用的是简单的比例控制,并未使用复杂的PID控制(太难了,一直调不好)。
  • 通过定时器1的PWM互补输出六路PWM控制电机的转动,驱动器使用L293D和IRF540 MOS管。
  • 换向使用的是外部中断,测速使用的是定时器2的三鹿输入捕获,这里有一个坑,proteus中三路输入捕获无法同时工作,本来打算三路都做测速逻辑,但是速度变化很大,所以最后只使用了一路作为测速通道。
  • 正反转使用的是外部中断。
  • 显示转速和目标转速使用的是lcd1602,在proteus仿真中,显示转速有一定的延时和误差(其实是proteus的仿真太慢了,多开一个任务就慢的要死)
6、使用ucosii进入分功能多任务处理。
 

四、调试及运行结果

图2 电机刚启动,速度未达到最小速度500
 
速度未达到最小速度时加载很快,大概加载到300rpm左右开始pid控制。
 

图3 仿真过程中

图4 仿真过程中
 

图5 反转时的调速过程
 
仿真过程中可以看到定时器PWM输出之间的切换以及脉宽的变化。

图6 接近稳定时
 

图7 反转时接近稳定
 

图8 稳定后增大转速
 
由于proteus中stm32 的定时器计时很坑,延时根本不对,需要修改芯片的时钟源频率,改大了仿真慢,改小了又不准,所以ADC采样值和转速之间只能近似转换,也造成了目标转速和实际转速的误差。

图9 整体电路图

五、心得体会

在这次设计过程中,期间遇到许许多多问题,对电机的控制不熟悉导致换向失败,仿真过程不收敛,定时器不起作用,引脚之间相互干扰,输入捕获无法同时进行,pwm模式设置错误导致pid控制越调速度越快等等问题,最后都比较好的解决了这些问题,当然程序和设计中还存在一些问题,由于时间关系无法全部解决,在以后的学习过程中,如果有机会会继续深入学习。
 

  1.  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

森旺电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值