10091-基于STM32和matlab的直流无刷电机调速控制系统设计(matlab仿真+原理图+源代码工程+详细介绍说明书+PPT)
功能描述:
实现的功能有转速的闭环控制,通过设定转速就可以使电机达到目标速度;
系统使用到的控制算法有PID控制算法调节电机速度;
在电机的控制上使用到了六步换相法实现电机的驱动;
在电机的运行同时采集电机工作电流实现,速度与电流双闭环的控制。
资料摘要:
本文详细介绍了基于STM32的直流无刷电机控制系统设计。采用的控制芯片为STM32F103ZET6。在查阅了大量文献的基础上,介绍了目前国内外本课题的研究现状,以及研究的意义和未来的研究方向。介绍了无刷直流电机的组成部分和内部结构、调速原理、换项原理、换向原理等。
首先设计STM32最小控制系统以及外围按键电路和显示电路,设计驱动板上对应的电源电路、驱动电路和位置传感器信号输出电路等。通过这些电路的组合完成了直流无刷电机的硬件系统设计。以42BL50S03-230型直流无刷电机为实验电机,在Altium Designer 中绘制控制器硬件原理图,并制作PCB板。
然后将设计的闭环控制系统方案在Keil-uVision5平台上写成对应的程序代码,完成算法的编译和调试。经过硬件系统与软件系统的联合调试,最终完成了基于STM32的直流无刷电机闭环控制设计,测试结果表明所设计的直流无刷电机闭环控制系统运行稳定可靠。
资料包含:
1、详细设计说明书-12055字
2、Matlab仿真工程文件-simulink建模
3、原理图工程文件-PCB工程文件
4、源代码工程文件
5、流程图-visio
6、测试结果excel
7、介绍PPT
#include "Get_ADC_Value.h"
#include "main.h"
#include "adc.h"
ADC_VALUE ADC1_Value={0,0,0,0};
void get_adc_value()
{
uint8_t i=0;
for(i=0;i<4;i++)
{
HAL_ADC_Start(&hadc1); //由于没有开启连续转换,每次转换前需要软件开启adc
HAL_ADC_PollForConversion(&hadc1,10);//轮询等待ADC转换完成
switch(i)//将四个通道的采样值存在结构体当中
{
case 0:ADC1_Value.Driving_V=HAL_ADC_GetValue(&hadc1);break;//驱动电压
case 1:ADC1_Value.Current_U=HAL_ADC_GetValue(&hadc1);break;//U相电流
case 2:ADC1_Value.Current_V=HAL_ADC_GetValue(&hadc1);break;//V相电流
case 3:ADC1_Value.Current_W=HAL_ADC_GetValue(&hadc1);break;//W相电流
default:break;
}
}
HAL_ADC_Stop(&hadc1);//关闭ADC
}