引言
在大工业现场,常常会用到一些大型的吊车调运货物。这些吊车往往高达十几米甚至几十米。通常情况下,吊车司机往往是凭借着经验来判断吊钩所升的高度,或者通过地面上人员的指挥来判断上升的位置。这样作的缺点是 不够,由于凭借人的肉眼观测,会出现很大的视觉偏差,同时又要求另外配置人员指挥,增加了不必要的人力资源浪费。基于以上考虑,本文设计出一套用于测试吊钩上升高度的电子测试系统。
根据现场测量,吊钩上升的速度较快,并且现场环境恶劣,用普通的单片机,一方面速度上跟不上,另一方面考虑到系统的稳定性,所以就选择了目前应用越来越广泛的FPGA来设计。
1、系统的原理:
本系统是利用传感器检测脉冲的个数,然后将计数脉冲转换为长度单位,来实现对吊钩实际高度的测量。具体过程如下:
首先由固定在主电动机上的光电码盘采集吊钩上升高度所转的脉冲数,该脉冲信号通过信号线送到FPGA经过处理之后开始计数,然后通过FPGA来完成脉冲到高度的换算,并将吊钩走的高度显示出来。系统组成框图如图1所示。
FPGA主要完成的任务是:(1)设定高度、主电动机轮的直径和滑轮组数。(2)高度测量。(3)显示实际高度。
高度、直径和滑轮组的设定是通过波段开关来完成的。脉冲数的输入是通过光电码盘采集到的脉冲直接送入的。显示是用四位LED进行显示的。
2、FPGA实现
本文采用的是ALTERA公司的EP1C6Q240C8型号的FPGA,整个体统采用模块化设计的思想,将各个模块用VHDL语言描述出来再进行连接。
2.1 参数设定模块
该模块是将输入的高度、直径转换为十进制的高度值和单位脉冲的宽度。用于后面的计算。其中B1[11..0]和B2[11..0]是实际输入的二进制数,输入的量分别为高度和主电动机的轮直径,这些参数根据实际情况设定,通过波段开关手动输入,由于本系统用的是12位的波段开关,所以输入的 整数为4095,直径的 可以达到毫米级,高度的 可以达到厘米级,由于本系统预先设定的高度为20米,所以确定的波段开关为12位,而实际中可以根据所应用的实际现场来具体设定波段开关的位数。
输入的二进制量经过该模块转换后变成单位脉冲的宽度(单位是十分之一毫米)和设定的高度值(单位是厘米)。
2.2 脉冲输入模块
由于在实际中为了减少电动机的负荷,往往用到一些动滑轮,那么所吊重物所走的实际高度与主电动机所转的圈数存在一个倍数关系,这个系数与滑轮组的个数有关,所以实际所计的脉冲数对应于重物走的高度之间也存在一个倍数关系,该模块的功能就是将前面输入的脉冲宽度和设定高度,以及滑轮组数通过运算转换成设定的主电动机所走的脉冲数。
在该模块中,在进行脉冲宽度和设定高度向脉冲数转换的过程中,由于FPGA不能进行浮点运算,所以要将其中的运算全部转化为整数进行运算,在这里我们采用的是 基本的四舍五入的运算方法,即当脉冲个数的十分之一位大于五时就将设定的脉冲数加一,若计算的脉冲数小于五,则舍掉。
2.3 计数模块
该模块是由四个 基本的双向加减计数器74193组成,输出值是16位, 可以计数到65535,通过输入不同的端口来控制脉冲的加减运算,输入的是设定的脉冲数,是由脉冲输入模块输出,是通过参数设置而得到的计数脉冲的个数,实际的高度是这个设定脉冲的基础上进行相应的加减运算的。
2.3.1 数字滤波模块
现场环境要求信号线的传输距离较大(50米),接收到的脉冲信号严重畸变,如图2上面的波形所示。
由于脉冲计数是对方波的上升沿进行识别的,信号中的毛刺造成FPGA无法准确识别脉冲的个数,所以必须采用一定的滤波方法,传统的滤波方法多是采用模拟电路完成的,本文是在FPGA中采用数字电路滤波,真正实现了片上系统。
滤波的原理是采用“移动窗口”的采样方法,通过设定“窗口”的宽度可以很好地采集到方波的高低电平,将毛刺滤掉。经过滤波后的波形如图2下面的波形所示,经过波形仿真发现经过滤波后波形信号明显变好。同时,该滤波方法可以根据采集波形的宽度来设定“窗口”宽度,这样就很好地实现了通用性。
2.3.2 分频模块
在滤波的过程中,信号的采样频率是很关键的,通常的采样频率是根据香农采样定律来定的,本文是根据现场要求,为了提高 ,将采样频率设定为信号频率的100倍。系统提供的晶震频率是50M的,所需要的采样频率为10KHZ,所以通过两个分频模块来完成50MHZ的频率向10KHZ的频率的转换,本文是通过两个分频模块来实现分频,首先是将50MHZ的频率分为200KHZ的频率,然后进一步将200KHZ的分为采样所需要的频率10KHZ。
2.3.3 方向检测
由于吊钩在行进的过程中有可能向上,也可能向下,本系统采用了一个相位检测系统来检测吊钩的运动方向,再根据加减计数模块的特性来进行加减运算。如图3所示,图中的输入量A,B是经过滤波电路之后的脉冲信号。输出信号AOUT,BOUT是相位检测的结果,传感器送来的脉冲信号AB相位差90度,如果首先检测到的是A相的高电平,那么AOUT输出的是A相脉冲,BOUT则一直为高电平。反之,如果首先检测到B相的高电平,那么BOUT输出为B相的脉冲,AOUT则一直为高电平。将AOUT和BOUT送到计数模块就可以完成加减计数功能了。
2.4 脉冲-高度转换模块
该模块的功能是将实际计算的脉冲数转换为对应的实际高度值输出显示,输入量分别为单位脉冲宽度Cn[9..0],滑轮组的数目n[3..0]和计算的脉冲数load[15..0]。输出的是实际高度loadToBCD[13..0],实际的高度是重物所走的高度,而计数脉冲是主电动机转过的圈数,它们之间存在一个滑轮组倍数关系的转换,也就是:
重物所走距离=(脉冲数×单位脉冲的宽度)/滑轮组数
在运算的过程中,为了提高 ,本文同样采用了四舍五入的算法,但是, 的提高是建立在增加耗用FPGA中逻辑单元的基础之上的,同时也影响了运算的速度。
2.5 整数—BCD码转换模块
实际高度要送到四位LED数码管进行显示,由脉冲-高度转换模块输出的高度数是一个整数量,需要转换为BCD码之后才能送七段码驱动电路显示。
2.6 其他模块
2.6.1 报警高度设定模块
在现场为了保证司机在操作吊钩的过程中不会出现以外情况,常常设有一个报警点,当吊钩到达这个点时,蜂鸣器会发出声音报警提示。本文设定的报警高度是1米,系统可以根据实际情况任意设定报警点。
2.6.2 报警高度输出模块
由于涉及到滑轮组,需要将设定的高度转换为主电动机所转的距离,再将这个距离与转换为相应的脉冲数alarmout[15..0]输出。
2.6.3 报警比较模块
此模块是将图12所示的模块所转换的脉冲数与实际所计的脉冲数进行比较,如果脉冲数对应的高度到达设定的报警点,蜂鸣器发出声音,提醒司机。
3、 结论
本文改变了传统的设计方法,采用了先进的FPGA设计,很好地解决了软件设计存在地速度慢,稳定性差的特点。将性能好、速度高和灵活性好的FPGA引入到设计中,设计出了一套可以应用于恶劣环境的位置测量仪。