超聲波流量計的高精度算法以及系統(tǒng)詳細(xì)說明
經(jīng)查閱大量文獻(xiàn),發(fā)現(xiàn)超聲波流量計仍然存在著波形檢測不準(zhǔn)確,到達(dá)時間檢測不,運行速度慢等缺點[71][72]。本文根據(jù)以上幾點,提出以下幾個方案并進(jìn)行實施。,針對波形信號檢測不準(zhǔn)確的缺點,提出了雙閾值和周期相結(jié)合的邊沿檢測算法,提高了波形信號識別的準(zhǔn)確度[73][74]。第二,針對到達(dá)時間檢測不的特點,提出了改進(jìn)的脈沖計數(shù)算法以實現(xiàn)在同等的硬件條件下的高精度的時間檢測[75][76]。經(jīng)過計算(第四章節(jié)將詳細(xì)介紹),超聲波到達(dá)時間精度***好達(dá)到 MHz 級別,那么就要求參考計時脈沖頻率達(dá)到 GHz 級別,那么計數(shù)器的位數(shù)必然很大,消耗更多的內(nèi)部資源[77][78]。本文確定的脈沖計數(shù)法測量傳播時間,通過邊沿檢測算法實現(xiàn)在不增加計時脈沖頻率的情況下來提高測時精度[79][80]。第三,針對運行速度慢的缺點,提出了單片機(jī)和 FPGA 相結(jié)合的硬件結(jié)構(gòu),其中 FPGA 有較高的晶振頻率并采用的是并行處理結(jié)構(gòu),在高速信號接收和高速的信號處理方面有著明顯的優(yōu)勢。因此,采用 FPGA 作為信號接收和處理的芯片。
而單片機(jī)有大量的數(shù)據(jù)線和地址線,可以實現(xiàn)與其它硬件相結(jié)合,作為整個系統(tǒng)的控制芯片。因此,采用單片機(jī)作為發(fā)射和接收超聲波信號電路轉(zhuǎn)換、與 PC 機(jī)之間的串口通信的芯片。下面,本文就到達(dá)信號檢測算法和到達(dá)時間檢測算法進(jìn)行具體的介紹??紤]本文是基于 C8051F122 為主控芯片和和以 FPGA 為檢測芯片的硬件結(jié)構(gòu)對超聲波流量計進(jìn)行改進(jìn)的,因此本文的超聲波流量計的設(shè)計的整體方案可設(shè)置為如圖 3.1 所示。
圖 3.1 整體系統(tǒng)結(jié)構(gòu)圖
2 接收信號處理模塊。 超聲流量計中的超聲波發(fā)出后經(jīng)過流體后幅值會大幅度衰減,因此接收信號的電路中有信號放大電路。由于超聲波在傳播過程中伴隨著噪聲,因此接收信號的電路中有濾波電路。
3 傳播時間的測量。 超聲波傳輸信號時間測量分為順、逆流傳播時間測量。傳播時間是從超聲波發(fā)射時刻到超聲波接收時刻之間的時間,本文設(shè)置發(fā)射電路連續(xù)發(fā)送 8 個正弦波信號作為超聲波的發(fā)射信號,接收到的信號進(jìn)行硬件濾波和軟件濾波后,對信號進(jìn)行進(jìn)一步的處理,得到超聲波的到達(dá)時間。
1、超聲波流量計高精度算法:
本文采用的 FPGA 芯片具有并行處理特點,具有捕獲信號和迅速處理數(shù)據(jù)的特點,因此采用 FPGA 作為信號檢測和處理的芯片。不僅如此,流量計的接收模塊很容易接收到外部環(huán)境、內(nèi)部電路等噪聲信號。因此,提高超聲波流量計的測量精度,必須要做好兩點工作:一是捕獲超聲波信號,確定到達(dá)時間。二是正確的處理超聲波噪聲信號以確?;夭ㄐ盘柕臏?zhǔn)確性,達(dá)到獲得超聲波信號的到達(dá)時間。下面就如何獲取準(zhǔn)確的超聲波信號和檢測準(zhǔn)確的到達(dá)時間進(jìn)行介紹和分析。
2、信號捕獲算法:
模塊設(shè)計方案:FPGA 的 8 通道的模擬信號經(jīng)過放大、濾波后,再經(jīng)過 A/D 模數(shù)轉(zhuǎn)換電路后將超聲波換能器的聲信號轉(zhuǎn)變?yōu)殡娦盘?。單片機(jī)通過前期數(shù)據(jù)采集的長度和周期自調(diào)當(dāng)前的采集信號周期。信號采集的算法是基于超聲波流量計回波信號的特點設(shè)置的。超聲波的發(fā)射是基于單片機(jī)的定時開關(guān)電路設(shè)計的,因此超聲波的發(fā)射時間可以準(zhǔn)確的得到。
超聲波信號的到達(dá)時間的檢測是超聲波流量計的研究的重點。在查閱大量文獻(xiàn)后,發(fā)現(xiàn)以往的算法都是根據(jù)閾值法檢測超聲波,算法的原理是設(shè)定一定的閾值 A,通過比較檢測到的信號的幅值與 A 相比,一旦大于閾值 A,則認(rèn)為超聲波信號已經(jīng)到來,進(jìn)行信號的捕獲與處理,如圖 3.2 所示。閾值算法在一般情況下比較適用,有些情況下則不太適用。比如說,在超聲波信號到來之前,噪聲信號的幅值大于閾值 A,本文就認(rèn)為超聲波信號已經(jīng)到來,一旦對判斷錯誤的超聲波信號進(jìn)行處理,那么測量結(jié)果肯定存在誤差。本文在此基礎(chǔ)上提出了,雙閾值算法與周期算法相結(jié)合的算法。
圖 3.2 傳統(tǒng)捕獲算法示意圖
圖 3.3 雙閾值與周期相結(jié)合的算法示意圖
3、高精度測時算法:
要想提高超聲波流量計測量精度,必須提高檢測到達(dá)時間的準(zhǔn)確性。脈沖計數(shù)法是計算超聲波到達(dá)時間***基本的方法,適合測量頻率較低的待測信號的。但是脈沖計數(shù)法因為其測量精度的局限性,無法滿足高精度測量的要求,因此人們在處理此種計數(shù)方式都采用將誤差量化并將量化誤差變小,實現(xiàn)高精度測量。 脈沖計數(shù)法是用參考時鐘來量化待測時間,脈沖計數(shù)法是一種粗測時方法,它的精度取決于計數(shù)脈沖的頻率的大小,當(dāng)頻率大時,脈沖分辨率就高,測時精度也就越高。工作原理如圖3.4 所示,待測時間長度為xT ,參考時鐘周期為0T ,脈沖數(shù)為0N ,那么計算得到的待測時間為: x0 0T ?N T (3.1) 實際待測時間為: x0 0T ?N T ? ?T (3.2)
圖 3.4 脈沖計數(shù)法
從上面的公式可以看出,脈沖計數(shù)法的測量誤差為 ?T ,由圖 3.4 可以看出參考時鐘周期0T會影響測量到達(dá)時間的精度。從減少計算得到的時間和實際待測時間 ?T 的方面著手,方法大致分為兩大類。
圖 3.5 游標(biāo)卡尺法
4、高精度測時算法實現(xiàn)過程:
邊沿檢測算法是將檢測信號與參考信號設(shè)置在同一個時間點開始,檢測兩個信號是否同步。如果檢測到的信號與參考信號不同步時,則繼續(xù)檢測,直到檢測到同步信號為止。通過此種計算方法可將誤差轉(zhuǎn)換到參考時鐘的周期的整數(shù)倍。本文將此種邊沿檢測算法運用到超聲波流量計的信號的檢測中,將得到更加準(zhǔn)確的檢測結(jié)果。 那么基于 FPGA 的超聲波信號的邊沿檢測過程是:C8051F122 發(fā)射超聲波脈沖的同時,同時啟動 FPGA 進(jìn)行超聲波傳播計數(shù)和發(fā)射次數(shù)計數(shù)。
超聲波傳播時間是將參考時鐘周期乘以傳播計數(shù)的次數(shù),發(fā)射計數(shù)器計數(shù)了總的傳播時間內(nèi)超聲波發(fā)射的次數(shù)。檢測分為兩個方面,一方面是當(dāng)接收端接收到超聲波信號的時候,立即通知發(fā)射端使其繼續(xù)發(fā)射超聲波信號。另一方面是檢測參考時鐘與發(fā)射信號1S ,接收信號2S 是否同步。如果不同步,則繼續(xù)發(fā)射超聲波,進(jìn)行下一組信號的邊沿檢測。圖 3.6 表示了邊沿檢測算法的具體過程。
圖 3.6 到達(dá)時間檢測算法
假定 P 時刻,本文檢測到的發(fā)射信號2S 與參考時鐘同步時,那么立刻關(guān)閉超聲波信號發(fā)射次數(shù)計時器和超聲波傳播時間計數(shù)器。那么記錄下傳播時間計數(shù)器的值為tN ,發(fā)射次數(shù)計數(shù)器的值為sN ,參考時鐘 0 的周期為0T 。那么在 P 時刻,超聲波傳播的總時間為 ? ?01tN ? ?T ,那么在總的傳播時間內(nèi),發(fā)射超聲波sN 次,換句話說,這段時間其實是sN 次聲程的總傳播時間。如果此刻本文用iT 代表超聲波從發(fā)射到接收的單次聲程的時間差,并且假定在接收到的超聲波后再發(fā)射超聲波的間隔時間為? ,那么邊沿檢測到的單程傳播時間可以表示為式(3.3)。 ? ? ? ?01 1t ssN T NTN? ? ??? (3.3) 邊沿檢測算法是檢測參考時鐘與接收信號時鐘的同步性,若不同步則繼續(xù)檢測,直到檢測到同步為止。根據(jù)多次發(fā)射超聲波時間和接收超聲波時間之差,將誤差轉(zhuǎn)換到兩者之差中,進(jìn)一步提高了超聲波流量計的測量精度。
本章小結(jié):
本章結(jié)合周期檢測算法和雙閾值檢測算法以提高波形檢測的精度。采用了游標(biāo)卡尺的原理高精度測量了超聲波的到達(dá)時間,摒棄傳統(tǒng)的芯片倍頻方法,占用更少的主控芯片內(nèi)存,提高了主控芯片的效率。
相關(guān)文章:
TDC7200高精度超聲波流量計
基于脈沖群相關(guān)法的時差式超聲波流量計
超聲波流量計結(jié)構(gòu)特點及合理選型
相關(guān)產(chǎn)品: