1、第12章 步进电动机的单片机控制,12.1 步进电动机控制原理12.2 步进电动机的单片机开环控制12.3 步进电动机的转速控制12.4 步进电动机加减速定位控制,步进电动机的单片机控制步进电动机是纯数字控制的电动机,它将脉冲信号转变成角位移,即电源发一个脉冲,步进电机则转过一个固定的角度,称为步距角b。电动机的角位移正比于输入脉冲数。当连续输入一定频率的脉冲时,电动机的转速n正比于脉冲的频率,不受电压波动和负载变化的影响。由于步进电动机能直接接受数字量的控制,所以非常适合用计算机进行控制。,反应式步进电动机结构简单,性能价格比较高,因此应用非常广泛。反应式步进电动机分为三相、四相、五相、六相
2、等结构形式。相数越多步距角越小,但是结构越复杂。较为常见的三相反应式步进电动机有三相绕组和三对磁极。轮流给A、B、C三相绕组通电,步进电动机则会沿某一方向转动。,12.1 步进电动机控制原理 12.1.1 步进电动机基本知识,1. 三相绕组的通电方式 (1) 单三拍方式: 每次只给一相绕组发脉冲,三拍一个循环。ABCA 正转ACBA 反转(2) 双三拍方式: 每次只给两相绕组发脉冲,三拍一个循环。ABBCCAAB 正转ACCBBAAC 反转,(3) 单双六拍方式: 轮流给一相、两相绕组发脉冲,六拍一个循环。AABBBCCCAA 正转AACCBCBBAA 反转,2. 三相反应式步进电动机的步距角
3、b(12-1)其中: Z代表转子齿数,为常数。 N代表步进电动机工作拍数。N=Km,m为相数;K=1时为三拍方式,K=2为六拍方式。当Z=24时,三拍方式步距角为5;六拍方式步距角为2.5。,3. 三相反应式步进电动机的转速n三相反应式步进电动机的转速公式为: (12-2)其中: f代表脉冲频率(Hz)。,步进电动机需要专用的驱动控制器,它一般由脉冲发生分配单元、功率驱动单元和保护单元等组成。1. 单电压驱动单电压驱动只用一个电源对电机绕组供电,电路结构最简单,如图12-1所示。电路中的限流电阻R1决定了时间常数,R1太大会使绕组供电电流减小,电路功耗增大。单电压驱动一般只适用于小功率步进电动
4、机的驱动。,12.1.2 步进电动机的驱动方式,图12-1 步进电动机单电源驱动电路,2. 高低电压驱动在电动机开始移步时绕组加额定电压,使电机快速移步,而在锁步时,加低于额定电压的锁步电压,绕组只流过所需要的电流。这样既可减少电阻上的功耗,又可以提高电动机的运行速度。如图12-2所示。脉冲分配可以用脉冲分配器实现,但硬件电路实现脉冲分配会使结构复杂,成本较高。如果用软件实现脉冲分配,将简化电路,降低成本。,图12-2 步进电动机高低电压驱动电路,采用串行控制时,单片机与步进电动机的功率接口之间只需要两条控制线: 一条用于发送走步脉冲串(CP),另一条用于发送控制旋转方向的电平信号。图12-3
5、说明了如何用8051单片机通过串行控制来驱动步进电动机。,12.2 步进电动机的单片机开环控制 12.2.1 串行控制,图12-3 步进电机的单片机控制,1. 串行控制的硬件电路 串行控制的功率接口电路内含有一个脉冲分配器,其作用是将单路脉冲转换成多相循环变化的脉冲。它有一路输入,多路输出。随着一个个脉冲的输入,各路输出电压轮流变高和变低。例如,三相脉冲分配器有A、B和C三路输出,采用单三拍运行方式时,单片机将一个个脉冲送入脉冲分配器后,三路输出电压将按ABCA的次序轮流变高和变低。三路电压分别经功率放大器向步进电动机的三相绕组供电,步进电动机就一步一步地旋转起来。脉冲分配器一般还有一个旋转方
6、向控制端,根据方向控制端的电平高低,决定步进电动机的转向。,脉冲分配器可以使用专用芯片CH250。图12-4是使用CH250工作于三相六拍状态的接线图。CH250可通过设置引脚1、2和14、15的电平来实现双三拍、单三拍、单双六拍工作状态,每种工作状态又有正、反转两种工作状态,所以共有六种工作状态。,图12-4 CH250三相六拍脉冲分配接线图,2. 串行控制的参考程序在图12-3所示的串行控制电路中,利用8051单片机的P1.1输出方向电平,P1.0输出走步触发脉冲。走步脉冲的产生方法很简单,只要先对P1.0进行清零,过一会儿再进行一次置位就可以了。由于任何脉冲分配器对触发脉冲的最小脉宽都有
7、一定的要求,所以在清零和置位之间插入的延时时间应有适当的长度。设P1.1低电平时为正转驱动,脉冲分配器在走步触发脉冲发生正跳变时改变输出状态,则正转一步的驱动程序如下:,CW: CLRP1.1;发出正转电平信号 CLR P1.0;输出低电平,为脉冲的正跳变准备条件 LCALL DT;调用延时子程序 SETB P1.0;输出高电平,产生脉冲正跳变 RET ;返回,调用该子程序一次,电动机将正转一步。只要按一定的时间间隔调用这个子程序,就可以使电动机按一定的转速连续转动。若要电动机反方向转动,可调用如下子程序: CCW: SETB P1.1 ;发出反转电平信号CLRP1.0 ;输出低电平,为脉冲的
8、正跳变准备条件 LCALL DT;调用延时子程序 SETB P1.0 ;输出高电平,产生脉冲正跳变 RET ;返回DT: NOP ;延时子程序 NOPRET,在并行控制中,单片机通过数条并行口线,直接发出多相脉冲信号,通过功率放大后,送入步进电动机的各相绕组。这样就不再需要脉冲分配器,脉冲分配器的功能可以用软件的方法实现,从而简化了硬件电路。,12.2.2 并行控制,1. 硬件电路如图12-5所示用单片机8051的P1.0 P1.2作为并行输出,依次循环输出驱动三相反应式步进电动机所需的6个状态: AABBBCCCAA三相步进电动机为三相六拍运行状态,正转6个控制字和反转6个控制字分别存入内存
9、单元(30H35H,38H3DH)。控制字见表12-1。(见书223页),图12-5 纯软件代替脉冲分配器,2. 参考程序入口参数(R0): 控制字地址出口参数 (R0): 控制字地址以下程序为步进电动机走一步的子程序。正转子程序: ZZ: SETBRS0;1区寄存器INCR0L0: CJNER0,36H,LL1;六拍未结束则转LL1MOVR0,30H;六拍结束,则转回第一拍LL1: MOVA,R0;取控制字,MOVP1,A;控制字输出CLRRS0;返回0区RET,反转子程序: FZ: SETBRS0INCR0CJNER0,3EH,LL2MOVR0,38HLL2: MOVA,R0MOVP1,A
10、CLRRS0RET,由式(12-2)可知,改变脉冲电源的频率就改变了步进电动机的转速。控制脉冲电源的频率实际上就是控制各通电状态持续时间的长短。采用调延时子程序或定时器定时中断的方法可以实现时间控制。由于延时子程序占用大量CPU时间,因此实际应用中常采用定时器中断的方法进行时间控制。,12.3 步进电动机的转速控制,下面以8051中的T0定时器为例介绍速度控制子程序。设定时器T0以方式1工作,改变速度的时间常数放在内部RAM的30H(低位)和31H(高位)中,改变转向的标志放在F0中。在定时器中断服务程序中,要完成的操作有保护现场、步进电动机走一步、定时器重装初值和恢复现场共4步。,主程序:
11、;初始化MOVTMOD,01H;T0方式1MOVA,DATA1;转速初值ADDA,30H;转速初值转速改变值MOVTL0,AMOVA,DATA2ADDCA,31HMOVTH0,ASETBTR0;T0开始计数SETBET0;开中断SETBEA,JBF0,FZ1;判断反转,转FZ1MOV08H,2FH;正转控制字地址初值LJMPDIRFZ1: MOV08H,37H;反转控制字地址初值DIR: ;显示或检测,T0中断服务子程序: T0ZD: PUSHACCPUSHPSWJBF0,FZ1LCALL ZZSJMPT0ZZFZ1: LCALL FZT0ZZ: CLRTR0MOVA,#DATA1ADD A,
12、30HMOVTL0,AMOVA,#DATA2ADDCA,31H,MOVTH0,ASETBTR0POPPSWPOPACCRETI,步进电动机的最高启动频率一般为几百到几千Hz,而最高运行频率则可以达到几万Hz。当以高于最高启动频率的频率直接启动时,将出现“失步”现象,有时甚至会转动不起来。而如果先以低于最高启动频率的频率启动,再逐步提高频率,使电机逐步加速,则可以到达最高运行频率。此外,对于正在快速旋转的步进电动机,若在到达终点时,立即停发脉冲令其立即准确锁定,也是很难实现的,由于惯性电动机往往会冲过头,也会出现失步。,12.4 步进电动机加减速定位控制 12.4.1 加减速定位控制原理,如果电
13、动机的工作频率总是低于最高启动频率当然不会失步,但电动机工作速度和工作效率太低。采用加减速定位控制,就可以充分发挥电机的潜力,此时电动机的定位过程如图12-6所示,通过加速恒定高速减速恒定低速锁定,就可以既快又稳地准确定位。,图12-6 加减速定位控制,图12-6中,纵坐标是脉冲频率(步s),它反映了转速的高低。横坐标是时间,各段时间内走过的步数用N1、N2等表示,步数反映了距离。加速的起始频率f1应等于或略低于系统的最高启动频率。由于最高启动频率fmax与电动机的驱动方法、机械负载的性质和大小等因素有关,所以通常由实验来确定。 当然,短距离移动定位时,电动机可能还没有加速到最高运行频率就必须
14、减速了,所以没有恒定高速运行阶段。,加减速规律一般有两种选择: 一种是按指数规律,另一种是按直线规律升降速。直线加减速规律计算比较简单。 步进电动机的加减速定位控制就是控制步进电动机拖动给定的负载,经过加速、恒定、高速及减速过程,从一个位置快速运行到另一个给定位置。对电动机而言,就是从一个锁定位置,运行若干步,尽快到达另一个位置,并加以锁定。这样就有两个基本要求: 第一是总步数要符合给定值;第二是总的走步时间应尽量短。,用单片机对步进电动机进行加减速控制,实际上就是控制每次换相的时间间隔。升速时,使脉冲频率逐渐升高,减速时则相反。若单片机使用定时器中断方式来控制脉冲的频率,那么加减速控制实际上
15、就是不断改变定时器装载值的大小。为了简化程序,可以用阶梯曲线来逼近图12-6中的升降曲线,如图12-7所示。对于每一档频率,软件系统可以通过查表方式查出所需要的装载值。,图12-7 阶梯升速,在程序执行过程中,对每一档速度都要计算在该档应走的步数,然后以递减方式检查应走的步数。当减至零时,表示该档速度应走的步数已走完,于是速度字k加1,进入下一档速度。与此同时,还要递减升速过程总步数,直到升速过程总步数走完为止。减速过程的处理方法和升速过程相仿。通常,减速时间可选取与升速的时间相同。,1. 功能要求按照加速、恒速、减速三段速度曲线控制步进电动机正、反向走步,控制对象按要求准确定位。选择三相反应
16、式步进电动机作为驱动电机。2. 硬件电路采用图12-5所示的硬件电路。3. 控制方法速度控制: 通过不断改变定时器的装载值来实现。位置控制: 对通电状态计数器进行加1运算,并不断对总步数进行比较判断。,12.4 .2 加减速定位控制的程序设计,4. 程序设计整个应用程序由主程序、走步子程序和定时器中断服务程序构成。主程序的功能是对系统资源进行全面管理、处理输入与显示、计算运行参数、加载定时器中断服务程序所需的全部参数和初始值、开中断、等待走步过程的结束。电动机的转向、转速以及控制对象的直线位移量、坐标值等均可通过键盘输入或检测输入获得。主程序框图如图12-8所示(主程序清单略)。,图12-8
17、主程序框图,在定时器中断服务程序T0ZD中,主要做3件事: 使步进电动机走一步、累计转过的步数、向定时器送下一个延时参数。采用查表方式查出每一档频率所需要的装载值。中断服务程序流程图如图12-9所示。,图12-9 中断服务程序流程图,硬件资源分配: F0: 转向标志位。0表示正转,1表示反转。7FH: 运行结束标志。0表示未结束,1表示结束。0区R0: 中断程序中间寄存器。1区R0: 走步子程序中间寄存器,存放走步控制字地址指针(地址08H)。R1: 存过程速度字k,其初始值为启动速度字,S=1。R2: 存每档速度运行中应有的步数,其初始值为初始速度档的运行步数SN,S为启动速度字,Nf1t为
18、常数。,R3: 数据指针,初值为24H,存放升速总步数低字节的单元地址 。21H23H: 系统的绝对坐标值。21H为最低位,23H为最高位。电机每走一步,绝对坐标值加1。24H25H: 存放升速过程总步数 ,其中S为启动速度字,m为给定的恒速运行速度字。24H为低位,25H为高位。26H28H: 恒速过程总步数。总步数由升速过程总步数减两倍而得。26H为最低位。29H2AH: 降速过程总步数。与升速过程的总步数相同。29H为低位。,中断服务程序: TIM:PUSHA;保护现场 PUSHB PUSHPSWJBF0,ZF2;判断正反转LCALL ZZ;调正转走步子程序SJMPL2ZF2: LCAL
19、L FZ;调反转走步子程序L2: CLREA MOVR0,#21H;坐标值加1INCR0CJNER0,00H,L1INCR0,INCR0CJNER0,00H,L1INCR0INCR0L1: SETBEACJNER3,24H,L4;不是升速段转L4MOVR0,24HDECR0;升速步数减1CJNER0,0FFH,L2INCR0DECR0L2: DJNZR2,L3;该档步数未走完转L3,INCR1;该档步数走完加一档MOVA,R1MOVB,DATAMULABMOVR2,AL3: MOVA,24HORLA,25HJNZL9;升速段未结束转L9MOVR3,26H;升速段结束指向恒速段SJMPL9L4:
20、 CJNER3,26H,L6;不是恒速段转L6,MOVR0,26HDECR0;恒速步数减1CJNER0,0FFH,L5INCR0DECR0CJNER0,0FFH,L5INCR0DECR0L5: MOVA,26HORLA,27HORLA,28HJNZL9;恒速段未结束,转L9,重新装载,MOV R3,#29H;恒速段结束指向降速段 DEC R1;速度减一档 MOV A,R1;开始计算该档步数 MOVB,#DATA;读入常数N MUL AB MOV R2,A ;存好该档步数 SJMP L9 ;转重新装载L6: MOV R0,#29H;处理降速段 DECR0 ;降速段步数减一 CJNER0,#0FF
21、H,L7 INC R0 DECR0,L7: DJNZ R2,L8 ;该档速度步数未走完转L8 DEC R1 ;走完降一档 MOV A,R1 ;计算该档步数 MOV B,DATA;DATA为N MUL AB MOV R2,A ;存步数L8: MOV A,29H;判断降速段走完否 ORLA,2AH JNZL9 ;未完,转L9重新装载 CLR TR0 ;完成则停定时器,结束运行,SJMP L10L9: MOV DPTR,#TAB ;开始准备装载定时器 MOVA,R1;取速度字 RL A ;乘2,每档装载值占两字节 MOV B,A ;偏移量保留在B中 MOVC A,A+DPTR;取低位字节 CLR TR0 ADD A,TL0 MOV TL0,A ;加载低位字节 MOV A,B ;从B中取出偏移量 INC A,MOVCA,A+DPTR ;取高位字节 ADDC A,TH0 MOV TH0,A;加载高位字节 SETB TR0SJMPL11L10: SETB7FH L11: POP PSWPOPB POP ACLRRS0 RETI ;中断返回TAB: DB00H,00H,,因为启动频率不是0,所以定时器装载值表从第三个数据开始,存放1,2,,k级频率对应的定时器TL0和TH0的装载值。,