基于ARM的振動信號采集及文件存儲系統(tǒng)
3.2 算法設(shè)計和軟件流程實現(xiàn)
LPC1768微控制器內(nèi)置一個8通道的12位A/D轉(zhuǎn)換器,而該采集系統(tǒng)僅用到單路信號輸入,可以實現(xiàn)較高頻率的采樣,提高了采集數(shù)據(jù)的精度。軟件設(shè)計思想是在系統(tǒng)初始化后首先進行模式的判斷,分為采集模式和USB通信模式。在采集模式下,正式數(shù)據(jù)采集存儲前先進行數(shù)據(jù)預采集,對預采集的信號進行采樣處理,計算采集到的信號的幅值差,并與滿量程3.3 V進行判斷是否需要調(diào)節(jié)和計算出調(diào)節(jié)值。通過I2C總線來調(diào)節(jié)AD5245,預調(diào)節(jié)完成后進行正式信號采集,把采集到的數(shù)據(jù)進行數(shù)字濾波并存儲到數(shù)組中,數(shù)組中的數(shù)據(jù)通過SPI總線存儲在SD卡中,存儲完成后通過功放播放語音信號提示完成。USB模式主要為SD卡中數(shù)據(jù)與PC機的通信。主流程如圖5所示。
3.2.1 信號幅值檢測的算法
在程控放大器的設(shè)計中,對被測信號振幅的檢測至關(guān)重要,它是實現(xiàn)程控放大的關(guān)鍵。以往的程控放大器,多數(shù)是根據(jù)被測信號的幅值來調(diào)節(jié)程控放大器的放大倍數(shù),此方法比較適合直流信號的檢測。交流信號的幅值是變化的,若根據(jù)被測信號的幅值調(diào)節(jié)程控放大器的增益,需要時刻改變程控放大器的增益,這將浪費CPU的很多資源,影響了A/D轉(zhuǎn)換的速度,限制了被測信號的范圍。因器件程序的計算和器件的延時也會給測量結(jié)果帶來很大的誤差,不適合做高頻信號的采集。
故本設(shè)計采用預采集進行幅值判斷,具體方法為開辟定長的數(shù)組Buffer用來存儲預采集信號,同時注意在設(shè)定此Buffer長度的時候,一定要滿足該長度至少為待采集信號的一個周期,然后對預采集信號進行處理判斷,確定調(diào)節(jié)值及調(diào)節(jié)方向。
對預采集信號的處理:首先要計算出數(shù)組中的最大值和最小值,由于定義的數(shù)組可能較大,故給出一種新的算法代碼,以大幅提高其效率(n很大時)。具體做法是:每次成對地處理數(shù)據(jù),先將一對元素進行比較,然后把較大者與當前最大值比較,較小者與當前最小者比較,因此每兩個元素需要比較3次。具體實現(xiàn)時需考慮n的奇偶,n為奇數(shù),3×(n /2)次;n為偶數(shù),3n/2—2次,因此總的比較次數(shù)至多為3×(n-2),大大提高了計算的速度。
根據(jù)以上算法可得△V=Vmax-Vmin,故需要調(diào)節(jié)的放大倍數(shù)β約為:
這樣就計算出了需要調(diào)節(jié)的AD5245_W的調(diào)節(jié)值,通過I2C總線通信完成調(diào)節(jié),進而進行數(shù)據(jù)的正式采集。
4 實驗結(jié)果及分析
通過對系統(tǒng)進行設(shè)計和實現(xiàn),并對系統(tǒng)進行了測試,在采樣頻率為50 kHz下,對振動信號進行采樣分析,預采集信號時間長度為50 ms,正式采集長度為4 00ms,由頻帶為1~10 kHz的激勵源來激振被測物體,同時實驗存儲數(shù)據(jù)格式為標準的WAV格式。通過USB接口上傳到PC,用上位機頻譜分析軟件對實驗數(shù)據(jù)原信號和頻譜分析進行對比試驗,試驗現(xiàn)象如圖6所示。
通過對普通采樣系統(tǒng)和本系統(tǒng)采樣的原信號對比,可見在相同振動激勵下普通信號采集系統(tǒng)采集出信號的幅值最大值約為1000,并未填滿A/D轉(zhuǎn)換采集模塊最大的量程4096而本系統(tǒng)通過對信號的自適應放大,可將采集信號幅值最大提高到4 000左右,在一定程度上提高了信號采集的精度。
對普通采樣系統(tǒng)和本系統(tǒng)采樣信號的頻譜分析圖進行對比,如圖7所示。
可見普通采集系統(tǒng)的信號的頻譜分析不僅能量值較小,而且易受到其他頻率波的干擾,信噪比較低,影響了對信號特征的有效分析,而本采集系統(tǒng)則能較好地解決此類問題。
評論