1、基于单片机的步进电机控制系统基于单片机的步进电机开环控制系统胡啸峰,李俊生 (北京机械工业学院 机电工程学院)摘要:设计了以AT89C51单片机为主控制器的步进电机控制系统,该文主要介绍了系统硬件电路搭建、软件功能设计及相关机械结构的设计,其中重点阐述了步进电机驱动器的控制及LCD液晶显示,实现了步进电机的开环控制及界面显示。关键词: AT89C51;驱动器;步进电机;12864LCD液晶屏;开环控制Open-loop control system of step-motor based on single chip Xiaofeng Hu , Junsheng Li(collage of e
2、lectromechanical engineering ,Beijing industrial mechanical college)Abstract: the design use AT89C51 single chip to control the step-motor. The paper mainly introduces the design of step-motor controller , step-motor drivers , the display of LCD .the design succeeds in realizing control of step-moto
3、r.0引言步进电机是1 种纯数字控制电动机,它将电脉冲信号转换成相应位置的转换装置,是与输入脉冲对应的增量驱动元件,当负荷不超过步进电机所提供的动态转矩时,它就能实现快速起、停. 另外,它的步距角和转速不受电压和负载变化的影响,也不受环境条件如温度、气压、冲击和震动等影响,仅与脉冲频率和脉冲数有关,因此非常适合于单片机控制. 由于步进电机有快速响应特性,并且无积累误差(仅有小于7 d 的误差) ,在许多数控装置及仪器设备上都得到广泛应用. 文中设计利用了单片机对步进电机对进行数字控制。在这个控制系统中,控制器是核心,它负责发脉冲和LCD显示的控制。下文对电机速度的控制及显示做出了详细的介绍。1
4、. 总体方案设计 系统框图如(1)所示,本系统主要由5部分组成,即:步进电机,步进电机驱动器,控制电路,LCD显示,执行元件。本文重点介绍步进电机控制电路,LCD显示两部分。 图1 系统框架2. 系统设计2.1 步进电机的控制系统步进电机的控制系统主要由单片机,晶振电路,复位电路,步进电机驱动器等组成。如图(2)所示。 图2 步进电机控制电路(1)晶振电路单片机的时钟信号通常用两种电路方式获得:内部震荡方式和外部震荡方式,在引脚XTAL1和XTAL2外接晶体振荡器,就构成了内部振荡方式。由于单片机内部有一个高增益反相放大器。当外接晶振后,就构成了自激震荡器并产生震荡时钟脉冲,内部震荡方式的外部
5、电路如图(3)所示,本系统选C1和C2为30PF.图3 晶振电路(2)复位电路:复位电路如图(4)所示:图4 复位电路a.当系统上电时,C3导通,RESET键至高,系统复位。b.当S1按下,支线2导通,RESET键至高,系统复位。(3)步进电机脉冲产生 在采用单片机的步进电机开环系统中,控制系统的CP脉冲的频率实际上就是控制步进电机的运行速度。系统可以用两种方法实现:1.延时;2.定时。 在本电路设计中,采用了步进电机驱动器,步进电机驱动器及其接线电路如图(5)所示,其脉冲的输入由单片机的定时器发出,在软件中由软件来实现。 说明:在电路中,由于其他方面考虑,没有接方向信号和脱机信号两根线,读者
6、可根据实际情况自行使用。脉冲信号由单片机T0定时器中断发出,能产生任意周期的定时信号,可以通过调节脉冲频率准确的控制电机的转速。考虑到精度的要求,在容许范围之内,不考虑由于定时器装载完重新启动开始到定时器申请中断止的那段时间。(4)键盘电路:4 4 的矩阵键盘是由4 条行线和4 条列线组成,按键设置在行列线交点上, 行列线分别连接到按键开关的两端。行线通过上拉电阻接到+ 5V 上, 平时无按键动作时, 行线处于高电平状态, 而当有按键按下时,行线状态将由与此相连的列线电平决定。键盘中有无按键按下是由列线送入全扫描字,将所有行由与门相连,输出接中断。当有键按下时,行线由高变低产生负跳变,即可进入
7、中断进行处理。电路图如下:图5 键盘电路图中R1,R2,R3,R4均为4.7K,目的是将行拉高,以便在有键按下时,可以跳进中断。2.2 LCD液晶显示 本文采用12864液晶显示,其与单片机P0口相接,用于显示控制界面信息。其引脚可参照说明书,本文主要对软件的设计进行详细的介绍。采用的连接方式是直连方式,通过直接的人为控制状态位,来实现LCD的显示。其硬件连接图如图6所示 图6 LCD与单片机连接图2.3 执行机构 用步进电机带动皮带进行切割机模拟运行。其基本位置关系及定位如下图所示:每块支架均有加强筋,图中未示出。2.4 数据采集 本文采用旋转式编码器采集实时速度,并通过LCD显示出来。编码
8、器脉冲端接单片机T1计数器,通过脉冲的计数,转化为实际转数。其接线可参照有关资料。3. 软件设计。 本例中,为了使步进电机有较高的转数,采用曲线加速的方法,即不断的减小定时时间。使其由低速启动,以获得较高的转矩,之后不断的加速,最终获得所需高转速。目的在某些情况下,可以获得高转速,满足要求.其工作方式如下图:基本速度为基准的整数倍,1速为13倍,2为11倍,依次类推。要达到最高转速,由于受到转矩的限制,必须采取低转速启动,经过一段时间加到高转速。 码盘数据的处理,本文中采用AT89c51系列单片机,其只有2个定时器/计数器中断,因此如何处理码盘采回的脉冲数,是软件的核心部分。我们假设码盘在一定
9、时间内的脉冲数是N,设步进电机的转速为S,于是有如下的方程进行计算。 其中:采集编码器脉冲得时间为T(us) 编码器旋转一周发生360个脉冲。流程图如下:键盘扫描加减速控制流程图源程序见附表(1)4 结论 步进电机开环控制系统具有成本低、简单、控制方便等。在此方案中,通过曲线加速,可以获得较高的转速。通过步进电机驱动器使得步进电机的精度得以提高,运动较为平稳。使用码盘,将现有的速度实时反应在控制界面上。本实验目的在于模拟切割机的一部分,其基本功能均可实现,且步进电机的误差在容许范围之内,满足使用要求。参考文献(1) 王福瑞,等 单片机微机系统设计大全 北京:北京航天航空大学(2) 胡汉才 单片
10、机原理及其接口技术 北京:清华大学说明: 由于编者水平有限,仅供参考,如有不对之处还请多多指教。 其中胡啸峰做软件设计,李俊生电路设计,卢胜军QQ:328510960 特别感谢机电工程学院 姚小敏,李天剑老师的耐心指导和帮助。源程序:;定义控制位 RS EQU P2.0 RW EQU P2.1 E EQU P2.2 PULSE EQU P2.4 DIR EQU P2.5;程序标志位 STATUS BIT 00H ;运转停止标志位,1转0停 STATUS1 BIT 01H ;正反转标志位,1正0反 RESETFLAG BIT 02H ;系统复位标志位 SPEEDSHOWFLAG BIT 03H
11、;转速刷新标志位 RIGHTSHOWFLAG BIT 04H ;版权显示标志位;LCD显示的变量定义 N DATA 30H ;行数显示 ADDR DATA 31H ADDR1 DATA 32H N1 DATA 33H;键盘中断程序变量 KEY1 DATA 38H KEY2 DATA 39H KEY3 DATA 3AH;程序中间变量 GEWEI DATA 40H ;个位数 SHIWEI DATA 41H ;十位数 BAIWEI DATA 42H ;百位数 COUNTERL DATA 43H ;存计数器低八位 COUNTERH DATA 44H ;存计数器高八位 SPEEDLEVELPT DATA
12、 50H ;速度显示指针 TIMPT DATA 51H ;转速定时器指针 TIMNOW DATA 52H ;定时器周期当前值 TIMNOW1 DATA 53H ;递减用 TIMTARGET DATA 54H ;定时器周期目标值 TIMCOUNTER1 DATA 55H ;采样显示计数1 TIMCOUNTER2 DATA 56H ;采样显示计数2 STAYCOUNTER DATA 57H ;曲线加速阶段停留次数;延时子程序变量 DR0 DATA 48H DR1 DATA 49H;*;入口地址设置 ORG 0000H LJMP START ORG 0003H LJMP KEYBOARD ORG 0
13、00BH LJMP PULSE_GENERATOR ORG 0013H LJMP LIMITSTART: MOV SP,#60H SETB EA ;开中断控制位 SETB EX0 ;开INT0 SETB EX1 ;开INT1 SETB ET0 ;开定时器0中断 SETB IT0 ;INT0下降沿触发 SETB IT1 ;INT1下降沿触发 MOV IP,#02H ;设定中断优先级 MOV TMOD,#52H ;定时器0方式2,计数器1方式1START1: LCALL INITIAL_SYS LCALL INITIAL_LCD ;初始化液晶面板 LCALL GUDINGSHOW ;液晶面板固定显
14、示LOOP: CJNE R5,#0FFH,KEY ;键值改变,则KEY JB RESETFLAG,START1 ;若按下复位键,则START1 JB SPEEDSHOWFLAG,NEXT ;若速度显示计时到,则NEXT SJMP LOOPNEXT: LCALL HEX2BCD ;十六进制到BCD码转换 LCALL SPEEDSHOW ;显示转速 SJMP LOOP;*;键值处理KEY: JNB RIGHTSHOWFLAG,NEXT0 ;没有显示版权,到NEXT0判断按下的键 LCALL GUDINGSHOW LJMP NEXT5NEXT0: CJNE R5,#0AH,NEXT1 LCALL O
15、N_OFFNEXT1: CJNE R5,#0BH,NEXT2 LCALL FOR_BACKNEXT2: CJNE R5,#0CH,NEXT3 LCALL FASTNEXT3: CJNE R5,#0DH,NEXT4 LCALL SLOWNEXT4: CJNE R5,#0EH,NEXT5 LCALL RESETNEXT5: LCALL FORBACKSHOW LCALL SPEEDLEVELSHOW CJNE R5,#0FH,EXIT0 LCALL ABOUT LJMP EXIT9EXIT0: CLR RIGHTSHOWFLAG SETB TR0EXIT9: MOV R5,#0FFH LJMP L
16、OOP;*;启停切换ON_OFF: CPL STATUS JB STATUS,EXIT1 MOV TIMNOW,#15 ;若要停止,恢复初始定时器周期15,实现低速启动EXIT1: RET;*;正反转切换FOR_BACK: JNB STATUS,EXIT2 ;运转中改变方向? MOV TIMNOW,#15 ;恢复初始定时器周期15EXIT2: CPL DIR CPL STATUS1 RET;*;加速FAST: MOV DPTR,#SPEEDLEVELTAB MOV A,SPEEDLEVELPT INC A MOVC A,A+DPTR JZ EXIT3 ;已经最高速,则EXIT2 INC SPE
17、EDLEVELPT INC TIMPT LCALL SPEEDSHIFTEXIT3: RET;*;减速SLOW: MOV DPTR,#SPEEDLEVELTAB MOV A,SPEEDLEVELPT DEC A MOVC A,A+DPTR JZ EXIT4 ;已经最低速,EXIT3 DEC SPEEDLEVELPT DEC TIMPT LCALL SPEEDSHIFTEXIT4: RET;*;复位RESET: SETB RESETFLAG RET;*;版权显示ABOUT: JB STATUS,EXIT8 JNB RIGHTSHOWFLAG,NEXT6 CLR RIGHTSHOWFLAG SET
18、B TR0 LJMP EXIT8NEXT6: LCALL RIGHTSHOW SETB RIGHTSHOWFLAG CLR TR0EXIT8: RET;*;系统初始化INITIAL_SYS: MOV TL0,#0C4H ;基准时间60微秒 MOV TH0,#0C4H MOV TL1,#00H ;脉冲计数器清零 MOV TH1,#00H MOV SPEEDLEVELPT,#01H ;速度档显示指针初值 MOV TIMNOW,#15 ;初始定时器周期20 MOV TIMNOW1,#15 MOV TIMPT,#00H ;定时器周期指针初值 MOV DPTR,#TIMTAB ;初始目标频率200HZ
19、MOV A,TIMPT MOVC A,A+DPTR MOV TIMTARGET,A MOV TIMCOUNTER1,#253 ;采样显示计数1 MOV TIMCOUNTER2,#44 ;采样显示计数2 MOV STAYCOUNTER,#40 ;阶段停留次数初值 SETB TR0 SETB TR1 MOV R5,#00H ;键值初值 MOV P1,#0FH ;键盘列扫描线置零 CLR STATUS ;启停标志初值 SETB STATUS1 ;正反转标志初值 CLR RESETFLAG ;初始化系统复位标志 CLR RIGHTSHOWFLAG ;初始化版权显示标志位 CLR SPEEDSHOWFL
20、AG ;初始化速度显示标志位 CLR PULSE ;初始脉冲置高 CLR DIR ;初始转向 RET;*;执行LCD初始化工作INITIAL_LCD: MOV A,#30H ;功能设定 LCALL W_COMMAND MOV A,#01H LCALL W_COMMAND ;清屏 MOV A,#06H LCALL W_COMMAND ;进入模式设定 MOV A,#0CH LCALL W_COMMAND ;显示器控制,游标不显示,字闪烁 RET;*;检查LCD忙碌标志CHKBUSY_LCD: PUSH ACC CLR RS SETB RW SETB E MOV P0,#0FFH ;准备读P0口CH
21、K: MOV A,P0 ;P0口读到A JB ACC.7,CHK ;BF为1则CHK,再次查BF CLR E POP ACC RET;*;写命令到LCDW_COMMAND: CALL CHKBUSY_LCD CLR RS CLR RW MOV P0,A SETB E CLR E RET;*;写资料到LCDW_DATA: CALL CHKBUSY_LCD SETB RS CLR RW MOV P0,A SETB E CLR E RET;*;固定显示GUDINGSHOW: MOV ADDR1,#00H MOV N1,#08H MOV DPTR,#DHZTAB1 LCALL DHZ MOV ADDR
22、1,#10H MOV N1,#08H MOV DPTR,#DHZTAB2 LCALL DHZ MOV ADDR1,#08H MOV N1,#08H MOV DPTR,#DHZTAB3 LCALL DHZ MOV ADDR1,#18H MOV N1,#08H MOV DPTR,#DHZTAB4 LCALL DHZ RETDHZTAB1: DB 电机控制界面 DHZTAB2: DB 转速:000转分钟DHZTAB3: DB 速度档: 1 DHZTAB4: DB 转向: 正 ;*;版权显示RIGHTSHOW: MOV ADDR1,#00H MOV N1,#08H MOV DPTR,#DHZTAB5
23、LCALL DHZ MOV ADDR1,#10H MOV N1,#08H MOV DPTR,#DHZTAB6 LCALL DHZ MOV ADDR1,#08H MOV N1,#08H MOV DPTR,#DHZTAB7 LCALL DHZ MOV ADDR1,#18H MOV N1,#08H MOV DPTR,#DHZTAB8 LCALL DHZ RETDHZTAB5: DB 卢胜军:机械架构DHZTAB6: DB 李俊生:电路设计DHZTAB7: DB 胡啸峰:软件设计DHZTAB8: DB 版权所有 ;*;显示16*16点阵汉字DHZ: MOV ADDR,ADDR1 MOV B,N1DHZ
24、1: MOV A,ADDR ORL A,#80H LCALL W_COMMANDDHZ2: CLR A MOVC A,A+DPTR INC DPTR LCALL W_DATA CLR A MOVC A,A+DPTR INC DPTR LCALL W_DATA DJNZ B,DHZ2 RET;*;正反转显示子程序FORBACKSHOW: MOV A,#9CH LCALL W_COMMAND JB STATUS1,FORBACK: MOV A,#0B7H ;显示反 LCALL W_DATA MOV A,#0B4H LCALL W_DATA LJMP EXIT6FOR: MOV A,#0D5H ;显
25、示正 LCALL W_DATA MOV A,#0FDH LCALL W_DATAEXIT6: RET;*;速度档显示子程序SPEEDLEVELSHOW: MOV A,#8CH LCALL W_COMMAND MOV A,#20H LCALL W_DATA MOV A,SPEEDLEVELPT MOV DPTR,#SPEEDLEVELTAB MOVC A,A+DPTR LCALL W_DATA RET;*;转速显示子程序SPEEDSHOW: MOV A,R3 ANL A,#0FH ORL A,#30H MOV GEWEI,A ;准备个位显示 MOV A,R3 SWAP A ANL A,#0FH ORL A,#30H MOV SHIWEI,A ;准备十位显示 MOV A,R2 ANL A,#0FH ORL A,#30H MOV BAIWEI,A ;准备百位显示 MOV A,#92H LCALL W_COMMAND MOV A,#3AH LCALL W_DATA MOV A,BAIWEI ;显示百位 LCALL W_DATA MOV A,SHIWEI ;显示十位 LCALL W_DATA MOV A,GEWEI ;显示个位 LCALL W_DATA CLR SPEEDSHOWFLAG RET;*;速度切换SPEEDSHIFT: MOV DPTR,#TIMTAB MOV
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1