基于STM32控制直流电机加减速正反转设计(程序+仿真+报告+讲解)

# 本设计基于STM32控制直流电机加减速正反转设计(程序+仿真+报告+讲解)
仿真:proteus8.9
程序编译器:keil 5
编程语言:C语言
编号C0011

讲解视频:

功能说明:

本设计由STM32F103、L298N电机驱动电路、按键电路组成。
1.通过按键可以控制电机,正转、反转、加速、减速、停止。
2.档位分4档,并且可以通过按键顺序正转、反转、加速、减速、停止。
3.档位可以自定义。
附赠相关论文,一份是根据实物写的(与仿真功能基本一致)还有一份是根据仿真写的。

开题报告

基于STM32控制直流电机加减速正反转的Proteus仿真设计

一、课题背景和目标

在本课程大作业中,我们将设计一个基于STM32微控制器的直流电机控制系统。该系统将通过Proteus仿真软件进行设计和验证,实现电机的正转、反转、加速、减速和停止控制。控制系统将通过按键进行操作,具有4档控制功能。

我们的目标是通过Proteus仿真设计,验证STM32控制系统的可行性和有效性,加深对微控制器、电机驱动电路和按键电路的理解和应用。

二、研究方法

我们将采用理论分析和仿真验证相结合的方法,首先通过Proteus软件设计电路,然后通过编程控制实现所需功能。具体步骤如下:

在Proteus中设计电路:包括STM32F103微控制器、L298N电机驱动电路和按键电路。
编写程序:使用C语言编写程序,通过微控制器的GPIO口控制电机的正转、反转、加速、减速和停止。
仿真测试:在Proteus中运行程序,通过按键操作测试电机的控制功能。
三、预期结果

我们预计通过上述研究方法,能够实现以下预期结果:

通过按键实现电机的正转、反转、加速、减速和停止控制。
具有4档控制功能,可以通过按键顺序实现正转、反转、加速、减速、停止的控制循环。
通过Proteus仿真,验证STM32控制系统的可行性和有效性。
四、实验安排

我们预计将用一个月的时间完成该课程大作业。前两周将主要用于电路设计和编程,第三周进行仿真测试,第四周进行结果分析和报告撰写。

五、实验材料和方法

实验材料包括:

STM32F103微控制器
L298N电机驱动电路
按键电路
Proteus仿真软件
实验方法包括:

设计电路
编写程序
仿真测试
六、实验步骤和数据记录

实验步骤如下:

在Proteus中设计电路。
使用C语言编写程序。
在Proteus中运行程序。
通过按键操作测试电机的控制功能。
记录实验数据。
分析实验结果。
撰写报告。
数据记录包括:

按键操作记录:记录按键操作的时间、顺序和结果。
电机状态记录:记录电机的状态变化,包括正转、反转、加速、减速和停止。
Proteus仿真结果记录:记录仿真测试的结果,包括电机的状态和控制信号的变化。
七、实验结论与讨论

在实验结束后,我们将根据实验数据和结果进行分析和讨论,得出实验结论。可能的结论包括:

成功实现电机的正转、反转、加速、减速和停止控制。
成功实现4档控制功能。
通过Proteus仿真验证了STM32控制系统的可行性和有效性。
实验讨论将包括对实验过程中遇到的问题和困难的分析,以及未来改进的方向和建议。

仿真图(提供源文件):

新仿真1

新仿真反转

新仿真正转

3.1系统的功能分析及体系结构设计
3.1.1系统功能分析
本设计由STM32F103R6单片机核心板电路+L298N电机驱动电路+按键电路+电源电路组成。
1、通过按键可以控制电机,正转、反转、加速、减速、停止。档位分8档。
2、按键顺序正转、反转、加速、减速、停止。
3.1.2系统总体结构

3.2模块电路的设计
3.2.1 STM32单片机核心电路设计
STM32系列处理器是意法半导体ST公司生产的一种基于ARM 7架构的32位、支持实时仿真和跟踪的微控制器。选择此款控制芯片是因为本系统设计并非追求成本的最低或更小的功耗,而是在实现本设计功能的前提下能够提供更丰富的接口和功能以便于设计实验系统各实验项目所需的外围扩展电路。此款控制芯片在完成单片机课程的学习后上手较为容易,在医疗器械中应用广泛,具有很好的学习、实验研究价值。
一、STM32的主要优点:
(1)使用ARM最新的、先进架构的Cortex-M3内核
(2) 优异的实时性能
(3) 杰出的功耗控制
(4) 出众及创新的外设
(5) 最大程度的集成整合
(6) 易于开发,可使产品快速将进入市场
二、STM32——最佳的平台选项
对于使用同一平台进行多个项目开发而言,STM32是最佳的选择:
(1) 从仅需少量的存储空间和管脚应用到需要更多的存储空间和管脚的应用
(2) 从苛求性能的应用到电池供电的应用
(3) 从简单而成本敏感的应用到高端应用
(4) 全系列脚对脚、外设及软件的高度兼容性,给您带来全方位的灵活性。您可以在不必修改您原始框架及软件的条件下,将您的应用升级到需要更多存储空间或精简到使用更少存储空间/ 或改用不同的封装的规格。
STM32F103C8T6单片机核心板接口电路图如下图所示。

3.2.2 L298N电机驱动模块电路设计
本L298N驱动模块,采用ST公司的L298N芯片,L298N 是一种双H桥电机驱动芯片,其中每个H桥可以提供2A的电流,功率部分的供电电压范围是2.5-48v,逻辑部分5v供电,接受5vTTL电平。该模块可以直接驱动两路3-30V直流电机,并提供了5V输出接口,可以给5V单片机电路系统供电,可以方便的控制直流电机速度和方向。
一、产品参数:
(1)驱动芯片:L298N双H桥驱动芯片
(2)具有二极管续流保护
(3)直流电机转速可以通过PWM方式来实现控制
(4)驱动部分端子供电范围VMS:+5V~+35V
(5)驱动部分峰值电流Io:2A/桥
(6)逻辑部分端子供电范围Vss:4.5-5.5V
(7)逻辑部分工作电流范围:0~36mA
(8)控制信号输入电压范围:高电平4.5-5.5V 低电平0V
(9)最大功耗:20W
(10)存储温度:-25℃~+130℃
二、电机驱动模块使用注意事项
(1)第一次上电时观察绿色电源指示灯L5是否点亮,如果不亮,请立即断电检查电源是否接反。
(2)驱动器为功率设备,请保持工作环境的散热通风;在连上电机后使其连续工作一段时间后观察电机和驱动芯片的温升正常后方可进行后续使用。
三、电机驱动模块接口说明:
(1)电机驱动电源输入接口:VMS接正极,GND接负极
(2)驱动器和控制端口的接口:控制直流电机时IN1、IN2和ENA为一组,它们控制电机A,接在A+和A-,如果电机A不控制,则ENA悬空即可;如果电机A控制,则ENA接一路PWM输出。IN3、IN4和ENB为一组,他们控制电机B,接在B+和B-,如果电机B不控制,则ENB悬空即可;如果电机B控制,则ENB接一路PWM输出。
四、直流电机控制信号真值表
以电机A为例,高电平H:低电平:L
输入信号功能:
IN1=H;IN2=L:电机A正转
IN1=L;IN2=H:电机A反转
ENA=H;IN1=IN2:电机A紧急停车
ENA=L;IN1=X;IN2=X:任意电平电机A自由停车
L298电机驱动模块性能稳定、可靠,满足本设计要求。其模块接口图如下图所示。
在这里插入图片描述

L298N电机驱动模块接口图
L298N电机驱动模块内部电路原理图如下图所示所示。P1为总电源输入、GND和5V直流电源输出接口。总电源经过L7805CV稳压芯片将高电压降为5V,L7805CV是输出电压为4.75-5.25V,最大输入电压为35V,最大输出电流为1.5A静态电流为4.2-8mA的正电压稳压器。C1-C4均起到滤波作用,让电压更将平稳。P3和P4为电机接口。二极管D1-D8起到保护作用,防止电机产生的反向感应电动势损伤L298N。P2为控制引脚,D9-D13为信号指示灯,相关电阻起到限流作用,保护LED灯。

源程序(提供源文件):

char dis0[6] = "Dir:+";   //暂存
char dis1[6] = "Dir:-";   //暂存
char dis2[16] = "";   //暂?
char dis3[] = "RUN ";   //暂存?
char dis4[] = "STOP";   //暂存
unsigned  char rekey = 0; //按键防止抖动
unsigned char contNum = 0; //循环计数
int main(void)
{
    
    
  
    delay_init();            //延时函数初始化
  
//    uart_init(9600);        //串口初始化为115200
    //  uart2_init(9600)    ;
    TIM3_Int_Init(10, 7199); //定时器
    LED_Init();             //初始化与LED连接的硬件接口
    KEY_Init();
    Lcd_GPIO_init();
    Lcd_Init();
    IN1 = 1;        //方向控制
    IN2 = 0;
    pwmRigh = 0;    //pwm调整,电机转速调整

    Lcd_Puts(0, 0, (unsigned char *)dis0);
    sprintf(dis2,"SPEED:%d",pwmRigh);
    Lcd_Puts(0, 1, (unsigned char *)dis2);
     Lcd_Puts(8, 0, (unsigned char *)dis3);

    while(1)
    {
    
    
        if((key1 == 0) || (key2 == 0) || (key3 == 0) || (key4 == 0) || (key5 == 0))      //检测到按键按下
        {
    
    
//            delay_ms(1);   //小抖动仿真不需要加
            if(rekey == 0)
            {
    
    
                if(key1 == 0)  //检测是否按下
                {
    
    

                    rekey = 1;
                    IN1 = 1;        //方向控制
                    IN2 = 0;                   
                    Lcd_Puts(0, 0, (unsigned char *)dis0);
                     Lcd_Puts(8, 0, (unsigned char *)dis3);
                }
                else if(key2 == 0) //设置值键
                {
    
    
                    rekey = 1;
                    IN1 = 0;        //方向控制
                    IN2 = 1;
                    Lcd_Puts(0, 0, (unsigned char *)dis1);
                     Lcd_Puts(8, 0, (unsigned char *)dis3);
                }
                else if(key3 == 0) //设置值键
                {
    
    
                    rekey = 1;
                    if(pwmRigh < 8)pwmRigh = pwmRigh + 2; //pwm 调速
                    sprintf(dis2,"SPEED:%d",pwmRigh/2);
                    Lcd_Puts(0, 1, (unsigned char *)dis2);
                }
                else if(key4 == 0) //设置值键
                {
    
    
                    rekey = 1;
                    if(pwmRigh >= 2)pwmRigh = pwmRigh - 1; //pwm 调速
                    sprintf(dis2,"SPEED:%d",pwmRigh/2);
                    Lcd_Puts(0, 1, (unsigned char *)dis2);
                }
                else if(key5 == 0) //设置值键
                {
    
    
                    rekey = 1;
                    IN1 = 0;        //方向控制
                    IN2 = 0;
                    Lcd_Puts(8, 0, (unsigned char *)dis4);
                }
            }
        }
        else
        {
    
    
            rekey = 0;  //防止重复检测到按键
        }
        delay_ms(10);
    }
}

在这里插入图片描述

以下为部分程序,完整程序可在下载链接获取:

论文报告:

实物相关论文:

在这里插入图片描述

仿真相关论文:
第一章绪论
1.1课题背景及其意义
直流电机拥有有良好的起制动性能,可应用于在大范围内的平滑控制,也可广泛的应用于许多需要控制或正反向的电力拖动领域中。在控制角度来看,直流控制更是交流拖动系统的基础。早期的控制系统较大部分以模拟电路作为基础,有运算放大器、非线性集成电路和少量数字电路等,控制系统的硬件部分功能比较复杂,功能比较单一,而且软件系统不灵活、不好调试,不利于直流电动机控制技术发展和应用范围。伴随着单片机控制技术的快速发展,使得许多控制功能算法以及软件得以完成,为直流电动机控制控制提供了更大的发展空间,并使系统达到更高的性能。采用单片机构成控制系统,可以节约人力资源和降低系统成本,从而有效的提高工作效率。
传统的控制系统采用模拟元件,虽然满足了生产要求,但由于元件易老化和使用时容易受到干扰影响,并且线路很复杂,控制效果受到器件性能、温度等因素的影响,故系统的运行可靠性及准确性得不到保证,甚至出现事故。
目前,直流电动机控制系统数字化已经走向实用化,伴随着电子技术的高度发展,促使直流电机控制逐步从模拟化向数字化转变,特别是单片机技术的应用,使直流电机控制技术又进入到一个新的阶段,智能化、高可靠性已成为它发展的趋势。因此实现直流无级控制对我们社会生产和生活有着重大的意义。
1.2 国内外的研究状况
直流电动机具有良好的起动、制动性能,宜于在大范围内平滑控制,在许多需要控制或快速正反向的电力拖动领域中得到了广泛的应用。从控制的角度来看,直流控制还是交流拖动系统的基础。早期直流电动机的控制均以模拟电路为基础,采用运算放大器、非线性集成电路以及少量的数字电路组成,控制系统的硬件部分非常复杂,功能单一,而且系统非常不灵活、调试困难,阻碍了直流电动机控制技术的发展和应用范围的推广。随着单片机技术的日新月异,使得许多控制功能及算法可以采用软件技术来完成,为直流电动机的控制提供了更大的灵活性,并使系统能达到更高的性能。采用单片机构成控制系统,可以节约人力资源和降低系统成本,从而有效的提高工作效率。
在实际应用中,电动机作为把电能转换为机械能的主要设备,一是要具有较高的能量转换效率;二是应能根据生产工艺的要求调整转速。电动机的控制性能如何对提高产品质量、提高劳动生产率和节省电能有着直接的决定性影响。因此,控制技术一直是研究的热点。
直流电动机在冶金、矿山、化工、交通、机械、纺织、航空等领域中已经得 到广泛的应用。而以往直流电动机的控制只是简单的控制,很难进行控制,不能 实现智能化。传统的控制系统采用模拟元件,虽在一定程度上满足了生产要求,但是因为元件容易老化和在使用中易受外界干扰影响,并且线路复杂、通用性差,控制效果受到器件性能、温度等因素的影响,故系统的运行可靠性及准确性得不到保证,甚至出现事故。如今,直流电动机的控制控制已经离不开单片机的支持,单片机应用技术的飞速发展促进了自动控制技术的发展,使人类社会步入了自动化时代,单片机应用技术与其他学科领域交叉融合,促进了学科发展和专业更新,引发了新兴交叉学科与技术的不断涌现。现代科学技术的飞速发展,改变了世界,也改变了人类的生活。由于单片机的体积小、重量轻、功能强、抗干扰能力强、控制灵活、应用方便、价格低廉等特点,计算机性能的不断提高,单片机的应也更加广泛特别是在各种领域的控制、自动化等方面。
目前,直流电动机控制系统数字化已经走向实用化,伴随着电子技术的高度发展,促使直流电机控制逐步从模拟化向数字化转变,特别是单片机技术的应用,使直流电机控制技术又进入到一个新的阶段,智能化、高可靠性已成为它发展的趋势。
近年来,随着科技的进步,电力电子技术得到了迅速的发展,直流电机得到了越来越广泛的应用。直流它具有优良的控制特性,控制平滑、方便,控制范围广;过载能力大,能承受频繁的冲击负载,可实现频繁的无级快速起动、制动和反转。
1.3本文的主要研究内容及论文结构安排
第1章.主要介绍本设计的课题背景及国内外研究状况;
第2章.主要说明系统方案的选择;
第3章.主要介绍硬件电路的组成及使用方法;
第4章.主要介绍软件设计;
第5章.主要介绍硬件调试;
仿真相关报告

资料清单如下:

0.常见使用问题及解决方法–必读!!!!
1.源程序
2. 仿真
3. 论文报告
4.讲解视频
5.功能要求
Altium Designer 软件资料
KEIL软件资料
L298N的详细资料.doc
Proteus软件资料
单片机学习资料
目录清单.txt
答辩技巧
设计报告常用描述
鼠标双击打开查找更多51 STM32单片机课程毕业设计.url

资料百度网盘下载链接

猜你喜欢

转载自blog.csdn.net/weixin_52733843/article/details/131886935