蘇 湘,羅健飛,吳仲城,申 飛
(中國科學(xué)院合肥物質(zhì)科學(xué)研究院,合肥 230031)
數(shù)據(jù)采集技術(shù)應(yīng)用廣泛,如科學(xué)研究、生產(chǎn)過程及現(xiàn)場施工中瞬態(tài)信號和環(huán)境參數(shù)的采集[1-2]。Android是目前最為流行的移動終端操作系統(tǒng),并保持迅猛的發(fā)展,并擴展到平板和智能電視等領(lǐng)域[3]??蒲泻蜕a(chǎn)領(lǐng)域的數(shù)據(jù)采集在精度和速度上有較高要求,而Android是針對娛樂多媒體應(yīng)用的,在軟硬件架構(gòu)上并沒有像傳統(tǒng)桌面電腦一樣提供方便的數(shù)據(jù)采集接口和驅(qū)動。但設(shè)備的便攜化是大勢所趨,如果能在Android移動設(shè)備上實現(xiàn)數(shù)據(jù)采集接口,方便構(gòu)建專業(yè)的測試與分析系統(tǒng),將在科研與工業(yè)生產(chǎn)等領(lǐng)域有廣闊應(yīng)用前景。
目前移動終端已具備較強的處理能力[4],CPU主頻可達2 GHz,機身存儲容量可達64 GB,這為移動設(shè)備上測試分析系統(tǒng)的構(gòu)建提供了條件,但其具體實現(xiàn)仍有諸多難點,如軟件開發(fā)上涉及內(nèi)容廣,要同時熟悉操作系統(tǒng)底層架構(gòu)和上層應(yīng)用程序的設(shè)計,另外用于數(shù)據(jù)傳輸?shù)慕涌谶x擇也相對較少。
本文基于C8051F320設(shè)計了16位精度的數(shù)據(jù)采集卡,支持6通道模擬電壓信號的實時采集,設(shè)計了多種數(shù)據(jù)連接方式便于不同應(yīng)用場合的使用,并設(shè)計了該數(shù)據(jù)采集卡的Android驅(qū)動程序以及基于該驅(qū)動程序接口的多維力傳感器[5]實時數(shù)據(jù)采集Android應(yīng)用程序。
該采集卡的設(shè)計是對Android下實現(xiàn)較高要求的數(shù)據(jù)采集任務(wù)的探索研究,對Android移動設(shè)備下專業(yè)測試測量系統(tǒng)的構(gòu)建具有一定的參考作用。
C8051F320為增強型51內(nèi)核單片機,采用流水線指令結(jié)構(gòu),速度可達25 MIPS。片內(nèi)集成了數(shù)據(jù)采集和控制系統(tǒng)中常用的模擬部件和其它數(shù)字外設(shè)及功能部件。C8051F320片內(nèi)自帶有USB收發(fā)器。系統(tǒng)的硬件架構(gòu)圖如圖1所示。
圖1 系統(tǒng)硬件架構(gòu)圖Fig.1 Hardware structure of the system
該采集卡用于實時采集外部傳感器輸出的模擬電壓信號,進行數(shù)據(jù)處理并傳輸至Android主機,其硬件電路設(shè)計有電源管理、模數(shù)轉(zhuǎn)換和數(shù)據(jù)接口3個部分:
1)電源管理:設(shè)計的供電電壓為5 V,使用線性直流電壓轉(zhuǎn)換芯片轉(zhuǎn)換為3.3 V用于板上芯片供電。外部可選擇USB供電和外接直流電源供電,適合不同的使用場合。
2)模數(shù)轉(zhuǎn)換:提供6路模擬電壓輸入接口,對每通道模擬輸入進行濾波去除高頻噪聲,模擬信號經(jīng)16位的AD芯片轉(zhuǎn)換為數(shù)字信號。
3)數(shù)據(jù)接口:設(shè)計了3種接口用于接入Android終端,分別是 USB Host(USB 主機方式),USB Device(USB從機方式)和UART,使用時通過電路板的短路帽連接進行選擇。3種接口方式均由C8051F320的同一串口引出,這樣在使用不同的接口方式與Android終端連接時只需改變短路帽連接,而不需要修改采集卡的固件程序。與Android終端的USB Host和USB Device接口的連接是通過使用FTDI公司的FT230和FT312D芯片來完成橋接的。
該采集卡的固件程序用于控制模擬電壓信號的采集與傳輸,同時可接受主機發(fā)送來的命令字執(zhí)行相應(yīng)的處理,如采集的開始與停止、采樣通道數(shù)和采樣頻率的改變。程序流程如圖2所示。
圖2 采集卡固件程序流程圖Fig.2 Flow chart of the DAQ card firmware
C8051F320上電后進行一系列初始化,包括IO口、系統(tǒng)時鐘、定時器等,并對AD轉(zhuǎn)換器進行初始配置。進入主程序后首先會查詢定時器時間是否到達,若定時時間到,則控制AD轉(zhuǎn)換器采集固定通道數(shù)的數(shù)據(jù),對采集的數(shù)據(jù)進行平均濾波[6]去除白噪聲,然后將處理后的數(shù)據(jù)發(fā)送給主機。若定時時間未到,則直接進行下一步操作。接下來會查詢主機是否有命令到達,主機發(fā)送來的命令用中斷方式接收,如沒有收到命令,則回到上一步判斷定時時間是否到。一旦接收到主機發(fā)送的命令,就解析出命令字,執(zhí)行對應(yīng)的動作,例如開始采集和停止采集命令會導(dǎo)致開或關(guān)定時器,采樣速率控制命令會改變定時時間的裝載值從而達到改變采樣速率的目的。采樣通道數(shù)可設(shè)置為1~6個通道,采樣頻率可設(shè)置到500 Hz。
本文在Windows操作系統(tǒng)下用LabVIEW圖形化編程語言[7]設(shè)計了該采集卡的測試系統(tǒng),測試系統(tǒng)的功能包括數(shù)據(jù)采集、數(shù)據(jù)存儲、數(shù)據(jù)分析與實時顯示等部分。圖3和圖4分別是采集的外部多維力傳感器原始數(shù)據(jù)的時域波形圖和FFT變換后的頻域波形圖。
圖3 多通道模擬輸入信號波形Fig.3 Oscillograph of Multi-channel analog input
圖4 某通道FFT頻域波形圖Fig.4 FFT oscillograph of one channel
從獲取的傳感器時域波形圖可看出該采集卡能實時穩(wěn)定的進行多通道的模擬電壓信號的采集,數(shù)據(jù)隨著施加在多維力傳感器上力的改變而波動。
傳感器靜止放置時對其中某一通道輸入信號進行FFT變換后得到的頻域波形圖有一個很大的直流分量,其余頻率對應(yīng)的幅度均接近于0,微小的波動為電路的隨機噪聲導(dǎo)致?;谝陨系臏y試結(jié)果,后期在采集卡的固件程序中設(shè)計了平均值濾波算法,獲得了更加精確穩(wěn)定的數(shù)據(jù)。
另外在測試系統(tǒng)中設(shè)計了采集卡的采樣頻率測試功能,通過對每秒最終采集的點數(shù)進行統(tǒng)計分析,對比理論設(shè)計的采樣速率與實際能達到的采樣速率之間的差異。圖5為設(shè)置為120 Hz采樣速率下每秒實際的采樣點數(shù)的統(tǒng)計情況。
圖5 120Hz采樣速率下采樣點數(shù)統(tǒng)計結(jié)果Fig.5 Statistical result of 120Hz sample rate
從圖中可看到120 Hz的理論采樣率下實際能獲得118 Hz的平均采樣率,該采集卡能非常穩(wěn)定地進行模擬電壓信號的采集。
本文使用的Android終端主板基于S5PV210開發(fā),S5PV210是三星公司推出的ARM CortexTMA8內(nèi)核的處理器,主頻可達1 GHz,可實現(xiàn)2000 DMIPS的高性能運算,并在該主板上移植了Android 4.0操作系統(tǒng)。該終端同時具備UART接口、USB Host接口和USB Device接口,便于采集卡的Android驅(qū)動程序和數(shù)據(jù)采集應(yīng)用程序的設(shè)計和測試,下面將對程序設(shè)計的工作進行介紹。
驅(qū)動程序用于Android終端與采集卡之間的通信,包括采集卡的控制和數(shù)據(jù)的傳輸,應(yīng)用開發(fā)者只需調(diào)用驅(qū)動程序提供的接口就可方便構(gòu)建數(shù)據(jù)采集應(yīng)用系統(tǒng)。本文基于Google的開源項目android-serialport-api(用于帶串口的Android設(shè)備與外部設(shè)備之間的串口通信項目)和FTDI公司官方的J2xx相關(guān)軟件包設(shè)計了采集卡的Android驅(qū)動程序,實現(xiàn)了多種接口方式下Android終端與采集卡之間的通信,該驅(qū)動程序提供的接口方法描述如表1所示。
表1 采集卡Android應(yīng)用程序接口方法描述Tab.1 Method description of the DAQ card API
Android是支持多任務(wù)多線程的移動操作系統(tǒng),其應(yīng)用程序使用Java編程語言開發(fā)。Android數(shù)據(jù)采集應(yīng)用程序采用了生產(chǎn)者/消費者架構(gòu),創(chuàng)建一個線程用于傳感器數(shù)據(jù)的讀取,并將讀取到的有效數(shù)據(jù)放入緩沖隊列中,該數(shù)據(jù)讀取線程就是“生產(chǎn)者”。另外創(chuàng)建一個用于傳感器數(shù)據(jù)刷新顯示的線程,從緩沖隊列取出數(shù)據(jù)并實時刷新界面顯示,該數(shù)據(jù)刷新線程就是“消費者”。Android的觸控界面交互是使用UI線程的事件觸發(fā)機制來完成的,對界面的控件注冊事件監(jiān)聽器,當(dāng)有用戶界面事件發(fā)生時就執(zhí)行相應(yīng)的操作。圖6為Android數(shù)據(jù)采集應(yīng)用程序的流程圖。
圖6 數(shù)據(jù)采集Android應(yīng)用程序流程圖Fig.6 Flow chart of the DAQ application
在本文使用的Android終端下能實現(xiàn)多維力傳感器數(shù)據(jù)的實時采集,用戶界面交互流暢,采集卡運行穩(wěn)定,Android下數(shù)據(jù)采集應(yīng)用程序運行效果圖如圖7所示。
圖7 Android數(shù)據(jù)采集應(yīng)用程序運行效果圖Fig.7 Effect of plans of Android DAQ application
數(shù)據(jù)采集系統(tǒng)更加小巧和便攜是未來的發(fā)展趨勢。創(chuàng)建測試測量應(yīng)用系統(tǒng)一般都在傳統(tǒng)桌面電腦環(huán)境下進行,而便攜式Android終端下測試測量應(yīng)用系統(tǒng)的構(gòu)建因為難點頗多而沒有取得較大進展。
本文設(shè)計的支持Android的多通道數(shù)據(jù)采集卡,是對Android移動終端下專業(yè)數(shù)據(jù)采集任務(wù)實現(xiàn)的探究。系統(tǒng)的設(shè)計包括硬件電路設(shè)計與測試,硬件固件程序的設(shè)計,數(shù)據(jù)采集卡的Android驅(qū)動程序設(shè)計以及數(shù)據(jù)采集應(yīng)用程序的開發(fā),最終該采集模塊能穩(wěn)定精確的獲取外部傳感器的數(shù)值并能實時顯示。
該采集模塊的設(shè)計對Android移動設(shè)備下專業(yè)測試測量系統(tǒng)的構(gòu)建具有一定的參考作用,在科研工作和工業(yè)生產(chǎn)現(xiàn)場等場景下有很好的應(yīng)用前景。
[1] 馬明建.數(shù)據(jù)采集與處理技術(shù)[M].西安:西安交通大學(xué)出版社,2009.
[2] 張少敏,羅壯強,宗勁沖.基于Android的平板電腦現(xiàn)場數(shù)據(jù)采集系統(tǒng)在供電公司的應(yīng)用與研究[J].電腦知識與技術(shù),2012,8(19):4581-4583.
[3] Reto Meier.Professinal Android 4 Application Development[M].Indiana:John Wiley&Sons,Inc,2012.
[4] 張寧.基于Android的移動終端數(shù)據(jù)采集的實現(xiàn)[D].內(nèi)蒙古:內(nèi)蒙古大學(xué)電子信息工程學(xué)院,2013.
[5] Baoyuan Wu,JianfeiLuo,F(xiàn)eiShen,etal.Optimum design method of multi-axis force sensor integrated in humanoid robot foot system[J].Measurement,2011,44(9):1651-1660.
[6] 劉葉平.基于單片機系統(tǒng)的數(shù)字濾波方法[J].科技傳播,2012(17):205-206.
[7] Jeffrey Travis,Jim Kring.LabVIEW大學(xué)實用教程[M].喬瑞萍,等譯.北京:電子工業(yè)出版社,2009. ■