步进电机控制系统_第1页
步进电机控制系统_第2页
步进电机控制系统_第3页
步进电机控制系统_第4页
步进电机控制系统_第5页
免费预览已结束,剩余18页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河北地质大学信息工程学院电子信息工程专业单片机课程设计报告题目步进电机控制系统姓名学号班级指导教师课程设计任务书班级姓名学号课程设计题目步进电机控制系统课程设计起止日期至实习地点课程设计内容与要求(包括:设计任务及要求、设计原理、所需仪器设备、验收标准)一、基本功能:1、加速运转100步,匀速运转100步,减速运转100步,反方向加速100步,反方向匀速;100步,反方向减速100步;2、电机的启动、停止、加减速、正反向等均可由按键控制。二、扩展功能:1、一段时间内(SS)将转速加到100转/分钟,匀速运转一段时间(SS)后停止,正反方向均可控制;2、通过键盘设置电机转动的角度:步进方式:即每

2、按一次键,电机转过一定的角度(如360);设定方式:由键盘直接输入一个电机要旋转的角度,如输入210再按“确定”后,电机旋转210度,正反方向均可控制;3、其他自行增加的功能。指导教师课程设计报告一、设计原理与技术方法:(包括:电路工作原理分析与原理图、元器件选择、电路调试方法与结果说明;软件设计说明书与流程图、软件源程序代码、软件调试方法与运行结果说明。)1 .电路工作原理分析1.1 系统工作原理系统是以STC90C51片机为核心(如图4)。该系统通过对STC90C5#>t机P1的赋值,以TC1117为驱动芯片(如图3),并通过单片机程序控制和处理,从而实现了步进电机的状态控制。通过独

3、立键盘的命令输入,经STC90C5WL片机处理后,可以实现步进电机开始和停止,正转和反转,加速和减速等状态的变换。由于步进电机是一种将电脉冲信号转换成直线或角位移的执行元件,它不能直接接到交直流电源上,而必须使用专业设备-步进电机控制驱动器。所以该系统使用TC1117为驱动芯片:控制器可以发出脉冲频率从几赫兹到几千赫兹可以连续变化的脉冲信号,它为环形分配器提供脉冲序列,环形分配器的主要功能是把来自控制环节的脉冲序列按一定的规律分配后,以驱动步进电机的转动,环形分配器是在该系统中是用计算机软件设计的方法实现环形分配器要求的功能。系统步进电机的励磁方式为电机连接器针脚图工tl脚图也机信号1 A+2

4、 A3 8+4 B-两相单四拍,即A-B+-A+-B-。A+厂、j(M)a5/r1¥¥B+两相电机四弓I线图1步进电机原理图注:此表可加附页1.1.1 步进电机的换向控制如果给定工作方式正序通电,步进电机正转,即A-B+一A+-B-;如果按反序通电,即B-A+-B+-A-,则电机就反转。在某一高速下的正、反向切换实质包含了降速一换向一加速3个过程。1.1.2 步进电机的速度控制如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。所以通过改变单步延时时间的长短,就可以对步进电机实现加速,匀速和减速。1.1.3 步进电机

5、的起停控制步进电机由于其电气特性,运转时会有步进感。还因为惯性作用,所以在启动时,必须有加速过程,在停止时必须有减速过程。1.1.4 .2元器件选择1.2.1 步进电机步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此适合用单片机控制。步进电机区别于其他控制电机的最大特点是:它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定。步进电机分三种:永磁式(PM,反应式(VR)和混合式(HB),步进电机又称为脉冲电机,是工业过程控制和仪表中一种能够快速启动,反转和制动的执行元件。每个一个脉冲,步进电机就转动一个角度(不距角)或前进、倒退一

6、步。步进电机旋转的角度由输入的电脉冲数确定,所以,也有人称步进电机为数字/角度转换器。该系统步进电机工作方式是两相单四拍,电机工作的赋值如图2,分别为0xf7,0xfb,0xfd,0xfe,当连续不断给他赋值时,步进电机就能够转起来。关于步进电机的旋转角度和和拍数赋值我单独写了个小程序进行了验证,其结果是:每次给步进电机端口赋一组值(即一拍),步进电机转动一次,每拍转过的角度是18度。所以单四拍一轮赋值转过的是32度。具体步骤如下:用单四拍的工作方式给电机赋值,用按键控制,即每按下一次按键,给步进电机赋一轮值(四拍)。在步进电机上做个标记,每按一次,观察一次,最终按了5次电机转了约360度。即

7、每拍步数的角度=360/(4*5)=18度。验证小程序在附件1。A-A+B-B+0111101111011110图2步进电机控制口赋值表步进电机的A-,A+,B-,B+口分别接入驱动芯片的OUTAOUTBOUT丽OUTDPGNDINB3vcc|-*1GNBw:6E<D7sONCOUTAINAPGNDINBAGNDVDDOLTBNCOOTCINCPGNDINDAGNDOCTOKiir161517n|>GNDOLTD图3步进电机驱动图1.2.2 STC90C51单片机Atmel公司生产的STC90C5律片机是一种低功耗/低电压、高性能的8位单片机,它采用CMOS口高密度非易失性存储技术

8、,而且其输出引脚和指令系统都与MCS-51兼容;片内的FlashROM允许在系统内改编程序或用常规的非易失性编程器来编程,内部除CPV卜,还包括256字节RAM4个8位并行I/O口,2个中断源,2个中断优先级,2个16位可编程定时计数器,STC90C5曲片机是一种功能强、灵活性高且价格合理的单片机,它适合该系统的编程。P1.0-P1.4口接驱动芯片的INA-INDJPSCPU图4STC90C51单片机原理图1.3系统设计框图图5总体设计方框图2.软件设计2.1原理和流程图整个系统由按键和电机驱动两部分。按键主要功能是判断是否有键按键下且按键按下后是否弹起来,只有当这两个过程都执行才认为是一次按

9、键。而电机驱动程序(即主程序)的功能是判断是哪个键按下,并执行相应的功能。2.1.1 按键部分它包扩一个延时子函数和按键判断子函数。按键是低有效,所以当GPIO_KEY勺值为0xFF时,处于无按键状态,只有当GPIO_KEY|E1时且延时一段时间后还是该状态才判断有效。当按键弹起时,才认为完成了一次按键,并把它的值返回。延时子函数主要用for进行空循环和while循环完成。图6按键流程图2.1.2 电机驱动部分该部分主要用if和for语句完成,if语句分别写出正转加速,正转匀速,正转减速和反转加速,反转匀速,反转减速及停止七种工作状态子模块。当每种工作状态按键有效时,就会执行相应的子模块,电机

10、就会进入对应的工作状态。而每个工作状态的工作的时间是for循环来完成的,并用break跳出if循环,防止在单个状态中出现死循环。开始键盘扫描是K1?否是K2?否K3?否是K4?K5?否是K6?否是K7?否K8?2.2源程序/*开始停止正转加速正转匀速是正转减速反转加速反转匀速反转减速是图7主程序流程图*标题:步进电机一(单步四柏)单步四拍工作方式:正转:A/B/AB反转:BAB/A/J14短路冒需断开*/#include"reg52.h"#include<intrins.h>#defineuintunsignedint* defineucharunsignedc

11、harucharstep;定义要使用的IO口* defineGPIO_KEYP2/独立键盘用P2口/声明全局函数unsignedcharKey_Scan();延时函数voiddelay(unsignedintt)unsignedintk;while(t-)for(k=0;k<60;k+)用for的空循环延长程序的执行时间/* 函数名:main* 函数功能:主函数* 输入:无* 输出:无*/voidmain(void)unsignedcharvalue,keyNum;value=2;while(1)keyNum=Key_Scan();扫描键盘switch(keyNum)case(0xFE)

12、:返回按键K1的数据value=7;/开始,正转匀速break;case(0xFD):返回按键K2的数据value=2;/停止break;case(0xFB):返回按键K3的数据value=6;正转加速break;case(0xF7):返回按键K4的数据value=7;正转匀速break;case(0xEF):返回按键K5的数据value=8;正转减速break;case(0xDF):返回按键K6的数据value=3;反转加速break;case(0xBF):返回按键K7的数据value=1;反转匀速break;case(0x7F):返回按键K8的数据value=5;break;/反转减速de

13、fault:break;if(value=1)反转匀速ucharb=100;for(step=100;step>0;step-)if(GPIO_KEY!=0xFF)break;elseP1=0xfb;delay(b);P1=0xfd;delay(b);P1=0xf7;delay(b);P1=0xfe;delay(b);break;if(value=3)/反转加速ucharc=100;for(c=100;c>2;c=c-4)if(GPIO_KEY!=0xFF)break;else(P1=0xfb;delay(c);P1=0xfd;delay(c);P1=0xf7;delay(c);P

14、1=0xfe;delay(c);break;if(value=5)/反转减速(uchard=3;for(d=3;d<100;d=d+4)(if(GPIO_KEY!=0xFF)break;else(P1=0xfb;delay(d);P1=0xfd;delay(d);P1=0xf7;delay(d);P1=0xfe;delay(d);/1次break;if(value=6)正转加速(uchare=100;for(e=100;e>2;e=e-4)(if(GPIO_KEY!=0xFF)break;else(P1=0xfe;delay(e);P1=0xf7;delay(e);P1=0xfd;

15、delay(e);P1=0xfb;delay(e);/1次)break;)if(value=7)正转匀速(for(step=100;step>0;step-)(if(GPIO_KEY!=0xFF)break;else(P1=0xfe;delay(100);P1=0xf7;delay(100);P1=0xfd;delay(100);P1=0xfb;delay(100);)break;)if(value=8)正转减速(ucharf=3;for(f=3;f<100;f=f+4)(if(GPIO_KEY!=0xFF)break;else(P1=0xfe;delay(f);P1=0xf7;d

16、elay(f);P1=0xfd;delay(f);P1=0xfb;delay(f);/1次)break;)if(value=2)/停止(P1=0xff;)/每个按键要按下去久一点才会有效/* 函数名:Key_Scan()* 函数功能:扫描键盘* 输入:无* 输出:读取到的键值*/unsignedcharKey_Scan()(unsignedcharkeyValue=0,i;/保存键值/-检测按键1-/if(GPIO_KEY!=0xFF)/检测按键K1是否按下(delay(1);/消除抖动if(GPIO_KEY!=0xFF)再次检测按键是否按下(keyValue=GPIO_KEY;i=0;whi

17、le(i<50)&&(GPIO_KEY!=0xFF)检测按键是否松开(delay(1);i+;returnkeyValue;将读取到键值的值返回2.3调试方法和结果按电路图连接,用keil软件编写程序,用普中自动下载程序到单片机上,分别按按键顺序操作,分别是开始,停止,正转加速,正转匀速,正转减速,反转加速,反转匀速,反转减速等功能。程序编译正确,能实现开始,停止,正转加速,正转匀速,正转减速,反转加速,反转匀速,反转减速等功能。并且各功能能自由切换。3.实物展示3“0w二、课程设计工作记录:1.设计步骤与时间安排6月13日拿到课程设计题目,把所有要求都看了一遍,并进行排

18、序。6月14日-6月15日在网上和图书馆查找相关资料。6月16日确定设计所需要的器件并准备好。6月17日-6月18日了解步进电机和STC90C51单片机的工作原理。6月19日编写步进电机匀速工作程序。6月20日-6月23日编写按键控制程序。6月24日编写步进电机正反转程序。6月25日-6月26日编写步进电机加减速和步数控制程序。6月27日对整个系统程序综合运用。6月28日课程设计演示。6月29日-6月30日写课程设计报告7月1日提交报告。2 .调试步骤与时间安排6月19日步进电机匀速工作程序调试。6月20日-6月23日按键控制程序调试。6月24日步进电机正反转程序调试。6月25日-6月26日步

19、进电机加减速和步数控制程序调试。6月27日系统总程序调试。3 .课题完成结果说明本课题完成了设计的基本功能,能按键控制步进电机的启动、停止、正转、反转、加速和减速等状态,并可以在各个状态中自由切换。同时步进电机达到要求所转的步数后可以自动跳出工作状态。但设计不足的是个别按键灵敏度较低,需要按键时间长些或多次按键才有效。其次是扩展也没有完成。同时,也还可以扩展LED或LCD显示步进电机的步数,转速等。4 .课题总结在这次课程设计中我掌握了STC90C51单片机的基本运用过程,对课上的知识有了更深入的理解。在编程上,基本掌握了C语言在单片机上的运用。在硬件上,了解了步进电机的工作原理,也懂了一些单

20、片机设计应用实验在实际操作过程中应注意的问题。从理论知识到实际动手,我感觉到了实践的重要,它是所学知识的实际应用。在这次课程设计中,我发现了自己的不足,如C语言基础差,分析程序能力较低等。在空余时间里,我会继续深入学习,努力掌握单片机的相关知识,为毕业设计做准备。附件1:/*标题:步进电机拍数和旋转角度验证(单步四拍)单步四拍工作方式:正转:A/B/AB反转:BAB/A/J14短路冒需断开*/#include"reg52.h"#include<intrins.h>/-定义要使用的ion-/#defineGPIO_KEYP2/独立键盘用P2口/声明全局函数unsignedcharKey_Scan();/延时函数voiddelay(unsignedintt)(unsignedintk;while(t-)(for(k=0;k<60;k+)()/用for

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论