工業(yè)現場一般都需要數據采集器來完成各類數據采集任務。在很多實際應用中,往往要求數據采集器具有工作可靠、成本低廉、操作簡單、數據便于收集和計算機分析等特點。U盤作為新型移動存儲設備,以體積小、速度高、抗震動、通用性強的特點倍受青睞。如果能在嵌入式數據采集系統(tǒng)中實現USB主機功能,那么嵌入式數據采集器就能像PC機一樣方便靈活地利用U盤這類USB存儲設備進行數據存儲。本文以帶有片上A/D轉換器的C8051F340處理器和USB接口芯片CH375為基礎,設計了一款可對100 kHz以下的低頻模擬信號進行10位深度采樣的低成本數據采集器。該數據采集器具有USB主機功能,可將采集的數據以FAT32文件系統(tǒng)格式直接存儲到普通U盤中。數據采集完畢后,用戶可直接從采集器上取下U盤,利用計算機方便地實現對采集數據的收集和分析處理。
下面分別介紹數據采集器系統(tǒng)方案設計和系統(tǒng)軟硬件設計。
1 系統(tǒng)方案設計
系統(tǒng)方案如圖1所示,系統(tǒng)主要由C8051F340單片機和USB 接口芯片CH375構成。被測信號首先通過調理電路的抗混疊濾波和限幅處理,然后送給單片機片上A/D轉換器進行采樣,當采樣數據達到一個扇區(qū)512字節(jié)后,單片機通過自身并口控制CH375向U盤寫入采樣數據。采樣數據在U盤中以FAT32文件系統(tǒng)格式寫入,并以文本文件形式保存。控制輸入電路負責輸入用戶指令,以控制A/D工作模式和改變采樣頻率。單片機實現U盤讀寫和FAT32文件系統(tǒng)時,使用了南京沁恒電子有限公司開發(fā)的CH375HF5.LIB庫中的多個函數,該庫函數的詳細信息可參考文獻。
2 系統(tǒng)硬件設計
由于C8051F340內部集成了高精度時鐘源、電壓調節(jié)器、A/D轉換器以及用于A/D轉換的參考電壓源等豐富的片上外設,因此對系統(tǒng)進行硬件設計時,無需再外擴上述電路,從而簡化了系統(tǒng)硬件結構,提高了集成度和可靠性。
如圖2所示,電源模塊生成的5 V電壓一方面給U盤供電,一方面通過單片機的REGIN引腳輸入到單片機的電壓調節(jié)器,從而使單片機自己生成工作所需的3 V電壓,并可將生成的3 V電壓通過VDD引腳輸出給其他3V器件使用。單片機利用P3口以及P20~P24通用I/O引腳模擬并口實現與CH375芯片的并口通信。這里需要注意兩點。第一,C8051F340是3 V低功耗單片機,為了保證C8051F340與CH375的通信接口電平匹配,防止通信不穩(wěn)定,選擇了同樣是3 V供電的CH375V芯片;另外,由于U盤是5 V供電驅動,而作為USB HOST的CH375是3 V供電,不能直接向U盤供電,因此需要5 V電源模塊給U盤單獨供電。第二,圖2所示的CH375電路原理圖并不完整,振蕩器電路等附加電路沒有全部畫出,完整的電路可參考文獻。被測信號經過信號調理電路后,通過單片機P25引腳進入單片機片上A/D轉換器。為了使采集器能盡可能多地應用到不同采集領域,采集器A/D轉換的參考電壓、轉化啟動時鐘、差分或單端采樣選擇、采樣頻率等參數設置均可根據圖3所示的用戶輸入控制電路靈活改變。在圖3的8位撥位開關中,開關1設置是差分采樣還是單端采樣,開關2設置A/D采樣是使用內部還是外部參考電壓,開關3設置A/D采樣是由單片機定時器啟動還是由外部輸入更新時鐘啟動,開關4~8設置采樣頻率。開關4~8分別代表10 ksps、20ksps、30 ksps、40 ksps、100 ksps,通過開關4~8的不同組合,可以實現以10 ksps為步進,10~200 ksps采樣頻率的改變。例如,當8位撥位開關全部閉合時,意味著采樣頻率為200 ksps,且A/D轉換采用單端采樣方式,采樣參考電壓需從系統(tǒng)外部輸入到圖2中的VREF引腳,采樣更新時鐘需從系統(tǒng)外部輸入到圖2中的CNSTR引腳。另外,系統(tǒng)還設計了復位按鍵以及用于下載程序代碼和進行調試的10針下載調試接口電路,如圖4所示。
[!--empirenews.page--]
3 系統(tǒng)軟件設計
如圖5所示,C8051F340單片機主程序需要首先完成單片機I/O引腳的設置與相關寄存器配置,然后讀取P4口用戶輸入控制指令,并根據用戶指令設置A/D轉換器參數,接著初始化CH375通信端口,進而初始化CH375芯片及其程序庫。緊接著檢查U盤是否插入,以及插入的U盤是否準備就緒。一旦U盤準備就緒,就在U盤新建文本文件格式的數據采集文件,然后打開文件,并使文件指針指向文件尾部以方便后面寫入采集數據。所有準備工作完成,就可以啟動A/D轉換器。如果采樣數據達到U盤1個扇區(qū)512字節(jié),那么就可以將采樣數據一次性寫入U盤的1個扇區(qū)中。這里需要注意兩點。第一,U盤讀寫可以字節(jié)為單位也可以塊為單位,以字節(jié)為單位需要頻繁訪問U盤,從而導致U盤存儲速度下降,使用壽命縮短,而以U盤1個扇區(qū)的512字節(jié)為單位讀寫U盤則可以很好地解決這個問題;另外,為了實現不間斷實時采樣,在設計數據的采集和存儲時采用了“乒乓制”,即在單片機開辟了A、B兩個512字節(jié)的RAM存儲區(qū),而A、B兩個存儲區(qū)分別交替完成存儲采樣數據和將采樣數據搬移到U盤中的任務,相互獨立工作,互不干擾,有效地解決了存儲數據與搬移數據可能出現的沖突。第二,A/D轉換器采集到的數據不是真實的電壓值,而只是真實電壓值與參考電壓相比的相對值,因此為了今后對采樣值分析方便,還需要計算出真實采樣電壓值,并將數字轉換為字符后再存儲到U盤采樣數據文件中。
C8051F340單片機通過CH375訪問U盤是系統(tǒng)軟件的核心部分,在實現這部分功能的程序中使用了南京沁恒電子有限公司開發(fā)的CH375HF5.LIB庫函數。這里以系統(tǒng)插入U盤,向U盤寫入512字節(jié)數據,然后拔出的過程為例,簡單介紹單片機訪問CH375的程序流程。
系統(tǒng)初始化成功后,調用xQueryInterrupt()函數查詢CH375中斷并更新中斷狀態(tài),等待U盤插入。U盤插入后,經過一段延時,系統(tǒng)調用CH375DiskReady()函數查詢U盤是否準備就緒。U盤一旦就緒,系統(tǒng)調用mCopyCodeStringToIRAM()和CH375FileCreate()函數,在U盤根目錄新建采樣數據文件,并調用CH375FileOpen()函數打開文件,接著使用語句
mCmdParam.ByteLocate.mByteOffset=Oxffffffff使文件指針指向文件的尾部,以方便后面添加采樣數據。如果已完成512字節(jié)采樣數據的采集,則調用CH375FileWriteX()函數,實現U盤一個扇區(qū)的寫操作。寫操作完畢后,需要利用下列4個語句:
mCmdParam.Modify.mFileAttr=Oxff
mCmdParam.Modify.mFileTime=MAKE_FILE_TIME()
mCmdParam.Modify.mFileDate=MAKE_FILE_DATE()
mCmdParam.Modify.mFileSize=0xffffffff
對文件屬性、時間、日期、長度等參數進行修改,然后調用CH375FileModify()函數完成對上述4個文件屬性的更新。最后系統(tǒng)調用CH375FileClose()函數關閉文件,調用xQueryInterrupt()函數查詢CH375中斷并更新中斷狀態(tài),等待U盤拔出,從而最終完成對U盤的訪問。
結語
本文設計的數據采集器利用高度集成的C8051F340處理器實現了數據A/D轉換和系統(tǒng)控制,利用CH375實現了采集器的USB主機功能,從而使采集的數據能以FAT32文件系統(tǒng)格式直接存儲到U盤中。該采集器數據收集方便,便于計算機分析,同時僅有C8051F340和CH375兩個主要器件,結構簡單,工作穩(wěn)定,只有名片大小,成本不足50元(不包括U盤),已成功應用于工業(yè)現場。