码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【毕业设计】29-交流电机步_进电机的转速测量与控制系统设计(原理图、仿真、源代码、答辩论文、答辩PPT)



    typora-root-url: ./

    【毕业设计】29-交流电机/步进电机的转速测量与控制系统设计(原理图、仿真、源代码、答辩论文、答辩PPT)

    文章目录

      • typora-root-url: ./
    • 【毕业设计】29-交流电机/步进电机的转速测量与控制系统设计(原理图、仿真、源代码、答辩论文、答辩PPT)
      • 任务书
      • 设计说明书
        • 摘要
        • 设计框架架构
        • 设计说明书及设计文件
        • 源码展示

    任务书

    设计内容:交流电机的转速测量与控制系统设计

    设计要求: 1.在确定论文方向的基础上收集、整理资料,并在对所收集资料有所理解的基础上科学拟定题目,写出开题报告。 2.论文要紧扣主题,思路清晰,主题明确。根据主题的具体要求,完成交流电机的转速检测方案设计、硬件选型、安装方法、检测后数值的处理等。 3.利用单片机或者PLC完成转速测量后的显示与闭环控制。 4.完成上位机的设计和组态画面的设计,要求能够使用上位机实时修改交流电机的转速值。论文中采用的解决办法和思路,设计的控制过程,说明原理。并用电脑软件仿真结果(如果不能仿真也需要有详细计算过程)。 5.论文计算过程要说明,插图部分、仿真过程要做说明。 论文方案设计部分,控制系统设计部分要附电路图,方案图。

    原理图工程文件
    原理图截图
    仿真模型工程文件
    仿真截图
    搭建视频
    答辩论文低重复率文档,22874字
    答辩PPT
    英文文献及翻译

    设计说明书

    摘要

    本系统通过对交流步进电机研究。在系统的设计上首先根据系统设计要求规划系统功能,对系统的硬件电路设计软件程序编写,在硬件和软件上均采用模块化的方式实现系统的设计,保证在软件硬件上设计的稳定性强,可靠性高,抗干扰能力强。在系统设计上充分考虑了系统的性价比,系统选择使用51单片机作为主控芯片,L297为电机驱动芯片,L298N为交流步进电机控制芯片,LCD1602作为显示器,按键控制电机,设计了一个交流电机的转速测量与控制系统。

    系统可以通过按键对系统控制,可以使交流步进电机实现正反转,加减速度的控制,并将速度实时显示到LCD1602上。系统使用AD软件对系统的原理图绘制、Visio绘制系统结构框图以及程序流程图、Keil软件C语言编写程序、Proteus仿真系统。经过测试最后实现了系统的功能。

    设计框架架构

    前 言… 1

    第一章 绪论… 3

    第一节 交流步进电机介绍… 3

    第二节 交流步进电机驱动介绍… 4

    第三节 交流步进电机研究的国内外现状… 4

    第四节 本文的主要研究内容… 5

    本章小结… 5

    第二章 系统方案分析… 6

    第一节 系统实现的功能分析… 6

    第二节 元器件方案选择… 6

    一、显示方案选择… 6

    二、电机驱动方案选择… 7

    三、主控芯片方案选择… 7

    第三节 系统框架确定… 8

    第四节 系统的主要元器件介绍… 9

    一、51单片机介绍… 9

    二、L297驱动介绍… 10

    三、L298驱动介绍… 12

    四、LCD1602液晶显示器介绍… 13

    第五节 系统的测速原理介绍… 13

    本章小结… 14

    第三章 系统的硬件电路设计… 15

    第一节 单片机最小系统电路设计… 15

    第二节 交流步进电机驱动电路设计… 16

    第三节 LCD1602显示电路设计… 17

    第四节 按键电路设计… 17

    第五节 电源电路设计… 18

    第六节 系统总电路设计… 19

    本章小结… 19

    第四章 系统的软件设计… 21

    第一节 主程序设计流程… 21

    第二节 速度计算程序设计流程… 22

    第三节 显示程序设计流程… 22

    第四节 按键扫描程序设计流程… 23

    本章小结… 24

    第五章 系统的仿真测试… 25

    第一节 Proteus软件介绍… 25

    第二节 仿真硬件电路搭建与调试… 25

    一、仿真硬件电路搭建… 25

    二、系统调试… 26

    第三节 仿真功能测试… 26

    本章小结… 31

    总 结… 32

    致 谢… 33

    参考文献… 34

    附 录… 35

    一、英文原文… 35

    二、英文翻译… 39

    三、工程图纸… 43

    四、源代码… 44

    设计说明书及设计文件

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    源码展示

    #include "AT89X51.h"
    int delay();
    void inti_lcd();
    void show_lcd(int);
    void cmd_wr();
    void ShowState();
    void clock(unsigned int Delay) ;
    void DoSpeed();       //计算速度
    //正转值
    #define RIGHT_RUN 1
    //反转值
    #define LEFT_RUN 0
    sbit RS=0xA0;
    sbit RW=0xA1;
    sbit E=0xA2;
    char SpeedChar[]="SPEED(n/min):";
    char StateChar[]="RUN STATE:";
    char STATE_CW[]="CW";
    char STATE_CCW[]="CCW";
    char SPEED[3]="050";
    unsigned int RunSpeed=50;		//速度
    unsigned char RunState=RIGHT_RUN;  //运行状态
    main()
    {	
    	/*定时器设置*/
    	TMOD=0x66;    	//定时器0,1都为计数方式;方式2;
    	EA=1;			//开中断	
    	TH0=0xff;		//定时器0初值FFH;
    	TL0=0xff;
    	ET0=1;
    	TR0=1;	
    	
    	TH1=0xff;		//定时器1初值FFH;
    	TL1=0xff;
    	ET1=1;
    	TR1=1;   	
    	IT0=1;			//脉冲方式
    	EX0=1;			//开外部中断0:加速
    	IT1=1;			//脉冲方式
    	EX1=1;			//开外部中断1:减速    
        inti_lcd();
        DoSpeed();       
        ShowState();
        while(1)
        { 
          clock(RunSpeed);
          P0_1=P0_1^0x01;
        }    
    }
    
    //定时器0中断程序:正转
    void t_0(void) interrupt 1
    {
    	RunState=RIGHT_RUN;	
        P0_0=1;
        P1=0x01;
        cmd_wr();
        ShowState();
    } 
    //定时器1中断:反转
    void t_1(void) interrupt 3
    {
    	RunState=LEFT_RUN;
        P0_0=0;
        P1=0x01;
        cmd_wr();
        ShowState();
       
    } 
    //中断0:加速程序
    void SpeedUp() interrupt 0
    {   
           if(RunSpeed>=12)
              RunSpeed=RunSpeed-2; 
           DoSpeed();
           P1=0x01;
           cmd_wr();
           ShowState();
                  
    }
    //中断1:减速程序
    void SpeedDowm() interrupt 2
    {       
        if(RunSpeed<=100)
            RunSpeed=RunSpeed+2; 
        DoSpeed();
        P1=0x01;
        cmd_wr();
        ShowState(); 
    }
    int delay()         //判断LCD是否忙
    {   
        int a;
    start:    
        RS=0;
        RW=1;
        E=0;
        for(a=0;a<2;a++);
        E=1;
        P1=0xff;
        if(P1_7==0)
           return 0;
        else        
           goto start;
    }
    void inti_lcd()  //设置LCD方式
    {
       P1=0x38;
       cmd_wr();
       delay();
       P1=0x01;     //清除
       cmd_wr();
       delay();
       P1=0x0f;
       cmd_wr();
       delay();
       P1=0x06;
       cmd_wr();
       delay(); 
       P1=0x0c;
       cmd_wr();
       delay();
    }
    void cmd_wr()           //写控制字
    {
       RS=0;
       RW=0;
       E=0;
       E=1;
    }
    void show_lcd(int i)   //LCD显示子程序
    {  
       P1=i;
       RS=1;
       RW=0;
       E=0;
       E=1;
    }
    void ShowState()    //显示状态与速度
    {
        int i=0;
        while(SpeedChar[i]!='\0')
        {
           delay();
           show_lcd(SpeedChar[i]);
           i++;
        }
        
        delay();
        P1=0x80 | 0x0d;
        cmd_wr();
        i=0;
        while(SPEED[i]!='\0')
        {
           delay();
           show_lcd(SPEED[i]);
           i++;
        }
        delay();
        P1=0xC0;
        cmd_wr();
        i=0;
        while(StateChar[i]!='\0')
        {
           delay();
           show_lcd(StateChar[i]);
           i++;
        }
        delay();
        P1=0xC0 | 0x0A;
        cmd_wr();
        i=0;
        if(RunState==RIGHT_RUN)
            while(STATE_CW[i]!='\0')
            {
              delay();
              show_lcd(STATE_CW[i]);
              i++;
            }
        else
           while(STATE_CCW[i]!='\0')
            {
              delay();
              show_lcd(STATE_CCW[i]);
              i++;
            }
    }
    void clock(unsigned int Delay)   //1ms延时程序
    {  unsigned int i; 
       for(;Delay>0;Delay--) 
        for(i=0;i<124;i++);      
    }
    void DoSpeed()
    {
        SPEED[0]=(1000*6/RunSpeed/100)+48;
        SPEED[1]=1000*6/RunSpeed%100/10+48;
        SPEED[2]=1000*6/RunSpeed%10+48;
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
  • 相关阅读:
    安卓应用开发中的参数修改保存
    基于数组寻址的SCL算法实现S7-1200_1500中的配方功能Recipe
    曝一段十多年前的“情史”!
    Docker容器-------数据卷和数据卷容器及cgroups资源限制
    选出表中的中位数记录[构造左右边界 || 问题转换]
    常用颜色的英文和十六进制
    Java基础之-OOP面向对象
    【Python】图像和办公文档的处理
    【机器学习入门项目10例】(九):聚类算法用于降维,KMeans的矢量量化应用(图片压缩)
    C++类和对象(上)
  • 原文地址:https://blog.csdn.net/qq_22592979/article/details/128090935
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号