基于8086的步进电机控制.docx
- 文档编号:4630465
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:22
- 大小:324.03KB
基于8086的步进电机控制.docx
《基于8086的步进电机控制.docx》由会员分享,可在线阅读,更多相关《基于8086的步进电机控制.docx(22页珍藏版)》请在冰豆网上搜索。
基于8086的步进电机控制
郑州科技学院
《微型计算机原理》课程设计
题目基于8086的步进电机控制
学生姓名***
专业班级计算机科学与技术一班
学号201115009
院(系)信息工程学院
指导教师***
完成时间2013年12月20日
1课程设计的目的………………………………………………………………1
2课程设计的任务与要求……………………………………………………1
3设计方案与论证………………………………………………………………1
4设计原理及功能说明………………………………………………………2
4.1励磁线圈及其励磁顺序………………………………………………3
4.2工作原理…………………………………………………………………3
4.38086CPU…………………………………………………………………5
4.48255工作方式选择……………………………………………………6
4.5ULN2003A…………………………………………………………………6
4.674LS273……………………………………………………………………………6
4.774LS138……………………………………………………………………………6
5单元电路的设计(计算与说明)………………………………………8
6硬件的制作与调试…………………………………………………………10
7总结……………………………………………………………………………11
参考文献…………………………………………………………………………12
附录1:
总体电路原理图…………………………………………………13
附录2:
元器件清单………………………………………………………13
附录3:
源程序代码………………………………………………………14
1课程设计的目的
培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。
要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。
让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。
通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,了解步进电机控制的基本原理,掌握控制步进电机转动的编程方法,进一步熟练掌握8255A并行I/O口的工作方式以及编程方法,熟练应用8086以及汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。
体会系统整体设计的流程与方法,为以后系统级设计积累经验。
培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。
2课程设计的任务与要求
01.通过开关K1实现步进电机的开始与停止;
02.通过开关K2来选择步进电机的正转与反转;
03.通过开关K3,K4组成(2-4译码)四档电机转速选择;
04.对每只开关的选择情况同时通过4位8段数码管来显示;
05.扩展设计:
可以在以上功能基础上,增加控制步进电机单步转动的开关;增加控制电机加速转动的开关;增加控制电机减速的开关。
3设计方案与论证
本设计采用电压为DC12V的四相八拍步进电机35BYJ46型电机,用ULN2003作为步进电动机驱动电路主芯片,以8255A作为8086并行输出接口,8086对步进电机的控制信号则通过8255A送到ULN2003.
根据课题要求,用8086处理器和可编程并行接口芯片8255组成控制系统,控制步进电机正转、反转以及转速控制,步进电机不能直接由8255驱动,而需要用相应的驱动芯片,因此,控制系统直接控制电机驱动即可控制步进电机。
转向分别用逆时针转动片段转速和顺时针转动片段则通过调用延时子程序,当调用延时较长的子程序时,则步进电机转速慢,当调用延时较短的子程序时,步进电机转速快。
设计流程图如下:
图3-1总体设计流程图
本步进电机控制系统通过四个键盘来控制步进电机的正转、反转、启动和停止以及转速,步进电机旋转的角度取决于键盘接通时间长短,接通时间越长,旋转角度越大,其功能表如表1.2.1。
表3-1键盘功能表
键盘状态
电机动作
K1接通
电机启动
K1断开
电机停止
K2接通
电机顺时针旋转
K2断开
电机逆时针旋转
K3接通
电机2档转速
K4接通
电机4档转速
K3、K4接通
电机3档转速
4设计原理及功能说明
在该步进电机控制系统中,需要接收键盘信息并识别,然后将数据传送给步进电机使步进电机旋转,采用8086CPU和8255接口芯片是可行的,系统框图如图4-1所示
图4-1系统方框图
4.1励磁线圈及其励磁顺序
表4-1励磁顺序表
1
2
3
4
5
6
7
8
5
+
+
+
+
+
+
+
+
4
-
-
-
3
-
-
-
2
-
-
-
1
-
-
-
图4-2励磁线圈图
4.2工作原理:
4相步进电机示意图
四相步进电机示意图见下左图,转子由一个永久磁铁构成,定子分别由4组绕组构成
图4-3电机定子和转子示意图图4-4电气连接示意图
当S1连通电源后,定子磁场将产生一个靠近转子为N极,远离转子为S极才磁场,这样的定子磁场和转子的固有磁场发生作用,转子就会转动,正确地S1、S4的送电次序,就能控制转子旋转的方向。
例如:
若送电的顺序为S1闭合
断开
S2闭合
断开
S3闭合
断开
S4闭合
断开,周而复始的循环,在定子和转子共同作用下,电机就瞬时针旋转:
图4-5电机旋转模拟图
若送电的顺序为S4闭合
断开
S3闭合
断开
S2闭合
断开
S1闭合
断开,周而复始的循环,则电机就逆时针旋转,原理同理。
图4-68255A向步进电机发出的控制脉冲
4.38086CPU:
现将8086的引脚图和各引脚功能列出如下,其他具体内容详见《微机原理及接口技术》教材
8086CPU的40条引脚信号可按功能分可分为四类,它们是:
地址总线,数据总线,控制总线,其它(时钟与电源)。
在最小模式下各引脚功能(MN/MX接+5V):
①AD15~AD0,地址/数据总线
②A19/S6~A16/S3,地址/状态总线
③BHE/S7,高8位数据允许/状态线
④MN/MX,最小/最大模式控制信号,输入
⑤RD,读信号
⑥WR,写信号
⑦M/IO,存储器/输入输出控制信号
⑧ALE,地址锁存允许信号
⑨READY(Ready),准备就绪信号
⑩INTR,可屏蔽中断请求信号
⑪INTA,中断响应信号
⑫NMI,非屏蔽中断请求信号
⑬RESET,系统复位信号
⑭DEN,数据允许信号
⑮DT/R,数据发送/接收控制信号
⑯HOLD,总线保持请求信号输入
⑰HLDA,总线保持响应信号
⑱TEST,测试信号
⑲CLK,时钟输入信号
⑳VCC(+5V),GND
4.48255工作方式选择:
8255有三个数据端口(A口、B口、C口),8255有三种基本的工作方式,分别为:
方式一(基本输入/输出方式),方式二(选通输入/输出方式),方式三(双向总线I/O方式)。
其中A口可选择三种方式中的任意一种,B口只能选择方式0或方式1,C口常用作两个4为端口,若工作于方式0,其高四位工作方式与A端口一致,低四位与工作方式与端口B一致;若工作于其余两种方式,端口的部分信号作为A口和B口的控制联络信号。
4.5ULN2003A:
ULN2003A是高压大电流达林顿晶体管阵列,由功率电路来扩展输出电流以满足被控元件的电流,电压。
具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。
ULN2003A芯片主要用于如下领域:
伺服电机,步进电机,电磁阀,可控照明灯。
4.674LS273:
74LS273是一种带清除功能的8D触发器,1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。
4.774LS138:
74LS138为3线-8线译码器。
引出端口号:
B、C译码地址输入端
G1选通端
/(G2A)、/(G2B)选通端(低电平有效)
Y0~Y7译码输出端(低电平有效)
5单元电路的设计(计算与说明)
本电路采用8086CPU来控制,8086是16位CPU,采用高性能的N沟道、耗尽型负载的硅栅工艺制造
8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器。
资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。
它提供64K8位元的输出输入,以及固定的向量中断。
大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。
运算结果会储存在操作数中的一个。
8086有四个内存区段寄存器,可以从索引寄存器来设定。
区段寄存器可以让CPU利用特殊的方式存取1MB内存。
8086把段地址左移4位然后把它加上偏移地址。
8086的寻址方式改变让内存扩充较有效率。
8086处理器的时钟频率介于4.77MHz和10MHz之间。
以8086CPU构成的微型计算机系统,有最小模式和最大模式两种配置。
最小模式是单机系统,系统中所需要的控制信号全部由8086CPU本身提供;最大模式可以构成多处理机系统,系统中所需要的控制信号由总线控制器8288提供。
CPU工作模式的选择是由硬件决定的,当CPU的管脚接高电平时,构成最小模式;当接低电平的时候,构成最大模式。
因为步进电机控制系统是一个单处理机系统,因而接高电平,构成最小模式。
8086通过16根数据总线来实现与8255的通信,高八位通过74HC373锁存器控制8255的四个端口,低八位与8255进行数据交换。
8086的和控制8255的读写操作。
8255四个端口的地址见表2.2.1所示
表5-18255各端口地址分配
8255端口
端口地址
A端口
IOY0+00H*4
B端口
IOY0+01H*4
C端口
IOY0+02H*4
控制端口
IOY0+03H*4
8255与CPU连接部分:
8255能并行传送8位数据,所以其数据线为8根D0~D7。
由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0~A1。
A0、A1的组合与端口关系如表2.2.2所示。
表5-2A1、A0组合与端口关系
A1A0
8255端口
IOY0+00H*4
A口地址
IOY0+01H*4
B口地址
IOY0+02H*4
C口地址
IOY0+03H*4
控制口地址
此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。
数据总线DB用于8255与CPU传送8位数据,地址总线AB用于选择A、B、C口与控制寄存器,控制总线CB用于片选信号、复位信号RST、写信号、读信号。
当CPU要对8255进行读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的操作。
与外设接口部分:
8255有3个通道A、B、C与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控制24路开关。
A口用于8255向外设输入输出8位并行数据,B口用于8255向外设输入输出8位并行数据,C口用于8255向外设输入输出8位并行数据,当8255工作于应答I/O方式时,C口用于应答信号的通信。
控制器:
8255将3个通道分为两组,即A组和B组,相应的控制器也分为A组控制器与B组控制器,各组控制器的作用如下为:
A组控制器控制A口与上C口的输入与输出;B组控制器控制B口与下C口的输入与输出。
8255具有3个相互独立的输入/输出通道端口,用+5V单电源供电,能在三种方式下工作,具体方式见表2.2.3。
表5-38255工作方式
方式0
基本输入/输出方式
方式1
选通输入/输出方式
方式2
双向传输方式
74HC373为三态输出锁存器,可用来驱动数据总线。
当OE为高电平时,D0—D7呈高阻态,不驱动数据总线,但锁存器内部的逻辑操作不受影响。
当锁存允许端LE为高电平时,Q随数据D而变。
当LE为低电平时,Q被锁存在已建立的数据电平。
当LE端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善400mV。
步进电机模块电路图如图5-1所示
图5-1步进电机模块
步进电机能将数字信号转换为角位移。
步进电机输入一个电脉冲就前进一步,其输入的角位移与输入的脉冲数成正比,转速与脉冲频率成正比。
从8255端口输出的脉冲,其电流还不足以驱动三相步进电机,因而在步进电机和8255中间接一个驱动芯片ULN2003。
ULN2003A是一种高耐压、大电流复合晶体管,由七个硅NPN复合晶体管组成,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流状态下并行运行。
6硬件的制作与调试
在上述功能模块以及工作原理的基础上,为了探索8086CPU在proteus仿真软件中实现对步进电机的控制,简单了解仿真软件的应用,以及更形象的展现对步进电机控制的方法,在计算机上安装proteus软件并用proteus仿真软件对电路的各器件进行电路连接并载入EXE程序运行文件给与不断调试,最终使得电路图能够正常运转。
如下图为电路连接图
图6-1电路连接图1
图6-2电路连接图2
7总结
先从整体上来说,我原本打算整个课程设计只需要1-2天即可完成,而实际的情况是用了将近4天还未完全实现设计要求,比如说,步进电机的加速与减速功能,用4位7段数码管来显示步进电机的转速,这些功能都在代码实现时遇到了困难,而这也恰恰反应了汇编语言学习的不足——练习太少,而见过的汇编源码也同样很少。
举个例子,有其他小组做的抢答器设计,有十几行的一段程序是通过ROR循环右移指令和LOOPNZ指令来达到依次测试每个开关是否摁下,就是这样一段简单的代码,就看足足1个小时,原因有两点,它的代码中写成了LOONZ指令,还有就是ROR,因为它可以将移出的位都进入CF以保存该位,以供后续的程序测试。
这些指令很是不熟悉,从这方面很是能够反应出一些问题。
比如说我在网上查找他人的设计方案时,基本上都是用51单片机来控制步进电机的,当然都是通过Proteus软件仿真验证的,很少有基于8086芯片的,很偶然的搜索一份后,我发现我需要把整个系统硬件连线理解透彻,很是花了一番功夫。
一开始我以为Proteus软件不能做8086芯片的仿真,之前它都是用来仿真单片机的,而事实上它也确实是这样,8086芯片的仿真确实是这两年才添加的,应为做8086芯片的仿真需要一系列外围芯片的支持,比如说:
8259A可编程中断控制器、8255A可编程并行接口芯片、D/A转换器、A/D转换器,8251A可编程异步通信接口芯片(这个在7.8版本中就没有)可见拿这个完全取代实验箱还有一定的距离。
当然这次的课程设计我可以完全使用它,因为没有使用到8251A芯片。
还有就是有很多辅助性芯片自己在以前根本就没有关注过,直到这次课程设计,我才认认真真的查找了74系列芯片资料比如74LS273、74LS138,因为我在这次系统的硬件设计部分遇到了困难,因为之前的(包括上学期的组成原理和这学期的接口技术,用到的实验箱都是人家事先连好并预留出的,在实验时有都是按照实验手册上的电路图去连线的,几乎从来不去思考为什么要这样连接,这些芯片的内部结构是怎样的,除了这个型号的芯片,其他型号的芯片是否也能实现相应的功能,它们两者之间又有何异同和优缺点,等等这一系列的问题在硬件的设计时都让我给碰到了,我不知道是我的幸运还是不幸)这些问题让我认识到在现有实验箱上不管是进行实验的验证还是教学,都存在很大的缺陷,更不用提系统的设计了。
概括来说,芯片了解太少,汇编编程很不熟练,方案的整体设计把控很不足。
学习的内容:
初步理解掌握了在Proteus软件中进行硬件仿真的步骤及方法,了解了Proteus软件芯片库的构成体系,对芯片的选取不再过于盲目,理解并掌握了8255A芯片编程方法,了解了嵌入式系统设计的一般步骤与方法。
参考文献
[1]冯康《汇编语言》[M]武昌:
武汉大学出版社2010,06
[2]公保华通用接口的步进电机控制驱动单元[J]《电气自动化》1994,03
[3]王功利基于PC机的步进电机控制系统[J]《核电子学与探测技术》1996,05
[4]李瑞基于单片机的步进电机驱动控制系统的设计与实现[J]《科技致富向导》2012,35
[5]魏雅基于单片机的步进电机控制系统的研究[J]《电子设计工程》2013,18
[6]胡全51单片机的数码管动态显示技术[J]《信息技术》2009,13
[7]王忠民《微型计算机原理》(第二版)[M]西安:
西安电子科技大学出版社2007.6
附录1:
总体电路原理图
附录2:
元器件清单
①8086CPU
②8255A
③ULN2003A
④MOTOR-STEPPER
⑤74LS138
⑥74LS273
⑦74LS32
⑧7411
⑨开关BUTTON
附录3:
源程序代码
IOY0EQU0C400H;片选IOY0对应的端口起始地址
MY8255_AEQUIOY0+00H*4;8255的A口地址
MY8255_BEQUIOY0+01H*4;8255的B口地址
MY8255_CEQUIOY0+02H*4;8255的C口地址
MY8255_MODEEQUIOY0+03H*4;8255的控制寄存器地址
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATASEGMENT
DTABLE1DB6DH,79H,73H,77H,39H,06H,5BH,4FH,66H,40H
DTABLE3DB10H,30H,20H,60H,40H,0C0H,80H,90H
DTABLE4DB90H,80H,0C0H,40H,60H,20H,30H,10H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,3000H
MOV[SI],00H
MOV[SI+2],09H
MOV[SI+4],03H
MOV[SI+6],05H
MOV[SI+8],01H
MOVDX,MY8255_MODE;初始化8255工作方式
MOVAL,81H;方式0,A输出、B口输出,C口低四位输入,高四位输出
OUTDX,AL
QIDONG:
;CALLCLEAR
;CALLDIS
MOVDX,MY8255_C
INAL,DX
TESTAL,01H
JNZSTOP;测试C口的PC0是否为0;若不为0则跳到STOP代码段;否则继续执行下面代码
SPEED:
MOV[SI],01H
CMP[SI+8],08H
JZZHI;若3008H单元的值等于08H,则跳到ZHI代码段;否则的话,向下继续执行
MOVBX,[SI+8]
DECBX
MOVDX,MY8255_C
INAL,DX
TESTAL,02H;测试PC1口的是否为1,若为0则跳转到SHUN代码段(顺时针旋转)
JZSHUN
NI:
MOV[SI+4],03H
MOVAL,DTABLE4[BX]
PUSHAX
JMPZHUANG;逆时针转动片段
SHUN:
MOV[SI+4],04H
MOVAL,DTABLE3[BX]
PUSHAX;顺时针转动片段
ZHUANG:
MOVDX,MY8255_C
INAL,DX
TESTAL,0CH
JZDANG3
TESTAL,04H
JZDANG2
TESTAL,08H
JZDANG4
DANG1:
POPAX
MOVDX,MY8255_C
OUTDX,AL
INCBX
INCBX
MOV[SI+8],BX
MOV[SI+6],05H
CALLDALLY
CALLDALLY1
CALLDALLY1
CALLDALLY1
CALLDALLY1
CALLDALLY1
CALLDALLY1
CALLDALLY1
CALLDALLY1
CALLDALLY1
CALLDALLY1
CALLDALLY1
CALLDALLY1
CALLDALLY1
CALLDALLY1
JMPSPEED
DANG2:
POPAX
MOVDX,MY8255_C
OUTDX,AL
INCBX
INCBX
MOV[SI+8],BX
MOV[SI+6],06H
CALLDALLY
CALLDALLY1
CALLDALLY1
CALLDALLY1
CALLDALLY1
CALLDALLY1
CALLDALLY1
JMPSPEED
DANG3:
POPAX
MOVDX,MY8255_C
OUTDX,AL
INCBX
INCBX
MOV[SI+8],BX
MOV[SI+6],07H
CALLDALLY
CALLDALLY1
CALLDALLY1
CALLDALLY1
JMPSPEED
DANG4:
POPAX
MOVDX,MY8255_C
OUTDX,AL
INCBX
INCBX
MOV[SI+8],BX
MOV[SI+6],08H
CALLDALLY
JMPSPEED
ZHI:
MOV[SI+8],01H
JMPQIDONG
STOP:
MOV[SI],00H
MOV[SI+4],03H
MOV[SI+6],05H
CALLCLEAR
CALLDIS
JMPQIDONG
DALLYPROCNEAR;软件延时子程序
CALLCLEAR
CALLDIS
PUSHCX
MOVCX,000FH
D1:
MOVAX,000FH
D2:
DECAX
JNZD2
LOOP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 8086 步进 电机 控制