步进电机的单片机控制系统软件设计.docx

上传人:b****4 文档编号:3768303 上传时间:2022-11-25 格式:DOCX 页数:21 大小:309.19KB
下载 相关 举报
步进电机的单片机控制系统软件设计.docx_第1页
第1页 / 共21页
步进电机的单片机控制系统软件设计.docx_第2页
第2页 / 共21页
步进电机的单片机控制系统软件设计.docx_第3页
第3页 / 共21页
步进电机的单片机控制系统软件设计.docx_第4页
第4页 / 共21页
步进电机的单片机控制系统软件设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

步进电机的单片机控制系统软件设计.docx

《步进电机的单片机控制系统软件设计.docx》由会员分享,可在线阅读,更多相关《步进电机的单片机控制系统软件设计.docx(21页珍藏版)》请在冰豆网上搜索。

步进电机的单片机控制系统软件设计.docx

步进电机的单片机控制系统软件设计

步进电机的单片机控制系统软件设计

4.1控制程序总体设计

系统软件采用模块化程序设计,使程序流程清晰明了。

系统主程序主要完成的内容:

系统参数初始化、判断保护信号、打开中断启动电机。

系统主程序流程图如下图4-1所示[1]。

可以看出,主程序是一个死循环,在系统上电初始化完毕后,系统一直在不断的执行这个循环程序。

在循环过程中,若产生中断,则程序就转去执行相应的中断服务程序。

在后面将逐一介绍中断服务程序,功能子程序等的设计。

图4-1主程序流程图

步进电动机的速度控制通过控制单片机发出的步进脉冲频率来实现。

对于用软件实现脉冲分配,可以采用调整两个控制字之间的时间间隔来实现调速。

根据调速原理,控制步进电动机速度的方法可有两种:

一、通过软件延时的方法。

改变延时的时间长度就可以改变输出脉冲的频率,但这种方法使CPU长时间等待,占用大量机时,因此没有实用价值。

二、通过定时器中断的方法。

在中断服务子呈现中进行脉冲输出操作,调整定时器的定时常数就可以实现调速。

本系统软件延时的方法实现调速,从HSO.0通道输出连续脉冲信号。

在50H单元存放脉冲处于“1”电平时间值(单位为2),52H单元存放脉冲处于“0”电平时间值(单位为2)。

改变50H和52H单元的内容,就可以改变脉冲输出的频率及占空比。

程序如下:

主程序

ORG2080H

OUPSS:

LDSP,#00C0H;设栈指针

DI;关中断

ORBINT-MASK,#8H;允许HSO中断

LDTEMP,#HSO-INT;送HSO中断服务程序入口地址

STTEMP,2006H[0]

ADD54H,T1,52H;计算上跳变时刻

SCALLLDCAM;调CAM装载子程序

EI;开中断

HERE:

SJMPHERE;等待中断

中断服务程序

HSO-INT:

PUSHF;保护PSW,同时清PSW

SCALLLDCAM;调CAM装载子程序

POPF;恢复PSW

RET;返回主程序

CAM装载子程序

LDCAM:

LDBHSO-COMMAND,#20H;1→HSO.0

LDHSO-TIME,54H

ADD54H,50H;计算下跳变时刻

NOP

NOP;空操作

LDBHSO-COMMAND,#10H;0→HSO.0,并产生HSO中断

LDHSO-TIME,54H

ADD54H,52H;计算上跳变时刻

RET

其它高速输出口(HSO)的连续脉冲信号的产生程序可依据如上程序写入。

这样可通过改变输出脉冲的频率达到控制步进电动机速度和方向。

4.2键盘/显示器的自动扫描

8279是Intel公司生产的通用可编程键盘和显示器I/O接口芯片。

利用8279,可实现对键盘/显示器的自动扫描,并识别键盘上闭合键的键号,这样可以大大节省CPU对键盘/显示器的操作时间,从而减轻CPU的负担,而且显示稳定,程序简单,不会出现误动作。

主程序框图如下图4-2所示

图4-2主程序框图

图4-3中断服务子程序框图

;主程序

STATUSEQU7FFFH

DATAEQU7FFEH

AXEQU20H

ALEQU20H

AHEQU21H

BXEQU22H

BLEQU22H

BHEQU23H

CXEQU24H

CLEQU24H

CHEQU25H

DXEQU26H

DLEQU26H

DHEQ27H

EXEQ28H

ELEQU28H

EHEQU29H

FXEQU2AH

FLEQU2AH

FHEQU2BH

LDAX,#200EH

LDBX,#3000H

STBX,[AX]

LDBBL,#0DEH

STBBL,STATUS[R0]

LDBL,#00H

STBBL,STATUS[R0]

LDBBL,#34H

STBBL,STATUS[R0]

LDBAH,#00H

LDBAL,#00H

LDBAH,#00H

EI

中断服务程序

LDBBL,#40H

STBBL,STATUS[R0]

LDBBL,DATA[R0]

STBBL,[EL]

CLRC

SUBBBL,#38H

JCL1

LDBBL,[AH]

SHRBBL,#01H

JNCL2

INCBAL

LDBBL,[AL]

SHRBBL,#01H

JCL3

LDBBL,[EL]

STBBL,[EH]

INCB[FL]

L8:

LJMPL4

EI

RET

L3:

LDBBL,[EL]

STBBL,[DL]

LDB[FL],#80H

LJMPL8

L1:

CLRC

SUBBBL,#38H

JNZL5

INCBAH

LDBBL,[DH]

SHRBBL,#04H

ANLBBL,#0FH

STBBL,[DL]

LDB[FL],#80H

LJMPL4

LDBBL,[DH]

ANLBBL,#0FH

STBAL,[EH]

INCB[FL]

LJMPL4

L9:

EI

RET

L5:

LDBBL,[EL]

CLRC

SUBBBL,#39H

JNZL2

SHRBAL,#02H

JCL2

LDBAH,#00H

LDBAL,#00H

LDBBL,[DL]

SHLBBL,#04H

ANLBBL,#0F0H

ORBBL,[EH]

STBBL,[DH]

LJMPL9

4.3软件脉冲分配器

软件脉冲分配器是指实现脉冲分配控制的计算机程序,其控制的基本原理是:

根据步进电机与计算机的接线情况及通电方式列出脉冲分配控制数据表;运行时按节拍序号查表获得相应的控制数据;在规定时刻通过输出口将数据输出到步进电机驱动电路。

下面通过单片机8031对X-Y工作台的两台四相步进电机进行控制的接口电路原理图。

图中采用了负逻辑控制,即当8031的P1口某一口线输出低电平“0”时,对应的步进电机绕组被接通。

下图4-4是单片机与步进电机的接口电路图:

图4-4单片机与步进电机的接口电路图

 

下表4-1是按上图列出的四相八拍脉冲分配控制数据表:

表4-1四相八拍脉冲分配控制数据表

节拍序号

Y向电动机

X向电动机

通电相

控制数据

旋转方向

P1.7

P1.6

P1.5

P1.4

P1.3

P1.2

P1.1

P1.0

D

C

B

A

D

C

B

A

1

1

1

1

0

1

1

1

0

A

EEH

向下正转

向上反转

2

1

1

0

0

1

1

0

0

AB

CCH

3

1

1

0

1

1

1

0

1

B

DDH

4

1

0

0

1

1

0

0

1

BC

99H

5

1

0

1

1

1

0

1

1

C

BBH

6

0

0

1

1

0

0

1

1

CD

33H

7

0

1

1

1

0

1

1

1

D

77H

8

0

1

1

0

0

1

1

0

DA

66H

下图4-5为脉冲分配控制程序框图:

图4-5脉冲分配控制程序框图

对应的子程序清单如下:

XPD:

CLR01H

MOVR1,#52H

MOVC,02H

AJMPPPD

YPD:

SETB01H

MOVR1,#53H

MOVC,03H

PPD:

JCPPD2

INC@R1

CJNE@R1,#09H,PPD3

MOV@R1,#01H

AJMPPPD3

PPD2:

DEC@R1

CJNE@R1,#00H,PPD3

MOV@R1,#08H

PPD3:

MOVA,@R1

ADDA,#01H

MOVC@A+PC

AJMPPPD5

TABLE:

DB:

0EEH,0CCH,0DDH,99H

DB:

0BBH,33H,77H,66H

PPD5:

JB01H,PPD6

ANLA,#0FH

ANL55H,#0F0H

ORL55H,#0F0H

ORL55H,A

RET

PPD6:

ANLA,#0F0H

ANL55H,#0FH

ORL55H,A

RET

关于子程序的若干问题说明:

1)标号XPD和YPD分别为向X向及Y向步进电机分配脉冲时的子程序入口。

2)位02H、03H分别为X向、Y向步进电机正反转标志位,其值来自主程序。

3)55H为脉冲分配控制数据缓冲单元,其中的数据将从P1口输出给步进电机。

由于子程序每次运行只能对一个步进电机进行脉冲分配控制,故55H中的数据每次只有半个字节被修改,而另一半则保留。

4.4速度控制程序与方向控制程序

4.4.1速度控制程序

通过控制脉冲分配频率可实现步进电机的速度控制。

速度控制也有硬、软件两种方法。

硬件方法是在硬件脉冲分配器的时钟脉冲输入端(CP端)接一可变频率脉冲发生器,改变其振荡频率,即可改变步进电机速度。

下面主要介绍软件方法。

软件方法常采用定时器来确定每相邻两次脉冲分配的时间间隔,即脉冲分配周期,并通过中断服务器程序向输出分配控制数据[12]。

下面的程序即可实现这一功能,其中采用了单片机8031的CTC0(零号定时/计数器)。

FC:

MOVTL0,5BH;5AH、5BH中存放着与速度相关数据

MOVTH0,5AH;相应的定时常数

SETBTR0;启动定时器

.

.;其他程序

.

INTR0:

MOVTL0,5BH;重装定时常数

MOVTH0,5AH

MOVP1,55H;输出脉冲分配控制数据

RETI;中断返回

程序中前三条指令的作用是预置定时常数及启动定时器,可放在主程序中执行,也可作为子程序调用。

定时器启动后,计算机可进行其他工作。

当有定时中断申请时,CPU响应中断,从标号为INTR0的中断服务器程序入口开始进行中断服务。

首先重装定时器常数,为下个节拍做好准备,然后从P1口输出55H中寄存的脉冲分配控制数据。

速度控制的关键是定时常数的确定。

设数控X-Y工作台的脉冲当量为H(mm),要求的运动速度为v(mm/min),8031的晶振频率为fose(HZ),采用CTC0的工作模式1(即16位定时器模式),则定时常数Tx(s)可按下式确定。

4.4.2方向控制程序

在程序的编制中,要特别注意步进电机在换向时的处理。

为使步进电机在换向时能平滑过渡,不至于产生错步,应在每一步中设置标志位。

其中20H单元的各位为步进电机正转标志位;21H单元各位为反转标志位。

在正转时,不仅给正转标志位赋值,也同时给反转标志位赋值;在反转时也如此。

这样,当步进电机换向时,就可以上一次的位置作为起点反向运动,避免了电机换向时产生错步[13]。

下图4-6是方式1程序框图:

图4-6正反转程序框图

方式1源程序:

MOV20H,#00H;20H单元置初值,电机正转位置指针

MOV21H,#00H;21H单元置初值,电机反转位置指针

MOVP1,#0C0H;P1口置初值,防止电机上电短路

MOVTMOD,#60H;T1计数器置初值,开中断

MOVTL1,#0FFH

MOVTH1,#0FFH

SETBET1

SETBEA

SETBTR1

SJMP$

***********计数器1中断程序************

IT1P:

JBP3.7,FAN;电机正、反转指针

*************电机正转*****************

JB00H,LOOP0

JB01H,LOOP1

JB02H,LOOP2

JB03H,LOOP3

JB04H,LOOP4

JB05H,LOOP5

JB06H,LOOP6

JB07H,LOOP7

LOOP0:

MOVP1,#0D0H

 MOV20H,#02H

 MOV21H,#40H

 AJMPQUIT

LOOP1:

MOVP1,#090H

 MOV20H,#04H

 MOV21H,#20H

 AJMPQUIT

LOOP2:

MOVP1,#0B0H

 MOV20H,#08H

 MOV21H,#10H

 AJMPQUIT

LOOP3:

MOVP1,#030H

 MOV20H,#10H

 MOV21H,#08H

 AJMPQUIT

LOOP4:

MOVP1,#070H

 MOV20H,#20H

 MOV21H,#04H

 AJMPQUIT

LOOP5:

MOVP1,#060H

MOV20H,#40H

MOV21H,#02H

AJMPQUIT

LOOP6:

MOVP1,#0E0H

MOV20H,#80H

MOV21H,#01H

AJMPQUIT

LOOP7:

MOVP1,#0C0H

MOV20H,#01H

MOV21H,#80H

AJMPQUIT

***************电机反转*****************

FAN:

JB08H,LOOQ0

JB09H,LOOQ1

JB0AH,LOOQ2

JB0BH,LOOQ3

JB0CH,LOOQ4

JB0DH,LOOQ5

JB0EH,LOOQ6

JB0FH,LOOQ7

LOOQ0:

MOVP1,#0A0H

MOV21H,#02H

MOV20H,#40H

AJMPQUIT

LOOQ1:

MOVP1,#0E0H

MOV21H,#04H

MOV20H,#20H

AJMPQUIT

LOOQ2:

MOVP1,#0C0H

MOV21H,#08H

MOV20H,#10H

AJMPQUIT

LOOQ3:

MOVP1,#0D0H

MOV21H,#10H

MOV20H,#08H

AJMPQUIT

LOOQ4:

MOVP1,#050H

MOV21H,#20H

MOV20H,#04H

AJMPQUIT

LOOQ5:

MOVP1,#070H

MOV21H,#40H

MOV20H,#02H

AJMPQUIT

LOOQ6:

MOVP1,#030H

MOV21H,#80H

MOV20H,#01H

AJMPQUIT

LOOQ7:

MOVP1,#0B0H

MOV21H,#01H

MOV20H,#80H

QUIT:

RETI

END

该驱动器经实验验证能驱动0.5N·m的步进电机。

将驱动部分的电阻、电容及续流二极管的有关参数加以调整,可驱动1.2N·m的步进电机。

该驱动器电路简单可靠,结构紧凑,对于I/O口线与单片机资源紧张的系统来说特别适用。

4.5自动升降速程序

步进电机允许的启动频率一般较低,当要求高速运行时,必须用较低的频率启动,然后逐渐加速,否则不能正常启动。

制动时也应该逐步降到较低的频率后再制动,否则定位不准。

步进电机自动升降速也可以通过硬、软件两种方法实现。

这里只介绍软件自动升降速控制。

软件自动升降速控制的基本原理是:

根据允许的启动频率确定定时器的初始定时常数,在升速过程中,按一定规律不断增加定时常数(对加法计数的定时器来讲),减小中间时间间隔,加快脉冲分配频率;在恒速过程中,保持定时常数不变;在降速过程中,按规律不断减小定时常数,降低脉冲分配频率,直到定时常数等于希望的制动频率所对应的值时,停止脉冲分配,使步进电机制动[14]。

升降速过程可按指数或直线(匀加速)规律控制,前者的特点是升降速过程短,与步进电机的阶跃响应规律吻合,但程序设计复杂;后者的特点是程序简单,但升降速过程较长。

下图4-7是采用分段直线规律进行的自动升降速控制的程序框图:

图4-7自动升降速控制的程序框图

对应的单片机程序清单如下:

VOU:

MOVA,58H

ANLA,#0FCH

ORLA,57H

JZVDON

MOVA,5AH

CLRC

CJNEA,1AH,VUP

MOVA,5BH

CJNEA,1BH,VUP

RETURN:

RET

VUP:

JNCRETURN

DJNZ4CH,RETURN

MOVA,5AH

CJNEA,1AH,VDV1

MON4CH,#02H

VDV1:

INC4CH

MOVA,5BH

ADDA,#01H

MOV5BH,A

MOVA,5AH

ADDCA,#00H

MOV5AH,A

RET

VDON:

MOVA,5AH

CLRC

CJNEA,18H,VD1

MOVA,5BH

CJNEA,19H,VD1

VD:

RET

VD1:

JCVD

MOVA,5BH

CLRC

SUBBA,#01H

MOV5BH,A

MOVA,5AH

SUBBA,#00H

MOV5AH,A

RET

对程序中若干问题说明如下:

1)57H、58H、59H三个字节中所寄存的距终点所需要的脉冲当量数最初由主程序设定,并在每分配出一个脉冲后作一次减1运算。

最终判别也在主程序中进行。

2)5AH、5BH中存放对应当前频率的定时常数,在升降速过程中作加1或减1修改;18H、19H中存放对应启动频率f0的定时常数;1AH、1BH中存放对应最高运行频率fmax的定时常数。

3)当至终点距离为03FFH个脉冲当量时,步进电机开始减速。

当频率减到启动频率f0后,步进电机恒速趋近终点,然后制动。

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

当前位置:首页 > 求职职场 > 简历

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

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