電磁流量計模數轉換與數字信號處理
前面章節已經詳細介紹了電磁流量計轉換器的原理、設計思想和硬件電路。而系統的軟件也是為要實現這一設計思想,完成電磁流量計功能服務的。所以數字部分要完成的主要功能是對經過高低通濾波的信號進行A/D 采樣,并濾波取其直流成分。信號中包含了與流速相關的直流分量,這個信號經過濾波以后進入了A/D 采樣通道,軟件要通過對A/D 采樣得到的數字量進行濾波得到所包含的直流分量。同時軟件功能還包括鍵盤的輸入控制與液晶顯示器控制和輸出波形控制等。
系統軟件由主程序程序、鍵盤菜單處理、定時器中斷、A/D 采樣、顯示等部分組成。如圖4.8 所示分別為采樣處理主程序流程圖,定時器中斷服務程序流程圖。求更新后的100個點值作流量顯示求100個點平均值作流量顯示鍵盤設定是否測量累計流量并完成參數設定上電初始化是否采集完最開始100個點是否更新了其中50個點進入定時中斷服務程序是否采集完最初的100個點數據A/D采樣并保存到相應數組對采集到的所有數據求和A/D采樣并保存到相應數組用逐點法求100個點數據之和并作一階濾波跳出中斷系統主程序系統中斷服務程序圖4.8 程序流程圖Fig.4.8 Frame of process flow
從流程圖中我們可以看出,系統軟件是通過對連續等間隔采集來的100 個點求平均值來達到濾波目的的,即得到直流分量。這100 個點采到的數據都保存在一個數組當中,每采到一個新的點,就在這個數組當中對最老的點進行替換,數組中保存的都是的采樣點,而對于這些點的求和則采用逐點法求得,即除了最開始采集的100 個數據需要做一次求和以外,后面只要把這個和減去的點的數據再加上的點的數據就可得到當前的的100 個數據之和(每采集一個新的點,就得到一個新的和)。我們不僅對這100 個點求一下平均值來得到直流分量,還對每一次求得的和再作如下的平滑處理: Yn=A*Yn1+B*Xn (4.1) 其中,A+B=99%;Yn:當前值;Yn1:上次值;Xn:當前采集值;A, B 是系數,保證A+B=1, A 越大, 響應越慢但同時一會更穩定。這樣進行平滑處理的目的是為了使得到的數據更加穩定,不會因為偶爾的誤差或者波動出現顯示的跳變。對經過平滑處理的和除以100 求得的平均值我們才認為就是軟件濾波得到的直流分量。
這部分A/D 轉換所用的芯片是AD574。AD574 是美國Analog Device 公司生產的12 位逐次逼近式模數轉換器,其主要特點是: (1)有參考電壓基準和時鐘電路,不需外部時鐘就可以工作; (2)轉換速率高,12 位轉換25 s,8 位轉換16 s; (3)8 位或16 位微處理器接口,自帶三態輸出緩沖電路,可直接掛在單片機的數據總線上而無需接口電路; (4)溫度適應范圍大,在55~+125 C 范圍內滿足線性要求。主要功能引腳介紹如下: AC:模擬地DC:數字地CS:片選信號,低電平有效CE:片使能,高電平有效R/C:讀/啟動信號,高電平讀數據,低轉換12/8:數據格式選擇,高電平12 位數據同時有效,低電平時次輸出高8 位,第二次輸出低四位有效,中四位為零。A0:內部寄存器控制輸入端,在12/8 接地的情況下,高電平時高8 位數據有效,低電平時低4 位有效,中間4 位為零,高4 位為高阻態;在R/C 為低的情況下,高電平啟動12 位轉換,低電平啟動8 為轉換。STS:工作狀態輸出端,高電平表示正在轉換,低電平表示轉換完畢。
利用AD574 的方法在原有的低頻矩形波勵磁方法中也有應用,但由于使用分頻方法或整流方法產生勵磁信號,因此只能通過兩路采樣開關根據勵磁信號發生頻率來實現零點動態補償之后送入單片機, 但又由于感生電動勢與勵磁信號存在一定的滯后性,因此會由于感生信號與勵磁信號的相位相關性下降而影響測量效果。在本系統中,由于采用了單片機控制勵磁信號產生的方式,可以直接通過單片機得到實時感應信號之后進行補償,很好的解決了相位相關性的限制,大大提高了零點動態補償采樣方法的穩定性。采樣電路圖如圖4.9: 圖4.9 采樣電路連接圖Fig.4.9 Sampling circuit
經過濾波后得到的信號中存在著幅值較大的尖峰脈沖,因此直流信號仍然存在著波動,雖然這個波動不是噪聲,但是對信號的真實值測量來說仍是一種干擾。在軟件中我們采用了低通濾波,公式為: Y=0.98y1+0.02x (4.1) 式中,y 是濾波后的值;y1 是上次濾波后的值;x 新的數據。因為電磁流量計信號與流速的線性關系在小流量范圍內將發生大的偏差,所以在軟件中必須加以補償校正。在軟件的設計中,我們根據實測的流速曲線,對流速進行了分段處理,采用的公式為: y=a+bx (4.2) a,b 均采用4 位有效小數,以提高在微弱信號下的計算精度。實驗數據表明,這樣的處理是簡單而有效的。
因為編譯器帶有浮點運算庫,數據處理過程得以簡單化并能保持高精度以滿足小流量微弱信號的需要,體現了C51 編程的*性。A/D 采樣程序(C 語言): #Include<absacc.h> #Include<reg51.h> #define uint unsigned int #define ADCOM XBYTE[0xff7c] /*使A0=0,R /C . 0,CS . 0 #define ADLO XBYTE[0xff7f] /*使R /C . 1, A0 . 1,CS . 0 #define ADHI XBYTE[0xff7d] /* R /C . 1, A0 . 0,CS . 0 Sbit r=P3.7. Sbit w=P3.6. Sbit adbusy=P1.0. uint ad574(viod) /*AD574 轉換函數*/ { r=0. /*產生CE=1*/ w=0. ADCOM=0. /*啟動轉換*/ While(adbusy==1). /*等待轉換結束*/ return((uint)ADHI<<4+ADLO&0x0f)) /*返回12 位采樣值*/ }main() { uint idata result. result=ad574()
如前所述,傳感器經勵磁輸出微弱的感應電動勢將經過濾波預處理、信號放大、高通濾波和低通濾波,最后由A/D 芯片進行采樣轉換為數字量。濾波預處理單元主要通過高通濾波器來實現隔直,以防過大的信號放大使得精密儀用放大器AD620 處于飽和狀態,同時利用運放的跟隨作用提高輸入阻抗。由于濾波預處理單元對毫伏級的差分信號進行處理,因此設計中采用精密的元器件,保證了兩個輸入通道的參數對稱,進而減小了AD620 輸出的直流偏置。下面給輸入端輸入一個信號代替流量信號,
流量信號經過精密儀用放大器AD620 放大1000 倍后的輸出信號如圖4.10 所示,圖中說明了流量信號存在著較強的微分干擾以及直流偏置。圖4.10 儀用放大器AD620 輸出信號Fig.4.10 Signal output by AD620 Amplifier 流量信號經過二階巴特沃斯高通濾波器后,將消除AD620 輸出信號的直流偏置以方便后續的A/D 采樣。這里的信號圖是通過示波器分時依次采集的,因此信號波形的相位不同。經過前面的信號處理,感應電動勢信號有可能仍然存在一定的高頻尖峰噪聲,這將對后續的A/D 采樣有一定的影響,并進而影響測量精度。因此采用截止頻率為31. 9Hz 的一階有源低通濾波器來消除噪聲干擾。低通濾波器的輸出信號如圖4.11 所示。圖4.11 二階低通濾波器輸出信號Fig.4.11 Output signal of twosteps low pass filter 該信號經過A/D 模塊轉換后通過單片機在LED 或LCD 上顯示出來,見圖4.12。ADIN 端為模擬信號輸入端,隨著模擬信號的變化,顯示不同的數值,這樣就把模擬電壓轉換成數字信號。顯示參考程序如下: #Include<reg51.h> #Include <intrins.h> #define uint unsigned int #define uchar unsigned char sbit P2_0=P2^0. //數碼管顯示位選sbit P2_1=P2^1. sbit P2_2=P2^2. sbit adrd=P2^3. //AD 讀sbit adwr=P2^4. //AD 寫sbit adint=P2^5. //AD 中斷sbit beep=P2^6. //蜂鳴器unsigned char j,k,adval,key. void delay(unsigned char i) //延時{ for(j=i.j>0.j) for(k=125.k>0.k). }unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, //數字編碼0xf8,0x80,0x90}. void display(uchar tem) //display 顯示程序{ uchar j,A1,A2,A2t,A3; A1=table[tem/100]; //得到百位顯示碼A2t=tem%100; //得到十位數A2=table[A2t/10]; //得到十位顯示碼A3=table[A2t%10]; //個位顯示碼for(j=50;j>0;j) { P0=A1; //顯百位P2_0=0; P2_1=1; P2_2=1; delay(5); P0=A2; //顯十位P2_1=0; P2_0=1; P2_2=1; delay(5); P0=A3; //顯個位P2_2=0; P2_0=1; P2_1=1; delay(5); }
} void main() { float adval_f; while(1) { adwr=0; //隨便寫個數,主要是啟動AD 轉換_nop_(); adwr=1; adrd=0; //讀取AD 的數adval=P1; adrd=1; delay(10); //延時adval_f=(adval/256)*500; display(adval); //顯示}; } 圖4.12 數字信號的顯示Fig.4.12 Displaymengt of digital signal
本章針對信號處理的模擬模擬信號處理和數字信號處理部分進行了詳細的設計,以儀用放大器AD620 和CA3240 為中心組成放大濾波電路,又以AT89S53 單片機和AD574 芯片為中心組成了數模轉換電路,并給出了關鍵程序流程。然后對部分電路進行測試并實現信號的顯示,做出了PCB 板圖并編制了相應的程序。本章是整個電磁流量計了的關鍵環節。--擴展閱讀:開封中儀流量儀表有限公司專業生產電磁流量計、孔板流量計、渦街流量計、文丘里流量計、v錐流量計、v型錐流量計、噴嘴流量計、插入式電磁流量計、智能電磁流量計、分體式電磁流量計、一體式電磁流量計、標準孔板流量計、標準孔板、一體化孔板流量計、標準噴嘴流量計、長徑噴嘴流量計、標準噴嘴、長徑噴嘴、插入式渦街流量計、智能渦街流量計、錐型流量計、v錐型流量計、節流裝置、節流孔板、限流孔板等流量產品,更多有關電磁流量計、孔板流量計、渦街流量計的信息請訪問開封中儀網站:
免責聲明
客服熱線: 13199863987
加盟熱線: 13199863987
媒體合作: 0571-87759945
投訴熱線: 0571-87759942
下載儀表站APP
Ybzhan手機版
Ybzhan公眾號
Ybzhan小程序