文常保,张颖超,李建华
(长安大学 电子与控制工程学院 微纳电子研究所,陕西 西安710064)
对于轴转运动的物体来说,转动频率是最基本的电参数之一,因此测量转动频率对于研究其运动状态具有十分重要的意义[1,2]。目前,测量轴转物体频率一般采用单片机加逻辑处理器件的方法,这种方法系统构成比较简单,但存在测频速度慢、准确度低等问题[3]。
现场 可 编 程 门 阵 列 (FPGA)[4,5]是 在PAL、GAL、CPLD等可编程器件基础上发展起来的一种新型物理器件,它可以根据设计需要,通过硬件描述语言,把FPGA 内部的物理器件阵列连接起来,实现复杂数字系统设计的功能。与单片机相比,FPGA 具有并行处理、速度快、多管脚,以及容易实现大规模系统设计等众多优势[6]。因此,FPGA被广泛应用于各种复杂数字电路及系统的设计。
本系统正是基于FPGA 的上述优点,将其用于轴转物体转速的测量,并以一个具体步进电机为例,对该转速测量系统进行了实验和测试。
基于FPGA 的轴转物体转速测量系统主要由步进电机及驱动模块、光电编码器将物理量转化为电量模块和FPGA 数据处理与数码管动态显示3个模块组成,其系统结构原理图如图1所示。
在工作状态下,步进电机及驱动模块中的驱动步进电机可以以预设的速度转动以产生所需待测量,然后通过光电编码器将物理量转化为电量模块中的光电编码传感器将此物理量转化为电量,并最终在FPGA 数据处理与数码管动态显示模块中利用FPGA 将电量进行数据处理,计算出转速,并将测量结果显示在数码管上。
图1 基于FPGA 的轴转物体转速测量系统
步进电机及驱动模块由单片机、电源、LCD 显示屏、矩阵按键和步进电机5部分组成,模块结构如图2所示。
图2 步进电机及驱动模块结构
系统运行中,模块中的单片机通过IO 口生成预设的脉冲频率,步进电机在接受脉冲后开始转动,每接受一个脉冲步进电机转动1.8度,所以使用步进电机可以得到精确的预设角速度。当按下不同的矩阵按键时,可以控制单片机升高或降低预设脉冲频率,并且把设定好的脉冲频率转化成转动频率和角速度显示在LCD 上以方便与后期FPGA测量结果相对比。因此,在实际工作中步进电机及驱动模块,可以通过改变脉冲频率来控制步进电机的转动角速度,达到为系统生成各种转动角速度待测物理量目的。
系统的传感器采用机械透射式光栅、红外光电开关设计的光电编码器,这种光电编码器的具有结构简单、可靠性高的特点[7-9]。光电编码器结构示意图如图3所示,它主要有两部分组成,一部分是光电开关,另一部分是码盘。光电开关一端是红外线发射器,另一端是光敏三极管接收器;圆形的码盘上面等分了100个光栅,红外线可以透过光栅,射在接收器上。
码盘被固定在步进电机上,且与转轴垂直,随着转动不断切割红外线,光敏三极管接收器会不断产生一对正交的方波脉冲,如图4所示。因此,步进电机每转一圈,光电编码器产生100个脉冲,分辨率可达到360°/100,即一个脉冲周期表示转了3.6°。
为了将输出的波形高电平稳定在3.3v,这里采用AMS1117系列稳压芯片对波形进行进一步的整形和稳压。
根据基于FPGA 的轴转物体转速测量系统中FPGA 数据处理与数码管显示模块的运算、处理量和设计需求,这里选用Altera公司的CycloneII EP2C8Q208C8N 芯片[10]。
FPGA 数据处理与数码管显示模块如图5 所示。设计中顶层模块采用的是原理图编辑的方式,将每个子模块用单线或总线连接起来。其中的每个子模块用Verilog HDL硬件编程语言设计[11,12]。经过综合,硬件编程代码生成特定的数字逻辑,并下载到FPGA 中,实现所需的功能设计。
图5 FPGA 数据处理与数码管显示模块
在实际测试中,待测信号A、B 经过FPGA 预设的输入引脚进入系统内部,然后根据这两路脉冲信号的正交性,利用鉴相电路判断电机转动方向。鉴相电路进行相位测量的工作原理如图6所示。
图6 鉴相电路工作原理流程
因为A、B脉冲的频率完全一样,所以在接下来计算频率时,仅分析其中一个脉冲。在一个脉宽为1s、对输入信号脉冲计数允许的信号 (以下均以 “闸门”代替)作用下,计数器开始计数,1s后计数结束,计数器清零;在一个锁存信号lock_en的上升沿到来时,计数器在前1s的计数的值存入锁存器中;最终将锁存值输入到数码管译码显示模块,显示测得的频率 (此结果为脉冲频率,并非转动频率)。计数值经过锁存器的目的是使显示的数据稳定,不会因为周期性的清零信号而不断闪烁。此外,如果光电编码器一共N 个光栅,则步进电机每转一圈,产生N 个脉冲,所以测量的脉冲频率缩小N 倍即为每秒步进电机转的圈数。本系统选用的是具有100光栅的光电编码器,故没有在FPGA 测频模块中添加复杂的100倍除法器模块,而是直接在数码管动态扫描时点亮百位后面的小数点,这样既节约了FPGA 内部资源,又避免了复杂计算的误差。
在闸门到来时,有可能出现被测信号前一个脉冲还没结束、下一个脉冲还没到来的情况,这样就会出现±1 个脉冲的误差,如图7所示。为了避免这个误差,用一个D触发器使被测信号成为闸门控制的一个使能端。闸门生效时,被测信号下一个上升沿到来时计数才能生效;闸门结束后,需等到当前的被测信号脉冲结束后,计数器才停止计数。
闸门选通信号、计数器的使能、清零信号以及锁存信号lock_en都是由一个控制器 (如图7所示)产生的,用来同步闸门和被测信号的D 触发器也内嵌在控制器中。这3个信号的要求是:锁存信号lock_en与计数器使能信号正好高低电平相反,而在计数器下一个高电平到来之前,清零信号完成对计数器的清零,图8为控制器生成控制信号的波形。
为了对FPGA 数据处理与数码管显示模块进行验证,分别在QuartusII环境与外部信号接入情况下,进行了功能仿真和实际电路测试。
在功能仿真测试中,因为闸门为1s,而QuartusII自带的仿真器脉冲都是ns或者us级的,为节省仿真时间,预设输入脉冲时,把clk 时钟频率 (50 Mhz)和待测频率(1000Hz)同时扩大6 个数量级,最终结果数值上不变,仿真结果如图9所示。
图9 Quartus软件上进行功能仿真
通过功能仿真,锁存器将数据送进数码管扫描模块之前的数值为1000Hz。为了对硬件进行测试,将1000Hz的标准频率信号送入FPGA 测频模块,数码管上显示电机转动频率为10.03Hz,测量误差率为0.3%,如图10所示。
图10 测频模块对于标准1000Hz的测试结果
按照上述设计思想,建立了基于FPGA 的轴转物体转速测量系统的实验系统,如图11所示。
图11 实验系统
驱动步进电机以一定频率转动,将光电编码器产生的脉冲通过稳压电路接入FPGA 的预设引脚,上电运行系统,记录测的频率,并与预设数值频率对比,根据误差率公式
可计算出每个测量结果的误差率,实验结果见表1。
表1 实验结果
由表1 可知,系统的测量精度为0.01Hz,零点为0Hz,最大值为99.99Hz。测量结果与预设值的误差率随着待测频率的变化曲线如图12所示。
图12 误差率随着测量值的变化关系曲线
由测量结果和误差分析曲线图可知,系统误差率的变化范围在0.3%-5.6%之间。在系统初始状态时,由于转速慢,误差率相对大,当实际转速大于8Hz时,误差将随着频率的增大逐渐减小,并最终稳定在0.3%左右。
对于上述误差进行分析,可以发现这种测量误差的来源主要有3个方面:①单片机驱动步进电机时产生一定的误差,即预设值与实际值存在误差;②光电编码器将物理量转化为电量时产生一定的误差,如步进电机转动时不停的震动或光电编码器位置稍有倾斜,影响光电编码器产生脉冲;③当电机转速较慢时,光电编码器产生的脉冲较宽,FPGA 内部计数器计数值较少,1个脉冲的计数误差就可能带来很大的误差率,但是随着转速的加快,这部分误差逐渐减小。
另外,在工作范围内,光敏三极管传感器产生的光电流变化范围为1mA-2.3mA,变化量相对比较小。同时,系统中单片机、FPGA、步进电机均受外界影响不大,因此整个系统受温度等外界因素影响不大。
本文提出并设计实现了一种基于FPGA 的轴转物体转速测量系统。该系统利用单片机控制步进电机转动,产生待测物理量,再通过光电编码器将输出物理量转化为可测量的电参量,最后通过FPGA 进行数据处理,计算并显示步进电机转动的频率。该系统不仅实现了轴转物体转动频率的测量,而且避免了单片机加逻辑器件测转速的原有思路,充分发挥了FPGA 的灵活性和高效性,使得设计思路以及电路结构变得更加简洁,测量误差大大降低,系统的稳定性得到很大提高。实验结果显示,在0-99.99Hz测量范围内,该系统的测量精度为0.01Hz,误差率为0.3%-5.6%。因此,本系统的研究对于提高轴转物体转速测量速度、测量准确度等问题的解决具有一定的参考意义和价值。
[1]Situmorang Marhaposan.The DC motor speed controller using AT89S52microcontroller to rotate stepper motor attached into potentiometer in variable regulated power supply [J].Sensors and Transducers,2011,129 (6):86-96.
[2]Tadeo A T.Dynamic characterization of a mechanical coupling for a rotating shaft [J].Journal of Mechanical Engineering Science,2011,225 (3):604-616.
[3]Ke-Nung Huang,Yu-Pei Huang.Multiple-frequency ultrasonic distance measurement using direct digital frequency synthesizers[J].Sensors and Actuators A,2009,149 (1):42-50.
[4]Zhao Hao.High accuracy speed-fed grating angular acceleration measurement system based on FPGA [J].International Journal of Computer Science Issues,2012,9 (5):34-38.
[5]Jayalakshmi V,Reddy T K,Shivakumar K.Design and implementation of orthog-onal frequency division multiplexing(OFDM)transmission using FPGA [J].International Journal of Communications and Engineering,2012,3 (3):45-51.
[6]Baluta Gheorghe,Papachatzis Nikolaos.High performance microstepping system for stepper motor control [J].WSEAS Transactions on Systems,2007,6 (8):1229-1236.
[7]Alsofyani brahim M.A review on sensorless techniques for sustainable reliablity and efficient variable frequency drives of induction motors [J].Renewable and Sustainable Energy Reviews,2013,24 (C):111-121.
[8]Li Ye,BAO Ai-da.Design of low power consumption cymometer based on FPGA [C]//ICMTMA,2011:978-981.
[9]XIA Zhenhua.Realization of equal precision frequency memter[J].Electronic Design Engineering,2010,18 (6):177-178.
[10]Ricardo Menotti,Joo M P Cardoso,Marcio M Fernandes,et al.A language to program custom FPGA-based acceleration engines[J].Int J Parallel Prog,2012,40 (3):262-289.
[11]Monmasson Eric.FPGA-based controllers[J].IEEE Industrial Electronics Magazine,2011,5 (1):14-26.
[12]Xiaoyan Hou,Ling ShihFu,Heng Kok Hui.A new transducer for rotational and translational impedance measurement[J].Journal of Intelligent Material Systems and Structures,2008,19 (10):1207-1215.