步进电机作为电磁机械装置,其进给的分辨率取决于细分驱动技术。采用软件细分驱动方式,由于编程的灵活性、通用性,使得步进细分驱动的成本低、效率高,要修改方案也易办到。同时,还可解决步进电机在低速时易出现的低频振动和运行中的噪声等。但单一的软件细分驱动在精度与速度兼顾上会有矛盾,细分的步数越多,精度越高,但步进电机的转动速度却降低;要提高转动速度,细分的步数就得减少。为此,设计了多级细分驱动系统,通过不同的细分档位设定,实现不同步数的细分,同时保证了不同的转动速度。
1 细分驱动原理
步进电机控制中已蕴含了细分的机理。如三相步进电机按A→B→C……的顺序轮流通电,步进电机为整步工作。而按A→AC→C→CB→B→BA→A……的顺序通电,则步进电机为半步工作。以A→B为例,若将各相电流看作是向量,则从整步到半步的变换,就是在IA与IB之间插入过渡向量IAB,因为电流向量的合成方向决定了步进电机合成磁势的方向,而合成磁势的转动角度本身就是步进电机的步进角度。显然,I AB的插入改变了合成磁势的转动大小,使得步进电机的步进角度由θb变为0.5 θb,从而也就实现了2步细分。由此可见,步进电机的细分原理就是通过等角度有规律的插入电流合成向量,从而减小合成磁势转动角度,达到步进电机细分控制的目的。
如图1所示,在三相步进电机的A相与B相之间插入合成向量AB,则实现了2步细分。要再实现4步细分,只需在A与AB之间插入3个向量I1、I2、I3,使得合成磁势的转动角度θ1=θ2=θ3=θ4,就实现了4步细分。但4步细分与2步细分是不同的,由于I1、I2、I3 3个向量的插入是对电流向量IB的分解,故控制脉冲已变成了阶梯波。细分程度越高,阶梯波越复杂。
图1 步进细分原理
在三相步进电机整步工作时,实现2步细分合成磁势转动过程为IA→IAB→IB;实现4步细分转动过程为IA→I2→IAB……;而实现8步细分则转动过程为IA→I1→I2→I3→IAB……。可见,选择不同的细分步数,就要插入不同的电流合成向量。
2 多级细分驱动系统的实现
2.1 系统组成
如图2所示,系统由主机、键盘输入系统、步进显示系统、步进控制系统组成。主机采用AT89C51单片机,其为低功耗的8位单片机,片内有一个4K字节的Flash可编程、可擦除、只读存储器,故可简化系统构成,且可满足本系统数据存储空间的要求。主机接收串行口送来的步进控制数据,并对其进行处理,以实施步进控制。键盘输入系统是用来输入控制所需的细分档位。系统设计时,考虑到随着细分的精确化,如128步细分时,步距角达到足够小,能满足各种步进要求,故以2的整数次幂作为细分基准。步进显示系统由液晶显示器显示当前细分档位和细分后的步进角等参数。为了减少电路的复杂性,该显示器显示的最小单位规定为0.01°。步进控制系统由D/A转换部分和驱动系统组成。D/A转换部分包括3片DAC0830集成芯片和数据锁存系统。DAC0830转换分辨率是8位,该芯片具有与微处理器兼容、价格低廉、接口简单、转换控制容易等优点。D/A转换部分的功能是将二进制代码表示的阶梯波数值转换为相应的电流值输出,经驱动系统放大,控制步进电机转动。驱动系统采用三级管实现电流放大。
图2 多级细分驱动系统组成
2.2 细分阶梯波的产生
细分的实现过程,就是插入电流合成向量和转换电流合成向量的过程。电流合成向量转化的前提是合成向量的插入。在系统中,由主机根据设定的细分档位,计算出相关参数,经查表生成相对应的阶梯波,即插入了电流合成向量。在正转或反转的控制信号下,阶梯波脉冲由输出端口经锁存系统送入D/A转换器件DAC0830进行电流合成向量的转化,输出对应的电流值,经驱动放大控制步进电机,从而实现了细分驱动。
电流合成向量的插入是实现细分的关键,而要得到电流合成向量,首先必须产生阶梯波。由图1知,在三相电机半步工作的情况下,要实现4步细分,就必须将B相电流分成4份,但不是等分,需保证θ1=θ2=θ3=θ4。若θ1、θ2、θ3、θ4分别对应的电流向量是IB1、IB2、IB3、IB4,则在θ1所对应的三角形内,设步进角为θb,则α=180°-θb,β=θb-θ1,由正弦定理得
考虑到一般情况,由于细分时步进电机控制脉冲波形是阶梯型,如对B相进行4步细分时,其电流输入依次为IB1、IB1+ IB2、IB1+ IB2+ IB3、IB1+ IB2+ IB3+ IB4,相应合成磁势转过的角度为θ1、θ1+θ2、θ1+θ2+θ3、θ1+θ2+θ3+θ4,此时设
IBk即为电流合成向量中B相阶梯波中第k阶的电流值,θk即为此时合成磁势相应转过的角度。由此推出,对B相来讲,在步进电机的步进角度为θb时,考虑到IA=IB,则阶梯波型其任一阶的电流值为
同理,可求得A相和C相在细分时对应的阶梯波电流值。对(1)式求解,考虑D/A器件DAC0830的转换精度是8位,转换稳定时间是1 μs,故最大进行了128步细分的运算,相应求得其对应的细分电流值,并进行了相应的转换,得到对应的二进制数值列表。此时,列表全部的数值就是在实现128步细分时,对应阶梯波各阶的电流值。
2.3 多级细分驱动的实现
要在细分的基础上实现多级细分,就必须针对不同的细分档位生成不同的阶梯波。为此,该系统采用了循环增量查表法。首先建立阶梯波数值存储表格,有两种方法,一种是针对每种细分方式建立相应的表格,其特点是细分种类多样,但表格所占空间较大;另外一种,也就是该系统采用的,以最大细分档位对应的步数仅建立一个表格,大大减少了所需的存储空间,并减少了程序运行中的不稳定因素。在具体控制中,该系统通过设定循环增量基数,使不同的细分档位对应不同的细分步数,实现了多级细分驱动。
循环增量基数是指针对不同的细分档位,实现等间隔寻址时相应跳跃的步数。循环增量基数是在细分档位设定后,由相应的计算公式得到。由于该系统最大细分步数为128步,即表格最大长度为128个字节,若细分步数为m步,则循环增量基数为LB=(128/m)-1。不同的档位对应不同的循环增量基数,同一表格就产生了多级细分所需的阶梯波。
另外,在整步控制的基础上,若细分为m步,对每m步运行中的各项电流值进行分析比较,可发现存在以下规律,即各相电流值的变化趋势,随着相位变化循环地出现,如表1所示。
表1 细分控制中各相电流值变化规律
各相 A→B B→C C→A
A相 高→递减 电流值=0 增加→高
B相 增加→高 高→递减 电流值=0
C相 电流值=0 增加→高 高→递减
在表1中,每一种保持或变化都是持续m/2步,且可看出其良好的循环性。依据以上规律,在具体控制中,该系统单独对由A→B控制时各相相应的电流值变化,实现子程序控制,而对整体控制则采用圆周移位的方式实现,即随着合成磁势在A→B、B→C、C→A的转动,对同一输出地址,相应每m步的控制数据循环出现。采用这种方式,简化了实际控制程序,提高了控制效率。