基于单片机的步进电机控制系统.docx

上传人:b****5 文档编号:12597876 上传时间:2023-04-20 格式:DOCX 页数:29 大小:305.97KB
下载 相关 举报
基于单片机的步进电机控制系统.docx_第1页
第1页 / 共29页
基于单片机的步进电机控制系统.docx_第2页
第2页 / 共29页
基于单片机的步进电机控制系统.docx_第3页
第3页 / 共29页
基于单片机的步进电机控制系统.docx_第4页
第4页 / 共29页
基于单片机的步进电机控制系统.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

基于单片机的步进电机控制系统.docx

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

基于单片机的步进电机控制系统.docx

基于单片机的步进电机控制系统

基于单片机的步进电机开环控制系统

胡啸峰,李俊生

(北京机械工业学院机电工程学院)

摘要:

设计了以AT89C51单片机为主控制器的步进电机控制系统,该文主要介绍了系统硬件电路搭建、软件功能设计及相关机械结构的设计,其中重点阐述了步进电机驱动器的控制及LCD液晶显示,实现了步进电机的开环控制及界面显示。

关键词:

AT89C51;驱动器;步进电机;12864LCD液晶屏;开环控制

Open-loopcontrolsystemofstep-motorbasedonsinglechip

XiaofengHu,JunshengLi

(collageofelectromechanicalengineering,Beijingindustrialmechanicalcollege)

Abstract:

thedesignuseAT89C51singlechiptocontrolthestep-motor.Thepapermainlyintroducesthedesignofstep-motorcontroller,step-motordrivers,thedisplayofLCD.thedesignsucceedsinrealizingcontrolofstep-motor.

0.引言

步进电机是1种纯数字控制电动机,它将电脉冲信号转换成相应位置的转换装置,是与输入脉冲对应的增量驱动元件,当负荷不超过步进电机所提供的动态转矩时,它就能实现快速起、停.另外,它的步距角和转速不受电压和负载变化的影响,也不受环境条件如温度、气压、冲击和震动等影响,仅与脉冲频率和脉冲数有关,因此非常适合于单片机控制.由于步进电机有快速响应特性,并且无积累误差(仅有小于7d的误差),在许多数控装置及仪器设备上都得到广泛应用.文中设计利用了单片机对步进电机对进行数字控制。

在这个控制系统中,控制器是核心,它负责发脉冲和LCD显示的控制。

下文对电机速度的控制及显示做出了详细的介绍。

1.总体方案设计

系统框图如

(1)所示,本系统主要由5部分组成,即:

步进电机,步进电机驱动器,控制电路,LCD显示,执行元件。

本文重点介绍步进电机控制电路,LCD显示两部分。

图1系统框架

2.系统设计

2.1步进电机的控制系统

步进电机的控制系统主要由单片机,晶振电路,复位电路,步进电机驱动器等组成。

如图

(2)所示。

图2步进电机控制电路

(1)晶振电路

单片机的时钟信号通常用两种电路方式获得:

内部震荡方式和外部震荡方式,在引脚XTAL1和XTAL2外接晶体振荡器,就构成了内部振荡方式。

由于单片机内部有一个高增益反相放大器。

当外接晶振后,就构成了自激震荡器并产生震荡时钟脉冲,内部震荡方式的外部电路如图(3)所示,本系统选C1和C2为30PF.

图3晶振电路

(2)复位电路:

复位电路如图(4)所示:

图4复位电路

a.当系统上电时,C3导通,RESET键至高,系统复位。

b.当S1按下,支线2导通,RESET键至高,

系统复位。

(3)步进电机脉冲产生

在采用单片机的步进电机开环系统中,控制系统的CP脉冲的频率实际上就是控制步进电机的运行速度。

系统可以用两种方法实现:

1.延时;2.定时。

在本电路设计中,采用了步进电机驱动器,步进电机驱动器及其接线电路如图(5)所示,其脉冲的输入由单片机的定时器发出,在软件中由软件来实现。

说明:

在电路中,由于其他方面考虑,没有接方向信号和脱机信号两根线,读者可根据实际情况自行使用。

脉冲信号由单片机T0定时器中断发出,能产生任意周期的定时信号,可以通过调节脉冲频率准确的控制电机的转速。

考虑到精度的要求,在容许范围之内,不考虑由于定时器装载完重新启动开始到定时器申请中断止的那段时间。

(4)键盘电路:

4×4的矩阵键盘是由4条行线和4条列线组成,按键设置在行列线交点上,行列线分别连接到按键开关的两端。

行线通过上拉电阻接到+5V上,平时无按键动作时,行线处于高电平状态,而当有按键按下时,行线状态将由与此相连的列线电平决定。

键盘中有无按键按下是由列线送入全扫描字,将所有行由与门相连,输出接中断。

当有键按下时,行线由高变低产生负跳变,即可进入中断进行处理。

电路图如下:

图5键盘电路

图中R1,R2,R3,R4均为4.7K,目的是将行拉高,以便在有键按下时,可以跳进中断。

2.2LCD液晶显示

本文采用12864液晶显示,其与单片机P0口相接,用于显示控制界面信息。

其引脚可参照说明书,本文主要对软件的设计进行详细的介绍。

采用的连接方式是直连方式,通过直接的人为控制状态位,来实现LCD的显示。

其硬件连接图如图6所示

图6LCD与单片机连接图

2.3执行机构

用步进电机带动皮带进行切割机模拟运行。

其基本位置关系及定位如下图所示:

每块支架均有加强筋,图中未示出。

2.4数据采集

本文采用旋转式编码器采集实时速度,并通过LCD显示出来。

编码器脉冲端接单片机T1计数器,通过脉冲的计数,转化为实际转数。

其接线可参照有关资料。

3.软件设计。

本例中,为了使步进电机有较高的转数,采用曲线加速的方法,即不断的减小定时时间。

使其由低速启动,以获得较高的转矩,之后不断的加速,最终获得所需高转速。

目的在某些情况下,可以获得高转速,满足要求.其工作方式如下图:

基本速度为基准的整数倍,1速为13倍,2为11倍,依次类推。

要达到最高转速,由于受到转矩的限制,必须采取低转速启动,经过一段时间加到高转速。

码盘数据的处理,本文中采用AT89c51系列单片机,其只有2个定时器/计数器中断,因此如何处理码盘采回的脉冲数,是软件的核心部分。

我们假设码盘在一定时间内的脉冲数是N,设步进电机的转速为S,于是有如下的方程进行计算。

其中:

采集编码器脉冲得时间为T(us)

编码器旋转一周发生360个脉冲。

流程图如下:

键盘扫描

加减速控制流程图

源程序见附表

(1)

4结论

步进电机开环控制系统具有成本低、简单、控制方便等。

在此方案中,通过曲线加速,可以获得较高的转速。

通过步进电机驱动器使得步进电机的精度得以提高,运动较为平稳。

使用码盘,将现有的速度实时反应在控制界面上。

本实验目的在于模拟切割机的一部分,其基本功能均可实现,且步进电机的误差在容许范围之内,满足使用要求。

参考文献

(1)王福瑞,等单片机微机系统设计大全北京:

北京航天航空大学

(2)胡汉才单片机原理及其接口技术北京:

清华大学

说明:

由于编者水平有限,仅供参考,如有不对之处还请多多指教。

其中胡啸峰做软件设计,李俊生电路设计,卢胜军

QQ:

328510960

特别感谢机电工程学院姚小敏,李天剑老师的耐心指导和帮助。

 

源程序:

;定义控制位

RSEQUP2.0

RWEQUP2.1

EEQUP2.2

PULSEEQUP2.4

DIREQUP2.5

;程序标志位

STATUSBIT00H;运转停止标志位,1转0停

STATUS1BIT01H;正反转标志位,1正0反

RESETFLAGBIT02H;系统复位标志位

SPEEDSHOWFLAGBIT03H;转速刷新标志位

RIGHTSHOWFLAGBIT04H;版权显示标志位

;LCD显示的变量定义

NDATA30H;行数显示

ADDRDATA31H

ADDR1DATA32H

N1DATA33H

;键盘中断程序变量

KEY1DATA38H

KEY2DATA39H

KEY3DATA3AH

;程序中间变量

GEWEIDATA40H;个位数

SHIWEIDATA41H;十位数

BAIWEIDATA42H;百位数

COUNTERLDATA43H;存计数器低八位

COUNTERHDATA44H;存计数器高八位

SPEEDLEVELPTDATA50H;速度显示指针

TIMPTDATA51H;转速定时器指针

TIMNOWDATA52H;定时器周期当前值

TIMNOW1DATA53H;递减用

TIMTARGETDATA54H;定时器周期目标值

TIMCOUNTER1DATA55H;采样显示计数1

TIMCOUNTER2DATA56H;采样显示计数2

STAYCOUNTERDATA57H;曲线加速阶段停留次数

;延时子程序变量

DR0DATA48H

DR1DATA49H

;*******************************************************************

;入口地址设置

ORG0000H

LJMPSTART

ORG0003H

LJMPKEYBOARD

ORG000BH

LJMPPULSE_GENERATOR

ORG0013H

LJMPLIMIT

START:

MOVSP,#60H

SETBEA;开中断控制位

SETBEX0;开INT0

SETBEX1;开INT1

SETBET0;开定时器0中断

SETBIT0;INT0下降沿触发

SETBIT1;INT1下降沿触发

MOVIP,#02H;设定中断优先级

MOVTMOD,#52H;定时器0方式2,计数器1方式1

START1:

LCALLINITIAL_SYS

LCALLINITIAL_LCD;初始化液晶面板

LCALLGUDINGSHOW;液晶面板固定显示

LOOP:

CJNER5,#0FFH,KEY;键值改变,则KEY

JBRESETFLAG,START1;若按下复位键,则START1

JBSPEEDSHOWFLAG,NEXT;若速度显示计时到,则NEXT

SJMPLOOP

NEXT:

LCALLHEX2BCD;十六进制到BCD码转换

LCALLSPEEDSHOW;显示转速

SJMPLOOP

;********************************************************************

;键值处理

KEY:

JNBRIGHTSHOWFLAG,NEXT0;没有显示版权,到NEXT0判断按下的键

LCALLGUDINGSHOW

LJMPNEXT5

NEXT0:

CJNER5,#0AH,NEXT1

LCALLON_OFF

NEXT1:

CJNER5,#0BH,NEXT2

LCALLFOR_BACK

NEXT2:

CJNER5,#0CH,NEXT3

LCALLFAST

NEXT3:

CJNER5,#0DH,NEXT4

LCALLSLOW

NEXT4:

CJNER5,#0EH,NEXT5

LCALLRESET

NEXT5:

LCALLFORBACKSHOW

LCALLSPEEDLEVELSHOW

CJNER5,#0FH,EXIT0

LCALLABOUT

LJMPEXIT9

EXIT0:

CLRRIGHTSHOWFLAG

SETBTR0

EXIT9:

MOVR5,#0FFH

LJMPLOOP

;**********************************************************

;启停切换

ON_OFF:

CPLSTATUS

JBSTATUS,EXIT1

MOVTIMNOW,#15;若要停止,恢复初始定时器周期15,实现低速启动

EXIT1:

RET

;**********************************************************

;正反转切换

FOR_BACK:

JNBSTATUS,EXIT2;运转中改变方向?

MOVTIMNOW,#15;恢复初始定时器周期15

EXIT2:

CPLDIR

CPLSTATUS1

RET

;*********************************************************

;加速

FAST:

MOVDPTR,#SPEEDLEVELTAB

MOVA,SPEEDLEVELPT

INCA

MOVCA,@A+DPTR

JZEXIT3;已经最高速,则EXIT2

INCSPEEDLEVELPT

INCTIMPT

LCALLSPEEDSHIFT

EXIT3:

RET

;*********************************************************

;减速

SLOW:

MOVDPTR,#SPEEDLEVELTAB

MOVA,SPEEDLEVELPT

DECA

MOVCA,@A+DPTR

JZEXIT4;已经最低速,EXIT3

DECSPEEDLEVELPT

DECTIMPT

LCALLSPEEDSHIFT

EXIT4:

RET

;**********************************************************************

;复位

RESET:

SETBRESETFLAG

RET

;**********************************************************************

;版权显示

ABOUT:

JBSTATUS,EXIT8

JNBRIGHTSHOWFLAG,NEXT6

CLRRIGHTSHOWFLAG

SETBTR0

LJMPEXIT8

NEXT6:

LCALLRIGHTSHOW

SETBRIGHTSHOWFLAG

CLRTR0

EXIT8:

RET

;***********************************************************************

;系统初始化

INITIAL_SYS:

MOVTL0,#0C4H;基准时间60微秒

MOVTH0,#0C4H

MOVTL1,#00H;脉冲计数器清零

MOVTH1,#00H

MOVSPEEDLEVELPT,#01H;速度档显示指针初值

MOVTIMNOW,#15;初始定时器周期20

MOVTIMNOW1,#15

MOVTIMPT,#00H;定时器周期指针初值

MOVDPTR,#TIMTAB;初始目标频率200HZ

MOVA,TIMPT

MOVCA,@A+DPTR

MOVTIMTARGET,A

MOVTIMCOUNTER1,#253;采样显示计数1

MOVTIMCOUNTER2,#44;采样显示计数2

MOVSTAYCOUNTER,#40;阶段停留次数初值

SETBTR0

SETBTR1

MOVR5,#00H;键值初值

MOVP1,#0FH;键盘列扫描线置零

CLRSTATUS;启停标志初值

SETBSTATUS1;正反转标志初值

CLRRESETFLAG;初始化系统复位标志

CLRRIGHTSHOWFLAG;初始化版权显示标志位

CLRSPEEDSHOWFLAG;初始化速度显示标志位

CLRPULSE;初始脉冲置高

CLRDIR;初始转向

RET

;**********************************************************************

;执行LCD初始化工作

INITIAL_LCD:

MOVA,#30H;功能设定

LCALLW_COMMAND

MOVA,#01H

LCALLW_COMMAND;清屏

MOVA,#06H

LCALLW_COMMAND;进入模式设定

MOVA,#0CH

LCALLW_COMMAND;显示器控制,游标不显示,字闪烁

RET

;*********************************************************

;检查LCD忙碌标志

CHKBUSY_LCD:

PUSHACC

CLRRS

SETBRW

SETBE

MOVP0,#0FFH;准备读P0口

CHK:

MOVA,P0;P0口读到A

JBACC.7,CHK;BF为1则CHK,再次查BF

CLRE

POPACC

RET

;*******************************************************************

;写命令到LCD

W_COMMAND:

CALLCHKBUSY_LCD

CLRRS

CLRRW

MOVP0,A

SETBE

CLRE

RET

;*******************************************************************

;写资料到LCD

W_DATA:

CALLCHKBUSY_LCD

SETBRS

CLRRW

MOVP0,A

SETBE

CLRE

RET

;********************************************************************

;固定显示

GUDINGSHOW:

MOVADDR1,#00H

MOVN1,#08H

MOVDPTR,#DHZTAB1

LCALLDHZ

MOVADDR1,#10H

MOVN1,#08H

MOVDPTR,#DHZTAB2

LCALLDHZ

MOVADDR1,#08H

MOVN1,#08H

MOVDPTR,#DHZTAB3

LCALLDHZ

MOVADDR1,#18H

MOVN1,#08H

MOVDPTR,#DHZTAB4

LCALLDHZ

RET

DHZTAB1:

DB"电机控制界面"

DHZTAB2:

DB"转速:

000转/分钟"

DHZTAB3:

DB"速度档:

1"

DHZTAB4:

DB"转向:

正"

;*******************************************************************

;版权显示

RIGHTSHOW:

MOVADDR1,#00H

MOVN1,#08H

MOVDPTR,#DHZTAB5

LCALLDHZ

MOVADDR1,#10H

MOVN1,#08H

MOVDPTR,#DHZTAB6

LCALLDHZ

MOVADDR1,#08H

MOVN1,#08H

MOVDPTR,#DHZTAB7

LCALLDHZ

MOVADDR1,#18H

MOVN1,#08H

MOVDPTR,#DHZTAB8

LCALLDHZ

RET

DHZTAB5:

DB"卢胜军:

机械架构"

DHZTAB6:

DB"李俊生:

电路设计"

DHZTAB7:

DB"胡啸峰:

软件设计"

DHZTAB8:

DB"版权所有"

;********************************************************************

;显示16*16点阵汉字

DHZ:

MOVADDR,ADDR1

MOVB,N1

DHZ1:

MOVA,ADDR

ORLA,#80H

LCALLW_COMMAND

DHZ2:

CLRA

MOVCA,@A+DPTR

INCDPTR

LCALLW_DATA

CLRA

MOVCA,@A+DPTR

INCDPTR

LCALLW_DATA

DJNZB,DHZ2

RET

;**********************************************************************

;正反转显示子程序

FORBACKSHOW:

MOVA,#9CH

LCALLW_COMMAND

JBSTATUS1,FOR

BACK:

MOVA,#0B7H;显示反

LCALLW_DATA

MOVA,#0B4H

LCALLW_DATA

LJMPEXIT6

FOR:

MOVA,#0D5H;显示正

LCALLW_DATA

MOVA,#0FDH

LCALLW_DATA

EXIT6:

RET

;*********************************************************************

;速度档显示子程序

SPEEDLEVELSHOW:

MOVA,#8CH

LCALLW_COMMAND

MOVA,#20H

LCALLW_DATA

MOVA,SPEEDLEVELPT

MOVDPTR,#SPEEDLEVELTAB

MOVCA,@A+DPTR

LCALLW_DATA

RET

;*********************************************************************

;转速显示子程序

SPEEDSHOW:

MOVA,R3

ANLA,#0FH

ORLA,#30H

MOVGEWEI,A;准备个位显示

MOVA,R3

SWAPA

ANLA,#0FH

ORLA,#30H

MOVSHIWEI,A;准备十位显示

MOVA,R2

ANLA,#0FH

ORLA,#30H

MOVBAIWEI,A;准备百位显示

MOVA,#92H

LCALLW_COMMAND

MOVA,#3AH

LCALLW_DATA

MOVA,BAIWEI;显示百位

LCALLW_DATA

MOVA,SHIWEI;显示十位

LCALLW_DATA

MOVA,GEWEI;显示个位

LCALLW_DATA

CLRSPEEDSHOWFLAG

RET

;*******************************************************************

;速度切换

SPEEDSHIFT:

MOVDPTR,#TIMTAB

MOV

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

当前位置:首页 > PPT模板 > 卡通动漫

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

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