基于STM32无刷电机BLDC速度控制器系统设计-毕设课设资料

Posted Mr song song

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于STM32无刷电机BLDC速度控制器系统设计-毕设课设资料相关的知识,希望对你有一定的参考价值。

  1. 可调转速通过可调电阻和STM32的ADC功能,实现500-4596范围的速度调节。
  2. 通过定时器1的PWM互补输出六路PWM控制电机的转动,驱动器使用L293D和IRF540 MOS管。
  3. 换向使用的是外部中断,测速使用的是定时器2的三鹿输入捕获,这里有一个坑,proteus中三路输入捕获无法同时工作,本来打算三路都做测速逻辑,但是速度变化很大,所以最后只使用了一路作为测速通道。
  4. 正反转使用的是外部中断。
  5. 显示转速和目标转速使用的是lcd1602,在proteus仿真中,显示转速有一定的延时和误差

实现功能:

  1. 可调转速
  2. 可控转动方向
  3. 显示转速和目标转速

下面是原理图和程序

#include "main.h"
#include "adc.h"
#include "tim.h"
#include "gpio.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "includes.h"
#include "lcd.h"
/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
#define HALL_GPIO GPIOA
//START 任务
//设置任务优先级
#define START_TASK_PRIO      			10 //开始任务的优先级设置为最低
//设置任务堆栈大小
#define START_STK_SIZE  	  			64
//任务堆栈	
OS_STK START_TASK_STK[START_STK_SIZE];
//任务函数
void start_task(void *pdata);	
 			   
//LED0任务
//设置任务优先级
#define LED0_TASK_PRIO       			2 
//设置任务堆栈大小
#define LED0_STK_SIZE  		    		64
//任务堆栈	
OS_STK LED0_TASK_STK[LED0_STK_SIZE];
//任务函数
void led0_task(void *pdata);

//Speed_ADC 任务
//设置任务优先级
#define SPEED_ADC_TASK_PRIO       			1
//设置任务堆栈大小
#define SPEED_ADC_STK_SIZE  		    		64
//任务堆栈	
OS_STK SPEED_ADC_TASK_STK[SPEED_ADC_STK_SIZE];
//任务函数
void speed_adc_task(void *pdata);

【资源下载】下载地址:点击下载(1605) 百度网盘

以上是关于基于STM32无刷电机BLDC速度控制器系统设计-毕设课设资料的主要内容,如果未能解决你的问题,请参考以下文章

BLDC 无刷电机FOC驱动 STM32官方培训资料

基于STM32的智能小车--电机驱动设计

如何用STM32产生三相PWM用于控制三相直流无刷电机?

基于英飞凌AURIX的平衡单车组逐飞BLDC项目开源

直流无刷电机仿真分析——基于simulink官方例程BLDC Speed Control

智能车竞赛线上培训:基于英飞凌AURIX的BLDC控制方案