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