第12章步进电动机的单片机控制12.1步进电动机控制原理12.2步进电动机的单片机开环控制12.3步进电动机的转速控制12.4步进电动机加减速定位控制步进电动机的单片机控制步进电动机是纯数字控制的电动机,它将脉冲信号转变成角位移,即电源发一个脉冲,步进电机则转过一个固定的角度,称为步距角θb。电动机的角位移正比于输入脉冲数。当连续输入一定频率的脉冲时,电动机的转速n正比于脉冲的频率,不受电压波动和负载变化的影响。由于步进电动机能直接接受数字量的控制,所以非常适合用计算机进行控制。反应式步进电动机结构简单,性能价格比较高,因此应用非常广泛。反应式步进电动机分为三相、四相、五相、六相等结构形式。相数越多步距角越小,但是结构越复杂。较为常见的三相反应式步进电动机有三相绕组和三对磁极。轮流给A、B、C三相绕组通电,步进电动机则会沿某一方向转动。12.1步进电动机控制原理12.1.1步进电动机基本知识1.三相绕组的通电方式(1)单三拍方式:每次只给一相绕组发脉冲,三拍一个循环。A→B→C→A正转A→C→B→A反转(2)双三拍方式:每次只给两相绕组发脉冲,三拍一个循环。AB→BC→CA→AB正转AC→CB→BA→AC反转(3)单双六拍方式:轮流给一相、两相绕组发脉冲,六拍一个循环。A→AB→B→BC→C→CA→A正转A→AC→C→BC→B→BA→A反转2.三相反应式步进电动机的步距角θb(12-1)其中:Z代表转子齿数,为常数。N代表步进电动机工作拍数。N=K×m,m为相数;K=1时为三拍方式,K=2为六拍方式。当Z=24时,三拍方式步距角为5°;六拍方式步距角为2.5°。NZ360θob3.三相反应式步进电动机的转速n三相反应式步进电动机的转速公式为:(12-2)其中:f代表脉冲频率(Hz)。分)(转/NZ60fn步进电动机需要专用的驱动控制器,它一般由脉冲发生分配单元、功率驱动单元和保护单元等组成。1.单电压驱动单电压驱动只用一个电源对电机绕组供电,电路结构最简单,如图12-1所示。电路中的限流电阻R1决定了时间常数,R1太大会使绕组供电电流减小,电路功耗增大。单电压驱动一般只适用于小功率步进电动机的驱动。12.1.2步进电动机的驱动方式图12-1步进电动机单电源驱动电路2.高低电压驱动在电动机开始移步时绕组加额定电压,使电机快速移步,而在锁步时,加低于额定电压的锁步电压,绕组只流过所需要的电流。这样既可减少电阻上的功耗,又可以提高电动机的运行速度。如图12-2所示。脉冲分配可以用脉冲分配器实现,但硬件电路实现脉冲分配会使结构复杂,成本较高。如果用软件实现脉冲分配,将简化电路,降低成本。图12-2步进电动机高低电压驱动电路采用串行控制时,单片机与步进电动机的功率接口之间只需要两条控制线:一条用于发送走步脉冲串(CP),另一条用于发送控制旋转方向的电平信号。图12-3说明了如何用8051单片机通过串行控制来驱动步进电动机。12.2步进电动机的单片机开环控制12.2.1串行控制图12-3步进电机的单片机控制1.串行控制的硬件电路串行控制的功率接口电路内含有一个脉冲分配器,其作用是将单路脉冲转换成多相循环变化的脉冲。它有一路输入,多路输出。随着一个个脉冲的输入,各路输出电压轮流变高和变低。例如,三相脉冲分配器有A、B和C三路输出,采用单三拍运行方式时,单片机将一个个脉冲送入脉冲分配器后,三路输出电压将按A→B→C→A…的次序轮流变高和变低。三路电压分别经功率放大器向步进电动机的三相绕组供电,步进电动机就一步一步地旋转起来。脉冲分配器一般还有一个旋转方向控制端,根据方向控制端的电平高低,决定步进电动机的转向。脉冲分配器可以使用专用芯片CH250。图12-4是使用CH250工作于三相六拍状态的接线图。CH250可通过设置引脚1、2和14、15的电平来实现双三拍、单三拍、单双六拍工作状态,每种工作状态又有正、反转两种工作状态,所以共有六种工作状态。图12-4CH250三相六拍脉冲分配接线图2.串行控制的参考程序在图12-3所示的串行控制电路中,利用8051单片机的P1.1输出方向电平,P1.0输出走步触发脉冲。走步脉冲的产生方法很简单,只要先对P1.0进行清零,过一会儿再进行一次置位就可以了。由于任何脉冲分配器对触发脉冲的最小脉宽都有一定的要求,所以在清零和置位之间插入的延时时间应有适当的长度。设P1.1低电平时为正转驱动,脉冲分配器在走步触发脉冲发生正跳变时改变输出状态,则正转一步的驱动程序如下:CW:CLRP1.1;发出正转电平信号CLRP1.0;输出低电平,为脉冲的正跳变准备条件LCALLDT;调用延时子程序SETBP1.0;输出高电平,产生脉冲正跳变RET;返回调用该子程序一次,电动机将正转一步。只要按一定的时间间隔调用这个子程序,就可以使电动机按一定的转速连续转动。若要电动机反方向转动,可调用如下子程序:CCW:SETBP1.1;发出反转电平信号CLRP1.0;输出低电平,为脉冲的正跳变准备条件LCALLDT;调用延时子程序SETBP1.0;输出高电平,产生脉冲正跳变RET;返回DT:NOP;延时子程序NOPRET在并行控制中,单片机通过数条并行口线,直接发出多相脉冲信号,通过功率放大后,送入步进电动机的各相绕组。这样就不再需要脉冲分配器,脉冲分配器的功能可以用软件的方法实现,从而简化了硬件电路。12.2.2并行控制1.硬件电路如图12-5所示用单片机8051的P1.0~P1.2作为并行输出,依次循环输出驱动三相反应式步进电动机所需的6个状态:A→AB→B→BC→C→CA→A三相步进电动机为三相六拍运行状态,正转6个控制字和反转6个控制字分别存入内存单元(30H~35H,38H~3DH)。控制字见表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,ACLRRS0RET由式(12-2)可知,改变脉冲电源的频率就改变了步进电动机的转速。控制脉冲电源的频率实际上就是控制各通电状态持续时间的长短。采用调延时子程序或定时器定时中断的方法可以实现时间控制。由于延时子程序占用大量CPU时间,因此实际应用中常采用定时器中断的方法进行时间控制。12.3步进电动机的转速控制下面以8051中的T0定时器为例介绍速度控制子程序。设定时器T0以方式1工作,改变速度的时间常数放在内部RAM的30H(低位)和31H(高位)中,改变转向的标志放在F0中。在定时器中断服务程序中,要完成的操作有保护现场、步进电动机走一步、定时器重装初值和恢复现场共4步。主程序:…;初始化MOVTMOD,#01H;T0方式1MOVA,#DATA1;转速初值ADDA,30H;转速初值+转速改变值MOVTL0,AMOVA,#DATA2ADDCA,31HMOVTH0,ASETBTR0;T0开始计数SETBET0;开中断SETBEAJBF0,FZ1;判断反转,转FZ1MOV08H,#2FH;正转控制字地址初值…LJMPDIRFZ1:MOV08H,#37H;反转控制字地址初值…DIR:…;显示或检测T0中断服务子程序:T0ZD:PUSHACCPUSHPSWJBF0,FZ1LCALLZZSJMPT0ZZFZ1:LCALLFZT0ZZ:CLRTR0MOVA,#DATA1ADDA,30HMOVTL0,AMOVA,#DATA2ADDCA,31HMOVTH0,ASETBTR0POPPSWPOPACCRETI步进电动机的最高启动频率一般为几百到几千Hz,而最高运行频率则可以达到几万Hz。当以高于最高启动频率的频率直接启动时,将出现“失步”现象,有时甚至会转动不起来。而如果先以低于最高启动频率的频率启动,再逐步提高频率,使电机逐步加速,则可以到达最高运行频率。此外,对于正在快速旋转的步进电动机,若在到达终点时,立即停发脉冲令其立即准确锁定,也是很难实现的,由于惯性电动机往往会冲过头,也会出现失步。12.4步进电动机加减速定位控制12.4.1加减速定位控制原理如果电动机的工作频率总是低于最高启动频率当然不会失步,但电动机工作速度和工作效率太低。采用加减速定位控制,就可以充分发挥电机的潜力,此时电动机的定位过程如图12-6所示,通过加速→恒定高速→减速→恒定低速→锁定,就可以既快又稳地准确定位。图12-6加减速定位控制图12-6中,纵坐标是脉冲频率(步/s),它反映了转速的高低。横坐标是时间,各段时间内走过的步数用N1、N2等表示,步数反映了距离。加速的起始频率f1应等于或略低于系统的最高启动频率。由于最高启动频率fmax与电动机的驱动方法、机械负载的性质和大小等因素有关,所以通常由实验来确定。当然,短距离移动定位时,电动机可能还没有加速到最高运行频率就必须减速了,所以没有恒定高速运行阶段。加减速规律一般有两种选择:一种是按指数规律,另一种是按直线规律升降速。直线加减速规律计算比较简单。步进电动机的加减速定位控制就是控制步进电动机拖动给定的负载,经过加速、恒定、高速及减速过程,从一个位置快速运行到另一个给定位置。对电动机而言,就是从一个锁定位置,运行若干步,尽快到达另一个位置,并加以锁定。这样就有两个基本要求:第一是总步数要符合给定值;第二是总的走步时间应尽量短。用单片机对步进电动机进行加减速控制,实际上就是控制每次换相的时间间隔。升速时,使脉冲频率逐渐升高,减速时则相反。若单片机使用定时器中断方式来控制脉冲的频率,那么加减速控制实际上就是不断改变定时器装载值的大小。为了简化程序,可以用阶梯曲线来逼近图12-6中的升降曲线,如图12-7所示。对于每一档频率,软件系统可以通过查表方式查出所需要的装载值。图12-7阶梯升速在程序执行过程中,对每一档速度都要计算在该档应走的步数,然后以递减方式检查应走的步数。当减至零时,表示该档速度应走的步数已走完,于是速度字k加1,进入下一档速度。与此同时,还要递减升速过程总步数,直到升速过程总步数走完为止。减速过程的处理方法和升速过程相仿。通常,减速时间可选取与升速的时间相同。1.功能要求按照加速、恒速、减速三段速度曲线控制步进电动机正、反向走步,控制对象按要求准确定位。选择三相反应式步进电动机作为驱动电机。2.硬件电路采用图12-5所示的硬件电路。3.控制方法速度控制:通过不断改变定时器的装载值来实现。位置控制:对通电状态计数器进行加1运算,并不断对总步数进行比较判断。12.4.2加减速定位控制的程序设计4.程序设计整个应用程序由主程序、走步子程序和定时器中断服务程序构成。主程序的功能是对系统资源进行全面管理、处理输入与显示、计算运行参数、加载定时器中断服务程序所需的全部参数和初始值、开中断、等待走步过程的结束。电动机的转向、转速以及控制对象的直线位移量、坐标值等均可通过键盘输入或检测输入获得。主程序框图如图12-8所示(主程序清单略)。图12-8主程序框图在定时器中断服务程序T0ZD中,主要做3件事:使步进电动机走一步、累计转过的步数、向定时器送下一个延时参数。采用查表方式查出每一档频率所需要的装载值。中断服务程序流程图如图12-9所示。图12-9中断服务程序流程图硬件资源分配:F0:转向标志位。0表示正转,1表示反转。7FH:运行结束标志。0表示未结束,1表示结束。0区R0:中断程序中间寄存器。1区R0:走步子程序中间寄存器,存放走步控制字地址指针(地址08H)。R1:存过程速度字k,其初始值为启动速度字,S=1。R2:存每档速度运行中应有的步数,其初始值为初始速度档的运行步数SΔN,