一种直接采用计算机串行口控制步进电机的新方法
3 软件设计及计算
为避免电机失步和提高电机运行速度,将步进电机运行过程为分三个阶段:低速起动并加速、高速运行、减速并停止;相应地控制脉冲也分为:升频、高频、降频三段[6],如图4所示。
在用串行口发送数据产生控制脉冲时,虽然通过改变所发字节内容的办法能产生1~5中间任意个数的脉冲,但若发送一个字节所字节的脉冲少于5个,后面接着发送数据产生的脉冲时,两个字节衔接时所产生的脉冲频率和占空比均会产生波动。为使电机运行的三个阶段能平滑过滤,需要对每个阶段的脉冲数量进行调整,使Ⅰ、Ⅱ两个阶段的步数均为5的整数倍(分别为n1×5、n2×5);将非5整数倍的步数安排在减速停车的Ⅲ阶段,javascript:window.open(this.src);" style="cursor:pointer;"/>发出脉冲数为n3×5+Δp,其中Δp=(1~4)。这可通过改变Ⅲ阶段发送的最后一个字节内容实现任意数量的脉冲输出。产生1~4个脉冲应发送的数据分别为16#FF、16#FB、16#F5、16#D5。
由图4所示的电机运行过程可知,在电机运行过程中,控制脉冲的频率f应随时变化以满足电机低速起停及高速运行的需要。脉冲频率由发送数据的波特率(B)决定,每发出一个脉冲需用两个二进制位1和0来构成其高、低电平,所以f=B/2,通过调整发送数据的波特率可改变所发出的控制脉冲的频率。按常规则波特率系列发送数据时所产生的控制脉冲频率变化较大,不能满足电机正常起停及调速的要求,为此计算机需按非标准的滤特率发送数据以产生任意频率的控制脉冲。一般在电机起动及停止阶段(Ⅰ、Ⅲ)每发送一个字节调整一次波特率,以使电机起停得尽量平滑。
Ⅰ、Ⅲ阶段频率的调整量Δf1、Δf2分别为:
Δf1=(FH-FL)/n1 (1)
Δf2=(FH-FL)/n3+1 (2)
相应的波特率的调整量ΔB1、ΔB2分别为:
ΔB1=(BH-BL)/n1=(2FH-2FL)/n1 (3)
ΔB2=(BH-BL)/(n3+1)=(2FH-2FL)/(n3+1) (4)
发送第i个字节的波特率Bi为:
javascript:window.open(this.src);" style="cursor:pointer;"/>
用串行口直接控制步进电机的控制软件流程图如图5所示。
4 高级控制功能
对步进电机的高级控制,主要是指自动找零及多机联动差补。
找零功能是指控制步进电机驱动运行机构,完成定位的过程。在找零时,电机一般以低速运行,当测到ORG信号进电机停止。由于运行速度低,为简化程序设计,每发送一个字节,在TXD端可以只输出一个脉冲,测到ORG信号则停止发送。为保证输出脉冲的占空比为50%,发送字节定为16#F0。找零程序的设计可参照图5所示。
差补是指控制两台或两台以上电机按规定的速比运行,进而控制执行机构沿规定的轨迹运行。由于一般计算机只有两个串行口,这种方法只适用于二维差补控制。通常两个串行口用相同的波特率进行发送,通过调整发送的字节数及发送每个字节所产生的脉冲个数的不同来调整两个电机的运行速度和位置。
实际运行证明,用串行口设备的步进电机控制器具有使用方便、性能稳定、成本低、可移植性好、不需安装硬件设备驱动程序等优点。
直接采用计算机串行口设计的步进电机控制器适用于对全数字式伺服电机进行控制。
本文对计算机串行口、并行口资源的二次开发应用起到了一定的借鉴应用。