引言
在大工業(yè)現(xiàn)場(chǎng),常常會(huì)用到一些大型的吊車調(diào)運(yùn)貨物。這些吊車往往高達(dá)十幾米甚至幾十米。通常情況下,吊車司機(jī)往往是憑借著經(jīng)驗(yàn)來判斷吊鉤所升的高度,或者通過地面上人員的指揮來判斷上升的位置。這樣作的缺點(diǎn)是精度不夠,由于憑借人的肉眼觀測(cè),會(huì)出現(xiàn)很大的視覺偏差,同時(shí)又要求另外配置人員指揮,增加了不必要的人力資源浪費(fèi)?;谝陨峡紤],本文設(shè)計(jì)出一套用于測(cè)試吊鉤上升高度的電子測(cè)試系統(tǒng)。
根據(jù)現(xiàn)場(chǎng)測(cè)量,吊鉤上升的速度較快,并且現(xiàn)場(chǎng)環(huán)境惡劣,用普通的單片機(jī),一方面速度上跟不上,另一方面考慮到系統(tǒng)的穩(wěn)定性,所以就選擇了目前應(yīng)用越來越廣泛的FPGA來設(shè)計(jì)。
1、系統(tǒng)的原理:
本系統(tǒng)是利用傳感器檢測(cè)脈沖的個(gè)數(shù),然后將計(jì)數(shù)脈沖轉(zhuǎn)換為長度單位,來實(shí)現(xiàn)對(duì)吊鉤實(shí)際高度的測(cè)量。具體過程如下:
首先由固定在主電動(dòng)機(jī)上的光電碼盤采集吊鉤上升高度所轉(zhuǎn)的脈沖數(shù),該脈沖信號(hào)通過信號(hào)線送到FPGA經(jīng)過處理之后開始計(jì)數(shù),然后通過FPGA來完成脈沖到高度的換算,并將吊鉤走的高度顯示出來。系統(tǒng)組成框圖如圖1所示。
FPGA主要完成的任務(wù)是:(1)設(shè)定高度、主電動(dòng)機(jī)輪的直徑和滑輪組數(shù)。(2)高度測(cè)量。(3)顯示實(shí)際高度。
高度、直徑和滑輪組的設(shè)定是通過波段開關(guān)來完成的。脈沖數(shù)的輸入是通過光電碼盤采集到的脈沖直接送入的。顯示是用四位LED進(jìn)行顯示的。
2、FPGA實(shí)現(xiàn)
本文采用的是ALTERA公司的EP1C6Q240C8型號(hào)的FPGA,整個(gè)體統(tǒng)采用模塊化設(shè)計(jì)的思想,將各個(gè)模塊用VHDL語言描述出來再進(jìn)行連接。
2.1 參數(shù)設(shè)定模塊
該模塊是將輸入的高度、直徑轉(zhuǎn)換為十進(jìn)制的高度值和單位脈沖的寬度。用于后面的計(jì)算。其中B1[11..0]和B2[11..0]是實(shí)際輸入的二進(jìn)制數(shù),輸入的量分別為高度和主電動(dòng)機(jī)的輪直徑,這些參數(shù)根據(jù)實(shí)際情況設(shè)定,通過波段開關(guān)手動(dòng)輸入,由于本系統(tǒng)用的是12位的波段開關(guān),所以輸入的最大整數(shù)為4095,直徑的精度可以達(dá)到毫米級(jí),高度的精度可以達(dá)到厘米級(jí),由于本系統(tǒng)預(yù)先設(shè)定的高度為20米,所以確定的波段開關(guān)為12位,而實(shí)際中可以根據(jù)所應(yīng)用的實(shí)際現(xiàn)場(chǎng)來具體設(shè)定波段開關(guān)的位數(shù)。
輸入的二進(jìn)制量經(jīng)過該模塊轉(zhuǎn)換后變成單位脈沖的寬度(單位是十分之一毫米)和設(shè)定的高度值(單位是厘米)。
2.2 脈沖輸入模塊
由于在實(shí)際中為了減少電動(dòng)機(jī)的負(fù)荷,往往用到一些動(dòng)滑輪,那么所吊重物所走的實(shí)際高度與主電動(dòng)機(jī)所轉(zhuǎn)的圈數(shù)存在一個(gè)倍數(shù)關(guān)系,這個(gè)系數(shù)與滑輪組的個(gè)數(shù)有關(guān),所以實(shí)際所計(jì)的脈沖數(shù)對(duì)應(yīng)于重物走的高度之間也存在一個(gè)倍數(shù)關(guān)系,該模塊的功能就是將前面輸入的脈沖寬度和設(shè)定高度,以及滑輪組數(shù)通過運(yùn)算轉(zhuǎn)換成設(shè)定的主電動(dòng)機(jī)所走的脈沖數(shù)。
在該模塊中,在進(jìn)行脈沖寬度和設(shè)定高度向脈沖數(shù)轉(zhuǎn)換的過程中,由于FPGA不能進(jìn)行浮點(diǎn)運(yùn)算,所以要將其中的運(yùn)算全部轉(zhuǎn)化為整數(shù)進(jìn)行運(yùn)算,在這里我們采用的是最基本的四舍五入的運(yùn)算方法,即當(dāng)脈沖個(gè)數(shù)的十分之一位大于五時(shí)就將設(shè)定的脈沖數(shù)加一,若計(jì)算的脈沖數(shù)小于五,則舍掉。
2.3 計(jì)數(shù)模塊
該模塊是由四個(gè)最基本的雙向加減計(jì)數(shù)器74193組成,輸出值是16位,最大可以計(jì)數(shù)到65535,通過輸入不同的端口來控制脈沖的加減運(yùn)算,輸入的是設(shè)定的脈沖數(shù),是由脈沖輸入模塊輸出,是通過參數(shù)設(shè)置而得到的計(jì)數(shù)脈沖的個(gè)數(shù),實(shí)際的高度是這個(gè)設(shè)定脈沖的基礎(chǔ)上進(jìn)行相應(yīng)的加減運(yùn)算的。
2.3.1 數(shù)字濾波模塊
現(xiàn)場(chǎng)環(huán)境要求信號(hào)線的傳輸距離較大(50米),接收到的脈沖信號(hào)嚴(yán)重畸變,如圖2上面的波形所示。
由于脈沖計(jì)數(shù)是對(duì)方波的上升沿進(jìn)行識(shí)別的,信號(hào)中的毛刺造成FPGA無法準(zhǔn)確識(shí)別脈沖的個(gè)數(shù),所以必須采用一定的濾波方法,傳統(tǒng)的濾波方法多是采用模擬電路完成的,本文是在FPGA中采用數(shù)字電路濾波,真正實(shí)現(xiàn)了片上系統(tǒng)。
濾波的原理是采用“移動(dòng)窗口”的采樣方法,通過設(shè)定“窗口”的寬度可以很好地采集到方波的高低電平,將毛刺濾掉。經(jīng)過濾波后的波形如圖2下面的波形所示,經(jīng)過波形仿真發(fā)現(xiàn)經(jīng)過濾波后波形信號(hào)明顯變好。同時(shí),該濾波方法可以根據(jù)采集波形的寬度來設(shè)定“窗口”寬度,這樣就很好地實(shí)現(xiàn)了通用性。
2.3.2 分頻模塊
在濾波的過程中,信號(hào)的采樣頻率是很關(guān)鍵的,通常的采樣頻率是根據(jù)香農(nóng)采樣定律來定的,本文是根據(jù)現(xiàn)場(chǎng)要求,為了提高精度,將采樣頻率設(shè)定為信號(hào)頻率的100倍。系統(tǒng)提供的晶震頻率是50M的,所需要的采樣頻率為10KHZ,所以通過兩個(gè)分頻模塊來完成50MHZ的頻率向10KHZ的頻率的轉(zhuǎn)換,本文是通過兩個(gè)分頻模塊來實(shí)現(xiàn)分頻,首先是將50MHZ的頻率分為200KHZ的頻率,然后進(jìn)一步將200KHZ的分為采樣所需要的頻率10KHZ。
2.3.3 方向檢測(cè)
由于吊鉤在行進(jìn)的過程中有可能向上,也可能向下,本系統(tǒng)采用了一個(gè)相位檢測(cè)系統(tǒng)來檢測(cè)吊鉤的運(yùn)動(dòng)方向,再根據(jù)加減計(jì)數(shù)模塊的特性來進(jìn)行加減運(yùn)算。如圖3所示,圖中的輸入量A,B是經(jīng)過濾波電路之后的脈沖信號(hào)。輸出信號(hào)AOUT,BOUT是相位檢測(cè)的結(jié)果,傳感器送來的脈沖信號(hào)AB相位差90度,如果首先檢測(cè)到的是A相的高電平,那么AOUT輸出的是A相脈沖,BOUT則一直為高電平。反之,如果首先檢測(cè)到B相的高電平,那么BOUT輸出為B相的脈沖,AOUT則一直為高電平。將AOUT和BOUT送到計(jì)數(shù)模塊就可以完成加減計(jì)數(shù)功能了。
2.4 脈沖-高度轉(zhuǎn)換模塊
該模塊的功能是將實(shí)際計(jì)算的脈沖數(shù)轉(zhuǎn)換為對(duì)應(yīng)的實(shí)際高度值輸出顯示,輸入量分別為單位脈沖寬度Cn[9..0],滑輪組的數(shù)目n[3..0]和計(jì)算的脈沖數(shù)load[15..0]。輸出的是實(shí)際高度loadToBCD[13..0],實(shí)際的高度是重物所走的高度,而計(jì)數(shù)脈沖是主電動(dòng)機(jī)轉(zhuǎn)過的圈數(shù),它們之間存在一個(gè)滑輪組倍數(shù)關(guān)系的轉(zhuǎn)換,也就是:
重物所走距離=(脈沖數(shù)×單位脈沖的寬度)/滑輪組數(shù)
在運(yùn)算的過程中,為了提高精度,本文同樣采用了四舍五入的算法,但是,精度的提高是建立在增加耗用FPGA中邏輯單元的基礎(chǔ)之上的,同時(shí)也影響了運(yùn)算的速度。
2.5 整數(shù)—BCD碼轉(zhuǎn)換模塊
實(shí)際高度要送到四位LED數(shù)碼管進(jìn)行顯示,由脈沖-高度轉(zhuǎn)換模塊輸出的高度數(shù)是一個(gè)整數(shù)量,需要轉(zhuǎn)換為BCD碼之后才能送七段碼驅(qū)動(dòng)電路顯示。
2.6 其他模塊
2.6.1 報(bào)警高度設(shè)定模塊
在現(xiàn)場(chǎng)為了保證司機(jī)在操作吊鉤的過程中不會(huì)出現(xiàn)以外情況,常常設(shè)有一個(gè)報(bào)警點(diǎn),當(dāng)?shù)蹉^到達(dá)這個(gè)點(diǎn)時(shí),蜂鳴器會(huì)發(fā)出聲音報(bào)警提示。本文設(shè)定的報(bào)警高度是1米,系統(tǒng)可以根據(jù)實(shí)際情況任意設(shè)定報(bào)警點(diǎn)。
2.6.2 報(bào)警高度輸出模塊
由于涉及到滑輪組,需要將設(shè)定的高度轉(zhuǎn)換為主電動(dòng)機(jī)所轉(zhuǎn)的距離,再將這個(gè)距離與轉(zhuǎn)換為相應(yīng)的脈沖數(shù)alarmout[15..0]輸出。
2.6.3 報(bào)警比較模塊
此模塊是將圖12所示的模塊所轉(zhuǎn)換的脈沖數(shù)與實(shí)際所計(jì)的脈沖數(shù)進(jìn)行比較,如果脈沖數(shù)對(duì)應(yīng)的高度到達(dá)設(shè)定的報(bào)警點(diǎn),蜂鳴器發(fā)出聲音,提醒司機(jī)。
3、 結(jié)論
本文改變了傳統(tǒng)的設(shè)計(jì)方法,采用了先進(jìn)的FPGA設(shè)計(jì),很好地解決了軟件設(shè)計(jì)存在地速度慢,穩(wěn)定性差的特點(diǎn)。將性能好、速度高和靈活性好的FPGA引入到設(shè)計(jì)中,設(shè)計(jì)出了一套可以應(yīng)用于惡劣環(huán)境的位置測(cè)量儀。
本文創(chuàng)新點(diǎn): 采用了先進(jìn)的FPGA設(shè)計(jì),很好地解決了軟件設(shè)計(jì)存在地速度慢,穩(wěn)定性差的特點(diǎn)。設(shè)計(jì)出了一套可以應(yīng)用于惡劣環(huán)境的位置測(cè)量儀。
責(zé)任編輯:gt
評(píng)論