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