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