光电编码器是目前伺服系统中运用最多的传感器,它通过光电转换将输出轴上的机器几何位移量转换成脉冲或数字量。光电编码器与电机相连,当电机迁徙改变时,带动码盘旋转,便发出转速或转角旗子暗记。
目前光电编码器已经普遍运用在雷达、光电经纬仪、地面指挥仪、机器人、数控机床和高精度闭环调速系统等诸多领域。根据其刻度方法及旗子暗记输出形式,可分为增量式、绝对式以及稠浊式3种。
绝对型编码器在转轴的每一个位置均可读出唯一对应的数字码,抗滋扰、无需掉电影象,但其制造工艺繁芜、价格是增量型编码器的几倍到几十倍。因此在实际的运用中,增量型编码器霸占了统治地位。

增量式编码器由光源、码盘、检测光栅、光电检测器件和光电转换电路组成,其事理如图1所示。
图1 增量式编码器事理图
当码盘随同被测转轴迁徙改变时,检测光栅保持不动。光芒穿过码盘和检测光栅的缝隙照射在光电检测器件上,光电检测器件即会输出相位相差900电度角的近似于正弦波的两组差分电旗子暗记,这两组差分旗子暗记再经脉冲整形转换为普通的单端电平旗子暗记,末了对两个单端电平旗子暗记进行倍频、鉴相和计数等操作,以得到码盘旋转的方向和位置。
本文旨在办理增量编码器倍频、鉴相、计数的问题,充分利用FPGA丰富的逻辑模块和IO模块,设计了一种大略的接口电路,并行输出结果以供进一步操作,如图2所示。
图2 编码旗子暗记处理模块
倍频、鉴相、计数事理剖析编码器码盘和检测光栅有两组对应的等间距透光缝隙,相互错开1/4节距,用于在旋转过程中对光电发送及吸收装置产生通断变革,使得光电检测器件输出相位上相差90o的旗子暗记A、B。根据A和B的相位关系可判断出码盘的旋转方向。
当A相位超前B90o时,DIR(方向旗子暗记)为高电平,电机正转;当A滞后B90o时,DIR(方向旗子暗记)为低电平,电机反转。码盘旗子暗记经由计数器计数后得出码盘旋转的角度才能转换为位置信息,计数器加减以方向旗子暗记为依据。
与此同时,码盘上还有一个开孔用来判断码盘的绝对位置,即码盘每旋转一周将产生一个索引旗子暗记I,有的也用I作为对位、清零旗子暗记。如图3所示。
图3 编码器输出旗子暗记
编码器每旋转一周,A相和B相所输出的脉冲数相同,脉冲数决定了编码器的精度。
由图3可知,在一个编码脉冲输出周期中,A和B旗子暗记共产生了4个跳变沿。捕捉每个跳变并且进行计数,即:当A为高电平时,B在上升沿则加1,低落沿则减1;A为低电平时,B不才降沿则减l,上升沿则加l;B为高电平时,A在上升沿则减1,低落沿则加l;在B为低电平时,A在上升沿则加1,低落沿则减l。
如此在每个周期内,码盘正转时计数4次,反转时也计数4次,使计数脉冲数量增加了4倍。若一个编码脉冲旗子暗记量化偏差为φ,则四倍频后的量化偏差降为φ/4,其角位移的丈量精度提高了4倍,同光阴电码盘的分辨率也提高了4倍。
旗子暗记四倍频设计的关键在于捕捉A、B旗子暗记的上升沿和低落沿。本设计采取数字型电路即D触发器作为延迟环节来检测边沿的变革,A、B相倍频脉冲宽度和延时时间均由时钟(外部有源晶振供应)掌握,倍频后的脉冲宽度同等,可以有效地战胜传统RC微分型或积分型边沿检测电路的不敷。
A、B旗子暗记经D触发器后的旗子暗记分别记为A1、B1。将A1、B1作为倍频的原始旗子暗记,将肃清A、B旗子暗记中尖脉冲带来的影响,提高了系统的抗滋扰性能。A1、B1再经由一个D触发器,延时一个时钟周期,将产生A2、B2旗子暗记。
即A2、B2分别滞后A1、B1一个时钟周期,且A1、A2的相位分别滞后B1、B290o(假定此时电机反转,B1超前A190o),为了实现预期目的,须要能够完备捕捉到一个周期内脉冲的上升沿和低落沿,即图4的圆黑点。
从图4中虚线所示的状态可知,A1和A2,B1和B2两组旗子暗记里都有一组不同的电平状态,故采取3个异或门以求得旗子暗记的4倍频旗子暗记F4_CLK。与此同时,采取两个与非门来求得方向旗子暗记。
图4 A、B旗子暗记经D触发器后的旗子暗记图
光电编码器线数为1024,四倍频后旋转一圈产生4096个脉冲,其精度为0.0879o。为知足精度哀求,本设计采取的是16位可逆计数器,计数范围为-65536~65535,利用Altera公司的设计软件自带的LPM(宏功能模块)模块实现该计数模块。
接口电路的设计与实现本设计利用的软件是Altera公司的Quartus II,选用的芯片是CycloneⅢ的EP3C16Q240。该芯片有15408个逻辑单元,56个乘法器,4个锁相环,20个全局时钟网络,存储器容量为504Kbit,最高工频率可为437.5MHz,输入输出电压3.3V[8],如此强大的资源足以实现设计预期的功能。
1 子模块的事理图设计
FPGA具有动态可系统重构和静态可重复编程的特性,使得可以像软件一样通过编程来修正硬件的功能。我们可以通过事理图输入或者HDL(硬件描述措辞)来设计实现一个数字系统。根据上一节事理的先容,天生倍频、鉴相、计数模块的顶层文件事理图,如图5所示。
图5 顶层事理图
个中,输入为正交编码旗子暗记A、B,输出为16位计数结果。该顶层事理图分为两部分,一个是倍频、鉴相模块,如图6所示;一个是利用自带的宏功能模块实现的计数模块。编码旗子暗记经倍频、鉴相后产生四倍频旗子暗记F4_CLK、方向旗子暗记ENADD,再经由pluse_count实现16位可逆计数功能。当ENADD为高电平即码盘正转时,实现加法计数;当ENADD为低电平即码盘反转时,实现减法计数。
图6 倍频、鉴相事理图
2 编译及下载
在Quartus II中依次进行如下操作:新建工程、选择目标芯片、绘制事理图、管脚分配、芯片参数及配置选项设置,即可对设计文件进行编译。
编译完成后将在工程文件夹下将天生后缀名为sof和pof的两个下载文件,这两个文件的差异在于:前者是通过JTAG口下载到FPGA芯片中(配置FPGA芯片),直接运行程序,而掉电后程序消逝;后者是通过AS口下载到配置芯片中,上电后将自动完成配置,运行程序。
前者下载的速率快,一样平常用于FPGA的调试过程;而后者由于是烧写EPCS配置芯片(实际上是串行FLASH),速率较慢,一样平常用于开拓后期的程序固化。本次设计也是遵照调试阶段采取JTAG模式烧写下载,待程序确定后采取AS模式烧写下载[11]。
波形仿真及剖析编译通过后,我们利用Quartus II自带的仿真器进行功能仿真以验证设计的逻辑是否精确。在建立矢量源文件时,首先设置编码旗子暗记A超前B 90o得到仿真结果如图7所示;然后设置编码旗子暗记B超前A 90o得到仿真结果如图8所示。
从图7、图8中可以看出,当旗子暗记A超前B 90o即电机正转时,方向旗子暗记为高电平,实现四倍频且一个周期内加法计数4次;反之,当旗子暗记B超前A 90o即电机反转时,方向旗子暗记为低电平,同样实现四倍频且一个周期内减法计数4次。由此可知,仿真结果与理论剖析完备同等,本接口电路逻辑精确,具有实际意义。
在实际调试阶段中,连接好编码器和电路板,通过QuartusII的Signaltap II来捕捉和显示实时旗子暗记,所得的结果与预期也是同等的,从而进一步验证了设计的可靠性。
图7 旗子暗记A超前B 90o仿真结果
图8 旗子暗记B超前A 90o仿真结果
小结基于FPGA的增量式编码器的接口设计实现了对编码旗子暗记数据的采集和处理,战胜了利用ASIC(专用集成电路)对数据进行处理而产生的编译繁芜、通用性差等缺陷。该接口电路具有适用性好、集成度高、抗滋扰性强、运行可靠、数据处理快等优点,适用于各种须要利用增量式编码器丈量位置和速率的场合。
本文编自《电气技能》,标题为“基于FPGA的增量式编码器接口电路的设计”,作者为张圣超、佘洪波。