EDABOSS电子论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 527|回复: 0

[资料] 基于proteus的stm32 BLDC电机控制器的设计思路

[复制链接]

6

主题

1

回帖

39

E币

技术员

Rank: 2

积分
13
发表于 2020-1-11 09:33:32 | 显示全部楼层 |阅读模式
这是我嵌入式应用的一个大作业,使用STM32CubeMX和keil软件进行编程。断断续续花了好几天完成,期间踩了很大hal库的坑和proteus的坑。
感觉做这个仿真的人很少,现在把资源分享给大家,因为程序还在修改还没有提交,所以先分享一下我粗略的设计思路

一、设计思路:
使用STM32CubeMX软件进行资源初始化(Cube资源配置很方便),使用HAL库进行程序设计。
178.001.jpg
图1 资源配置图
二、功能介绍:
  • 可调转速
  • 可控转动方向
  • 显示转速和目标转速

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

178.002.jpg
图2 电机刚启动,速度未达到最小速度500

速度未达到最小速度时加载很快,大概加载到300rpm左右开始pid控制。

178.003.jpg
图3 仿真过程中
178.004.jpg
图4 仿真过程中

178.005.jpg
图5 反转时的调速过程

仿真过程中可以看到定时器PWM输出之间的切换以及脉宽的变化。
178.006.jpg
图6 接近稳定时
178.007.jpg
图7 稳定后增大转速
178.008.jpg
图8 反转时接近稳定

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

设计报告.docx

755.87 KB, 下载次数: 0, 下载积分: E币 -5 元

积分规则
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|EDABOSS电子论坛

GMT+8, 2024-4-26 06:44 , Processed in 0.042622 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表