基于单片机的步进电机控制课设论文.docx
《基于单片机的步进电机控制课设论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的步进电机控制课设论文.docx(34页珍藏版)》请在冰点文库上搜索。
基于单片机的步进电机控制课设论文
课程设计(论文)
题目名称步进电机控制器的设计
课程名称单片机原理与应用
学生姓名*****
学号0741227261
系、专业信息工程系信息类
指导教师刘伟春
2009年4月29日
邵阳学院课程设计(论文)任务书
年级专业
07信本二班
学生姓名
***
学号
0741227261
题目名称
步进电机控制器的设计
设计时间
4.17至4.30
课程名称
单片机原理及应用
课程编号
131300109
设计地点
老实验楼
一、课程设计(论文)目的
通过查资料、选方案、设计电路、编写程序,调试程序和撰写设计报告等方式使学生得到一次较全面的开发设计训练。
理论联系实际,培养和提高学生创新能力,为后续课程的学习、毕业设计、毕业后的工作打下基础。
二、已知技术参数和条件
本步进电机控制系统主控芯片采用AT89C51,显示部件采用LED数码管,人机交互接口采用行列式键盘,电机驱动电路采用L298。
该步进电机控制系统能实现电机正转,反转,暂停,并能实时显示转动的圈数。
三、任务和要求
设计一个步进电机控制系统,要求:
1.设计出硬件电路;
2.设计出软件编程方法,并写出源代码;
3.用PROTEUS进行仿真;
4.论文格式要符合学院的统一规定,结构要合符逻辑,表达要得体。
注:
1.此表由指导教师填写,经系、教研室审批,指导教师、学生签字后生效;
2.此表1式3份,学生、指导教师、教研室各1份。
四、参考资料和现有基础条件(包括实验室、主要仪器设备等)
1.有PROTEUS实验室,拥有正版的PROTEUS仿真软件;
2.有电子综合试验室,拥有51系列单片机,DSP,FPGA等专用开发软件和仿真下载设备;
3.有学校购买的丰富的电子资源(如中国知网,万方数据库等)。
五、进度安排
2009.4.17分组、下发任务书、安排进度、宣布纪律;2009.4.18至2009.4.20调研、查找资料;
2009.4.21总体方案设计;
2009.4.22至2009.4.23硬件电路设计;
2009.4.24至2009.4.26软件设计及电路仿真;
2009.4.27至2009.4.28撰写课程设计报告;
2009.4.29仿真结果验收,简单答辩;
2009.4.30成绩评定、资料归档。
六、教研室审批意见
教研室主任(签字):
年月日
七|、主管教学主任意见
主管主任(签字):
年月日
八、备注
指导教师(签字):
学生(签字):
邵阳学院课程设计(论文)评阅表
学生姓名***学号0741227261
系别信息工程系专业班级07级信息类二班
题目名称步进电机控制器的设计课程名称单片机原理与应用
一、学生自我总结
学生签名:
年月日
二、指导教师评定
评分项目
资料查阅
编写规范
基本技能
设计能力
科学素养
工作量
综合成绩
权重
10
12
25
30
13
10
单项成绩
指导教师评语:
指导教师(签名):
年月日
注:
1、本表是学生课程设计(论文)成绩评定的依据,装订在设计说明书(或论文)的“任务书”页后面;
2、表中的“评分项目”及“权重”根据各系的考核细则和评分标准确定。
摘要
步进电机是一种将电能转化为角位移的装置。
当它接收到一个脉冲信号,步进电机按设定的方向转动一个固定的角度。
其广泛应用于工农业生产和人们的生活中,如:
数控机床的横纵向走刀、线切割的工作台拖动、空调的电子膨胀阀、办公用品的打印、微机的光盘驱动等。
本设计主要设计了一个基于80C51单片机对步进电机的运行控制,涉及到位置控制和加减速控制。
其中位置控制是最主要控制,要求在位置上实现准确控制(要求转动步数由数字键直接输入),运行速度在线可调,并要求具有运行步设置在线正、反转及启停控制。
本设计主要就是将步进电机与单片机紧密联系起来,通过单片机的驱动程序来控制步进电机的各种运行动作,以实现传统的步进电机的高度自动化。
关键字:
位置控制;加减速控制;在线速度可调;正转;反转
1步进电机
1.1步进电机简介
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。
使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
步进电机分为反应式、永磁式、混合式三类。
其中混合式步进电机综合了反应式和永磁式的优点,它的动态性能好,控制精度高,是目前应用最广泛的一种。
1.2步进电机的基本特点
步机电机之所以得到广泛应用的原因是由于步进电机有下列特性:
1:
步机电机是在脉冲作用下工作,步机电机的速度与加在绕组上的脉冲频率成正比。
2:
步进马达具有瞬间起动与急速停止的特性。
3:
改变线圈励磁的顺序,可就能改变马达的转动方向。
1.3步进电机的原理
步进电机由定子和转子两部分组成,下面以一两相反应式步进电机为例,说明步进电机工作原理。
如下图1.3-1所示,二相步机电机的定子上有两对磁极,按N、S、N、S分配,每两个相对的磁极组成一对。
每对磁极都缠有同一个绕组,形成一相。
转子是由软磁材料制成的,其外表面均匀分布着小齿,它们大小相同,间距相同。
这些小齿与定子磁极上的小齿的齿距相同形状相似。
如图按右表1.3-2的时序给步机绕组通电,步进电机将产生转动,改变相序通电,步进电机的转向将反相,停止发送脉冲,步机电机将停止运转。
图1.3-1步进电机结构表1.3-2通电次序
2单片机识的相关知识
2.1单片机简介
单片机全称为单片机微型计算机(SingleChipMicrosoftcomputer)。
从应用领域来看,单片机主要用来控制,所以又称为微控制器(MicrocontrollerUnit)或嵌入式控制器。
单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。
2.2单片机的发展史
1.4位单片机
1975年,美国德克萨斯仪器公司首次推出4位单片机TMS-1000;此后,各个计算机公司竞相推出四位单片机。
日本松下公司的MN1400系列,美国洛克威尔公司的PPS/1系列等。
四位单片机的主要应用领域有:
PC机的输入装置,电池充电器,运动器材,带液晶显示的音/视频产品控制器,一般家用电器的控制及遥控器,电子玩具,钟表,计算器,多功能电话等。
2.8位单片机
1972年,美国Intel公司首先推出8位微处理器8008,并于1976年9月率先推出MCS-48系列单片机。
在这以后,8位单片机纷纷面市。
例如,莫斯特克和仙童公司合作生产的3870系列,摩托罗拉公司生产的6801系列等。
随着集成电路工艺水平的提高,一些高性能的8位单片机相继问世。
例如,1978年摩托罗拉公司的MC6801系列及齐洛格公司的Z8系列,1979年NEC公司的UPD78XX系列。
这类单片机的寻址能力达64KB,片内ROM容量达4--8KB,片内除带有并行I\O口外,还有串行I\O口,甚至还有A\D转化器功能。
8位单片机由于功能强,被广泛用于自动化装置、智能仪器仪表、智能接口、过程控制、通信、家用电器等各个领域。
3.16位单片机
1983年以后,集成电路的集成度可达几十万只管/片,各系列16位单片机纷纷面市。
这一阶段的代表产品有1983年Intel公司推出的MCS-96系列,1987年Intel推出了80C96,美国国家半导体公司推出的HPC16040,NEC公司推出的783XX系列等。
16位单片机主要用于工业控制,智能仪器仪表,便携式设备等场合。
4.32位单片机
20世纪80年代末推出了32位单片机,如Motorlora公司的MC683XX系列,Intel的80960系列,以及近年来流行的ARM系列单片机。
32位单片机是单片机的发展趋势,随着技术的发展及开发成本和产品价格的下降,将会与8位单片机并驾齐驱。
5.64位单片机
近年来,64位单片机在引擎控制,智能机器人,磁盘控制,语音图像通信,算法密集的实时控制场合已有应用,如英国Inmos公司的TransputerT800是高性能的64位单片机。
2.3单片机的特点
1.单片机的存储器ROM和RAM时严格区分的。
ROM称为程序存储器,只存放程序,固定常数,及数据表格。
RAM则为数据存储器,用作工作区及存放用户数据。
2.采用面向控制的指令系统。
为满足控制需要,单片机有更强的逻辑控制能力,特别是单片机具有很强的位处理能力。
3.单片机的I/O口通常时多功能的。
由于单片机芯片上引脚数目有限,为了解决实际引脚数和需要的信号线的矛盾,采用了引脚功能复用的方法,引脚处于何种功能,可由指令来设置或由机器状态来区分。
3控制系统的硬件设计3.1基于单片机的步进电机控制方案如下图所示
键盘系统由命令输入单元,微处理器和功率放大器三部分组成。
键盘负责发布命令、输入数据,采用带中断的行列式键盘,微处理器负责将命令转化成控制信号。
功率放大器具有信号放大的功能。
图3.1—1单片机控制步进电机原理图
3.2步进电机的电路设计
在Proteus环境选用下例元器件,设计电路如图10.19所示。
①IN4003、BUTTON:
二极管、按纽;
②7SEG-MPX4-CA、RESPACK-8、80C51、共阳四位一体数码管、排阻、单片机;
③RES、CAP、CAP-ELEC、AND-4、CRYSTAL:
电阻、电容、电解电容、4输入与门、晶振;
④MOTOR-BISTEPPEA、L298:
步机直流电机、电机驱动模块;
图3.2-1整个电路设计图
3.3数码管显示:
用一位共阴极数码管和单片机的P0口相连,显示电机转速的档位,有一档、二档、三档,分别显示1、2、3,在启动时初显示0,清零后也显示0.
图3.3-1.共阴极数码管
3.4键盘电路设计
当按键数大于8时,通常采用行列式键盘电路。
如图所示为用单片机扩展I/O口组成的行列式键盘电路。
该图中行线P2.0到P2.5通过上拉电阻接+Vcc,且P2.0--P2.3为列线处于输出状态,P2.4--P2.5为行线,处于输入状态。
按键设置在行、列线交点上,行、列线分别连接按键开关的两端。
当键盘上没有键闭合时,行线和列线之间时断开的,所有行线输入全部为高电平。
当按下键盘上的某个键使其闭合时,则对应的行线和列线短路,行线输入即为列线输出。
如果此时把所有列线初始化为输出低电平,则通过读取行线输入值的状态是否全为1,即可判断有无键按下。
共设八个按键,为一档、二档、三档、正转、反转、暂停、继续和清零。
具体键盘电路如下图:
图3.4-1键盘电路
4控制系统的软件设计
程序主要分为主程序、键盘(中断)程序。
4.1主程序设计
主程序主要完成初始化,设置中断入口程序,并将R7寄存器的5、6、7三位做为功能标志位,R7中的值不停地送累加器,并检测累加器高三位是否为1,若其中有某位为1则转向相应的功能程序。
主程序不断的循环处于等待中断状态。
流程图如图所示:
:
图4.1-1主程序流程图
4.2键盘程序(中断程序)设计
主程序运行期间,若产生中断则转入键盘程序。
键盘程序分为5部分:
1.判断键盘上有无键按下
2.去除抖动的影响
3.扫描键盘,得到按下键的键号
4.判别闭合的键是否释放
5.键号入累加器,结束中断
中断流程图如图所示:
图4.2-1中断子程序流程图
4.3仿真图
在该设计中,利用Proteus软件进行仿真。
Proteus是英国Labcenter公司开发的电路分析与仿真软件。
运行于Windows操作系统上,可以仿真、分析(SPICE)数字电路、模拟电路、数模混合电路,是目前唯一能实现对51、PIC、AVR、HC11、ARM等处理器的仿真软件。
Proteus 与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU 的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。
因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。
对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。
图4.3-1原始数码管显示
图4.3-2开始运行程序时数码管显示
图4.3-3正转一段时间后数码管显示
图4.3-4反转一段时间后数码管显示
5具体程序清单
ORG0000H
LJMPMAIN
ORG0013H
LJMPKEYL
ORG0030H
MAIN:
MOVSP,#60H;初始化
MOVR0,#00H
MOVR1,#00H
MOVR3,#40
MOV72H,#40
MOVP2,#0F0H
CLRP3.4
CLR06H
CLRP1.0
CLRP1.1
CLRP1.2
CLRP1.3
MOV43H,#00H
MOV42H,#00H
MOV41H,#00H
MOV40H,#00H
MOVR7,#00H
SETBEA
SETBIT1
SETBEX1
START:
SETB20H;主程序
CJNER7,#1,L1
CLR20H
LCALLZZ
SETB20H
L1:
CJNER7,#2,L2
CLR20H
LCALLFF
SETB20H
L2:
LCALLLED
NNT3:
LJMPSTART
LED:
MOVDPTR,#TAB;显示程序
SETBP1.4
CLRP1.5
CLRP1.6
CLRP1.7
MOVA,43H
MOVCA,@A+DPTR
MOVP0,A
LCALLTT
CLRP1.4
SETBP1.5
CLRP1.6
CLRP1.7
MOVA,42H
MOVCA,@A+DPTR
MOVP0,A
LCALLTT
CLRP1.4
CLRP1.5
SETBP1.6
CLRP1.7
MOVA,41H
MOVCA,@A+DPTR
MOVP0,A
LCALLTT
CLRP1.4
CLRP1.5
CLRP1.6
SETBP1.7
MOVA,40H
MOVCA,@A+DPTR
MOVP0,A
LCALLTT
CLRP1.7
RET
KEYL:
MOVDPTR,#JS
CLREX1
MOV70H,R0
MOV71H,R1
MOV72H,R3
MOVA,P2
MOVP2,#0FH
MOV01H,P2
MOVP2,#0F0H
JNBACC.4,E1
JNBACC.5,E2
JNBACC.6,E3
JNBACC.7,E4
SETBEX1
RETI
E1:
MOV20H,#0
LJMPKEYH
E2:
MOV20H,#4
LJMPKEYH
E3:
MOV20H,#8
LJMPKEYH
E4:
MOV20H,#12
LJMPKEYH
KEYH:
MOVA,01H;键盘程序
JNBACC.0,D0
JNBACC.1,D1
JNBACC.2,D2
JNBACC.3,D3
SETBEX1
RETI
D0:
MOVA,#0
ADDA,20H
MOVB,#3
MULAB
JMP@A+DPTR
D1:
MOVA,#1
ADDA,20H
MOVB,#03H
MULAB
JMP@A+DPTR
D2:
MOVA,#2
ADDA,20H
MOVB,#3
MULAB
JMP@A+DPTR
D3:
MOVA,#3
ADDA,20H
MOVB,#3
MULAB
JMP@A+DPTR
JS:
LJMPLOOP1
LJMPLOOP2
LJMPLOOP3
LJMPLOOP10
LJMPLOOP4
LJMPLOOP5
LJMPLOOP6
LJMPLOOP11
LJMPLOOP7
LJMPLOOP8
LJMPLOOP9
LJMPLOOP15
LJMPLOOP0
LJMPLOOP12
LJMPLOOP13
LJMPLOOP14
LOOP0:
JB20H,SS0
LJMPWX
SS0:
MOV43H,42H
MOV42H,41H
MOV41H,40H
MOV40H,#0
LJMPRRT
LOOP1:
JB20H,SS1
LJMPWX
SS1:
MOV43H,42H
MOV42H,41H
MOV41H,40H
MOV40H,#1
LJMPRRT
LOOP2:
JB20H,SS2
LJMPWX
SS2:
MOV43H,42H
MOV42H,41H
MOV41H,40H
MOV40H,#2
LJMPRRT
LOOP3:
JB20H,SS3
LJMPWX
SS3:
MOV43H,42H
MOV42H,41H
MOV41H,40H
MOV40H,#3
LJMPRRT
LOOP4:
JB20H,SS4
LJMPWX
SS4:
MOV43H,42H
MOV42H,41H
MOV41H,40H
MOV40H,#4
LJMPRRT
LOOP5:
JB20H,SS5
LJMPWX
SS5:
MOV43H,42H
MOV42H,41H
MOV41H,40H
MOV40H,#5
LJMPRRT
LOOP6:
JB20H,SS6
LJMPWX
SS6:
MOV43H,42H
MOV42H,41H
MOV41H,40H
MOV40H,#6
LJMPRRT
LOOP7:
JB20H,SS7
LJMPWX
SS7:
MOV43H,42H
MOV42H,41H
MOV41H,40H
MOV40H,#7
LJMPRRT
LOOP8:
JB20H,SS8
LJMPWX
SS8:
MOV43H,42H
MOV42H,41H
MOV41H,40H
MOV40H,#8
LJMPRRT
LOOP9:
JB20H,SS9
LJMPWX
SS9:
MOV43H,42H
MOV42H,41H
MOV41H,40H
MOV40H,#9
LJMPRRT
LOOP10:
MOVA,43H
MOVB,#10
MULAB
ADDA,42H
MOVR0,A
MOVA,41H
MOVB,#10
MULAB
ADDA,40H
MOVR1,A
MOVR3,#40
SETBP3.4
SETB06H
MOVR7,#1
MOV73H,R7
SETBEX1
RETI
LOOP11:
MOVA,43H
MOVB,#10
MULAB
ADDA,42H
MOVR0,A
MOVA,41H
MOVB,#10
MULAB
ADDA,40H
MOVR1,A
MOVR3,#40
SETBP3.4
SETB06H
MOVR7,#2
MOV73H,R7
SETBEX1
RETI
LOOP12:
CLR06H
SETBEX1
MOVR0,70H
MOVR1,71H
MOVR3,72H
MOVR7,73H
RETI
LOOP13:
SETBP3.4
SETB06H
MOVR0,70H
MOVR1,71H
MOVR3,72H
CJNER0,#00H,GP1
CJNER1,#00H,GP2
LJMPGP
GP1:
INCR3
LJMPGP
GP2:
DECR1
GP:
MOVR7,73H
SETBEX1
RETI
LOOP14:
MOVSP,#60H
MOVR0,#00H
MOVR1,#00H
MOVR3,#40
MOV72H,#40
MOVP2,#0F0H
CLRP3.4
CLR06H
CLRP1.0
CLRP1.1
CLRP1.2
CLRP1.3
MOV43H,#00H
MOV42H,#00H
MOV41H,#00H
MOV40H,#00H
MOVR7,#00H
SETBEA
SETBIT1
SETBEX1
SETBEX1
RETI
LOOP15:
JB20H,SS10
LJMPWX
SS10:
MOV40H,#00H
MOV41H,#00H
MOV42H,#00H
MOV43H,#00H
SETBEX1
RETI
RRT:
SETBEX1
CLRP3.4
CLR06H
RETI
WX:
MOVR0,70H
MOVR1,71H
MOVR3,72H
MOVR7,73H
SETB06H
RETI
ZZ:
CJNER0,#00H,FORWCYCLE;正转圈,步程序
NEXT2:
CJNER1,#00H,STEP
LCALLSC
MOVR0,#00H
MOVR1,#00H
MOVR3,#40
MOV72H,#40
MOVP2,#0F0H
CLRP3.4
CLR06H
MOV43H,#00H
MOV42H,#00H
MOV41H,#00H
MOV40H,#00H
MOVR7,#00H
SETBEA
SETBIT1
SETBEX1
RET
FORWCYCLE:
MOVR3,72H
NEXTFORSTEP:
LCALLFORWSTEP
DECR3
JB06H,NT2
CLRP3.4
RET
NT2:
CJNER3,#00H,NEXTFORSTEP
MOV72H,#40
DECR0
LJMPZZ
STEP:
LCALLFORWSTEP;正转一步子程序
JB06H,NT1