基于单片机的步进电机控制系统1
学院:电气信息工程学院 专业:电气工程及其自动化
课程设计名称:基于单片机的步进电机控制系统 姓名:邢志兵 学号:3090501099
时间:2012.6.22
江苏大学电气信息学院单片机课程设计
一、设计任务:
1.从键盘上输入正、反转命令,转速参数(16级)和转动步数显示在LED显示器上。显示器上显示:第一位为0表示正转,为1表示反转;第二位0~F为转速等级,第三到第六位设定步数。
2. 单片机依显示器上显示的正、反转命令,转速级数和转动步数进行相应动作,转动步数减为零时停止转动。
由于步进电机是一种将电脉冲信号转换成直线或角位移的执行元件,它不能直接接到交直流电源上,而必须使用专业设备----步进电机控制驱动器,典型步进电机控制系统如图1所示:控制器可以发出脉冲频率从几赫兹到几千赫兹可以连续变化的脉冲信号,它为环形分配器提供脉冲序列,环形分配器的主要功能是把来自控制环节的脉冲序列按一定的规律分配后,经过功率放大器的放大加到步进电机驱动电源的各项输入端,以驱动步进电机的转动,环形分配器主要有两大类:一类是用计算机软件设计的方法实现环形分配器要求的功能,通常称软环形分配器。另一类是用硬件构成的环形分配器,通常称硬环形分配器。功率放大器主要对环形分配器的较小输出信号进行放大,以达到驱动步进电机的目的,步进电机的基本控制包括转向控制和速度控制两个方面。从结构上看,步进电机分为三相单三拍、三相双三拍和三相六拍3种,其基本原理如下:
江苏大学电气信息学院单片机课程设计
。
(1) 步进电机的速度控制
如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整送给步进电机的脉冲频率,就可以对步进电机进行调试。 (2) 步进电机的起停控制
步进电机由于其电气特性,运转时会有步进感。为了使电机转动平滑,减小振动,可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波,可以减小步进电机的步进角,跳过电机运行的平稳性。在步进电机停转时,为了防止因惯性而使电机轴产生顺滑,则需采用合适的锁定波形,产生锁定磁力矩,锁定步进电机的转轴,使步进电机转轴不能自由转动。 (3) 步进电机的加减速控制
在步进电机控制系统中,通过实验发现,如果信号变化太快,步进电机由于惯性跟不上电信号的变化,这时就会产生堵转和失步现象。所有步进电机在启动时,必须有加速过程,在停止时波形有减速过程。理想的加速曲线一般为指数曲线,步进电机整个降速过程频率变化规律是整个加速过程频率变化规律的逆过程。选定的曲线比较符合步进电机升降过程的运行规律,能充分利用步进电机的有效转矩,快速响应性好,缩短了升降速的时间,并可防止失步和过冲现象。在一个实际的控制系统中,要根据负载的情况来选择步进电机。步进电机能响应而不失步的最高步进频率称为“启动频率”,于此类似“停止频率”是指系统控制信号突然关断,步进电机不冲过目标位置的最高步进频率。电机的启动频率、停止频率和输出转矩都要和负载的转动惯量相适应,有了这些数据,才能有效地对电机进
江苏大学电气信息学院单片机课程设计
行加减速控制。加速过程有突然施加的脉冲启动频率f0。步进电机的最高启动频率(突跳频率)一般为0.1KHz到3~4KHz,而最高运行频率则可以达到N*102KHz,以超过最高启动频率的频率直接启动,会产生堵转和失步的现象。
(4) 步进电机的换向控制
步进电机换向时,一定要在电机降速停止或降到突跳频率范围之内在换向,以免产生较大的冲击而损坏电机。换向信号一定要在前一个方向的最后一个脉冲结束后以及下一个方向的第一个脉冲前发出。对于脉冲的设计主要要求其有一定的脉冲宽度、脉冲序列的均匀度及高低电平方式。在某一高速下的正、反向切换实质包含了降速→换向→加速3个过程。 步进电机有如下特点:
① 步进电机的角位移与输入脉冲数严格成正比,因此当它转一转后,没有累计误差,具有良好的跟随性。
② 由步进电机与驱动电路组成的开环数控系统,既非常方便、廉价,也非常可靠。同时,它也可以有角度反馈环节组成高性能的闭环数控系统。 ③ 步进电机的动态响应快,易于启停、正反转及变速。
④ 速度可在相当宽的范围内平滑调节,低速下仍能保证获得很大的转矩,因此一般可以不用减速器而直接驱动负载。
⑤ 步进电机只能通过脉冲电源供电才能运行,它不能直接用交流电源或直流电源。
⑥ 步进电机自身的噪声和振动比较大,带惯性负载的能力强。 1.3.1元器件介绍
江苏大学电气信息学院单片机课程设计
(1)步进电机
步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机区别于其他控制电机的最大特点是:它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。
步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB),步进电机又称为脉冲电机,是工业过程控制和仪表中一种能够快速启动,反转和制动的执行
状态显示电路 89C51 单片机 复位电路 键盘控制电路 电源及时钟电路 ULN2803 启动电路 步进 电机 图2 总体设计方框图
元件,其功用是将电脉冲转换为相应的角位移或直线位移,由于开环下就能实现精确定位的特点,使其在工业控制领域获得了广泛应用。步进电机的运转是由电脉冲信号控制的,其角位移量或线位移量与脉冲数成正比,每个一个脉冲,步进电机就转动一个角度(不距角)或前进、倒退一步。步进电机旋转的角度由输入的电脉冲数确定,所以,也有人称步进电机为数字/角度转换器。 ① 四相步进电机的工作原理
江苏大学电气信息学院单片机课程设计
该设计采用了20BY-0型步进电机,该电机为四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机转动。当某一相绕组通电时,对应的磁极产生磁场,并与转子形成磁路,这时,如果定子和转子的小齿没有对齐,在磁场的作用下,由于磁通具有力图走磁阻最小路径的特点,则转子将转动一定的角度,使转子与定子的齿相互对齐,由此可见,错齿是促使电机旋转的原因。 ② 步进电机的静态指标及术语
相数:产生不同队N、S磁场的激磁线圈对数,常用m表示。
拍数:完成一个磁场周期性变化所需脉冲用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB→BC→CD→DA→AB,四相八拍运行方式即A→AB→B→BC→C→CD→D→DA→A。
步距角:对应一个脉冲信号,电机转子转过的角位移用θ表示。Θ=360度(转子齿角运行拍数),以常规二、四相,转子齿角为50齿角电机为例。四相运行时步距角zz x为θ=360度/(50*4)=1.8度,八拍运行时步距角为θ=360度/(50*8)=0.9度。
定位转矩:电机在不通电的状态下,电机转子自身的锁定力矩(由磁场齿形的谐波以及机械误差造成的)。
静转矩:电机在额定静态作业下,电机不做旋转运动时,电机转轴的锁定力矩。此力矩是衡量电机体积的标准,与驱动电压及驱动电源等无关。虽然静态转矩与电磁激磁匝数成正比,与定子和转子间的气隙有关。但过分采用减小气隙,增加励磁匝数来提高静转矩是不可取的,这样会造成电机的发热及机械噪音。
江苏大学电气信息学院单片机课程设计
③ 四相步进电机的脉冲分配规律
目前,对步进电机的控制主要有分散器件组成的环形脉冲分配器、软件环形脉冲分配器、专用集成芯片环形脉冲分配器等。本设计利用单片机进行控制,主要是利用软件进行环形脉冲分配。四相步进电机的工作方式为四相单四拍,双四拍和四相八拍工作的方式。各种工作方式在电源通电时的时序 与波形分别如图1 a、b、c所示。本设计的电机工作方式为四相单四拍,根据步进电机的工作的时序和波形图,总结出其工作方式为四相单四拍时的脉冲分配规律,四相双四拍的脉冲分配规律,在每一种工作方式中,脉冲的频率越高,其转速就越快,但脉冲频率高到一定程度,步进电机跟不上频率的变化后电机会出现失步现象,所以脉冲频率一定要控制在步进电机允许的范围内。 1.3.2方案论证
从该系统的设计 要求可知,该系统的输入量为速度和方向,速度应该有增减变化,通常用加减按钮控制速度,这样只要2根口线,再加上一根方向线盒一根启动信号线共需要4根输入线。系统的输出线与步进电机的绕组数有关。这里选
江苏大学电气信息学院单片机课程设计
进电机,该电机共有四相绕组,工作电压为+5V,可以个单片机共用一个电源。步进电机的四相绕组用P1口的P1.0~P1.3控制,由于P1口驱动能力不够,因而用一片2803增加驱动能力。用P0口控制第一数码管用于显示正反转,用P2口控制第二个数码管用于显示转速等级。
硬件原理图: 步
进
电
机
基
本
原
理
:
当有一相绕组被通电激励时,磁通从正相齿,经过软铁芯的转子,并以最短路径流向负相齿,为使磁通路径最短,在磁场力的作用下,转子被迫移动,使最近的一对齿与被激励的一相对准。
江苏大学电气信息学院单片机课程设计
硬件连线图:步进电机模块插头接实验系统J3插座,(顺接)
把P1.0~P1.3分别接到BA~BD插孔。
VCC
74LS044.7kX4J3246812671267754523535AB
8032P1.0P1.1P1.2BABBBCBD1359CDP1.3数码管显示字形
LED显示器是由发光二极管构成的字段组成的显示器。
江苏大学电气信息学院单片机课程设计
显示程序任务:
• 设置显示缓冲区(7EH- 79 H) ,存放待显示数据和字符(位置码)。 • 显示译码:程序存储器中建立字形码常数表,查表得出对应数据和字符的字形码。
• 输出显示:输出字形码到显示端口。 2.字位口表(从高位起)
位置 G5 G4 G3 G2 G1 G0 数值 20H 10H 08H 04H 02H 01H
江苏大学电气信息学院单片机课程设计
(1)显示子程序模块
采用动态显示方式,即一位一位地轮流点亮(扫描)6位显示器。 在8032RAM存储器中设置六个显示缓冲区单元7EH-79H,分别存放6位显示器的显示数据(从高到低)。 主程序设计:
江苏大学电气信息学院单片机课程设计
(2)键盘输入模块
1、 实验系统有4×8的键盘结构(见键扫显示原理图)。
2、键盘的行线通过电阻接+5V,当键盘上没有键闭合时所有的行线和列线都断开,行线都为高电平。当键盘上某一键闭合时,则该键所对应的行线和列线都短路。
3、CPU逐行逐列地检查键盘的状态,可判断键盘上有无键闭合。CPU对键盘上闭合键的键号确定,可根据行线和列线的状态计算求得,也可以根据行线和列线的状态查表求得。
江苏大学电气信息学院单片机课程设计
(3)步进电机控制模块
内存分配: Led字型码分配:
江苏大学电气信息学院单片机课程设计
步序 P1.7 1 2 3 4 5 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 P1.6 P1.5 P1.4 P1.3P1.2 P1.1 P1.0 D相 C相 B相 A相 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 1 0 0 1 1 0 0 0 0 A AB B BC C CD 01H 03H 02H 06H 04H OCH 控制位 工作 状态 控制 模型 江苏大学电气信息学院单片机课程设计
7 8 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 D DA 08H 09H 键位地址分配:
07H,04H,08H,05H,09H,06H
0AH,0BH,01H,00H,02H,0FH,03H,0EH
0CH,0DH,00H,00H,00H,00H,00H,00H,16H
程序:
ORG 0000H ;main程序入口
AJMP MAIN
ORG 0050H
;主程序部分
MAIN:MOV SP,#40H MOV 79H,#00H MOV 7AH,#00H MOV 7BH,#00H MOV 7CH,#00H MOV 7DH,#00H MOV 7EH,#00H
MOV R1,#7EH ;取显示内存缓冲区的第一位a
江苏大学电气信息学院单片机课程设计
MAIN1: ACALL KEY run
MOV @R1,A
;调用按键程序 ;获得的值存放到7E中
CJNE R1,#78H,KS ;是否到79,不是,转KS
CJNE A,#16H,AGAIN ;按下的不是exc(给定值0FFH),是则跳转到
LJMP RUN ;跳转到步进电机控制部分
AGAIN: LJMP MAIN KS: DEC R1
RUN:MOV A, 7EH ;取(7EH)当前所存
JZ ZHEN JNZ FAN SJMP $
;跳转到正转
;跳转到反转
LJMP MAIN1
ZHEN:
MOV P1,#01H ;正转部分 ACALL DELAY MOV P1,#03H ACALL DELAY MOV P1,#02H ACALL DELAY MOV P1,#06H
江苏大学电气信息学院单片机课程设计
ACALL DELAY MOV P1,#04H ACALL DELAY MOV P1,#0CH ACALL DELAY MOV P1,#08H ACALL DELAY1 MOV P1,#09H
ACALL DELAY ;调用延时子程序
ANL 79H,#0FH ANL 7AH,#0FH ANL 7BH,#0FH ANL 7CH,#0FH LCALL DIR LCALL DIR
MOV R5,79H
CJNE R5,#0,Z1 DEC 79H
MOV R5,7AH
CJNE R5,#0,Z2 DEC 7AH
MOV R5,7BH
江苏大学电气信息学院单片机课程设计
CJNE R5,#0,Z3
DEC 7BH MOV R5,7CH
Z1: DEC 79H LJMP ZHEN Z2: DEC 7AH LJMP ZHEN Z3: DEC 7BH LJMP ZHEN Z4: DEC 7CH LJMP ZHEN FAN:
MOV MOV P1,#08H;反转部分 ACALL DELAY MOV P1,#09H ACALL DELAY MOV P1,#04H ACALL DELAY
江苏大学电气信息学院单片机课程设计
CJNE R5,#0,Z4 LJMP MAIN
MOV P1,#0CH ACALL DELAY
MOV P1,#02H ACALL DELAY MOV P1,#06H ACALL DELAY MOV P1,#01H ACALL DELAY MOV P1,#03H
ACALL DELAY;调用延时子程序
ANL 79H,#0FH ANL 7AH,#0FH ANL 7BH,#0FH ANL 7CH,#0FH LCALL DIR LCALL DIR
MOV R5,79H
CJNE R5,#0,F1 DEC 79H
MOV R5,7AH
CJNE R5,#0,F2
江苏大学电气信息学院单片机课程设计
DEC 7AH
MOV R5,7BH
CJNE R5,#0,F3
DEC 7BH MOV R5,7CH
F1: DEC 79H LJMP FAN F2: DEC 7AH LJMP FAN F3: DEC 7BH LJMP FAN F4: DEC 7CH LJMP FAN
DELAY: MOV R7,#0FFH DELAY10: MOV R6,7DH DELAY11: MOV R5,7DH DELAY12: DJNZ R6,DELAY12 DELAY13: DJNZ R5,DELAY13 DJNZ R7,DELAY10
江苏大学电气信息学院单片机课程设计
CJNE R5,#0,F4 LJMP MAIN
RET
DIR: MOV R0,#79H ;显示子程序 MOV R3,#01H DI0: MOV DPTR,#TEP MOV A,@R0 MOVC A,@A+DPTR CPL A
MOV DPTR,#0FFDCH MOVX @DPTR,A MOV A,R3
MOV DPTR,#0FFDDH MOVX @DPTR,A ACALL DELAY1 INC R0 MOV A,R3 JB ACC.5,DI1 RL A MOV R3,A AJMP DI0 DI1: RET
TEP: DB 3FH,06H,5BH,4FH,66H,6DH DB 7DH,07H,7FH,6FH,77H,7CH
江苏大学电气信息学院单片机课程设计
DB 39H,5EH,79H,71H, 00H
DELAY1: MOV R7,#02H ;显示延时10ms子程序 DE1: MOV R6,#0FFH DE2: DJNZ R6,DE2 DJNZ R7,DE1 RET
;按键子程序
KEY: ACALL KS1 ;掉用判断有无键按下子程序 JNZ K1
;有键按下时,(A)!=0,转消抖延时 ;调用显示 ;无键按下返回
ACALL DIR AJMP KEY
K1: ACALL DIR ACALL DIR
;调用显示 ;调用显示
ACALL KS1 ;查有无键按下,若有则为键确认按下
JNZ K2
;键按下 ,(A)!=0,转逐列扫描 ;不是键按下就返回
AJMP KEY
K2: MOV R2,#0FEH ;首列扫描字入R2 MOV R4,#00H
;首列号入R
;列扫描字送8155PA口
K3: MOV DPTR,#0FFDDH
江苏大学电气信息学院单片机课程设计
MOV A,R2 ;第一次列扫描
MOVX @DPTR,A ;使第0列线为0 INC DPTR
INC DPTR ;指向8155PC口 MOVX A,@DPTR ;8155PC口读入行状态
JB ACC.0,K4;第0行无键按下,转查第1行,ACC.0=0时为 有键按下
MOV A,#00H ;第0 行有键按下,该行首键号#00H送A AJMP LKP
;转求键号
K4: JB ACC.1,K5 ;第1行无键按下,转查第2行 MOV A,#08H ;该行有键按下 ,该行首键号#08H送A AJMP LKP
K5: JB ACC.2,K6 ;第2行无键按下,转查第3行 MOV A,#10H ;若该行有键按下,该行首键号#10H送A
AJMP LKP
K6: JB ACC.3,NEXT ;若第3行无键按下,改查下一列 MOV A,#18H ;若该行有键按下,该行首键号#18H送A
LKP: ADD A,R4
;键号=行首键号+列号
MOV DPTR,#TAB MOVC A,@A+DPTR
江苏大学电气信息学院单片机课程设计
PUSH ACC LK3: ACALL DIR
;键号进栈保护
ACALL KS1 ;等待键释放 JNZ LK3 ;若未释放,等待 POP ACC RET
;键释放,缄好送A
;键扫描结束,出口状态:(A)=键号
;指向下一列,列号加1 ;判断8列扫描完没有
NEXT: INC R4 MOV A,R2
JNB ACC.7,KND ;8列扫描完,返回 RL A
;扫描字左移一位,转变为下一列扫描字
;扫描字入R2 ;转向下一列扫描
MOV R2,A AJMP K3 KND: AJMP KEY
KS1: MOV DPTR,#0FFDDH MOV A,#00H
;指向PA口
;全扫描字#00H=00000000B
;全扫描字送PA口
MOVX @DPTR,A INC DPTR
;指向PC口
;读入PC口行状态
MOVX A,@DPTR CPL A
;变正逻辑,以高电平表示有键按下
;屏蔽高四位
ANL A,#0FH RET TAB:
;出口状态:(A)!= 0时有键按
江苏大学电气信息学院单片机课程设计
DB 07H,04H,08H,05H,09H,06H
DB 0AH,0BH,01H,00H,02H,0FH,03H,0EH ;键表
DB 0CH,0DH,00H,00H,00H,00H,00H,00H,16H
;16H对应启动键(即exc键)
END
单片机小结:
在这一周的单片机课程设计中,可以说是收获颇多的,
江苏大学电气信息学院单片机课程设计
在老师给了我们课题之后,我们立即着手查资料以及翻阅书籍,并在前面两天根据书本上的片段编写出键盘扫描输出程序,并在第三天着手把这两天的程序整合起来,来完成步进电机的控制程序的。
我们找到了许多资料,在原有的基础上对程序进行修改,并和别的小组讨论出可行的结果,在第三天程序已经能基本运行,而后在试验箱的操作上,也遇到了一些问题,比如说,程序在运行过程中,显示器示数的不变。看似简单的程序,还是出现了不少的问题。然后通过不断修改,在老师和同学的帮助下,改正了程序。最后,通过实习,我们对单片机的外围电路及其相关元件有了一个比较初步的了解,弄清楚了数码管动态扫描的原理和实现方法,初步学会了使用单片机控制直流步进电机的原理及其控制方法。
江苏大学电气信息学院单片机课程设计
因篇幅问题不能全部显示,请点此查看更多更全内容