学号:10063115南昌航空大学题目步进电机学院飞行器工程学院专业飞行器制造工程班级100631姓名周炎2013 年 1 月15 日学生姓名:周炎专业班级: 100631工作单位:飞行器工程学院题目:步进电机初始条件:用汇编语言设计一个步进电机的控制,在Proteus仿真环境下完成,功能上实现步进电机的基本功能。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1. 通过键盘控制步进电机的启动和停止,正转和反转;2. 编制完整的程序并调试;3.撰写符合学校要求的课程设计说明书,内容包括:摘要、目录、正文、参考文献、附录(程序清单)。
正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
摘要步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
其种类比较多,分为机电式、磁电式及直线式三种基本类型。
磁电式步进电动机主要有永磁式、反应式和永磁感应子式3种形式。
它主要用于数字控制系统中,精度高,且运行可靠。
步进电动机目前已广泛地应用于数字控制系统中,如数模转换装置、数控机床、计算机外围设备、自动记录仪、钟表等之中,另外在工业自动化生产线、印刷设备等中亦有应用。
因此可知,步进电机在现代控制领域中起着非常重要的作用。
本次设计中,要求使用8086CPU作为主控制器,通过与外部接口芯片的配合工作,以实现控制步进电机的启动、停止、正转、反转等功能。
设计要求为,通过编写正确的汇编程序,并使用仿真软件PROTEUS进行该控制系统的仿真。
关键字:步进电机控制 PROTEUS 仿真汇编程序步进电机1设计基础分析1.1 步进电机步进电机(stepping motor )是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。
它主要用于数字控制系统中,精度高,运行可靠。
如采用位置检测和速度反馈,亦可实现闭环控制。
步进电动机已广泛地应用于数字控制系统中,如数模转换装置、数控机床、计算机外围设备、自动记录仪、钟表等之中,另外在工业自动化生产线、印刷设备等中亦有应用。
因此可知,步进电机在现代控制领域中起着非常重要的作用。
步进电动机分为机电式、磁电式及直线式三种基本类型。
磁电式步进电动机主要有永磁式、反应式和永磁感应子式3种形式。
永磁感应子式步进电动机又称混合式步进电动机。
是永磁式步进电动机和反应式步进电动机两者的结合,并兼有两者的优点。
这里着重介绍永磁感应子式步进电动机。
感应子式步进电机与传统的反应式步进电机相比,结构上转子加有永磁体,以提供软磁材料的工作点,而定子激磁只需提供变化的磁场而不必提供磁材料工作点的耗能,因此该电机效率高,电流小,发热低。
因永磁体的存在,该电机具有较强的反电势,其自身阻尼作用比较好,使其在运转过程中比较平稳、噪音低、低频振动小。
感应子式步进电机某种程度上可以看作是低速同步电机。
一个四相电机可以作四相运行,也可以作二相运行。
(必须采用双极电压驱动),而反应式电机则不能如此。
例如:四相,八相运行(A-AB-B-BC-C-CD-D-DA-A)完全可以采用二相八拍运行方式.小功率电机一般直接接为二相,而功率大一点的电机,为了方便使用,灵活改变电机的动态特点,往往将其外部接线为八根引线(四相),这样使用时,既可以作四相电机使用,可以作二相电机绕组串联或并联使用。
感应子式步进电机以相数可分为:二相电机、三相电机、四相电机、五相电机等。
使用、控制步进电机必须由环形脉冲,功率放大等组成的控制系统。
不同的场合采取不同的的驱动方式,到目前为止,驱动方式一般有以下几种:恒压、恒压串电阻、高低压驱动、恒流、细分数等。
1.2 8086CPUIntel 8086是一个由Intel于1978年所设计的16位微处理器芯片,是x86架构的鼻祖。
Intel 8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器(包含了堆栈指标)。
资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。
它提供64K 8 位元的输出输入(或32K 16 位元),以及固定的向量中断。
大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。
运算结果会储存在操作数中的一个。
Intel 8086有四个内存区段(segment) 寄存器,可以从索引寄存器来设定。
区段寄存器可以让 CPU 利用特殊的方式存取1 MB内存。
8086 把段地址左移 4 位然后把它加上偏移地址。
大部分的人都认为这是一个很不好的设计,因为这样的结果是会让各分段有重叠。
尽管这样对组合语言而言大部分被接受(也甚至有用),可以完全地控制分段,使在编程中使用指针 (如C 编程语言) 变得困难。
它导致指针的高效率表示变得困难,且有可能产生两个指向同一个地方的指针拥有不同的地址。
更坏的是,这种方式产生要让内存扩充到大于 1 MB 的困难。
而 8086 的寻址方式改变让内存扩充较有效率。
8086处理器的时钟频率介于4.77MHz(在原先的IBM PC)和10 MHz之间。
8086 没有包含浮点指令部分(FPU),但是可以通过外接数学辅助处理器来增强浮点计算能力。
1.3 设计方案本次课程设计中,按要求,我们采用8086CPU作为主控制器,加上其对应的接口芯片并连接电路,通过电机驱动器驱动步进电机运行并在仿真软件proteus中进行仿真实验。
参考文献[1]周佩玲,彭虎,傅忠谦编著.微机原理与接口技术.电子工业出版社,2005[2]艾德才等编著.Pentium/80486实用汇编语言程序设计.清华大学出版社,2000 [3]吴秀清,周荷琴编著.微型计算机原理与接口技术(第二版).中国科学技术大学出版社,2002[4]顾辉,梁惺彦编著.微机原理与接口技术:基于8086和Proteus仿真.电子工业出版社,2011[5]贾志平主编,石冰副主编.计算机硬件技术教程——微机原理与接口技术.中国水利水电出版社,1999[6]徐爱钧主编.单片机原理与应用——基于Proteus虚拟仿真技术 .机械工业出版社,2010附录一:步进电机仿真总电路图附录二:系统程序STACK SEGMENTSTA DB 100 DUP(?)TOP EQU LENGTH STASTACK ENDSDATA SEGMENTSTR1 DB 42H,46H,44H,4CH,48H,49H,41H,43H ;正转STR2 DB 83H,81H,89H,88H,8CH,84H,86H,82H ;反转STOP DB 20H,20H,20H,20H,20H,20H,20H,20H ;停止STAR DB 13H,11H,19H,18H,1CH,14H,16H,12H ;启动DATA ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK,DS:DATAIOCTRL EQU 8300HA_PORT EQU 8000HB_PORT EQU 8100HSTART:MOV AX, DATAMOV DS, AXMOV AX, STACKMOV SS, AXMOV AX, TOPMOV SP, AX ;CPU初始化MOV AL,82H ;控制方式字:A输出、B输入 MOV DX,A_PORTOUT DX,ALNOPMOTOR3: MOV CX,08H ;设置循环次数LEA DI,STOP ;去输出数组首地址IOLED3: MOV AL,[DI]MOV DX,A_PORTOUT DX,AL ;A口输出MOV DX,B_PORTIN AL,DX ;B口输入TEST AL,08H ;反转键是否按下?JE MOTOR2 ;是则跳转TEST AL,04H ;正转键是否按下?JE MOTOR1TEST AL,01H ;启动键是否按下?JE MOTOR4INC DICALL DELAYLOOP IOLED3JMP MOTOR3MOTOR1: MOV CX,08HLEA DI,STR1IOLED1: MOV AL,[DI]MOV DX,A_PORTOUT DX,ALMOV DX,B_PORTIN AL,DXTEST AL,08HJE MOTOR2TEST AL,02HJE MOTOR3TEST AL,01HJE MOTOR4INC DICALL DELAYLOOP IOLED1JMP MOTOR1MOTOR2: MOV CX,08HLEA DI,STR2IOLED2: MOV AL,[DI]MOV DX,A_PORTOUT DX,ALMOV DX,B_PORTIN AL,DXTEST AL,04HJE MOTOR1TEST AL,02HJE MOTOR3TEST AL,01HJE MOTOR4INC DICALL DELAYLOOP IOLED2JMP MOTOR2MOTOR4: MOV CX,08HLEA DI,STARIOLED4: MOV AL,[DI]MOV DX,A_PORTOUT DX,ALMOV DX,B_PORTIN AL,DXTEST AL,08HJE MOTOR2TEST AL,04HJE MOTOR1TEST AL,02HJE MOTOR3INC DICALL DELAYLOOP IOLED4JMP MOTOR4DELAY: ;延时PUSH CXMOV CX,0D1HDELAY1:NOPNOPNOPNOPLOOP DELAY1POP CXRETCODE ENDSEND START。