便攜式數(shù)據(jù)采集系統(tǒng)的設(shè)計
1 引言
數(shù)據(jù)采集在石油探采領(lǐng)域應(yīng)用廣泛.幾乎涵蓋石油探采的各個環(huán)節(jié)。傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)由于可操作性差、用戶界面不夠友好、人機交互困難等缺點已不能適應(yīng)現(xiàn)在的需求。隨著現(xiàn)代電子技術(shù)和嵌人式技術(shù)的發(fā)展,基于嵌入式技術(shù)的數(shù)據(jù)采集系統(tǒng)以其強大的功能、友好的界面、簡易的操作受到用戶的青睞。這里介紹一種以S3e2410為核心基于嵌入式Linux的數(shù)據(jù)采集系統(tǒng)的設(shè)計方案,其中采用多通道高速A/D轉(zhuǎn)換器ADS8364。
2 器件選型
2.1 ADS8364簡介
ADS8364是高速、低功耗、6通道同時采樣和轉(zhuǎn)換的16位A/D轉(zhuǎn)換器。采用+5 V工作電壓。3.3 V和5 V可選的接口電壓;80 dB共模抑制比的全差分輸入通道,內(nèi)部+2.5 V參考電壓;6個模擬輸入分3組,每個輸入端有一個A/D轉(zhuǎn)換器和保持信號用于保證多通道同時采樣和轉(zhuǎn)換;差分輸入范圍為-VREF~+VREF;其6個16 bit AID轉(zhuǎn)換器同時工作,3個保持信號(HOLDA、HOLDB、HOLDC)啟動指定通道轉(zhuǎn)換。
當(dāng)這3個保持信號同時有效時,6通道的A/D轉(zhuǎn)換器同時轉(zhuǎn)換,并將轉(zhuǎn)換結(jié)果保存在6個寄存器,每個讀操作,ADS8364輸出16位數(shù)據(jù),地址選通信號(A0、Al、A2)從具體的寄存器中讀取數(shù)據(jù)。地址/模式(ADD)信號選擇單通道、單周期或FIFO模式。正常工作時,ADS8364的REFOUT與REFIN連接可提供+2.5 V的參考電壓。
ADS8364本身產(chǎn)生的噪聲很小,但為獲得更好性能,輸入信號的噪聲峰值必須小于50μV。當(dāng)采用5 MHz外部時鐘時,ADS8364.轉(zhuǎn)換時間為3.2μs,其采集時間為0.8μs。為獲得最大輸出數(shù)據(jù)率,可在下一個轉(zhuǎn)換期間讀取數(shù)據(jù)。
2.2 S3c2410簡介
S3e2410是三星半導(dǎo)體公司生產(chǎn)的用于移動終端的高性能SoC處理器,它也是一款低成本、低功耗、小體積、高性能的16/32 bit的RISC微控制器。該處理器基于ARM920T內(nèi)核,主要面向移動設(shè)備終端。該系統(tǒng)設(shè)計利用S3e2410的低功耗、高性能等特點實現(xiàn)一種鋰電池供電的手持式,PDA功能的數(shù)據(jù)采集系統(tǒng)。
3 系統(tǒng)的硬件設(shè)計
3.1 ADS8364與S3c2410的接口設(shè)計
ADS8364通過向DVCC提供3.3 V或5 V電壓,其接口電壓為3.3 V或5 V,這樣可以實現(xiàn)ADS8364和5 V總線接口的5I系列單片機,以及3.3 V總線接口的DSP和ARM等接口連接。
該系統(tǒng)采用處理器S3e24lO與ADS8364接口無需附加任何的接口電壓轉(zhuǎn)換器,只需把ADS8364的接口電壓設(shè)置成3.3 V,可將兩者總線直接連接。圖1為S3e2410與ADS8364的接口電路。由圖1可看出,S3c2410與ADS8364的接口電路無需任何附加硬件邏輯電路,S3e2410的GPF4引腳與ADS8364的EOC引腳相連,將GPF4設(shè)置為中斷模式,用于接收ADS8364轉(zhuǎn)換結(jié)束中斷。將GPB5~GPB7設(shè)置為輸出模式,分別與ADS8364的HOLDA~HOLDC相連,用于選中3組A/D轉(zhuǎn)換器(每組2個)啟動轉(zhuǎn)換,S3C2410的BANK2片選信號nGCS2與ADS8364的CS相連,將A/D轉(zhuǎn)換器作為外部物理地址映射到S3C2410相應(yīng)內(nèi)核空間,位于外部I/O接口BANK2地址空間0x10000000~0x18000000。只要對BANK2進行寫操作,并將GPB5~GPB7分別設(shè)置000~111中某個數(shù)值就可以產(chǎn)生ADS8364的啟動相應(yīng)通道轉(zhuǎn)換的信號。S3c2410的A2~A4分別連接ADS8364的AO~A2,將ADS8364的6個讀數(shù)通道映射到Linux操作系統(tǒng)的地址為0x10000000、0x10000004、Oxl0000008、Oxl000000C、Oxl0000010、Oxl0000014。
[!--empirenews.page--]
3.2 ADS8364的前端調(diào)理電路
由于輸入的模擬信號變化范圍較大,通常不在器件所要求范圍內(nèi)。在高精度、高要求的采樣電路中,為使輸入的模擬信號與采樣所需信號相匹配,通常在采樣電路前加入前端調(diào)理電路,以縮放和平移所采樣的信號,從而使調(diào)理后的信號適合轉(zhuǎn)換器的模擬輸入要求。
ADS8364的模擬輸入可采用單端和差分輸入。單端輸入時,一IN端輸入的是共模電壓(CV),而+IN的輸入則圍繞共模電壓擺動,輸入范圍為CV+VREF和CV—VREF,VREF的大小決定共模電壓的變化。差分輸入時,輸入幅值在一IN和+IN之間變化。每個輸入端的幅值分別是CV+1/2VREF~CV—1/2VREF,差分輸入電壓范圍為+VREF和VREF,所以VREF也決定輸入電壓范圍。圖2為ADS8364的前端調(diào)理電路,其中R1和R2的取值用來改變OPA227輸入的電壓范圍。
4 系統(tǒng)軟件設(shè)計
本系統(tǒng)采用S3e2410為控制器,采用Linux為嵌入式系統(tǒng)的操作系統(tǒng),在設(shè)計系統(tǒng)軟件時,需分別設(shè)計應(yīng)用和驅(qū)動程序。其中,應(yīng)用程序采用跨平臺的GUI設(shè)計工具Qt設(shè)計軟件的界面,利用ADS8364的驅(qū)動程序提供的接口函數(shù)完成數(shù)據(jù)采集,包括選擇啟動ADS8364的3對通道中的某對通道進行轉(zhuǎn)換、讀取選定通道的數(shù)據(jù)、顯示各種參數(shù)的數(shù)值。圖3為應(yīng)用程序界面。并給出運行在嵌入式操作系統(tǒng)中的顯示效果。該嵌入式系統(tǒng)采用3.4英寸的觸摸屏作為顯示器,可直接采用觸摸方式操作軟件,軟件操作更人性化;驅(qū)動程序可提供操作硬件設(shè)備ADS8364的各種函數(shù)。該驅(qū)動程序是整個軟件設(shè)計的關(guān)鍵點和難點。
[!--empirenews.page--]
Linux設(shè)備驅(qū)動程序?qū)崿F(xiàn)的功能包括驅(qū)動程序的注冊與注銷、設(shè)備的打開與釋放、設(shè)備的讀寫操作、設(shè)備的控制操作等。當(dāng)用戶需要通過設(shè)備文件與硬件通信時,必須通過調(diào)用open、read、write、close、ioctl等系統(tǒng)函數(shù)實現(xiàn),這些函數(shù)都由file_operations結(jié)構(gòu)體的函數(shù)指針成員給出入口地址,file_operations結(jié)構(gòu)體的每一個成員名都對應(yīng)一個系統(tǒng)函數(shù)嗍。用戶進程利用系統(tǒng)調(diào)用在對設(shè)備文件進行諸如read、write操作時,系統(tǒng)調(diào)用通過設(shè)備文件的主設(shè)備號找到相應(yīng)的設(shè)備驅(qū)動程序,然后讀取該數(shù)據(jù)結(jié)構(gòu)相應(yīng)的函數(shù)指針,接著把控制權(quán)交給該函數(shù)。因此,編寫設(shè)備驅(qū)動程序就是編寫file_operations數(shù)據(jù)結(jié)構(gòu)的各個函數(shù)指針對應(yīng)的各個函數(shù),隨著Linux設(shè)備驅(qū)動程序的復(fù)雜程度越來越高,file operations結(jié)構(gòu)體的成員數(shù)越來越多,但并不是每種設(shè)備的驅(qū)動程序都需要利用file_operations中的全部功能,大多數(shù)驅(qū)動程序只是利用其中一部分,對于驅(qū)動程序中無需提供的功能,只需將相應(yīng)位的數(shù)值設(shè)為NULL。本系統(tǒng)將ADS8364作為字符型設(shè)備設(shè)計驅(qū)動程序,對于字符設(shè)備來說,file_operations結(jié)構(gòu)體中要提供的主要入口有:打開設(shè)備文件open()、釋放設(shè)備文件release()、讀取A/D轉(zhuǎn)換的數(shù)據(jù)read()、啟動A/D轉(zhuǎn)換和選取A/D轉(zhuǎn)換的讀數(shù)通道號write()、A/D轉(zhuǎn)換參數(shù)快速設(shè)置ioctl()。
結(jié)合ADS8364與S3c24lO的接口電路,設(shè)計驅(qū)動程序時,采用中斷方式或者查詢方式讀取轉(zhuǎn)換數(shù)據(jù)。采用查詢方式在驅(qū)動程序中需將通用輸入輸出引腳GPF4設(shè)置成輸入模式,在應(yīng)用程序中反復(fù)查詢GPF4的輸入狀態(tài),當(dāng)查詢到低電平時表明A/D轉(zhuǎn)換器完成一次轉(zhuǎn)換,此時可調(diào)用驅(qū)動程序中的read()函數(shù)讀取轉(zhuǎn)換結(jié)果;采用中斷方式需在驅(qū)動程序中將GPF4設(shè)置中斷方式,將中斷觸發(fā)方式設(shè)置下降沿觸發(fā),ADS8364產(chǎn)生的EOC信號觸發(fā)Linux系統(tǒng)的外中斷EINT4,應(yīng)用程序只需打開ADS8364所對應(yīng)的設(shè)備文件,并采用write()函數(shù)啟動相應(yīng)通道開始轉(zhuǎn)換,然后由驅(qū)動程序中的中斷服務(wù)函數(shù)將數(shù)據(jù)存放到一個全局變量中,應(yīng)用程序通過read()函數(shù)讀取數(shù)據(jù),因此,利用中斷方式采集數(shù)據(jù)速度更高、讀數(shù)控制更簡單。圖4為采用中斷方式的程序流程。
5 測試結(jié)果
該系統(tǒng)已應(yīng)用于某油田的井口多參數(shù)采集裝置,前端分別接壓力、流量、流速、溫度等傳感器,用來測量采油井井口的多種參數(shù)。經(jīng)測試,該系統(tǒng)與傳統(tǒng)的基于單片機的多參數(shù)測量裝置相比,具有界面美觀,易操作,精度高,可方便利用存儲卡或U盤存儲重要設(shè)置參數(shù)、系統(tǒng)運行狀態(tài)的數(shù)據(jù)和測量數(shù)據(jù),便于使用者管理和維修等優(yōu)點。表1為該系統(tǒng)設(shè)計所測量值與實際值的對比情況。
從表1看出,該系統(tǒng)的測量誤差很小,其中所測量的多個電壓點,相對誤差都小于O.08%,這樣的精度可滿足數(shù)據(jù)采集應(yīng)用需求。
6 結(jié)束語
本文提出的基于嵌入式Linux技術(shù)的便攜式數(shù)據(jù)采集系統(tǒng),與傳統(tǒng)的單片機或DSP技術(shù)實現(xiàn)的數(shù)據(jù)采集系統(tǒng)相比較,具有功耗低、體積小、用戶操作界面友好、采集精度高、便于擴展升級等優(yōu)點。ARM的片上資源豐富,Linux操作系統(tǒng)的功能強大,該系統(tǒng)通過外接不同傳感器可實現(xiàn)多種參數(shù)采集,利用系統(tǒng)的豐富GPIO接口編程設(shè)計多個外部設(shè)備控制動作,完成多通道PWM輸出。該系統(tǒng)在石油鉆采、工廠自動化等領(lǐng)域具著廣泛的應(yīng)用前景。