华夏学院步进电机控制系统设计.docx
- 文档编号:3849483
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:20
- 大小:593.24KB
华夏学院步进电机控制系统设计.docx
《华夏学院步进电机控制系统设计.docx》由会员分享,可在线阅读,更多相关《华夏学院步进电机控制系统设计.docx(20页珍藏版)》请在冰豆网上搜索。
华夏学院步进电机控制系统设计
武汉理工大学华夏学院
课程设计
课程名称微机接口技术及应用Ⅰ
题目步进电机控制系统设计
武汉理工大学华夏学院信息工程系
课程设计任务书
课程名称:
微机接口技术与应用指导教师:
班级名称:
开课系、教研室:
一、课程设计目的与任务
目的:
1.巩固、实践本课程所学理论知识,综合运用可编程接口芯片8255、8253、8259进行应用系统设计;
2.通过步进电机控制系统设计与制作,学习、掌握计算机控制系统软、硬件的设计方法;
3.通过课程设计培养学生查阅、合理运用参考资料的能力。
任务:
步进电机控制系统设计
二、课程设计的内容与基本要求
内容:
1.步进电机采用三相双八拍运行方式;
2.用1个开关控制步进电机起停,分别用2/4个开关控制步进电机四种工作模式:
1)正向慢速旋转2)正向快速旋转3)反向慢速旋转4)反向快速旋转
3.送电时和步进电机停止时,七段码显示器显示数字“0”;运行时,分别显示对应四种工作模式的序号1、2、3、4;
*4.使用硬件延时实现步进电机的快、慢旋转控制。
(选做)
要求:
1.画出硬件原理图(接口芯片和外设部分)和实验连线图;
2.掌握计算机控制系统的软硬件的调试方法和步骤;
3.设计报告撰写格式要求(按提供的设计报告统一格式撰写)
具体内容如下:
①设计任务与要求
②总体方案与说明
③硬件原理图与说明
④实验电路图与说明
⑤系统流程图
⑥软件主要功能模块及流程图
⑦问题分析与解决方案(包括调式记录、调式报告,即在调式过程中遇到的主要问题、解决方法及改进设想);
⑧小结与体会
⑨参考文献
提供附录:
①源程序(必须有简单注释)
②使用说明
③参考资料
三、课程设计步骤及时间进度和场地安排
设计步骤:
功能分析、硬件设计,拟定实验电路,编写程序,调试程序、运行系统;
时间进度安排:
(部分时间,某些工作可以重叠进行)
6月9日
布置题目,确定任务、查找相关资料
6月10日~6月12日
功能分析,硬件设计,拟定实验电路,编写程序,调试程序、运行系统;
6月13日
答辩后撰写设计报告。
6月13日下午4:
00前交设计报告。
场地安排:
信息系实验中心,接口技术实验室。
四、课程设计考核及评分标准
评分项目
评分
1.设计目的明确
10分
2.理解题目要求,设计方案正确,具有可行性、创新性
20分
3.功能模块设计合理,硬件电路设计正确,程序清晰,程序运行结果符合题目功能要求,测试性能达到技术要求
40分
4.设计报告规范,参考文献不少于2篇
15分
5.答辩
15分
总分
100分
目录
1.需求分析1
1.1课程设计题目1
1.2课程设计任务及要求1
1.3软硬件运行环境及开发工具1
2.概要设计2
2.1设计原理及实现方法2
2.1.1步进电机控制原理2
2.1.2步进电机的驱动3
2.1.3运行方式与方向的控制——循环查表法3
2.1.4步进电机的启/停控制——设置开关3
2.1.5步进电机速度控制——调用延时程序4
2.2主要芯片说明4
2.3步进电机控制系统流程5
3.详细设计6
3.1硬件设计与实现6
3.2软件设计7
3.2.1正向慢转子程序7
3.2.2正向快转子程序7
3.2.3反向慢转子程序8
3.2.4反向快转子程序8
3.2.5短延时子程序9
3.2.6长延时子程序9
4系统调试与操作说明10
4.1系统调试10
4.2操作说明11
5.课程设计总结与体会12
参考文献12
附录微机步进电机控制系统源程序13
1.需求分析
1.1课程设计题目
微机步进电机控制系统设计
1.2课程设计任务及要求
1.步进电机采用三相双八拍运行方式;
2.用1个开关控制步进电机起停,分别用2/4个开关控制步进电机四种工作模式;
3.实现步进电机正向慢速旋转,正向快速旋转,反向慢速旋转,反向快速旋转;
4.送电时和步进电机停止时,七段码显示器显示数字“0”;运行时,分别显示对应四种工作模式的序号1、2、3、4;
5.画出硬件原理图(接口芯片和外设部分)和实验连线图;
6.掌握计算机控制系统的软硬件的调试方法和步骤;
7.设计报告撰写格式要求(按提供的设计报告统一格式撰写)
1.3软硬件运行环境及开发工具
硬件:
唐都TDN86/88实验平台、PC机一台
开发语言:
汇编语言
2.概要设计
2.1设计原理及实现方法
2.1.1步进电机控制原理
步进电机是将电脉冲信号转换成角位移的一种机电式数模转换器。
其旋转的角位移与输入脉冲的个数成正比;转速与输入脉冲的频率成正比;转动方向和输入脉冲对绕组加电的顺序有关。
因此,步进电机旋转的角度位移、转速以及方向均受输入脉冲的控制。
本实验采用A口作为控制口,B,C口作为输出口,PA0、PA1、PA2分别接开关的K0、K1、K2,PC0、PC1、PC2、PC3分别接motorunit的ABCD。
微机步进电机控制系统原理图如图2.1所示。
图2.1微机步进电机控制系统原理图
2.1.2步进电机的驱动
步进电机在系统中是一种执行元件,都要带负载,因此需要功率驱动。
在电子设备中,一般所需功率较小,常采用达林复合管作功率驱动。
驱动原理如图2.2所示。
图2.2步进电机驱动原理图
2.1.3运行方式与方向的控制——循环查表法
步进电机的运行方式是指各相绕组循环轮流通电的方式。
此实验是使用双八拍:
AB→ABC→BC→BCD→CD→CDA→DA→DAB。
循环查表法是将各绕组加电顺序的控制代码制成一张表——步进电机相序表,存放在内存区,再设置一个地址指针。
表2.1步进电机相序表
D
C
B
A
运行方式
D3
D2
D1
D0
双八拍
0
0
1
1
AB
03H
0
1
1
1
ABC
07H
0
1
1
0
BC
06H
1
1
1
0
BCD
0EH
1
1
0
0
CD
0CH
1
1
0
1
CDA
0DH
1
0
0
1
DA
09H
1
0
1
1
DAB
0BH
2.1.4步进电机的启/停控制——设置开关
K0——控制步进电机旋转速度的快慢,K0=0表示慢转,K0=1表示快转;
K1——控制步进电机旋转方向,K1=0表示正转,K1=1表示反转;
K2——控制步进电机的启/停,K2=0表示停,K2=1表示启动。
2.1.5步进电机速度控制——调用延时程序
程序中有2个延时子程序,通过改变CX的值来控制快慢。
使用进栈,出栈的方式对CX的值进行保护,每次调用延时程序后,CX还是原始值。
2.2主要芯片说明
8255A:
Intel8086/8088系列的可编程外设接口电路(ProgrammablePeripheralInterface)简称PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。
它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。
8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。
8255A是一个并行输入、输出器件,具有24个可编程设置的I/O口,包括3组8位的I/O为PA口、PB口、PC口,又可分为2组12位的I/O口:
A组包括A口及C口高4位,B组包括B口及C组的低4位。
图2.38255A引脚图
2.3步进电机控制系统流程
图3.1步进电机控制流程图
3.详细设计
3.1硬件设计与实现
本电路的设计是利用8255A的A口作为输入口,B,C口作为输出。
PA0~~PA2分别用来控制步进电机的开启/停止、正反向、快慢转。
PB0~~PB3作为输出口,分别接步进电机的ABCD端口,输出相序表中的加电编码,从而使步进电机可以开始运转。
具体的接线如图3.1,3.2所示:
图3.1实验接线图
图3.2实验连线图
3.2软件设计
3.2.1正向慢转子程序
首先取步进电机相序表的首地址,通过C口输出,每输出一个,就指向下一个。
当指向最后一个加点码后,用SUBSI,8语句,使SI指向偏移首地址的前一位。
加1后,指向TAB1的首地址。
如此实现循环。
其中在每输出一个加点码后,调用DELAY1长延时。
ZM:
MOVAL,1
MOVBX,OFFSETTAB2
XLAT;取表
OUT61H,AL;B口输出,二极管上显示数字“1”
MOVAL,[SI];SI为表TAB1的偏移地址,将地址SI中的值给AL
CMPAL,0BH;比较是否为最后一个元素,若是则减8,回到首地址
JNZXH1的前一位
SUBSI,8
XH1:
INCSI;指针加1,实现向后移动
MOVAL,[SI];获取相序表TAB1中的值
OUT62H,AL;C口输出
CALLDELAY1;调用长延时
JMPA2
3.2.2正向快转子程序
首先取步进电机相序表的首地址,通过C口输出,每输出一个,就指向下一个。
当指向最后一个加点码后,用SUBSI,8语句,使SI指向偏移首地址的前一位。
加1后,指向TAB1的首地址。
如此实现循环。
其中在每输出一个加点码后,调用DELAY2短延时。
ZK:
MOVAL,2
MOVBX,OFFSETTAB2
XLAT;取表
OUT61H,AL;B口输出,二极管上显示数字“2”
MOVAL,[SI];SI为表TAB1的偏移地址,将地址SI中的值给AL
CMPAL,0BH
JNZXH2
SUBSI,8;偏移地址SI减8
XH2:
INCSI;指针加1,实现向后移动
MOVAL,[SI];获取相序表TAB1中的值
OUT62H,AL;C口输出
CALLDELAY2;调用短延时
JMPA2
3.2.3反向慢转子程序
首先取步进电机相序表的加点码,通过C口输出,每输出一个,就指向前一个。
当指向第一个加点码后,用ADDSI,8语句,使SI指向偏移末地址的后一位。
减1后,指向TAB1的首末地址。
如此实现循环。
其中在每输出一个加点码后,调用DELAY1长延时。
FM:
MOVAL,3
MOVBX,OFFSETTAB2
XLAT;取表
OUT61H,AL;B口输出,二极管上显示数字“3”
MOVAL,[SI];SI为表TAB1的偏移地址,将地址SI中的值给AL
CMPAL,03H;比较是否为第一个元素,若是则加8,回到末地址
JNZFXH1的后一位
ADDSI,8
FXH1:
DECSI;指针减1,实现向前移动
MOVAL,[SI]
OUT62H,AL;从B口输出
CALLDELAY1;调用长延时
JMPA2
3.2.4反向快转子程序
首先取步进电机相序表的加点码,通过C口输出,每输出一个,就指向前一个。
当指向第一个加点码后,用ADDSI,8语句,使SI指向偏移末地址的后一位。
减1后,指向TAB1的首末地址。
如此实现循环。
其中在每输出一个加点码后,调用DELAY2长延时。
FK:
MOVAL,4
MOVBX,OFFSETTAB2
XLAT;取表
OUT61H,AL;B口输出,二极管上显示数字“4”
MOVAL,[SI]
CMPAL,03H
JNZFXH2
ADDSI,8
FXH2:
DECSI;指针减1,实现向前移动
MOVAL,[SI]
OUT62H,AL;从B口输出
CALLDELAY2;调用短延时
JMPA2
3.2.5短延时子程序
使用进栈,出栈的方法对CX进行使用和保护,使用loop循环来实现延时,CX的取值非常重要,CX=04300H时,实现短延时。
DELAY1:
PUSHCX
MOVCX,04300H;通过修改CX的值来提高旋转的速度,CX的值越小,其速度就快
ADD1:
PUSHAX
POPAX
LOOPADD1
POPCX
RET
3.2.6长延时子程序
使用进栈,出栈的方法对CX进行使用和保护,使用loop循环来实现延时,CX的取值非常重要,CX=0E300H时,实现长延时。
DELAY2:
PUSHCX
MOVCX,0E300H;CX的值就为循环的次数,通过循环来达到延时
ADD2:
PUSHAX
POPAX
LOOPADD2
POPCX
RET
4系统调试与操作说明
4.1系统调试
调试一:
利用延时程序,来控制步行电机旋转速度,K0为0时调用长延时,K0为1时调用短延时。
DELAY1:
PUSHCX
MOVCX,0E300H
ADD1:
PUSHAX
POPAX
LOOPADD1
POPCX
RET
结果:
步行电机慢速旋转
DELAY2:
PUSHCX
MOVCX,04300H
ADD2:
PUSHAX
POPAX
LOOPADD2
POPCX
RET
结果:
步行电机快速旋转
调试二:
利用K1控制步行电机旋转的正反,K1为0时,步行电机正向旋转,从相序表中取值,和最后一个值比较,若相同则回到初始位置。
反之,指向下一个值,如此实现循环,K1为1时,步行电机反向旋转。
MOVAL,[SI]
CMPAL,0BH
JNZXH2
SUBSI,8
XH2:
INCSI
MOVAL,[SI]
OUT62H,AL
结果:
步行电机正向旋转
MOVAL,[SI]
CMPAL,03H
JNZFXH1
ADDSI,8
FXH1:
DECSI;
MOVAL,[SI]
OUT62H,AL
结果:
步行电机反向旋转
4.2操作说明
首先打开唐都TDN86/88实验平台,按照微机步进电机控制系统连线图(图3.1)连接电路图。
然后在PC机上运行WMD86,将源代码导入,编译,运行。
各个开关控制步行电机的状态如表4.1所示。
其中K2是控制步进电机的启动与暂停,K2等于1时运行。
K2是控制步进电机旋转速度的快慢,K0=0表示慢转,K0=1表示快转;K1是控制步进电机旋转方向,K1=0表示正转,K1=1表示反转;
表4.1各开关对应的步行电机状态表
开关
步进电机运行状态
K2
K1
K0
0
0
0
停止
1
0
0
正向慢转
1
0
1
正向快转
1
1
0
反向慢转
1
1
1
反向快转
5.课程设计总结与体会
在这一个星期里不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力。
在设计的过程中难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说8255A的具体作用等,通过这次课程设计之后,一定把以前所学过的知识重新温故。
除了以上所说的以外,我觉得其实去设计以及实现一个程序所花费的时间远不如测试时用的多,在测试的过程中,我懂得了一些调试的基本步骤,概括的说就是从小到大,从局部到整体,在实现了局部的功能后,应该学会怎么样去将它用最简洁的方法与整体融合起来。
而纠正错误的过程中,也要逐步的去排除,而不应当自己觉得哪里错了就去修改哪里,这样的后果只会事倍功半。
我觉得这些东西对于我以后的工作将有很大的帮助。
通过这次的课程设计,让我更加了解到微机的重要性。
以及它对我们专业的发展发挥的作用。
对我们而言,知识上的收获很重要,但精神上的丰收更加可喜。
让我知道了学无止境的道理。
这次课程设计必将成为我人生旅途上一个非常美好的回忆!
同时在做课程设计时要能够从多方面去考虑,去研究,用多种方法去实现要求。
此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,这些都让我受益非浅,培养了我的综合能力和运用所学知识,发现,提出,分析和解决实际问题的能力,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程。
参考文献
[1]周佩玲,彭虎,傅忠谦《微机原理与接口技术》北京,电子工业出版社2005
[2]沈美明,温东婵《IBM-PC汇编语言程序设计》北京,清华大学出版社1993
设计者:
蒋燃
日期:
2014年6月13日
附录微机步进电机控制系统源程序
STACKSEGMENTSTACK
DW64DUP(?
)
STACKENDS
DATASEGMENT
TAB1DB03H,07H,06H,0EH,0CH,0DH,09H,0BH;定义代码段
TAB2DB3FH,06H,5BH,4FH,66H;七段码显示器的定义
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVAL,90H
OUT63H,AL
MOVSI,OFFSETTAB1
A1:
MOVAL,0
MOVBX,OFFSETTAB2
XLAT
OUT61H,AL
INAL,60H
ANDAL,04H
CMPAL,00H
JZA1
A2:
INAL,60H
TESTAL,04H
JZA1
ANDAL,03H
CMPAL,00H
JZZM
CMPAL,01H
JZZK
CMPAL,02H
JZFM
CMPAL,03H
JZFK
ZM:
MOVAL,1
MOVBX,OFFSETTAB2
XLAT;取表
OUT61H,AL;B口输出,二极管上显示数字“1”
MOVAL,[SI];SI为表TAB1的偏移地址,将地址SI中的值给AL
CMPAL,0BH;比较是否为最后一个元素,若是则减8,回到首地址
JNZXH1的前一位
SUBSI,8
XH1:
INCSI;指针加1,实现向后移动
MOVAL,[SI];获取相序表TAB1中的值
OUT62H,AL;C口输出
CALLDELAY1;调用长延时
JMPA2
ZK:
MOVAL,2
MOVBX,OFFSETTAB2
XLAT;取表
OUT61H,AL;B口输出,二极管上显示数字“2”
MOVAL,[SI];SI为表TAB1的偏移地址,将地址SI中的值给AL
CMPAL,0BH
JNZXH2
SUBSI,8;偏移地址SI减8
XH2:
INCSI;指针加1,实现向后移动
MOVAL,[SI];获取相序表TAB1中的值
OUT62H,AL;C口输出
CALLDELAY2;调用短延时
JMPA2
FM:
MOVAL,3
MOVBX,OFFSETTAB2
XLAT;取表
OUT61H,AL;B口输出,二极管上显示数字“3”
MOVAL,[SI];SI为表TAB1的偏移地址,将地址SI中的值给AL
CMPAL,03H;比较是否为第一个元素,若是则加8,回到末地址
JNZFXH1的后一位
ADDSI,8
FXH1:
DECSI;指针减1,实现向前移动
MOVAL,[SI]
OUT62H,AL;从B口输出
CALLDELAY1;调用长延时
JMPA2
FK:
MOVAL,4
MOVBX,OFFSETTAB2
XLAT
OUT61H,AL
MOVAL,[SI]
CMPAL,03H
JNZFXH2
ADDSI,8
FXH2:
DECSI
MOVAL,[SI]
OUT62H,AL
CALLDELAY2
JMPA2
DELAY1:
PUSHCX
MOVCX,0E300H;通过修改CX的值来提高旋转的速度
ADD1:
PUSHAX
POPAX
LOOPADD1
POPCX
RET
DELAY2:
PUSHCX
MOVCX,04300H;CX的值就为循环的次数,通过循环来达到延时
ADD2:
PUSHAX
POPAX
LOOPADD2
POPCX
RET
CODEENDS
ENDSTART
设计过程中质疑(或答辩)记载:
1.程序运行时如何暂停?
答:
在4个子程序末尾,都有跳转到A2的语句,而在A2中,有INAL,60H
TESTAL,04HJZA1,这几条语句就是判断第三位K2位是否为0,若等于0,则跳转到A1。
使二极管显示数字0,程序循环运行A1,指导K2变为1。
2.如何实现正向慢转的?
答:
正向慢转是用数字1显示。
使用XLAT取表指令,将AL转换为06H,在用B口输出,二极管上九显示为1。
SI为表TAB1的偏移首地址,将[SI]的值赋给AL,先和0BH比较,若相等,将SI减8,得到TAB1表首地址的前一位,INCSI,使SI为TAB1表的首地址,这样就可以实现相序表的循环。
将[SI]赋给AL,由C口输出,调用长延时使灯,指针运行速度变慢。
最后跳回到A2段。
指导教师评语:
评分:
签名:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华夏 学院 步进 电机 控制系统 设计