张 锋,彭正辉,任 强,朱今祥,林曙光
(中国电波传播研究所,山东 青岛266107)
光电编码器是一种集光、机、电为一体的传感器;编码器是把角位移或直线位移转换成电信号的一种装置,它以高精度计量光栅作为检测元件,通过光电转换技术,将输入的位移等物理量转变为数字脉冲信号,通过计算脉冲的个数,实现精确的位移测量;具有精度高、测量范围广、响应快、体积小、重量轻、性能稳定可靠、易于维护、性价比高等优点[1,2]。目前,光电编码器广泛应用于雷达、电梯、伺服电机、地面指挥仪、机器人、数控机床等自动化精密设备中。
本文提出了一种应用于探地雷达、可灵活控制测距精度的基于现场可编程门阵列(FPGA)平台的设计方案,通过FPGA 平台的工作,实现了在探地雷达实验中准确的脉冲计数和显示距离。
增量式编码器是一种通过光电转换将输出轴上的机械几何位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。它由光栅盘和光电检测装置组成,光栅盘是在一定直径的圆板上等分地开通若干个长方形孔。由于光电码盘与电动机同轴,电动机旋转时,光栅盘与电动机同速旋转,经发光二极管等电子元件组成的检测装置检测输出若干脉冲信号,编码盘上涂有两道相差90°黑白相同的栅栏,分别称之为A 道和B 道,其输出脉冲也是相差90°。当编码器正向旋转时,A 相比B相超前90°,当编码器反向旋转时,A 相比B 相滞后90°。正常情况下,编码器的正转和反转输出波形分别如图1 和图2所示。
图1 编码器正转时序图Fig 1 Timing diagram of encoder positive rotation
图2 编码器反转时序图Fig 2 Timing diagram of encoder reverse rotation
基于FPGA技术的光电编码器系统,采用Xilinx公司的Spartan—6 系列XC6SLX16 芯片作为主芯片,完成对编码器的输出信号采集、辨向、分频、计数、锁存、传输等功能[3]。
探地雷达工作时,按照测距轮触发,每一个测距轮脉冲完成一次雷达发射触发和接收回波信号;雷达具有不同的重复周期,为满足雷达不同工作模式的需求,利用FPGA 对雷达信号的处理和光电编码器时序进行合理的设计,需要设计不同的编码器分频数,满足雷达的时序要求;本研究的光电编码器选用每转1000 个脉冲,对应轮子直径为1 m,故每个测距轮的精度为1 mm;根据雷达的使用情况,雷达运行速度要求不低于2 km/h,即每个脉冲对应的时间要求为1.8 ms,雷达的重复周期为7 ms,为满足每个测距轮内至少有一个雷达回波信号,故至少四分频,以四分频为例,对应的每个测距轮脉冲时间为7.2 ms,即测距轮精度为4 mm;满足探地雷达对小目标探测的工作需要。若改变探地雷达对探测目标类型的需求,可利用硬件描述语言实现不同的分频,从而实现雷达对测量精度的变化,满足探地雷达的需求。
增量式光电编码器本质上是一种旋转式角位移检测装置,它根据轴所转动的角度,输出一系列的脉冲,将机械转角转变为电脉冲,其输出信号如图1、图2 所示。A,B 两相信号是相位相差90°的正交方波脉冲序列,每一个脉冲都代表被测对象旋转了一定的角度,A,B 之间的相位关系则反映出被测对象的旋转方向,即当A 相超前B 相,转动方向为正转;当B 相超前A 相,转动方向则为反转[4,5]。
在脉冲周期T 内A,B 两相信号共产生了4 次变化,尽管T 不确定,但由于A,B 两相方位信号之间相位关系确定,使这4 次变化在相位上平均分布。
当光栅正向移动时,光栅输出的A 相信号的相位超前B 相90°,则在一个周期T 内,两相信号共有4 次相对变化:a→b→c→d,对应二进制编码为00→10→11→01→00。此时,运动方向为正转,这样,如果每发生一次变化,可逆计数器便实现一次加计数。
当光栅反向移动时,光栅输出的A 相信号的相位滞后B 相90°,则在一个周期T 内,两相信号共有4 次相对变化:a→b→c→d,对应二进制编码为00→01→11→10→00。此时,运动方向为反转,同理,如果每发生一次变化,可逆计数器便实现一次减计数。
根据编码器的特点,对A,B 两相的信号编码为4 种状态,从而完成对测距轮正、反转的判别;FPGA 具体Verilog HDL 主要代码如下[6]:
ChipScope 是Xilinx 推出的一种在线调试软件,主要功能是通过JTAG 口、在线实时地读出FPGA 的内部信号。基本原理是利用FPGA 中未使用的BlockRAM,根据用户设定的触发条件将信号实时地保存到BlockRAM 中,然后通过JTAG 口传送到PC,显示出时序波形。Chipscope 本身是一个逻辑分析仪,主要用于在板上测试过程中采集并观察芯片内部信号,以便于调试。
图3 ~图6 截图是采用ChipScope 软件,实时对输出管脚观察的结果;其中,FLAGA_IBUF 和FLAGB_IBUF 分别是A 相和B 相编码器经过采集后的信号,图3 显示A 相提前B 相90°,代表编码器正转;图4 显示A 相滞后B 相90°,代表编码器反转;o_clk_a 和o_clk_b 分别是对A,B 相原始采集的编码器经过四分频后的两相信号,XLXI_188/flag_out是经过信号处理后辨向的标志位、当变化:0→1→0→1,即低位flag_out(0)有脉冲,表示正转,当变化:0→2→0→2,即高位flag_out(1)有脉冲,表示反转;当正转时,按照递增计数,如图5 的ZFZ_COUNT_管脚显示的结果:CA→CB→CC→CD(十六进制表示的数值)递增;当反转时,按照递减计数,如图6 的count_jian_管脚显示的结果51→50→4F→4E(十六进制表示的数值)递减;通过ChipScope 实时监测的结果,当测距轮正、反转时,雷达能实时接收编码器的距离信息,进行雷达的正常工作。
图3 编码器正转实时检测输出结果图Fig 3 Output result of encoder positive rotation real time detection
图4 编码器反转实时检测输出结果图Fig 4 Output result of encoder reverse rotation real time detection
图7 、图8 是通过USB 接口,把经过FPGA 采集处理后的光电编码器的测距轮信号实时传送给上位机,然后通过Matlab 对采集的信号画图显示的结果。验证了距离的正确性。图7 是正转时的测距轮正转显示结果,从10.5 m 行进到20.8 m;图8 是反转时的测距轮反转显示结果,从10 m后退到18.9 m。
图5 编码器正转实时递增输出结果图Fig 5 Real time incremental output result of encoder positive rotation
图6 编码器正转实时递减输出结果图Fig 6 Real time decreasing output result of encoder positive rotation
图8 测距轮反转显示结果Fig 8 Display results of inverse rotation
本文提出了探地雷达增量式光电编码器使用的一种解决方案,并同时给出了基于FPGA 的高精度光电编码器实现方法;将待测量双路信号转换成测量光电编码器旋转的转数和对应的位移,经过四分频和锁存电路实时应用于探地雷达中,实测试验结果证明:该方案能够实现准确的脉冲计数、显示距离;实现了小型、高集成的高频率数据传输,并通过USB 接口与上位机通信;而且FPGA 可以根据探地雷达不同工作需要,任意的改变参数,维护方便、可靠性高。
[1] 姜何 勇,范永坤,王 涛,等.基于FPGA 的增量式光电编码器计数电路设计[J].仪器仪表用户,2008,15(3):90-92.
[2] 马永杰,董秀娟,王 轲.基于FPGA 的高精度光电编码器接口电路的设计[J].西北师范大学学报,2011,47(4):43-47.
[3] 张宝宜,邱宏安,苏文涛,等.基于CPLD 的高精度位移测量电路的设计与实现[J].仪表技术与传感器,2006(7):41-43.
[4] 孙敬先,李长星,郑 敏,等.基于FPGA 的光电编码器信号的处理方法[J].计量与测试技术,2011,38(1):62-64.
[5] 张九才,王文祥,杨显志,等.增量式编码器抗抖动性研究[J].自动化仪表,2005,26(10):38-39.
[6] 薛小刚,葛毅敏.Xinlix ISE 9.X FPGA/CPLD 设计指南[M].北京:人民邮电出版社,2007.