《步进电机的工作原理与编程方法.pdf》由会员分享,可在线阅读,更多相关《步进电机的工作原理与编程方法.pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ME300B 型型 51/AVR 单片机学习开发系统应用实例单片机学习开发系统应用实例 步进电机模块的应用 步进电机是一种将电脉冲信号变换成相应的角位移的机电执行元件。控制步进电机的输入脉冲数量、频率及电机各项绕组的接通顺序,可以得到各种需要的运行特性。尤其与数字设备配套时,体现了更大的优越性,因此广泛应用于数字控制系统中。伟纳电子为了能让单片机学习者能在 ME300 系列单片机开发板上进行有关步进电机知识的学习,专门推出的一款如图 1 所示的步进电机模块。通过使用步进电机模块,使大家学习与掌握步进电机的基本工作原理和步进电机的控制方法。本文将介绍如何使用 ME300B 单片机开发系统步进电机
2、模块实现对步进电机的数字化控制。在这个控制系统中,ME300B 担负着产生脉冲,发送控制命令的任务,步进电机模块担负着执行命令的任务。图 1 一、步进电机模块简介 1、步进电机性能指标 2 相 6 线式步进电机 步距角 7.5 度 工作电压 12V(实验时也可以用 5V 供电,只是力矩变小)额定静力矩240g/cm 动力矩80g/cm 外形:3515mm 步进电机结构则如图 2 所示包含两组带有中间抽头的线圈,A-COM1-C 为一组,B-COM2-D 为另一组。整个电机共有六条线与步进电机模块 J3 连接。M桔红黄棕红黑COM1COM2ABCD 图 2 2、步进电机模块的工作原理:步进电机模
3、块中使用的驱动芯片为 ULN2003A,它是集电极开路输出的功率反相器,并且每个输出端都有一个连接到共同端(COM)的二极管,为断电后的电机绕组提供一个放电回路,起放电保护作用。内部逻辑如图 3 所示。因此,ULN2003A 非常适合驱动小功率的步进电机。图 3 步进电机模块原理图如图 4 所示。单片机的 P1.0-P1.3 输出的脉冲信号经 J2 送到 ULN2003A 的 IN1-IN4 输入端,经ULN2003A放大和倒相后的输出脉冲信号通过 J3 来驱动步进电机作相应的操作。ULN2003A的 COM 端和步进电机的 COM1、COM2 连接到 VCC。D1-D4 发光二极管可以同步显
4、示驱动步进电机的脉冲信号。二极管 D5 起外接电源极性保护作用。例如:当单片机的 P1.0 输出高电平时,ULN2003A 的 IN1 输入端则为高电平,经过ULN2003A 放大和倒相后在 OUT1 输出端输出低电平,使步进电机的 A 相得电旋转一个步距角,同时 D1 也被点亮。IN11IN22IN33IN44IN55IN66IN77OUT116OUT314OUT413OUT512OUT611OUT710OUT215COM9GND8U1ULN2003A123456J3步进电机D1D2D3D4470R1470R2470R3470R4VCCVCCVCCABCD12J11234J2D5100uFC
5、2VCCIN1IN2IN3IN40.1uFC15-12V电源 图 4 3、与 ME300 系列开发板上的连接方法 使用伟纳定做的 20CM 杜邦头实验连接线,可以很方便的将 ME300B 与步进电机模块连接起来。在 ME300B 上使用时,先将 J1(ICE)上的 P1.0P1.3 用杜邦头实验连接线连接到步进电机模块 J2 的 IN1IN4 上。再从 J7 上引出 5V 电源到步进电机模块 J1 上。注意:对于 V1.5 以下版本的 ME300B 硬件,由于 J7 输出的 5V 电源有保护,接上电机后可能引起过载保护,可以将 J7 的负端切断后直接连到电源负极,这样即可取消 J7 的过载保护
6、功能。V1.5 以上硬件的 J7 没有经过保护,可以直接输出电源给步进电机模块。二、步进电机的工作原理 当步进电机接收到一个脉冲信号,步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度,从而达到调速的目的。步进电机的这些特性非常适合使用单片机来控制,控制信号由单片机产生,步进电机则根据控制信号来动作。1、步进电机的常用术语 步距角:表示控制系统每发一个步进脉冲信号,步进电机转子所应转动的角度的理论值。Qn=2/ZN 式中:Z-转子的齿数 N-运行
7、拍数,通常等于相数或相数的整数倍,即 N=kN1 N1-步进电机相数 从式中可以看出,运行拍数和转子的齿数不同时,步距角不同,且步距角与运行拍数或转子的齿数成反比。八拍运行方式的步距角要比四拍运行方式的步距角小一半。齿距角:相邻两齿中心线间的夹角,通常定子和转子具有相同的齿距角。Qz=2/Z 式中:Z-转子的齿数 步距角与齿距角之间的关系:Qn=Qz/N=2/NZ 式中:N-步进电机工作拍数 Z-转子的齿数 步进电机转速:n=60f/NZ(转/分)式中:f 脉冲频率(Hz)N-步进电机工作拍数 Z-转子的齿数 从这个公式可以看出步进电机以八拍运行方式工作的转速是以四拍运行方式工作的转速的一半。
8、步进电机的相数:是指步进电机内部的线圈组数。运行频率:是指拖动一定负载使频率连续上升时,步进电机能不失步运行的极限频率。启动频率:是指在一定负载下直接启动而不失步的极限频率。对于步距角为 7.5 度的步进电机而言:Qn=7.5 度 Qz=QnN=7.54=30 度(齿距角)Z=2/Qz=360/30=12 (转子的齿数)2、步进电机的基本控制 (1)、控制换相顺序 步进电机的通电换相顺序严格按照步进电机的工作方式进行。通常我们把通电换相这一过 程 称 为 脉 冲 分 配。例 如,步 进 电 机 的 八 拍 工 作 方 式,其 各 相 通 电 的 顺 序为 A-AB-B-BC-C-CD-D-DA
9、(正转)或 DA-D-CD-C-BC-B-BA-A(反转),通电控制脉冲必须严格这一顺序分别控制 A,B,C,D 相的通电和断电。(2)、控制步进电机的转向 如果按给定的工作方式正序通电换相,步进电机就正转;如果按反序通电换相,则步进电机就反转。(3)、控制步进电机的速度 如果给定步进电机一个控制脉冲,它就转一步,再发一个控制脉冲,它就会再转一步。两个脉冲的间隔时间越短,步进电机就转得越快。因此,脉冲的频率决定了步进电机的转速。调整单片机发出脉冲的频率,就可以对步进电机进行调速。调整单片机输出的步进脉冲频率的方法:A、软件延时方法 改变延时的时间长度就可以改变输出脉冲的频率,但这种方法使 CP
10、U 长时间等待,无法进行其它工作,因此没有实用价值。在单独进行步进电机的演示时可以采用。B、定时器中断方法 在中断服务子程序中进行脉冲输出操作,调整定时器的定时常数就可以实现调速。这种方法占用 CPU 时间较少,是一种比较实用的调速方法。用单片机对步进电机进行速度控制,实际上就是控制每次换相的时间间隔。升速时,使脉冲频率逐渐升高,降速时则相反。3、步进电机的三种运行方式 (1)、单四拍运行方式 当电机绕组通电时序为 A-B-C-D 时为正转,通电时序为 D-C-B-A 时为反转。见表 1 这种驱动方式是如何一个时间,只有一组线圈被激磁,因此产生的力矩较小。表 1 单四拍运行时序表 正转 0F1
11、H 0F2H 0F4H 0F8H 反转 0F8H 0F4H 0F2H 0F1H N=4 步距角:Qn=Qz/N=2/NZ=360/4*12=7.5 则步进电机转一圈所需步进脉冲数:360/7.5=48 (2)、双四拍运行方式 当电机绕组通电时序为 AB-BC-CD-DA 时为正转,通电时序为 DA-CD-BC-AB 时为反转。见表 2 这种驱动方式是在任何一个时间内,有二组线圈同时被激磁,因此产生的力矩较大。表 2 双四拍运行时序表 正转 0F3H 0F6H 0FCH 0F9H 反转 0F9H 0FCH 0F6H 0F3H N=4 步距角:Qn=Qz/N=2/NZ=360/4*12=7.5 则
12、步进电机转一圈所需步进脉冲数:360/7.5=48 (3)、八拍运行方式 当 电 机 绕 组 通 电 时 序 为 A-AB-B-BC-C-CD-D-DA 时 为 正 转,通 电 时 序 为DA-D-CD-C-BC-B-BA-A 时为反转。见表 3 这种驱动方式又承为“半步驱动”,每个驱动信号只驱动半步。表 3 单双八拍运行时序表 正转 0F1H 0F3H 0F2H 0F6H 0F4H 0FCH 0F8H 0F9H 反转 0F9H 0F8H 0FCH 0F4H 0F6H 0F2H 0F3H 0F1H N=8 步距角:Qn=Qz/N=2/NZ=360/8*12=3.75 则步进电机转一圈所需步进脉
13、冲数:360/3.75=96 八拍运行方式的步距角要比单四拍和双四拍运行方式的步距角小一半,所以步进精度高一倍。三、步进电机控制的编程方法 通过上面的简单介绍,我们知道了步进电机是通过输入脉冲信号来进行控制的,即步进电机的总转动角度由输入脉冲数决定,步进电机的转速由脉冲信号频率决定,而步进电机的转动方向由改变加在步进电机绕组上的脉冲工作时序的相序来决定。(1)、控制换相顺序 首先要确定步进电机运行的工作方式,然后根据所选用工作方式的换相顺序进行脉冲分配。例如:选用八拍运行方式,根据该工作方式的换相顺序编写正转脉冲时序表和反转脉冲时序表。TABLE_F:;正转脉冲输出时序表 DB 0F1H,0F
14、3H,0F2H,0F6H,0F4H,0FCH,0F8H,0F9H DB 00 ;正转结束 TABLE_R:;反转脉冲输出时序表 DB 0F9H,0F8H,0FCH,0F4H,0F6H,0F2H,0F3H,0F1H DB 00 ;反转结束 三种运行方式的工作时序如表 1、表 2 和表 3 所示。在内存 ROM 区域开辟一个区域来存储这两个脉冲输出时序表,然后根据需要来分别调用。由于 ME300B 在 P1.4-P1.7 端口接了 4 个独立按键,所以时序表中数据的高四位均设为“F”使 P1.4-P1.7 端口处于输入状态,方便使用独立按键控制步进电机的工作状态。P1.0-P1.3 输出的步进电机
15、控制脉冲设为高电平导通,低电平截止。(2)、控制步进电机的转向 程序按照步进电机正反转的要求依次将存储在内存 ROM 区域相应的脉冲输出时序表的内容取出去驱动步进电机,就可实现步进电机运行方向的转换。MOV DPTR,#TABLE_F ;选择转向(正转)MOVC A,A+DPTR MOV P1,A ;发送驱动脉冲 MOV DPTR,#TABLE_R ;选择转向(反转)MOVC A,A+DPTR MOV P1,A ;发送驱动脉冲 (3)、步进电机的速度控制 控制步进电机的运行速度实际上就是控制单片机发出脉冲的频率,输出频率的高低是由延时时间的长短来决定的。DELAY:MOV R5,RATE DE
16、L2:MOV R7,#5 DEL3:MOV R6,#250 DJNZ R6,$DJNZ R7,DEL3 DJNZ R5,DEL2 RET 延时子程序的延时时间由 RATE 的值来决定,当 RATE 的值大时,延时时间长,步进电机的控制脉冲的频率就低,步进电机的转速就慢;当 RATE 的值小时,延时时间短,步进电机的控制脉冲的频率就高,步进电机的转速就快。因此,通过改变延时时间就可以控制步进电机的转速。(4)、步进电机的总转动角度控制 对于 7.5 度的步进电机在四拍运行方式(俗称整步)下,每输入一拍控制脉冲它就转动7.5 度,四拍转动 30 度(齿距角)。对于 7.5 度的步进电机在八拍运行方
17、式(俗称半步)下,每输入一拍控制脉冲它转动 7.5/2=3.75 度,八拍转动 30 度(齿距角)。步进电机转动一圈需要调用 360/30=12 次运行时序表。FFW:MOV R3,#5 ;转 5 圈 MOV R0,#00H MOV R1,#12 ;调 12 次运行时序表 FFW1:;一次转动 30 度 MOV A,R0 MOV DPTR,#TABLE_F ;选择运行方向 MOVC A,A+DPTR MOV P1,A LCALL DELAY INC R0 JNZ FFW1 ;1 次运行时序表是否调完?MOV R0,#00H DJNZ R1,FFW1 ;一圈是否转完?MOV R1,#12 DJN
18、Z R3,FFW1 ;设定的圈数是否转完?MOV P1,#0F0H ;步进电机停止运行 RET TABLE_F:;正转运行时序表 DB 0F3H,0F6H,0FCH,0F9H DB 00H ;正转结束标记 TABLE_R:;反转运行时序表 DB 0F9H 0FCH,0F6H,0F3H DB 00H ;反转结束标记 在这个程序中只要修改给 R3 的赋值,就可以调整步进电机的转动的圈数。(5)、步进电机的加减速控制 用单片机对步进电机进行加减速控制,实际上就是在步进电机运行过程中逐渐改变控制脉冲的频率。加速时,控制脉冲的频率逐渐升高;恒速时,控制脉冲的频率保持不变;减速时,控制脉冲的频率逐渐降低。
19、;-;加速启动过程;-FFW_RISE:MOV RATE,#10H ;确定最大延时时间 MOV R0,#00H FFW1:MOV A,R0 MOV DPTR,#TABLE_F ;选择运行方向 MOVC A,A+DPTR ;查表取数 MOV P1,A ;发送驱动脉冲 LCALL DELAY ;延时 INC R0 ;改变通电相 JNZ FFW1 MOV R0,#00H MOV A,RATE ;调整延时时间 DEC A ;减少延时时间 MOV RATE,A CJNE A,#1,FFW1 ;是否达到最高转速 ;-;恒速运行过程;-FFW_CONSTANT:MOV R1,#0FFH ;控制恒速运行时间
20、FFW2:MOV A,R0 MOV DPTR,#TABLE_F ;选择运行方向 MOVC A,A+DPTR MOV P1,A LCALL DELAY ;恒定的延时时间 INC R0 JNZ FFW2 MOV R0,#00H DJNZ R1,FFW2;-;减速停止过程;-FFW_FALL:MOV R0,#00H FFW3:MOV A,R0 MOV DPTR,#TABLE_F ;选择运行方向 MOVC A,A+DPTR MOV P1,A LCALL DELAY INC R0 JNZ FFW3 MOV R0,#00H MOV A,RATE ;调整延时时间 INC A ;增加延时时间 MOV RATE
21、,A CJNE A,#10H,FFW3 ;是否达到最低转速 RET;-注:此演示程序设定为步进电机每转动一个齿距角(300)后开始变速。(6)、编程中注意事项 在编程中调整延时时间要充分考虑到步进电机的启动频率和运行频率。如果取得延时时间比较短,单片机输出的控制脉冲频率大于步进电机的启动频率,使得步进电机无法正常启动并伴有异常声音发出,还导致步进电机迅速发热。在变换步进电机的工作方式时,要考虑重新调整延时时间,也就是调整在该工作方式下能使步进电机正常启动的控制脉冲频率。如延时时间为某一常数,在四拍运行方式下,步进电机的转速比在八拍运行方式下快一倍。在步进电机换向操作时,首先要先送一个停止指令后再进行换向操作。为了让大家更好的学习与掌握步进电机的单片机控制,我使用两种语言(ASM、C)编写了适合 C51 和 AVR 单片机的多种步进电机的演示程序,感兴趣的朋友请到伟纳电子网站http:/ 查阅与下载。山西太原 贵国庆 2006/09/04