步进电机课程设计

时间:2024.4.13

吉首大学信息科学与工程学院

课程设计报告书

课    程     模拟电子技术基础         

课    题:    步进电机驱动电路        

    名:                             

    号:                             

    业:                             

    级:                             

指导教师:                       

基地指导教师:                        

20##年 6   月



第二篇:步进电机控制课程设计报告(正式版)


微机原理与接口技术课程设计 ——基于Intel 8086 CPU的步进电机控制系统的设计与验证

小组成员:刘军磊(计科103软件)

张 勇(计科103软件) 谢首末(计科102软件)

报告执笔:谢首末

指导老师:高国红

日期:2012.05.21-2012.06.01

1

摘要:由于用步进电机组成的开环控制系统既简单、廉价、又性能可靠,因此在各种运动控制装置特别是在机电一体化设备中有着极其广泛的应用。

本文介绍的是一种基于8086CPU的步进电机控制系统的设计,通过8086CPU、可编程并行I/O芯片8255A、步进电机驱动芯片ULN2003A以及相应的辅助芯片和开关,用汇编语言编写了电机的正转、反转、加速、减速、停止程序,实现了步进电机的控制功能。并最终在Proteus 7.8 SP2中进行了芯片的绘制连接和系统的仿真验证,取得了良好的实验效果。

关键词:步进电机;8086CPU;Proteus仿真;汇编编程

2

目 录

第一章 选题分析,问题描述与设计要求-------------------------------------------04

第二章 问题分析与方案设计----------------------------------------------------------

第三章 硬件线路设计-------------------------------------------------------------------

第四章

第五章

第六章

第七章

程序流程图---------------------------------------------------------------------- 汇编源码------------------------------------------------------------------------- 经验与教训---------------------------------------------------------------------- 参考资料------------------------------------------------------------------------- 3

第一章

1. 选题分析:

课程设计题目分别列出如下:

a. 模拟交通灯控制 b. 步进电机控制 c. 模拟钢琴

d. 数字时钟 e. 计时器 f. 抢答器 g. 自拟选题

通过比较分析发现,6个已知题目都是通过按键/开关来手动产生一个信号,通过查询方式或中断方式将信号提交给CPU,并调用对应的处理子程序,以驱动相应的外设,比如LED灯,步进电机,蜂鸣器,或是7段数码管,进而达到整个系统控制的目的。

中间可能会牵涉到的可编程芯片有,可编程中断控制器8259A,可编程并行接口芯片8255A,可编程定时器/计数器8253,当然最后都要用到8086CPU。

再比较6个题目中,驱动外设的复杂程度要数步进电机最高;当然模拟钢琴要驱动的是蜂鸣器,需要通过8253芯片的out端口来产生不同的频率信号,而数字时钟题目和计时器题目都需要8253芯片来实现计数与定时功能,算是对8253芯片的基本应用。抢答器的设计稍显简单一点,驱动的是7段数码管,而模拟交通灯控制驱动的也是数码管,如果要是显示剩余时间的话应再加上8253芯片稍显复杂一点。

总之通过概括可以看出6个题目各有侧重点,最终我们小组选中了步进电机控制题目,因为首先考虑到步进电机控制的是运动执行机构,在机电一体化技术中显得很是重要;再加上它的硬件系统连线只需要一片8255A即可,你不是很复杂;另外一个很明显的原因是选择这个题目的人会很少(这在提交方案时得到了印证)。

2. 设计目的:

1. 了解步进电机控制的基本原理,掌握控制步进电机转动的编程方法。

2. 进一步熟练掌握8255A并行I/O口的工作方式以及编程方法。

3. 体会系统整体设计的流程与方法,为以后系统级设计积累经验。

3. 功能要求:

01. 通过开关K1实现步进电机的开始与停止;

02. 通过开关K2来选择步进电机的正转与反转;

03. 通过开关K3,K4组成(2-4译码)四档电机转速选择;

04. 对每只开关的选择情况同时通过4位8段数码管来显示;

05. 扩展设计:可以在以上功能基础上,增加控制步进电机单步转动的开关;增加控制电机加速转动的开关;增加控制电机减速的开关。

4. 问题分析:

5. 验证方法:

二. 设计方案

01. 使用的芯片与部件:

4

8086 CPU:

现将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

8255A:8255是可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通

道3种工作方式的可编程并行接口芯片(40引脚)。 其各口功能可由软件选择,

使用灵活,通用性强。

其引脚图为:

74LS273:74LS273是一种带清除功能的8D

触发器, 1D~8D为数据输入端,1Q~8Q

为数据输出端,正脉冲触发,低电平清除,常

用作8位地址锁存器。

74LS138:74LS138为3线-8线译码器,其真值表和引脚图为: 引出端口号:

A、B、C 译码地址输入端

G1 选通端

/(G2A)、/(G2B)

步进电机控制课程设计报告正式版

选通端(低电平有效)

Y0~Y7 译码输出端(低电平有效)

5

ULN2003A:ULN2003A是高压大电流达林顿晶体管阵列,由功率电路来扩展输出电流以满足被控元件的电流,电压。具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。ULN2003A芯片主要用于如下领域:伺服电机,步进电机,电磁阀,可控照明灯。

步进电机:

步进电机概述:

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。

正常情况下,步进电机转过的总角度和输入的脉冲数成正比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。由于步进电动机能直接接收数字量的输入,所以特别适合于微机控制。

本次课程设计采用的是四相八拍步进电机。

步进电机的基本参数:

(一)步进电机的静态指标术语

1、相数:产生不同对N、S磁场的激磁线圈对数。常用m表示。

2、拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即 A-AB-B-BC-C-CD-D-DA-A.

3、步距角:对应一个脉冲信号,电机转子转过的角位移用θ表示。θ=360度(转子齿数*运行拍数),以常规二、四相,转子齿为50齿电机为例。四拍运行时步距角为θ=360度/(50*4)=1.8度(俗称整步),八拍运行时步距角为θ=360度/(50*8)=0.9度(俗称半步)。

4、定位转矩:电机在不通电状态下,电机转子自身的锁定力矩(由磁场齿形的谐波以及机械误差造成的)

5、静转矩:电机在额定静态电作用下,电机不作旋转运动时,电机转轴的锁定力矩。此力矩是衡量电机体积(几何尺寸)的标准,与驱动电压及驱动电源等无关。

虽然静转矩与电磁激磁安匝数成正比,与定齿转子间的气隙有关,但过份采用减小气隙,增加激磁安匝来提高静力矩是不可取的,这样会造成电机的发热及机械噪音。

电机正反转控制:

当电机绕组通电时序为A-AB-B-BC-C-CD-D-DA时为正转,通电时序为DA-D-CD-C-BC-B-AB-A时为反转。

步进电机控制课程设计报告正式版

6

步进电机的工作原理:

步进电机的工作就是步进转动,其功用是将脉冲电信号变换为相应的角位移或是直线位移,就是给一个脉冲信号,电动机转动一个角度或是前进一步。步进电机的角位移量与脉冲数成正比,它的转速与脉冲频率(f)成正比,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。

如下所示的步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。图1是该四相反应式步进电机工作原理示意图。

图2-1 四相步进电机步进示意图

开始时,开关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方向转动。

单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2-2所示:

步进电机控制课程设计报告正式版

图2-2 步进电机工作时序波形图

如表3.1所示,首先使HA线圈和HB线圈有驱动电流,接着使HB和HC、HC和HD、HD和HA,又返回到HA和HB有驱动电流,按这种顺序切换,电机轴按顺时针方向旋转。

表3.1 步进电机激磁方式

步进电机控制课程设计报告正式版

步进电机控制课程设计报告正式版

第三章 硬件线路设计

7

第四章 程序流程图

第五章 源程序代码

IOY0 EQU 0C400H ;片选IOY0对应的端口起始地址

MY8255_A EQU IOY0+00H*4 ;8255的A口地址

MY8255_B EQU IOY0+01H*4 ;8255的B口地址

MY8255_C EQU IOY0+02H*4 ;8255的C口地址

MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址

STACK1 SEGMENT STACK

DW 256 DUP(?)

STACK1 ENDS

DATA SEGMENT

DTABLE1 DB 6DH,79H,73H,77H,39H,06H,5BH,4FH,66H,40H

DTABLE3 DB 10H,30H,20H,60H,40H,0C0H,80H,90H

DTABLE4 DB 90H,80H,0C0H,40H,60H,20H,30H,10H

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV SI,3000H

MOV [SI],00H

MOV [SI+2],09H

MOV [SI+4],03H

MOV [SI+6],05H

MOV [SI+8],01H

MOV DX,MY8255_MODE ;初始化8255工作方式

MOV AL,81H ;方式0,A输出、B口输出,C口低四位输入,高四位输出 OUT DX,AL

QIDONG: ;CALL CLEAR

;CALL DIS

MOV DX,MY8255_C

IN AL,DX

8

TEST AL,01H

JNZ STOP ;测试C口的PC0是否为0;若不为0则跳到STOP代码段;否则继续执行下面代码

SPEED: MOV [SI],01H

CMP [SI+8],08H

JZ ZHI ;若3008H单元的值等于08H,则跳到ZHI代码段;否则的话,向下继续执行

MOV BX,[SI+8]

DEC BX

MOV DX,MY8255_C

IN AL,DX

TEST AL,02H

旋转)

JZ SHUN

NI: MOV [SI+4],03H

MOV AL,DTABLE4[BX]

PUSH AX

JMP ZHUANG

SHUN: MOV [SI+4],04H

MOV AL,DTABLE3[BX]

PUSH AX

ZHUANG: MOV DX,MY8255_C

IN AL,DX

TEST AL,0CH

JZ DANG3

TEST AL,04H

JZ DANG2

TEST AL,08H

JZ DANG4

DANG1:POP AX

MOV DX,MY8255_C

OUT DX,AL

INC BX

INC BX

MOV [SI+8],BX

MOV [SI+6],05H

CALL DALLY

CALL DALLY1

CALL DALLY1

CALL DALLY1

CALL DALLY1

;测试PC1口的是否为1,若为0则跳转到SHUN代码段(顺时针 ;逆时针转动片段 ;顺时针转动片段 9

CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 JMP SPEED DANG2:POP AX

MOV DX,MY8255_C OUT DX,AL INC BX

INC BX

MOV [SI+8],BX MOV [SI+6],06H CALL DALLY CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1

JMP SPEED DANG3:POP AX

MOV DX,MY8255_C OUT DX,AL INC BX

INC BX

MOV [SI+8],BX MOV [SI+6],07H CALL DALLY CALL DALLY1 CALL DALLY1 CALL DALLY1

JMP SPEED DANG4:POP AX

MOV DX,MY8255_C OUT DX,AL 10

INC BX

INC BX

MOV [SI+8],BX

MOV [SI+6],08H

CALL DALLY

JMP SPEED ZHI: MOV [SI+8],01H

JMP QIDONG

STOP: MOV [SI],00H

MOV [SI+4],03H

MOV [SI+6],05H

CALL CLEAR

CALL DIS

JMP QIDONG

DALLY PROC NEAR ;

CALL CLEAR

CALL DIS

PUSH CX

MOV CX,000FH

D1: MOV AX,000FH

D2: DEC AX

JNZ D2

LOOP D1

POP CX

RET

DALLY ENDP

CLEAR PROC NEAR ;

MOV DX,MY8255_B ;

MOV AL,00H

OUT DX,AL

RET

CLEAR ENDP

DIS PROC NEAR ;

PUSH AX

PUSH SI

MOV SI,3006H

MOV DL,0F7H

MOV AL,DL

AGAIN: PUSH DX

MOV DX,MY8255_A

软件延时子程序 清除数码管显示子程序 段位置0即可清除数码管显示显示键值子程序 11

OUT DX,AL ;设置X1~X4,选通一个数码管

MOV AL,[SI] ;取出缓冲区中存放键值

MOV BX,OFFSET DTABLE1

AND AX,00FFH

ADD BX,AX

MOV AL,[BX]

MOV DX,MY8255_B

OUT DX,AL ;写入数码管A~Dp

CALL DALLY1

DEC SI

DEC SI ;取下一个键值

POP DX

MOV AL,DL

TEST AL,01H ;判断是否显示完?

JZ OUT1 ;显示完,返回

ROR AL,1

MOV DL,AL

JMP AGAIN ;未显示完,跳回继续

OUT1: POP SI

POP AX

RET

DIS ENDP

DALLY1 PROC NEAR ;软件延时子程序

PUSH CX

MOV CX,002FH

D3: MOV AX,002FH

D4: DEC AX

JNZ D4

LOOP D3

POP CX

RET

DALLY1 ENDP

CODE ENDS

END START

第六章 经验与教训

先从整体上来说,我原本打算整个课程设计只需要3-4天即可完成,而实际的情况是用了将近12天还未完全实现设计要求,比如说,步进电机的加速与减速功能,用4位7段数码管来显示步进电机的转速,这些功能都在代码实现时遇到了困难,而这也恰恰反应了汇编语言学习的不足——练习太少,而见过的汇编源码也同样很少。举个例子,有其他小组做的抢答器设计,有十几行的一段程序是通过ROR循环右移指令 12

和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芯片编程方法,了解了嵌入式系统设计的一般步骤与方法

第七章 参考资料

01. 《微机原理及接口技术》(从中可以查找详细的8086CPU、8255A芯片功能及编程方法)——肖洪兵 主编

02. 步进电机控制方面的资料(包括原理,控制方法等)——源自网络

03. 74系列芯片功能手册(包括74LS273、74LS138)——源自网络

04. ULN2000系列芯片手册(包括ULN2003A)——源自网络

05. Proteus 7.8 SP2 用户手册(用于查找是否包含实验所用芯片,以及芯片连线方式)

06. 网上他人基于单片机的步进电机控制系统的设计方案

13

更多相关推荐:
步进电机课程设计报告

步进电机的驱动系统的设计课程设计说明书系部班级学生姓名学号指导教师时间日到日1课程设计任务书题目步进电机驱动系统的设计系部专业班级学生姓名学号月日至月共指导教师签字系主任签字20xx年12月30日2345目录摘...

步进电机课程设计报告

湖南工程学院课程设计课程名称单片机原理与应用课题名称步进电机的控制专业测控技术与仪器班级0801学号20xx0120xx24姓名徐文强指导教师赵葵银汪超20xx年5月27日1湖南工程学院课程设计任务书课程名称单...

步进电机课程设计实验报告

成绩汇编及接口技术课程设计题目步进电机控制系统班级100602学号100602122姓名张春东时间20xx12251目录1设计任务与要求11设计任务12设计要求2设计方案21设计思路22使用的芯片23芯片的作用...

步进电机控制课程设计报告书

钦州学院数字电子技术课程设计报告步进电机脉冲分配电路的设计院系物理与材料科学学院专业自动化过程控制学生班级20xx级3班姓名黄旭光学号1005402314指导教师单位钦州学院指导教师姓名张大平指导教师职称副教授...

微机原理课程步进电机设计报告

目录摘要1引言2系统设计21系统的基本方案22各模块的方案的选择和功能简述23最终总体方案24系统各模块的最终方案图25步进电机的工作原理268255的应用设计27转速的控制28软件程序流程图29系统的总体硬件...

单片机课程设计步进电机报告

课程设计报告课程设计题目步进电机控制器学专班姓院名称业级电子与信息工程学院电气工程及其自动化名唐大伟学号导教师指日期20xx122620xx0106单片机课程设计宁波工程学院步进电机控制1一设计任务书步进电机控...

步进电机系统设计实验报告

专业课程设计题目一步进电机控制系统设计院系动化学院专业班级智能0801班小组成员指导教师王曙光日期20xx052320xx0603目录课程设计描述2112课程设计具体要求33主要元器件34基本原理阐述341步进...

步进电机课程设计-精品

课程设计报告一课程设计的性质和目的通过课程设计进行硬软件设计的方法和技能训练巩固在课堂上学到的有关硬件电路设计和相应程序设计的基本知识和基本方法通过具体课题的训练达到能独立阅读查阅资料软硬件设计和调试完善特定功...

单片机——步进电机调速课程设计报告

目录第一章概述211单片机简介212步进电机简介2第二章设计目的与要求321设计目的322设计要求3第三章硬件电路设计431程序流程图432硬件电路图533系统工作原理634功能说明6第四章软件设计741C语言...

步进电机控制器设计报告

常熟理工学院课程设计报告步进电机控制器设计报告1绪言在本次EDA课程设计中我们组选择了做一个步进电机驱动程序的课题对于步进电机我们以前并未接触过它的工作原理是什么它是如何工作的我们应该如何控制它的转停这都是我们...

微型计算机课程设计步进电机远程控制系统设计

目录一需求分析111设计的硬件资源环境112设计的软件资源环境113设计的具体要求1二概要设计121运行方式与方向的控制循环查表法222步进电机运行速度的控制软件延时法323步进电机接口324步进电机的驱动32...

单片机课程设计电子时钟

xxxxxx大学课程设计报告课程设计名称课程设计题目院系专业班级学号姓名指导教师完成日期单片机系统综合课程设计电子时钟xxxxxx大学课程设计报告目录第1章总体设计方案111设计原理112设计思路113实验环境...

步进电机课程设计报告(23篇)