微机原理课程设计 步进电机的正反转及调速控制.docx
《微机原理课程设计 步进电机的正反转及调速控制.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计 步进电机的正反转及调速控制.docx(28页珍藏版)》请在冰豆网上搜索。
微机原理课程设计步进电机的正反转及调速控制
成绩
课程设计报告
题目步进电机正反转及调速
控制系统的设计
课程名称微机原理及应用
院部名称机电工程学院
专业电气工程及其自动化
班级10电气1班
学生姓名管志成
学号1004103027
课程设计地点C304
课程设计学时20
指导教师李国利
金陵科技学院教务处制
摘要
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件,具有快速启动能力,定位精度高,能够直接接受数字量,因此被广泛地应用于数字控制系统中,如数模转换装置、精确定位、计算机外围设备等,在现代控制领域起着非常重要的作用。
本设计基于Proteus7.8设计环境,运用了8086CPU芯片以及74273芯片、74244芯片和步进电机以及7位小功率驱动芯片ULN2003A、按钮、指示灯等辅助硬件电路,设计了步进电机正反转及调速系统。
绘制软件流程图,进行了软件设计并编写了源程序,最后对软硬件系统进行联合调试。
该步进电机的正反转及调速系统具有控制步进电机正反转的功能,还可以对步进电机进行调速,不同的按钮对应不同的速度,并且在没有速度按钮按下的时候,步进电机自动切换到停止状态。
关键词:
步进电机;正反转;调速控制;ULN2003A芯片;8086微机系统
一、概述
1.1课程设计的目的··············································4
1.2课程设计的要求············································4
二、总体设计方案及说明
2.1系统总体设计方案··········································5
2.2系统工作框图··············································5
三、系统硬件电路设计
3.1Intel8086微处理器的简介···································6
3.2步进电机的原理············································7
3.3ULN2003A的简介··········································8
3.474154芯片简介·············································9
3.574LS273芯片简介··········································10
3.68086最小系统的设计········································11
3.7步进电机及其驱动电路的设计································12
3.8电机状态显示电路的设计····································12
3.9输入采样电路的设计········································13
3.10系统总电路图··············································14
四、系统软件部分设计
4.1系统流程图················································15
4.2系统软件源程序············································16
4.2.1电机绕组通电顺序设定····································16
4.2.2延时子程序设计·········································16
4.2.3汇编源程序及说明········································16
五、总结
5.1系统软硬件的联合调试·······································21
5.2问题分析和解决方案·········································23
5.3心得与体会·················································23
六、参考文献······················································23
附录:
总电路图····················································25
一、概述
1.1课程设计的目的
通过本课程设计,使学生掌握控制系统设计的一般步骤,掌握系统总体控制方案的设计方法。
使学生进一步掌握微型计算机应用系统的硬、软件开发方法,输入/输出(I/O)接口技术,应用程序设计技术,并能结合专业设计简单实用的微型计算机应用系统。
针对课堂重点讲授内容使学生加深对微型计算机硬件原理的理解及提高汇编语言程序设计的能力,为以后的毕业设计搭建了微机系统应用平台,提高学生的开发创新能力。
1.2课程设计的要求
步进电动机正反转控制系统的设计
设计一个步进电动机正反转控制系统,要求:
1)系统功能:
点动SW1按键控制步进电动机正转,点动SW2按键控制步进电动机反转,点动SW3按键控制步进电动机停止,在进行相应操作时,对应LED将被点亮。
按下SW4按键使步进电机在所设定的一级速度下运转,按下SW5使步进电机在所设定的二级速度下运转,按下SW6使步进电机在设定的三级速度下运转,按下SW7使步进电机在满转速下运转;
2)给出系统设计方案,画出硬件连线图,并说明工作原理;
3)画出程序框图并编写程序;
4)软硬件联调,完成系统工作调试;
在以上工作基础上完成课程设计报告,包括设计任务与要求,总体方案说明,电路原理图与说明,软件流程图和源程序清单,问题分析与解决方案,结论与体会,参考资料等。
二、总体设计方案与说明
2.1系统总体设计方案
本设计是基于Windows环境下的Proteus7.8软件,在其中进行硬件电路的的设计,汇编语言源程序的编写以及以上两部分工作完成后的软硬件系统的联合调试。
本设计的处理控制系统由Intel8086微处理器在最小模式下组成的单处理器系统构成,用来进行对外围硬件电路进行信息采集、数据处理和控制。
由8086芯片来检测外围电路中正反转按键是否按下,若按下,则相应地改变对步进电机的施加的脉冲顺序,实现正转和反转的控制,没有键按下则电机处于停止状态;同样由8086处理器来检测外围电路中的调速按钮是否按下,若有键按下,则调用相应的时间的延时子程序,以对脉冲频率进行控制以实现对步进电机速度的调节。
显示电路采用LED指示灯来指示电机的运行状态
驱动电路采用ULN2003A芯片,该芯片的电流增益高,带负载能力强。
步进电机采用35BY48S03四相步进电机,电压为DC12V,额定转速为360RPM。
2.2系统工作框图
图1系统工作框图
三、系统硬件部分设计
3.1Intel8086微处理器的简介
Intel8086是Intel公司于1978年推出的16位微处理器。
它采用HMOS工艺制造,片内有2.9万个晶体管,单一电源+5V供电,时钟频率4.77-10MHz,片内数据总线、寄存器和外部数据总线都为16位,最大可寻址的物理地址为1M。
要掌握一个CPU的工作性能及使用方法,首先应该了解它的编程结构。
在8086
CPU的编程结构上,从功能上,分为两部分,即总线接口部件(BIU)和执行部件(EU)。
8086的逻辑地址为20位,物理地址为16位,,对于编程员来说,只需要考虑逻辑地址即可。
8086为40只引脚双列直插式封装。
Intel8086可以工作在最大和最小两种模式下,最小模式和最大模式的确定是通过一条MN/MN所接的逻辑电平是“1”还是“0”来完成。
在最小方式下,微处理器被用来构成一个小规模的单处理机系统,微处理器本身必须提供全部的的控制信号给外围电路。
在最大方式下,微处理器被用来构成一个较大规模的多机系统。
在最小模式下的信号如下:
(1)AD15~AD0(addressdatabus)地址/数据复用引脚(双向工作)分时复用的地址/数据线。
(2)A19/S6~A16/S3(Address/Status)输出,是分时复用的地址/状态线。
用作地址线时,A19~A16与A15~A0一起构成访问存储器的20位物理地址。
(3)BHE/S7(BusHighEnabale/Status)总线高字节有效信号。
三态输出,低电平有效,用来表示当前高8位数据线上的数据有效。
(4)NMI(NonMaskableInterruptRequest)不可屏蔽中断请求信号。
由外部输入,上升沿触发,不受中断允许标志的限制。
(5)INTR(InterruptRequest)可屏蔽中断请求信号。
由外部输入,电平触发,高电平有效。
(6)RD(Read)读信号。
三态输出,低电平有效,表示当前CPU正在读存储器或IO端口。
(7)CLK(Clock)主时钟引脚(输入)。
由8284时钟发生器输入。
8286CPU可使用的最高时钟频率随芯片型号不同而异,8086为5MHz,8086-1为10MHz,8086-2为8MHz。
(8)RESET(reset)复位信号。
由外部输入,高电平有效。
(9)READY(ready)准备就绪信号。
由外部输入,高电平有效,表示CPU访问的存储器或IO端口已准备好传送数据。
(10)TEST测试信号。
由外部输入,低电平有效。
CPU执行WAIT指令时,每隔5个时钟周期对TEST进行一次测试,若测试TEST无效,则CPU处于踏步等待状态,直到TEST有效,CPU才继续执行下一条指令。
(11)MN/MX工作模式选择信号。
由外部输入,MN/MX为高电平时,CPU工作在最小模式;MN/MX为低电平时,CPU工作在最大模式。
(12)GND/VCC电源地和电源。
8086CPU只需要单一的+5V电源,由VCC引脚输入。
(13)INTA中断响应信号。
向外部输出,低电平有效。
在中断响应周期,该信号表示CPU响应外部发来的INTR信号,用作读中断类型码的选通信号。
(14)ALE地址锁存允许信号。
向外部输出,高电平有效。
在最小模式系统中用作地址锁存器的片选信号。
(15)DEN数据允许信号,三态输出,低电平有效。
(16)DT/R数据发送/接收控制信号
(17)M/IO存储器/IO端口访问信号。
(18)WR写信号。
三态输出,低电平有效,表示当前CPU正在写存储器或IO端口。
(19)HOLD总线请求信号。
由外部输入、高电平有效。
表示有其他共享总线的处理器/控制
器向CPU请求使用总线。
(20)HLDA总线请求响应信号。
向外部输出,高电平有效。
CPU一旦测试到有HOLD请求,就在当前总线周期结束后,使HLDA有效,表示响应这一总线请求,并立即让出总线使用权。
在不要求使用总线的情况下,CPU中指令执行部件可继续工作。
HOLD变为无效后,CPU也将HLDA置成无效,并收回对总线的使用权,继续操作。
3.2步进电机的原理
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
本设计采用35BY48S03四相八拍型步进电机,电压为DC12V,额定转速为360RPM。
步进电机的工作原理示意图如下:
图2四相步进电机步进示意图
开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。
当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。
而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。
依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。
在本设计中,我们使用四相八拍的运行方式,即控制正转时,电机绕组的通电顺序为:
AD-D-DC-C-CB-B-BA-A;反转时,电机绕组的通电顺序为A-AB-B-BC-C-CD-D-DA。
3.3ULN2003A的简介
ULN2003A是一个7路反向器电路,即当输入端为高电平时ULN2003A输出端为低电平,当输入端为低电平时ULN2003A输出端为高电平。
图3ULN2003A
由于集成电路集驱动和保护于一体,作为小功率步进电机的专用驱动芯片,ULN2003A是该高耐压、大电流达林顿陈列,由7个硅NPN达林顿管组成。
该电路的特点如下:
ULN2003A的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下,它能与TTL、CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003A工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行。
ULN2003A在各种控制电路中常常作为驱动继电器的芯片,其芯片内部做成一个消线圈反电动势二极管。
ULN2003A的输出端允许通过IC电流200mA,饱和压降Vce约1V左右,耐压BVceo约为36V。
输出电流大,故可以用来直接驱动步进电机。
图4ULN2003A内部结构
3.474154芯片简介
74HC154是一款高速CMOS器件,74HC154引脚兼容低功耗肖特基TTL(LSTTL)系列。
74154这种单片4线—16线译码器非常适合用于HYPERLINK"和G2为低时,它可将4个二进制编码的输入译成16个互相独立的输出之一。
实现解调功能的办法是:
用4个输入线写出输出线的地址,使得在一个选通输入为低时数据通过另一个选通输入。
当任何一个选通输入是高时,所有输出都为高。
图574154
74154的引脚图如右图所示:
TRUTHTABLE真值表:
INPUTS输入
SELECTEDOUTPUT选定输出(L)
G1
G2
D
C
B
A
L
L
L
L
L
L
Y0
L
L
L
L
L
H
Y1
L
L
L
L
H
L
Y2
L
L
L
L
H
H
Y3
L
L
L
H
L
L
Y4
L
L
L
H
L
H
Y5
L
L
L
H
H
L
Y6
L
L
L
H
H
H
Y7
L
L
H
L
L
L
Y8
L
L
H
L
L
H
Y9
L
L
H
L
H
L
Y10
L
L
H
L
H
H
Y11
L
L
H
H
L
L
Y12
L
L
H
H
L
H
Y13
L
L
H
H
H
L
Y14
L
L
H
H
H
H
Y15
X
H
X
X
X
X
NONE
H
X
X
X
X
X
NONE
表174154真值表
3.574LS273芯片简介
74HC373是8位数据锁存器。
主要用于数码管、按键等等的控制
其真值表如下:
DN
LE
OE
ON
H
H
L
H
L
H
L
L
×
L
L
Q0
×
×
H
Z
表274HC373真值表
芯片管脚图如下:
图674LS273引脚图
U2的功能是实现AD[0..7]的锁存,由于8086CPU的总线是地址/数据复用总线,因此需要在传送地址信号的时候,将数据信号锁存起来,即将数据信号锁存在74273触发器中,待地址传送完毕后再按需要将数据信号输出。
3.68086最小系统的设计
8086最小系统原理图如下所示:
图78086最小系统图
8086最小系统由Intel8086微处理器、74273TTL带公共时钟复位八D触发器、以及74154TTL4线—16线译码器等组成。
8086有20位地址线,其中高4位A19-A16与状态线S6-S3分时复用,低16位AD15-AD0与数据线分时复用。
在总线周期的T1时将地址送出后,就必须用锁存器将它们锁存起来,以便在T2及以后搞死位地址线改为状态输出,低16位地址线该做数据线使用。
另外,表明八位数据线是否起作用的数据总线允许信号是与状态线S7分时复用的,故也需要锁存。
21条线需采用3片8位地址锁存器,这里采用74273。
与外围硬件电路的连接的I/O部分由4线-16线译码器74154组成,用来分配I/O硬件地址。
3.7步进电机及其驱动电路的设计
步进电机及其驱动电路图如下图所示:
图8步进电机及驱动电路
步进电机35BY48S03由驱动芯片ULN2003A驱动,步进电机脉冲信号由8086芯片发出,由数据线AD0-AD7经过锁存器74273传送到步进电机的驱动芯片,由驱动芯片带动步进电机运转。
还有三只反应电机转动方向的LED由锁存器直接驱动。
3.8电机状态显示电路的设计
电机状态显示电路的电路图如下:
图9电机状态显示电路
电机状态显示电路由三只LED发光二极管串接限流电阻,接在数据锁存器的输出端组成,电机工作时的状态信号由CPU8086给出,经过数据总线送到数据锁存器输入端,再由锁存器的输出端输出显示在LED发光二极管上。
3.9输入采样电路的设计
输入采样电路的电路图如下:
图10输入采样电路1(正反转)
图11输入采样电路2(调速)
输入采样电路是由按键SW1-SW7经过上拉电阻与74244TTL八同相三态缓冲器-线驱动器相连组成,当地址总线的地址信号经地址译码器译码后,输出地址片选信号,选中相应的总线驱动器,将按键数据读出,并将数据经过地址/数据复用总线AD0-AD3送到8086芯片,由处理器进行处理并做出相应的响应。
3.10系统总电路图
系统总电路图如下图所示:
图12系统总电路图
系统总电路图由上述的808CPU组成的最小系统和外围的硬件电路如输入采样电路、电机驱动电路、显示电路、步进电机组成。
系统运行时,线初始化电机,使其处于停止等待响应状态,由输入采样电路采集正反转和调速按钮开关状态,若有正反转按钮按下,且有调速按钮按下时,8086CPU相应地输出正转或反转的脉冲序列,并调用调速按钮对应的延时子程序,使得步进电机以某一设定的速度正转或反转运行起来,并且响应的正、反转指示灯被点亮,按停止按钮,电机停转。
四、系统软件部分设计
4.1系统流程图如下:
图13软件流程图
4.2系统软件源程序
4.2.1电机绕组通电顺序设定:
A相接数据线AD0,B相接数据线AD1,C相接数据线AD2,D相接数据线AD3;首先要定义电机顺序运行时正反转的数据表:
正转:
AD-D-DC-C-CB-B-BA-A
根据转动相序可知,若要步进电机正转,则要将正转步数设置为069H,068H,06CH,064H,066H,062H,063H,061H
反转:
A-AB-B-BC-C-CD-D-DA
根据转动相序可知,若要步进电机反转,则要将反转步数设置为051H,053H,052H,056H,054H,05CH,058H,059H
4.2.2延时子程序设计:
延时子程序利用CPU执行指令时所需要耗费的始终周期,来实现延时功能
DELAY1PROCNEAR所用周期数
PUSHBX
PUSHCX
MOVBX,2004
DEL1:
MOVCX,2954
DEL2:
LOOPDEL217/5
DECBX2
JNZDEL1116/4
POPCX
POPBX
RET
先将BX、CX入栈保护,给CX赋记数初值为295,在LOOPDEL2这条指令中,使得上述标注时钟周期的指令执行了295次,此时BX←BX-1,重新给CX赋记数初值为295,执行了295次后再BX←BX-1,以此类推,直到BX中的数值减至0,将BX、CX弹出栈,返回调用延时子程序处。
延时时间的计算:
8086CPU时钟频率f=5MHz,时钟周期为0.2us
DELAY1=(4+4+17/5+2+16/4)*0.2us*295*25=25ms
以此设计其他延时子程序的延时时间,详见汇编源程序。
4.2.3汇编源程序及说明:
.MODELSMALL
.8086
.STACK
.CODE
.STARTUP
MOVDX,0200H
MOVAL,00B3H;电动机停止,指示灯点亮
OUTDX,AL
AGAIN:
MOVDX,0400H;244地址
INAL,DX;读入开关状态
TESTAL,01H
JZFOREWARD;正转
TESTAL,02H
JZBACKWARD;反转
JMPAGAIN
FOREWARD:
MOVSI,0
LOP0:
MOVDX,0200H;输出口地址
MOVAL,FFW[SI]
OUTDX,AL
MOVDX,0600H
INAL,DX;读入开关状态
TESTAL,01H;一级调速按钮是否按下
JZSPEEDZ1
TESTAL,02H;二级调速按钮是否按下
JZSPEEDZ2
TESTAL,04H;三级调速按钮是否按下
JZSPEEDZ3
TESTAL,08H;满转速按钮是否按下
JZSPEEDZ4
JMPSTOP
FORE:
MOVDX,0400H;244地址
INAL,DX;读开关状态
TESTAL,02H;反转按钮是否按下
JZBACKWARD
TESTAL,04H;停止按钮是否按下
JZSTOP
INCSI
CMPSI,8
JBLOP0
JMPFOREWARD
BACKWARD:
MOVSI,0
LOP1:
MOVDX,0200H;输出口地址
MOVAL,REV[SI]
OUTDX,AL
MOVDX,0600H
INAL,DX;读入开关状态
TESTAL,01H;一级调速按钮是否按下
JZSPEEDF1
TESTAL,02H;二级调速按钮是否按下
JZSPEEDF2
TEST