登录  |  注册
河北华利机械配件有限公司

手轮控制式步进电机的数字倍频

2014/11/5 14:39:56
        1    引言
        采用手轮驱动步进电机时,经常需要改变手轮和电机的传动比。当手轮输出的脉冲频率小于电机需要的脉冲频率时,需要对手轮的输出信号进行倍频。目前已有多种倍频方法,如利用锁相环电路倍频。
        步定电机为脉冲驱动,即输入一个脉冲电机走一步。锁相环实现的倍频是频率上的加倍,有可能引起脉冲数目的差错,从而引起电机移动距离的误差。
        另外为了保证脉冲个数的准确,可以采用输出脉冲序列的方式进行倍频。此方法每接收到一个输入脉冲,便输出一个与倍频倍数相同频率一定的脉冲序列,以达到倍频的目的。但由于输出脉冲串的频率是固定不变的,利用于手轮控制式步进电机时,因手轮输入频率不定,在输入脉冲间隔较长时,会出现较长的零输出状态,使输出不均匀,引起电机的抖动。
        鉴于以上两种倍频方法的优点与不足,提出了“变频脉冲串倍频法”。该方法不仅考虑脉冲频率,同时考虑脉冲的数量。它可以用于对速度和移动距离都敏感的场合,保证改变手轮和电机的传动比时,步进电机移动距离的准确。
        2    变频脉冲串倍频法原理
        2.1    变频脉冲串倍频法原理
        变频脉冲串倍频法通过延迟一个输入脉冲的变频脉冲序列输出实现。每检验到一个输入脉冲,不对其进行倍频处理,当下一个输入脉冲到来后,根据两输入脉冲的间隔时间(以下称输入脉冲周期)确定倍频脉冲序列的脉冲间隔时间,并输出前一个输入脉冲的倍频脉冲序列。其中脉冲串X为输入脉冲X对应的倍频序列。在第一个输入周期以一定的频率输出一个倍频脉冲序列,以保证脉冲个数的正确。
        2.2    倍频脉冲序列脉冲间隔时间的确定
        手轮控制式电机的转速不定,做倍频处理需根据手轮转速的变化而变化。倍频脉冲序列脉冲间隔时间以延迟一个脉冲的方法来实现。以八倍频为例,每检测到一个脉冲输入,先不作处理,等待下一个输入脉冲到来,并进行计时,当下一个输入脉冲到来时,以计时值的八分之一作为倍频脉冲序列的脉冲时间间隔,输出一个脉冲序列。
        对输入脉冲之间的时间间隔计时可以通过对倍频器系统时钟(clk)的计数来实现。倍频器的系统时钟设置为2ns,比输入信号快几个数量级,可以达到实际需求。
        以HEDSS的一百线手轮脉冲编码器为例,根据实验测量可发现,以手摇动手轮所得到的两路正交信号的最小周期大致在2ms左右。在一个周期内会出现四个边缘信号,即边缘提取信号的周期为0.5ms。在第一个周期内由于没有前一个周期作参考,倍频脉冲序列以转速最快的情况来考虑,设其周期为0.5ms。当手轮输出正交信号的周期为200ms左右时,手轮转动很慢,这时,便将其视为单步转动,而非连续转动。即设定若等待50ms后仍然没有边缘信号输入,则视为手轮停止转动。
        2.3.1    队列的应用
        在倍频处理中,每当检测到一个输入脉冲,便开始进行计时,并输出对上一个输入脉冲进行倍频的脉冲序列。有时下个输入脉冲到来时倍频脉冲序列输出还未结束,这时便需要进行延迟,等待上一个脉冲序列输出结束。如果连续几个脉冲序列,都在输出结束前下个输入脉冲已经到来,便会出现延迟积累,可能输出一个脉冲序列期间,有多个输入脉冲,若直接根据计时器中的值进行倍频序列输出,便有输入脉冲被忽略掉。这里,利用一个队列来对每个输入脉冲的计时值进行缓存,尽量降低输入脉冲被忽略的概率。
        2.3.2    队列长度讨论
        手轮转动处于减速状态时,后一个输入周期大于前一个周期,有足够的时间进行倍频序列输出,不会出现延迟。当手轮转动处于加速状态,即每个输入周期都小于前一个输入周期时,可能在输入周期内并不能将前一个输入脉冲的倍频序列输出结束,便会产生延迟。以八倍频为例,若每个输入周期小于前一个输入周期的八分之七,便会产生延迟积累现象,这时便应当利用队列进行缓存,以保证数据不丢失。手轮输入的加速度越大,需要的队列越长。
        当每个输入周期等于前一个输入周期的八分之七时,由50ms的周期(最单步转动情况)加速到0.5ms(最快情况),需要80个周期左右。以一百线的手轮为例,其每一步输出一个周期的正交信号,对应有四个边缘。因而经过二十个以上的步距由静止均匀加速到最快时,即使不利用队列也不会出现输入脉冲被忽略的现象,而若在二十个步距内便达到最快转速,则必须利用队列才能避免输入脉冲的忽略。
        用手控制手轮转动,速度并非均匀变化,有时会突然增大或突然减小,有可能加速度很大。假设在手轮的三个步距(12个输入周期)内,便由周期50ms加速到0.5ms,由计算可得出,需要长度为9的队列才不会出现输入脉冲的忽略现象。实践中,由手控制手轮转动时,即使是突然的加速,三个步距以内也几乎达不到最快转速,因而以三个步距加速到最快时的情况来设定队列的大小,即设置队列长度为9,在实际应用中可以达到要求。
        3    倍频器的逻辑实现
        以手轮控制步进电机运动,为了提高手轮和电机的传动比,首先要利用CPLD对手轮输出的两路正交信号进行方向识别及边缘提取。而后将边缘提取后的信号利用变频脉冲串倍频法进行倍频,以进一步的提高手轮和电机的传动比。
        3.1    手轮输出信号边缘提取和手轮转动方向识别
        手轮输出信号边缘提取采用移位寄存器和异或门实现。手轮输出的A、B两路信号是相位差/2的正交方波。每检测到A或B的边缘信号便输出一个脉冲,从而实现信号的边缘提取。当手轮控制电机正转时,在一个周期内A、B信号的状态变化为’AB’:’10’->’11’->’01’->’00’(->’10’),反转时其状态变化为’11’->’10’->’00’->’01’(->’11’)。因此,只需要检验A、B状态的变化,便可检验并提取A、B两信号的边缘,同时进行方向识别。在t0时刻检验到的AB状态为’01’,而下一时刻t1所检验到的AB状态为’11’,根据两时刻的状态变化可以发现此两时刻之间为A、B中某一信号的边缘,并且由于状态是由’01’变化为’11’,符合电机反转时的A、B状态变化,从而可以判断出转动的方向为反向。
        3.2    变频脉冲串倍频法的逻辑实现
        根据手轮的运动情况,将倍频处理分为两个进程:周期测量进程(timer)、倍频脉冲序列输出进程(output),并利用了一个元件:队列(queue)。队列及两个进程内部逻辑都以状态机的形式实现。周期测量进程完成对手轮输入脉冲边缘信号周期的测量。分为空闲、计时、处理三个状态。加电后,进入“空闲”状态。当第一个边缘信号输入时,进程切换到“计时”状态。若再次检验到边缘信号的下降沿时,进入“处理”状态;若计时值大于最大等待时间,则进入“空闲状态”。“处理”状态对计时值进行处理:若队列“非空非满”,将计时值插入到队列中,并将计时器清零;若队列为“满”,则抛弃该次计时值,并将计时器清零。完成上述操作后切换到“计时”状态。
        倍频脉冲序列输出进程进行倍频序列的输出。其有四个状态:定时状态、定时器设置状态、空闲状态、脉冲输出状态。加电后,进入“空闲”状态。当队列不为空时,系统进入“定时器设置”状态,该状态读取队列,设置定时器的定时值,并将脉冲计数器清零。完成定时器设置后,进入定时状态。达到定时值时,进入“脉冲输出”状态,输出一个脉冲,并记录脉冲输出个数。若脉冲个数小于八,则进入“定时”状态,准备输出下一个脉冲;若输出脉冲个数已达到八个,并且队列非空,则进入“定时器设置”状态,开始下一个倍频脉冲序列的输出;若输出脉冲个数已达到八个,且队列为空,则进入“空闲”状态,等待新的手轮边缘信号的输入。
        队列用来缓存脉冲间隔的计时值。队列控制进程分为“空闲”、“非空非满”、“满”、“空”四个状态。加电后,队列控制进程进入“空闲”状态。当计时器进入“计时”状态时,队列控制进程始化为“空”状态。当队列中至少有一个数据时,进入“非空非满”。队列中数据个数等于对规定长度时,进入“满”状态。
        4    仿真结果
        采用ALTERA公司的EPM240T100C5芯片,在QuartusII环境下仿真所得结果:clk为倍频器的系统时钟;A、B为手轮输出的两路正交信号;Direction为方向标记(Direction=’1’为正向);AB_iterance4为对A、B进行边缘提取后的边缘信号;AB_iterance32为对AB_iterance4以变频脉冲串倍频法进行八倍频的输出;idle_observe为空闲标志(idle_observe=’1’为空闲状态,即手轮静止)。倍频信号零输出时间较少,仿真达到预期效果。
        5    结论
        基于CPLD的“变频脉冲串倍频法”倍频器以延迟一个输入脉冲的方式实现。此方法可保证倍频时步进电机移动距离准确,是较其他倍频法更适合手轮控制式步进电机的一种数字倍频方法。同时,利用此法的倍频器可以作为数字齿轮来使用。
        本文创新点:变频脉冲串倍频法不仅考虑频率,同时保证脉冲个数准确,并利用队列进行缓存,为时间和脉冲个数上精度度都较高的数字倍频方式。
华利胶木手轮