光电编码器在现代电机控制系统中常用以检测转子的位置与速度,是通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的高精度角位置测量传感器。由于其具有分辨率高、响应速度快、体积小、输出稳定等特点,被广泛应用于电机伺服控制系统中。
编码器按信号输出形式分为绝对式编码器和增量式编码器。绝对式光电编码器具有输出数字量可与PC机、ARM或FPGA等器件直接接口,无累积误差等优点,但价格高、制造工艺复杂,不宜实现小型化。增量式光电编码器不具有计数和接口电路,一般输出A、B、Z脉冲信号,价格较低,在实际工程中比较常用。
文中设计了一个基于FPGA的简单且精度高的接口电路,其结构简单、性能可靠。具有滤波、硬件辨向、4倍频计数和数据锁存等功能。计数结果以并口输出,可与PC机、ARM或FPGA等部件进行并行通信。同时在并口之前,用锁存电路来消除硬件电路延时所可能引起韵计数错误,减轻了后续微机的负担,可提高被控对象的测量和控制精度。
1 4倍频电路设计原理
增量式光电编码器实际是一种旋转式角位移检测装置,它根据轴所转过的角度,输出一系列脉冲,能将机械转角变换成电脉冲,输出信号如图1所示。A、B两相信号是相位相差90°的正交方波脉冲串,每个脉冲代表被测对象旋转了一定的角度,A、B之间的相位关系则反映了被测对象的旋转方向,即当A相超前B相,转动方向为正转;当B相超前A相,转动方向为反转。Z信号是一个代表零位的脉冲信号,可用于调零、对位和重置计数器。
对于每个确定的编码器,每转过固定角位移θ,就对应一个脉冲信号,故其量化误差为θ/2。若将A或B信号4倍频,则在此θ角位移内,就会产生4个脉冲信号,其量化误差下降为0/8,光电编码器的角位移测量精度提高4倍。由于伺服系统中编码器的转速具有不可预见性,造成脉冲周期r具有不确定的特点,从而无法使用锁相环等常用倍频方案。由图1可知,在脉冲周期内,A、B两相信号共产生4次变化,尽管T不确定,但由于A、B两相方波信号之间相位关系确定,使这4次变化在相位上平均分布。如果利用这4次变化产生4倍频信号,则可以实现光电编码器测量精度的提高。
分析发现,4倍频设计的关键在于鉴别出A、B信号的上升沿和下降沿。输入信号与其延时信号异或后,就可得到倍频信号。
2 接口电路的FPGA总体方案及设计实现
光电编码器的可靠性与精度直接决定了控制系统的可靠性与控制精度。控制系统精度不会高于检测元件的精度,也就是说检测元件的误差是决定控制系统稳态误差的关键,这种误差也是控制系统无法克服的。因此,选择和设计高精度的光电编码器固然重要,但后续电路对光电编码器输出脉冲的处理精度也不容忽视。因此,一方面要选择精度高的光电编码器;另一方面要重视对光电编码器输出脉冲的处理,传统的处理方法有3种:(1)通过74LS193、74LS171、RC等搭建一个硬件电路实现脉冲的倍频和鉴相的判断。(2)直接将光电编码器的A、B信号送至微处理器,进行纯软件的倍频和鉴相的判别。(3)通过硬件电路和软件结合的方法进行光电编码器脉冲的处理,一般是指上述两种方法的结合。
对以上3种计数方法进行分析可知,用纯软件计数虽然电路简单,但是计数速度慢,微处理器工作量大,难以满足实时性要求,想得到更高的指标,只能不断地更换高性能微处理器,而且由于光电编码器的转速具有不可预见性,采用锁相环进行倍频的话会造成数据的不精确;而纯硬件电路体积大且稳定性、可靠性差、调试烦琐,而且当电阻、电容等组件参数变化时,会导致脉宽发生变化或不能产生具有稳定宽度的脉冲。此外,RC电路抗干扰能力差,反馈部分易受外界干扰,在实际应用中会出现丢失脉冲现象,以至影响控制系统的精度和可靠性。
对于滤波、延时的处理方法很多,如微分型电路其信噪比小、抗干扰性差,积分型电路可以提高信噪比,但和微分型电路一样有缺点:当输入信号频率高时,电容充放电不及时,导致输出信号严重变形;对于各路倍频电路来说,电阻和电容的参数不可能完全一致,所以倍频后的各路脉冲宽度不等,而且宽度的调节也比较困难。设计采用的数字型延时电路可以很好地克服以上延时电路的缺点,延时的时间和各路倍频的脉冲宽度由时钟控制,倍频后的脉冲宽度均匀一致。
运用FPGA实现4倍频、鉴相电路,采用全数字反馈电路的设计方法,由于倍频、鉴相电路设计在同一芯片上,一方面,FPGA门电路高数量较大,时钟频率可达上百MHz的可编程逻辑器件,可以把他设计成所需的各种逻辑器件,可并行处理多项任务。因此处理速度比单片机或DSP快得多;另一方面,芯片内部的门电路、触发器的参数特性完全一致,能保证在相同转速下4倍频脉冲信号的周期保持一致。作为板级芯片,电路做在芯片内部,其抗干扰能力比分离器件有很大提高。同时,由于现场可编程,可以方便地实现对电路的重新设计或修改,增强了系统的灵活性、通用性和可靠性。
3 仿真波形
用Verilog HDL语言完成电路描述,各功能模块运用原理图方式进行描述,芯片采用Ahera公司Cyclone系列的EP1C12Q240C8N。在Quart-usII10.0环境下进行功能和时序仿真。编译后结果如图3所示,A、B即为差分整形电路的输出,当A相超前B相时,输出正向4倍频脉冲,OA[7..0]为编码器正转时4倍频脉冲个数;反之,输出反向4倍频脉冲,OB[7..0]为反转时4倍频脉冲个数。利用OA[7..0]与OB[7..0]可以方便地实现编码器的可逆计数。
4 结束语
设计了增量式光电编码器的一种简单且高精度的鉴相、计数和接口电路,可根据光电编码器的转向进行递增或递减计数,并可与PC机、DSP、ARM等器件直接进行并行通讯。实验结果验证了设计的正确性。可以看出,利用FPGA设计光电编码器信号处理模块,无论是设计过程,还是电路结构、都变得更加简洁。另外,在应用中注意FPGA的时钟周期应小于编码器脉冲的1/4,通常FPGA的时钟已远远小于编码器脉冲周期,故在FPGA中进行处理与计数是没问题的。
文中FPGA实现的编码器倍频、鉴相电路,已经在激光跟踪系统的项目中得到验证,在系统中存在抖动及毛刺等干扰的情况下,仍能获得稳定可靠的测量结果,并且可根据需要,任意改变参数以达到目的,这对正确和合理地使用编码器,提高功能效益,从而在数控及机器人的死循环位置和速度控制系统中,提高位置调节精度、扩大速度调节范围,都有良好的效果,是一种提高编码器分辨率、实现角位移或转速测量的优选电路。