步进电机自动控制系统.docx

上传人:b****2 文档编号:13957164 上传时间:2023-06-19 格式:DOCX 页数:36 大小:278.40KB
下载 相关 举报
步进电机自动控制系统.docx_第1页
第1页 / 共36页
步进电机自动控制系统.docx_第2页
第2页 / 共36页
步进电机自动控制系统.docx_第3页
第3页 / 共36页
步进电机自动控制系统.docx_第4页
第4页 / 共36页
步进电机自动控制系统.docx_第5页
第5页 / 共36页
步进电机自动控制系统.docx_第6页
第6页 / 共36页
步进电机自动控制系统.docx_第7页
第7页 / 共36页
步进电机自动控制系统.docx_第8页
第8页 / 共36页
步进电机自动控制系统.docx_第9页
第9页 / 共36页
步进电机自动控制系统.docx_第10页
第10页 / 共36页
步进电机自动控制系统.docx_第11页
第11页 / 共36页
步进电机自动控制系统.docx_第12页
第12页 / 共36页
步进电机自动控制系统.docx_第13页
第13页 / 共36页
步进电机自动控制系统.docx_第14页
第14页 / 共36页
步进电机自动控制系统.docx_第15页
第15页 / 共36页
步进电机自动控制系统.docx_第16页
第16页 / 共36页
步进电机自动控制系统.docx_第17页
第17页 / 共36页
步进电机自动控制系统.docx_第18页
第18页 / 共36页
步进电机自动控制系统.docx_第19页
第19页 / 共36页
步进电机自动控制系统.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

步进电机自动控制系统.docx

《步进电机自动控制系统.docx》由会员分享,可在线阅读,更多相关《步进电机自动控制系统.docx(36页珍藏版)》请在冰点文库上搜索。

步进电机自动控制系统.docx

步进电机自动控制系统

步进电机自动控制系统

设计内容

设计用PC机对四相步进电机,方向,步数及自动化控制系统,并编写汇编程序实现相应轻能。

设计要求

(1)设计控制系统硬件电机。

(2)由8255键盘控制电机的方向,走的步数,并由数码管显示相应的参数。

(3)在命令执行结束后,由PC内部扬声器发出信号提示。

设备与器材

PC机一台,TPC-1实验台一个,并行接口8255一片,步进电机一个,LED数码管4个,74ls164按键11个,GAL芯片一个,74LS245一片。

硬件方案

硬件共分成5个模块:

①译码驱动电路,②8255控制键盘模块③8255LED显示模块,④步电机驱动模块,⑤步进电机模块

a)译码驱动电路

方案一 使用适当的门电路来实现不同地址的,用74LS245做数据驱动,缺点:

由于只使用门电路,电路连线非常复杂

方案二 使用76LS138和适当门电路实现译码,相对于方案一电路复杂度有一定的改观,在TPC实验箱上使用这种译码方案

方案三 使用可编程逻辑器件GAL16V8实现译码功能,用GAL优点:

成本低,电路连线少。

本设计选择这个方案来实现译码功能。

a)键盘模块

方案一 用8255 12个口直接接按键,此方法成本高,不使用行列法,浪费端口,如用行列法只用7个端口。

方案二 使用2个74LS273或74LS373控制键盘,其中一个控制行,273反向从键盘中读数据,另一个控制列选,273正向向键盘发数据。

方案三使用7281芯片同时控制键盘和数码,7281通过串行口和总线通信,端口使用少,且操作方便。

方案四PC0~4,PB0~4分别控制16个按键。

由于本模块技术已经成熟,在应用中广泛使用,所以本设计选择此方案来实现。

c)LED数码管显示模块

方案一 74LS138一片,ULN2803A一片和74HC573一片,来实现显示,74LS138译

码送UNL2083A通过UNL2083A控制位,通过74HC573控制数据,本方案,成本较高,要单片机中有使用比较多。

方案二 使用一片8255A控制两个74HC573和一个正相驱动器74LS07和一个反相驱

动器74LS06分别控制4个LED位选和编码数据传输。

此方案用到了8255A由于模块②中用到的8255A3个口都以使用,再用一个8255A成本比较高。

方案三 通过一个片信号,两个74HC373和一个正相驱动器74LS06和一个反相驱动

器74LS07分别控制3个LED位选和编码数据传输。

此方案成本低,但是软件实现的点复杂。

  方案四 使用4个74HC373和控制4个LED编码数据,用8255A PC高位和总线片选信号控制数据输入位选,由于是静态显示,一般用于1个或2个数码管的显示。

方案五 使用4个74LS164,通过串行移位来实现LED显示。

成本不高,使用端口少,可以直接通过8255PC7和PB7口,一个做为移位控制,一个送数据。

本设计使用此方案

d)步进电机驱动模块

方案一 使用4N25光电耦合,隔离步进电机和控制电路的电源,保护电源。

使用达林顿管做为驱动。

方案二 使用TIP521光电耦合,隔离步进电机和控制电路的电源,并使用三极管9013进行驱动。

这里用此方案。

e)步进电机模块

方案一 

方案二 实现判断键按下的先后。

本设计使用此方案

㈠硬件方案论证

1译码驱动电路

译码驱动电路如图001所示,有一片GAL16V8芯片和一片74F245芯片组成。

其中GAL16V8用于译码,在其内部烧入软件,如图把A2~A9接入并译码成/y0、,/y0做为片选信号地,细详地址编码如下表

 二进制地址 

十六进制地址

  /y0(8255)

   10 0000 00×× 

  200~203  

74F245芯片用于驱动,由于总线数据信号和各芯片数信号弱,驱动能力差,所以必须在8根总线数据线和各芯片数据线之间加一个双向驱动器74F245。

74F245芯片用于总线和外扩芯片间数据交换时74F245芯片有效,/G为低电平有效,/G连接GAL,/gg端口通过A5A6

A7A8A9,IOW,IOR,AEN来控制,当符合/GG=A9*/A8*/A7*/A6*/A5*/IOR*/AEN+A9*/A8*/

A7*/A6*/A5*/IOW*/AEN这一公式,那么19端口输出为低,74F245允许数据并加强信号。

IOR、IOW也通过GAL16V8进行信号驱动加强。

 

译码驱动电路如下:

 

2、8255控制键盘模块

8255控制键盘,在技术上的已经非常成熟,在这里设计为行列描法对键盘进行控制。

中PC0、PC1、PC2、PC3控制行选,PC4、PC5、PC6控制列选。

当列选中一列发出0信号时,三行读数据,如有键按下,相应行的电压为0V,即读数为“0”。

反之,无按下那么三位读都为“1”。

键盘编码从第一行到第三行为0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F

3、8255LED显示模块

  如图所示,下图为发光二极管控制电路,用于标志,任务号

   

74LS164为移位寄存器,当CLK来一个正脉冲74LS164移位一次,即我们要给8*4个脉冲信号,并在一次脉冲前给在PC7给出相应的“0”或“1”,在164和数码管之间加一个500欧的限流电阻。

这里设计为阳极数据管。

PC7控制CLK,PC6控制移位补充位。

4、步电机驱动模块

8255PA控制四相电机的数据,并通过74LS373锁存,PB0控制74LS373数据是否可以通过。

当PB0为高电平时,74LS373数据可以通过,并送出相应的数据。

使用TIP521光电耦合,隔离步进电机和控制电路的电源,并使用三极管9013进行驱动,达到四相电机的驱动电流。

5、步进电机模块

步进电动机的工作原理及运用

步进电动机的励磁方式可分为全部励磁及半步励磁。

其中全部励磁又有1相励磁及2相励磁之分,而半步励磁又称为1-2相磁。

图为步进电动机的控制等效电路,适应控制A、B、/A、/B的励磁信号,即可控制步进电动机的转动。

每输出一个脉冲信号,步进电动机只走一步。

因此,依序不断送出脉冲信号,即可步进电动机连续转动。

分述如下:

(1)1相励磁法:

在每一瞬间只有一个线圈导通。

消耗电力小,精确度良好,但转矩小,振动较大,每送一励磁信号可走1.8度。

若以1相励磁法控制步进电动机正转,其励磁顺序如图所示。

若励磁信号反向传送,则步进电动机反转。

励磁顺序:

A->B->C->D->A

SETP

A

B

C

D

1

1

0

0

0

2

0

1

0

0

3

0

0

1

0

4

0

0

0

1

(2)2相励磁法:

在每一瞬间会有两个线圈同时导通。

因其转矩大,振动小,故目前使用最多的励磁方式,每送一励磁信号可走1.8度。

若以2相励磁法控制步进电动机正转,其励磁顺序如图所示。

若励磁信号反向传送,则步进电动机反转。

励磁顺序:

AB->BC->CD->DA->AB

SETP

A

B

C

D

1

1

1

0

0

2

0

1

1

0

3

0

0

1

1

4

1

0

0

1

(3)四相双八拍顺序:

AB->-ABC->BC->BCD->CD->CDA->DA->DAB

SETP

A

B

C

D

1

1

1

0

0

2

1

1

1

0

3

0

1

1

0

4

0

1

1

0

5

0

0

1

1

6

1

0

1

1

7

1

0

0

1

8

1

1

0

1

3、步进电动机的负载转矩与速度成反比,速度愈快负载转矩愈小,当速度快至其极限时,步进电动机不再运转。

所以在每走一步后,程序必须DELAY一段时间。

在这里使用四相八拍步进电机。

(2)、软件方案论证

根据硬件所选的方案,软件共分成6个模块:

①GAL16V8芯片译码电路的编程

②主程序模块,③、初始化模块,④、电机数据设置模块⑤、8255四相电机控制模块⑥

164和LED显示模块⑦ 键盘模块

 GAL16V8芯片译码电路的编程源代码:

GAL16V8

ADDRESSDECODER

HZY2005-07-12

DECODER

NCA9A8A7A6A5A4A3A2GND

NCGGIOWoutIORoutY1Y0AENIOWIORVCC

/Y0=A9*/A8*/A7*/A6*/A5*/A4*/A3*/A2*/IOR*/AEN+A9*/A8*/A7*/A6*/A5*/A4*/A3*/A2*/IOW*/AEN

/Y1=A9*/A8*/A7*/A6*/A5*/A4*/A3*A2*/IOR*/AEN+A9*/A8*/A7*/A6*/A5*/A4*/A3*A2*/IOW*/AEN

/IOWout=/IOW

/IORout=/IOR

/GG=A9*/A8*/A7*/A6*/A5*/IOR*/AEN+A9*/A8*/A7*/A6*/A5*/IOW*/AEN

DESCRIPTION

               地址编码表

 二进制地址 

十六进制地址

  /y0(8255)

   10 0000 00×× 

  200~203  

/y1(8259)

   10000001××

204~207

  

主程序模块

主程序模块主要实现三大子功能:

⑴对各芯片进行初始化操作

⑵根据硬件的连接和抢答的流程把各个功能模块有序的组织起来

⑶读任务并根据任务向步进电机送电。

电机数据设置模块

以上为设置电机任务流程图,主要是设置转向,步数。

由于人输入的是十进制的,而机器使用16进制计数,所以我们要把十进制转化为十六进制。

在执行任务时,也一样,要把十六进制转化为十进制通过数码管显示。

四相电机八拍正反转动子模块

电机在本系统中,主要是控制方向和控制步数。

主要是通过两子程序来完成,正向八拍子程序和反向八拍子程序,两个子程序没在的区别,主要是送数过程相反,在这里主要以正向程序进行分析。

以下为正转八拍流程图:

 

LS164和LED显示模块

设计选用LS164做为数码管的控制源,74LS164做为移位锁存驱动芯片,是8位串行输入并行输出,并行口直接与数码管相连,这里有4个数码管,用4个164,所以显示需改变,要重新移位送数4*8个。

键盘模块

本方案使用4*4键盘,并过8255控制,其中PC0-4控制行,PB0-4控制列。

在需要按键时

不断的扫描行(该行送0),并读PB口,如有位为“0”那么可通过送0位和读0位判断是哪个键按下,并将键值送入键盘缓冲区。

 

调试分析:

在设计过程中,不管在硬件设计和软件设计过程中,需要一步一步,全面的设

计不能想到点做一点,要全面的考虑。

如在硬件布局中,不能拿到芯片就向往上焊,需要先设计整体布整图在焊接。

  

GAL调试

出现的问题:

在*.lst文件中的GAL管脚图中,发现10管脚不为GND,为A2

原因:

在写程序时,多写了一个A6,使GAL出错

经验总结:

以前地认为类似这种错误,在编译时会自动找到,会有出错提示,

有思维定式,所以以后写程序时,要注意尽量少出现类似的低级错误。

显示模块调试

出现的问题:

在上电调试时,发现显示出错,从0到F显示乱码,只控制全灭和全亮。

原因查找思路:

①可能是LEDTB出错,少写,移位或者把阳极编码写成阴极编码。

②硬件电路出错,移位输入口AB接错。

③显示子程序出错,在控制4*8次移位时出错多移或少移。

④8255控制出错

原因:

为①LED编码表出错,由于设计硬件使用右移方式,即从DP,G移到A,但是LEDTB中从高到低为G到A,右移时先移A,所以软硬件不统一,导致,显示出错。

经验总结:

设行时思路要清楚,软硬件要统一。

再仔细察一次。

出现问题:

光电耦合送1,送0,输出都为高。

原因查找思路:

①输入输出接地线出错

②输出上拉是阻过小

原因:

用万用表查得,TIP521已烧掉,此时发现输入输出的限流电阻太小只有200欧,电流太大。

解决方案:

限流电阻使用1K电阻

经验总结:

设行时,要全面的考虑,要很好考虑上拉限流,防止出错。

附页

作品实物图:

源代码:

;---步进电机自动控制系统-------------------------------------------

;----向端口送数宏---------------------------------------------------------

wpmacroport,dat

movdx,port

moval,dat

outdx,al

endm

;---读端口宏-------------------------------------------------------------

rpmacroport

movdx,port

inal,dx

endm

;---屏幕显示字符串宏-----------------------------------------------------

infomacroport

movah,09h

leadx,port

int21h

endm

;----延时宏---------------------------------------------------------------

delaymacroport,dat

pushcx

pushax

movdx,port

movcx,dat

movah,86h

int15h

popax

popcx

endm

;------------------------------------------------------------------------------datasegment

c8255_ctlequ203h;8255控制口 

c8255_aequ200h;8255A口

c8255_bequ201h;8255B口

c8255_cequ202h;8255c口

pstb1db05h,15h,14h,54h,50h,51h,41h,45h;四相双八拍正向加电代码

pstb2db45h,41h,51h,50h,54h,14h,15h,05h;四相双八拍反向加电代码

pslongdb08h;表示加电方式八相

steplongdw0000h,0000h,0000h,0000h,0000h;走的步数

step1db00h;键盘输入时百位

step2db00h;键盘输入时十位

step3db00h;键盘输入时个位

stepdw0000h

directdb5dup(0ah);旋转方向,0a为正向,0b为反向

dirdb0ah;

findb00h;一次任务是否完成标志位,00是未完成,01为完成

keytbdb0ffh;键盘输入存储区

playtbdb4dup(00h);显示缓存存放0到11h,10为全灭,11为全亮,4个数码管

dptbdb4dup(00h);存放playtb转换过来的LED编码

Ctbdb0feh,00h,0fdh,00h,0fbh,00h,0f7h,00h,0efh

Ctb1db0feh,0fdh,0fbh,0f7h,0efh;LED发光二极373输出代码

LEDtbdb003h,09fh,025h,00dh,099h,049h,041h,01fh;

db001h,009h,011h,0c1h,063h,085h,061h,071h,0ffh,00h;---------0ff为全灭,11为全亮

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

callinit;初始化

main:

callsetdata;设置电机数据

movdi,00h

movsi,00h

runbegin:

wp204h,ctb1[si]

wpc8255_ctl,00001011b;PC5=0关373

movax,steplong[di];读第di个任务步数

;wp204h,ctb[di]

movstep,ax

cmpstep,0000h;如果步数为0,执行下一个任务

jerunnext

moval,direct[si];读第di个任务的转向,并存入显示区

movdir,al

movplaytb+3,al

cmpdir,0ah

jerun1;是否正转

cmpdir,0bh

jerun2;是否反转

run1:

callmove1;正转操作

cmpfin,00h

jerun1

jmprunnext

run2:

callmove2;反转操作

cmpfin,00h

jerun2

jmprunnext

runnext:

incdi

incdi

incsi

cmpdi,09h

jagoon

jmprunbegin

goon:

movplaytb+2,0eh;

movplaytb+1,0eh;

movplaytb,0eh;

movplaytb+3,0eh;显示E

calldisplay

delay0a000h,0h;延时0.005s

movplaytb+2,0fh;

movplaytb+1,0fh;

movplaytb,0fh;

movplaytb+3,0fh;显示F

calldisplay

delay0a000h,0h;延时0.005s

callsound

callkeyset

cmpkeytb,0eh

jneexit1

jmpmain;如果按下E继续

exit1:

cmpkeytb,0fh

jnegoon;如果按下F退出系统

exit:

movplaytb+3,10h

movplaytb,10h

movplaytb+2,10h

movplaytb+1,10h

calldisplay

movah,4ch;返回DOS

int21h;返DOS

;----初始化子程序---------------------------------------------

initproc

wpc8255_ctl,10000010b;8255PA,PC输出,PB输入

wpc8255_c,0ffh

wpc8255_ctl,00001010b;PC5=0关373

wpc8255_ctl,00001110b;pc7=0关ls164

ret

initendp

;--初始化子程序-------------------------------------------

;--电机数据设置子程序-------------------------------------

setdataproc

pushsi

pushax

pushdx

pushcx

movdirect,0ah

movdirect+1,0ah

movdirect+2,0ah

movdirect+3,0ah

movdirect+4,0ah

setst:

movsi,00h;第几个任务

movdi,00h

set:

wp204h,ctb[si]

movplaytb+2,00h;设置步数百位00

movplaytb+1,00h;设置步数十位0

movplaytb,00h;设置步数个位

set1:

moval,step1

movplaytb+2,al;设置步数百位

moval,step2

movplaytb+1,al;设置步数十位

moval,step3

movplaytb,al;设置步数个位0

moval,direct[di];设置正转反转

movplaytb+3,al;设置正转反转0a

calldisplay

delay0a000h,0h;延时0.005s

movplaytb+3,010h;设置正转反转全亮全灭

calldisplay

delay0a000h,0h;延时0.005s

callkeyset

cmpkeytb,0eh;是否确定

jneset10

jmpsetok

set10:

cmpkeytb,0ah;是否为正转

jeset2

cmpkeytb,0bh;是否为反转

jeset3;

cmpkeytb,0dh;是否设置下一个量

jesetstep1;跳往设置步数百位

jmpset1

set3:

movdirect[di],0bh;反转

movplaytb+3,0bh

jmpsetstep1

set2:

movdirect[di],0ah;正转

movplaytb+3,0ah

setstep1:

moval,step1

movplaytb+2,al;设置步数百位

moval,step2

movplaytb+1,al;设置步数十位

moval,step3

movplaytb,al;设置步数个位0

moval,direct[di];设置正转反转

movplaytb+3,al;设置正转反转0a

calldisplay

delay0a000h,0h;延时0.005s

movplaytb+2,010h;设置步数百位全灭

calldisplay

delay0a000h,0h;延时0.005s

callkeyset

cmpkeytb,0eh;是否确定

jnesetstep11

jmpsetok

setstep11:

cmpkeytb,0ch;设置上一个量

jnesetstep10

jmpset1

setstep10:

cmpkeytb,0dh;设置下一个量

jesetstep2

cmpkeytb,09h

jasetstep1

moval,keytb

movplaytb+2,al

movstep1,al;设置步数百位

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2