摘 要:介紹了一種利用vc++實(shí)現(xiàn)基于聲卡的雙通道數(shù)據(jù)采集系統(tǒng),實(shí)現(xiàn)了波形發(fā)生器與頻率測量等基本功能,為低成本下構(gòu)建數(shù)據(jù)采集系統(tǒng)與波形發(fā)生器提供了一種思路。
關(guān)鍵詞:聲卡 數(shù)據(jù)采集 頻率測量
一、概述
數(shù)據(jù)采集是信號分析與處理的一個(gè)重要環(huán)節(jié),在許多工業(yè)控制與生產(chǎn)狀態(tài)監(jiān)控中,都需要對各種物理量進(jìn)行數(shù)據(jù)采集與分析。但是,專用數(shù)據(jù)采集卡的價(jià)格一般比較昂貴,而我們PC機(jī)的聲卡就是一個(gè)很好的雙通道數(shù)據(jù)采集卡。實(shí)際測量中,在滿足測量要求的前提下,可以充分利用計(jì)算機(jī)自身資源,完成數(shù)據(jù)采集任務(wù),從而節(jié)省成本。
本文利用vc編程實(shí)現(xiàn)了聲卡的雙通道數(shù)據(jù)采集,并且對信號進(jìn)行頻譜分析同時(shí)實(shí)時(shí)測量出信號的頻率。還利用聲卡的DA通道,實(shí)現(xiàn)了正弦波、方波、三角波輸出的信號發(fā)生器。波形發(fā)生器產(chǎn)生的信號同時(shí)還可以作為內(nèi)部測試用信號,檢驗(yàn)數(shù)據(jù)采集的準(zhǔn)確性。
二、聲卡數(shù)據(jù)采集系統(tǒng)硬件組成
Line Out
圖1 聲卡數(shù)據(jù)采集的硬件組成圖
利用聲卡進(jìn)行數(shù)據(jù)采集的硬件組成如圖1所示。通常,利用聲卡的Line In端作為信號輸入端口,兩路被測的模擬信號經(jīng)過左右聲道,A/D轉(zhuǎn)換進(jìn)入計(jì)算機(jī),通過vc編寫的虛擬儀器界面顯示出來。聲卡一般都具有單、雙聲道輸入,從而可實(shí)現(xiàn)單雙通道的采集.雙通道采集時(shí),聲卡采用并行采集,并具有采樣保持功能,兩個(gè)通道的數(shù)據(jù)不存在時(shí)間差,第一通道和第二通道數(shù)據(jù)存儲在同一個(gè)數(shù)據(jù)緩沖區(qū)中,且等間隔存儲,奇數(shù)序列是一個(gè)通道數(shù)據(jù),偶數(shù)序列為另一個(gè)通道數(shù)據(jù).讀取數(shù)據(jù)時(shí),將緩沖區(qū)中的數(shù)據(jù)全部讀入到一個(gè)數(shù)組中,然后對該數(shù)組數(shù)據(jù),采用隔一點(diǎn)取一點(diǎn)的方法,將數(shù)據(jù)分開并分別存到另外的兩個(gè)數(shù)組中,即將兩個(gè)通道的數(shù)據(jù)分開,從而實(shí)現(xiàn)了雙通道的采集.單通道采集時(shí),緩沖區(qū)中僅僅是一個(gè)通道的數(shù)據(jù),直接保存到一個(gè)數(shù)組即可。同時(shí),信號發(fā)生器產(chǎn)生的波形也可經(jīng)過Line out端輸出。
為了保護(hù)聲卡,被測信號并不是直接進(jìn)入聲卡,而是先經(jīng)過一個(gè)信號調(diào)理電路,對信號進(jìn)行放大或限幅,濾波等處理,信號調(diào)理電路如圖2所示。(a)圖是直流電平疊加模塊:C1代表信號的輸入,D1代表疊加直流電平后信號的輸出,電位器R8控制輸入直流電平的大;(b)圖是信號疊加模塊:A1、A2代表疊加信號的輸入,B1代表疊加后信號的輸出;(c)圖是模擬濾波模塊:LPIN代表濾波器的輸出,LPOUT代表濾波器的輸出,調(diào)節(jié)R6可以控制輸出的、幅度大小。當(dāng)然可以根據(jù)需要在調(diào)理電路中加入一些其它的模塊。
圖2 信號調(diào)理電路
三、聲卡采集系統(tǒng)的軟件編程
微軟公司已經(jīng)提供了一系列API函數(shù)用于對聲卡的操作,為了將需要用到的函數(shù)封裝成了一個(gè)類,編程時(shí)只需直接調(diào)用。使用的API函數(shù)有:
waveInGetDevCaps 實(shí)現(xiàn)聲卡的性能測試
waveInOpen 打開波形輸入設(shè)備
waveInPrepareHeader 為波形輸入準(zhǔn)備緩沖區(qū)
waveInAddBuffer 將數(shù)據(jù)緩存發(fā)送給波形輸入設(shè)備驅(qū)動
waveInStart 啟動向波形輸入緩沖區(qū)存儲數(shù)據(jù)
waveInUnprepareHeader 釋放波形輸入緩沖區(qū)
waveInStop 停止向波形輸入緩沖區(qū)存儲數(shù)據(jù)
waveInClose 關(guān)閉波形輸入設(shè)備
設(shè)計(jì)的軟件界面如圖3所示。目前所實(shí)現(xiàn)的功能有:
圖3 軟件界面設(shè)計(jì)
1.兩路波形發(fā)生器?僧a(chǎn)生正弦波、方波和三角波,并且頻率和幅值可調(diào)。
2.頻譜分析儀?梢詫Σ杉男盘栠M(jìn)行頻譜分析。頻譜分析采用了快速傅立葉變換(FFT)算法,并且將其封裝成獨(dú)立的函數(shù),方便調(diào)用。
3.頻率計(jì)。同時(shí)還可以實(shí)時(shí)地測量出采集到的信號的頻率。在利用程序計(jì)算頻率時(shí),一般采用兩種方法。一種是利用快速傅立葉變換,它的優(yōu)點(diǎn)是不僅能對標(biāo)準(zhǔn)的周期波形進(jìn)行測量,而且能夠計(jì)算出各種復(fù)雜波形和信噪比非常低的信號的頻率值,缺點(diǎn)是分辨率受到限制。另一種計(jì)算頻率的方法是采用脈沖計(jì)數(shù)法。它的優(yōu)點(diǎn)是測量低頻信號時(shí)精度高,但它不適合波形復(fù)雜和信噪比低的信號頻率測量。所以在測量過程中,程序先判斷信號上述的性質(zhì),根據(jù)信號的性質(zhì),自動地采用相應(yīng)的測量方法。
四、小結(jié)
采用聲卡制作的信號采集系統(tǒng),具有廉價(jià)、方便等優(yōu)點(diǎn),它可用于振動、噪聲、位移、溫度、壓力等各種物理量的測試。但是一般的聲卡支持的采樣頻率有11025、22050和44100,對高頻信號的采集會出現(xiàn)失真?傊\(yùn)用廉價(jià)的聲卡,輔以適當(dāng)?shù)能浖幊,可以?gòu)成一個(gè)較高采樣精度,中等采樣頻率且具有很大靈活性的數(shù)據(jù)采集系統(tǒng)。
參考文獻(xiàn)
[1]種蘭祥,閻麗,張首軍.基于計(jì)算機(jī)聲卡的多通道數(shù)據(jù)采集系統(tǒng).西北大學(xué)學(xué)報(bào), 2002.
[2] 云升,姚曉,夏志忠.vc++聲卡低層音頻服務(wù)的編程技術(shù).計(jì)算機(jī)應(yīng)用,2002.
[3] 鄭繼明,李儀.聲卡在數(shù)據(jù)采集中的應(yīng)用[J].國外電子測量技術(shù),2000(5).
[4]Matthew Miller,Bao Mi ,Development of automated real-time data acquisition system for robotic weld quality monitoring,Mechatronics,2002.12.