步进电机转速实时控制课程设计.docx

上传人:b****2 文档编号:23549669 上传时间:2023-05-18 格式:DOCX 页数:17 大小:152.33KB
下载 相关 举报
步进电机转速实时控制课程设计.docx_第1页
第1页 / 共17页
步进电机转速实时控制课程设计.docx_第2页
第2页 / 共17页
步进电机转速实时控制课程设计.docx_第3页
第3页 / 共17页
步进电机转速实时控制课程设计.docx_第4页
第4页 / 共17页
步进电机转速实时控制课程设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

步进电机转速实时控制课程设计.docx

《步进电机转速实时控制课程设计.docx》由会员分享,可在线阅读,更多相关《步进电机转速实时控制课程设计.docx(17页珍藏版)》请在冰豆网上搜索。

步进电机转速实时控制课程设计.docx

步进电机转速实时控制课程设计

计算机原理与接口技术

课程设计报告

题目:

步进电机转速实时控制课程设计

学生姓名:

专业:

班级:

学号:

指导教师:

起止时间:

 

电子信息工程学院

 

目录

一.方案设计

二.硬件系统的基本原理

(一)步进电机35BYJ46

(二)8255A可编程并行接口芯片

(三)74LS138译码芯片简介

三.软件框图及设计思想

四.软件清单及程序流程图

五.心得体会

六.主要参考资料

附:

proteus仿真原理图

 

一.方案设计

本设计采用电压为DC12V的四相八拍步进电机35BYJ46型电机,用ULN2003作为步进电动机驱动电路主芯片,以8255A作为8086并行输出接口,8086对步进电机的控制信号则通过8255A送到ULN2003.

关于转向与转速,通过查表的方式实现,以逐次递增方向查表,依次输出表中数据,则步进电机正转;以逐次递减方向查表,则步进电机反转,即通过一个表实现步进电机的正转与反转。

转速则通过调用延时子程序,当调用延时较长的子程序时,则步进电机转速慢,当调用延时较短的子程序时,步进电机转速加快。

二.硬件系统的基本原理

(一)步进电机35BYJ46

1.励磁线圈及其励磁顺序如下图及下表所示:

1

2

3

4

5

6

7

8

5

+

+

+

+

+

+

+

+

4

-

-

-

3

-

-

-

2

-

-

-

1

-

-

-

 

2.工作原理:

4相步进电机示意图见下左图,转子由一个永久磁铁构成,定子分别由4组绕组构成

电机定子和转子示意图

 

电气连接示意图

当S1连通电源后,定子磁场将产生一个靠近转子为N极,远离转子为S极才磁场,这样的定子磁场和转子的固有磁场发生作用,转子就会转动,正确地S1、S4的送电次序,就能控制转子旋转的方向。

例如:

若送电的顺序为S1闭合

断开

S2闭合

断开

S3闭合

断开

S4闭合

断开,周而复始的循环,在定子和转子共同作用下,电机就瞬时针旋转:

若送电的顺序为S4闭合

断开

S3闭合

断开

S2闭合

断开

S1闭合

断开,周而复始的循环,则电机就逆时针旋转,原理同理。

3.步进电机与8255A接口关系

(二)8255A可编程并行接口芯片

1.8255简介

Intel8086/8088系列的可编程外设接口电路(ProgrammablePeripheralInterface)简称PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。

它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。

8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。

  8255A在使用前要写入一个方式控制字,选择A、B、C三个端口各自的工作方式,共有三种;

  方式0:

基本的输入输出方式,即无须联络就可以直接进行的I/O方式。

其中A、B、C口的高四位或低四位可分别设置成输入或输出。

  方式1:

选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0.

  方式2:

双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。

8255A是一个并行输入、输出器件,具有24个可编程设置的I/O口,包括3组8位的I/O为PA口、PB口、PC口,又可分为2组12位的I/O口:

A组包括A口及C口高4位,B组包括B口及C组的低4位。

2.8255的编码与工作方式选择

(1)8255A的工作方式控制字

8255A工作方式控制字

(2)8255A的端口地址编码:

需要根据实际电路而定

例如图示的接法:

它的A口、B口、C口和控制口的编码如下

A7

A6

A5

A4

A3

A2

A1

A0

地址

A口

1

1

1

1

0

0

0

0

0F0H

B口

1

1

1

1

0

0

1

0

0F2H

C口

1

1

1

1

0

1

0

0

0F4H

控制口

1

1

1

1

0

1

1

0

0F6H

(三)74LS138译码芯片简介

74LS138为3线-8线译码器,共有54/74S138和54/74LS138两种线路结构型式。

其工作原理:

当一个选通端(E3)为高电平,另两个选通端(E1)和/(E2))为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。

比如:

A0A1A2=011时,则Y6输出端输出低电平信号。

上图所示,输出为Y4,即A0A1A2=001,对应于CBA三位输入,C和B为低电平,A为高电平时,Y4输出低电平。

三、软件框图及设计思想

根据步进电机的励磁顺序列写控制步进电机顺序转动的输出的数据表初始化8255A的工作方式设定需要步进电机转过的步数顺序依次逐个延时(调用延时函数1:

延时较长,实现慢转)输出表中数据设定需要步进电机快速转过的步数

顺序依次逐个延时(调用延时函数2:

延时较短,实现快转)输出表中数据设定需要反向转过的步数逆序依次逐个延时(调用延时函数1,慢速)输出表中数据设定需要步进电机快速反向转过的步数逆序依次逐个延时(调用延时函数2,快速)输出表中数据。

以此循环,则可实现让步进电机先低速正转到高速正转,再从高速正转到低速反转,再高速反转,周而复始。

主函数

四.软件清单及流程图

给定正转数据表table

STACKSEGMENTSTACK

初始化5255工作方式

DW256DUP(?

STACKENDS

设慢速正转动步数DX

DATASEGMENT

TABLEDB01H,03H,02H,06H,04H,0CH,08H,09H;

BX=table首地址

DATAENDS

CX=table数据表的字节个数

CODESEGMENT

输BX到B口

ASSUMECS:

CODE,DS:

DATA

调用延时dally

START:

MOVAX,DATA

MOVDS,AX

BX=BX+1

MAIN:

MOVAL,80H

DX=DX-1

OUT0F6H,AL

零标志位为0?

MOVDX,20

A1:

MOVBX,OFFSETTABLE

CX=cx-1

Cx=0?

MOVCX,0008H

A2:

MOVAL,[BX]

OUT0F2H,AL

CALLDALLY

Cx=cx-1,(修正CX,使CX与BX对应,让变速连惯)

INCBX

DECDX

JZD1

LOOPA2

JMPA1

设快速正转动步数DX

d1:

deccx;修正

输(BX)到B口

movdx,20

a3:

MOVAL,[BX]

调用延时函数dally_k

OUT0F2H,AL

BX=BX+1

CALLDALLY_k

INCBX

DX=DX-1

DECDX

零标志位为0?

JZD2

LOOPA3

JMPm3

CX=cx-1

Cx=0?

d2:

decbx;修正

MOVDX,20

BX=Table首地址

a4:

MOVAL,[BX]

OUT0F2H,AL

CX=table数据表字节个数

CALLDALLY

DECBX

Bx=bx-1;修正BX,使BX与CX对应,让换向连惯

DECDX

JZD3

LOOPA4

JMPM1

d3:

deccx;修正

设置反向转动步数DX

MOVDX,40

输出(BX)到B口

a5:

MOVAL,[BX]

OUT0F2H,AL

调用延时函数dally

CALLDALLY_k

BX=BX-1

decBX

DX=DX-1

DECDX

零标志位为0?

JZD4

LOOPA5

CX=cx-1

Cx=0?

JMPm2

d4:

jmpmain

M1:

MOVBX,OFFSETTABLE

BX=table首地址

MOVAX,0007H

ADDBX,AX

AX=0007h

MOVCX,0008H

Addbx,.ax;(把table

尾地址给BX)

JMPA4

M2:

MOVBX,OFFSETTABLE

CX=table数据表的字节个数

MOVAX,0007H

ADDBX,AX

CX=cx-1;(修正CX,使CX与BX对应,让反向加速连惯)

MOVCX,0008H

JMPA5

M3:

MOVBX,OFFSETTABLE

设置反向加速转过步数DX

MOVCX,0008H

JMPA3

输出(BX)到B口

DALLY:

PUSHCX

MOVCX,5000H

调用延时函数dally_k

A9:

PUSHAX

BX=BX-1

POPAX

DX=DX-1

LOOPA9

POPCX

零标志位为0?

RET

DALLY_K:

PUSHCX

CX=cx-1

Cx=0?

MOVCX,0F00H

A10:

PUSHAX

BX=table首地址

POPAX

AX=0007h

LOOPA10

POPCX

Addbx,ax;(使BX=table的尾地址)

RET

CX=table数据表的字节数

CODEENDS

结束

ENDSTART

出栈AX

延时函数

CX=CX-1

入栈CX保护现场

Cx=0?

(CX)=F000H

返回

出栈CX

入栈AX

五.心得体会

通过这次课程设计,我了解了步进电动机的工作原理及接口电路原理,学会了用编程实现步进电动机正反转及加速的方法。

通过汇编实现让8086控制步进电动机正转、反转、变速,巩固了对步进电动机的编程控制的理论基础,并从中获得了初步的应用经验。

在编程的过程中,我巩固了用汇编语言处理数据的能力,特别是对数表数据的灵活运用能力。

在调试及试运行的过程中也遇到不少问题,最后都通过查阅课本及网络一一解决了。

刚开始的时候,为了实现反转,设置了两个数据表:

一个表实现正转,一个表实现反转。

但是在让步进电机改变运行状态(正转变反转、低速正转变高速正转、低速反转变高速反转)的时候,会出现抖动,总是不能进行平缓地过渡,经过EMU8086软件和proteus仿真软件的多次调试发现是在换状的时候重先给BX赋了初值,导致步进电机从前一个状态换到后一个状态的时候,两个状态的控制数据不连惯,所以会有跳动。

后来,我去掉一个数据表,用一个表实现正反转(通过从低地址向高地址递加读数据实现正转,通过从高地址向低地址读数据实现反转),在换状态的时候不重赋初值,让步进电机紧接着上一个状态的终止位置进入下一个状态,即实现各个状态的平缓转换。

这次经过调试后发现步进电机在改变状态的时候会出现停滞问题,再经过EMU8086对程序的调试,发现是在换状态的时候CX的值和BX的值出现偏差引起的,后来在每次改变状态的时候,加入一个修正值(根据不同的切换修正BX或修正CX),即实现了步进电机从一个状态到另一个状态的平缓过渡。

通过一系列故障的分析与排除,让我既提升了对实际步进电动机编程应用的能力,又巩固了8086的接口扩展技术编程技术。

六.主要参考资料

《微型计算机原理与接口技术》张荣标编著

《微机原理及应用实验指导书》成都大学实验教材

附:

proteus仿真原理图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1