基于ARM的振動信號采集及文件存儲系統
3.2 算法設計和軟件流程實現
LPC1768微控制器內置一個8通道的12位A/D轉換器,而該采集系統僅用到單路信號輸入,可以實現較高頻率的采樣,提高了采集數據的精度。軟件設計思想是在系統初始化后首先進行模式的判斷,分為采集模式和USB通信模式。在采集模式下,正式數據采集存儲前先進行數據預采集,對預采集的信號進行采樣處理,計算采集到的信號的幅值差,并與滿量程3.3 V進行判斷是否需要調節和計算出調節值。通過I2C總線來調節AD5245,預調節完成后進行正式信號采集,把采集到的數據進行數字濾波并存儲到數組中,數組中的數據通過SPI總線存儲在SD卡中,存儲完成后通過功放播放語音信號提示完成。USB模式主要為SD卡中數據與PC機的通信。主流程如圖5所示。

3.2.1 信號幅值檢測的算法
在程控放大器的設計中,對被測信號振幅的檢測至關重要,它是實現程控放大的關鍵。以往的程控放大器,多數是根據被測信號的幅值來調節程控放大器的放大倍數,此方法比較適合直流信號的檢測。交流信號的幅值是變化的,若根據被測信號的幅值調節程控放大器的增益,需要時刻改變程控放大器的增益,這將浪費CPU的很多資源,影響了A/D轉換的速度,限制了被測信號的范圍。因器件程序的計算和器件的延時也會給測量結果帶來很大的誤差,不適合做高頻信號的采集。
故本設計采用預采集進行幅值判斷,具體方法為開辟定長的數組Buffer用來存儲預采集信號,同時注意在設定此Buffer長度的時候,一定要滿足該長度至少為待采集信號的一個周期,然后對預采集信號進行處理判斷,確定調節值及調節方向。
對預采集信號的處理:首先要計算出數組中的最大值和最小值,由于定義的數組可能較大,故給出一種新的算法代碼,以大幅提高其效率(n很大時)。具體做法是:每次成對地處理數據,先將一對元素進行比較,然后把較大者與當前最大值比較,較小者與當前最小者比較,因此每兩個元素需要比較3次。具體實現時需考慮n的奇偶,n為奇數,3×(n /2)次;n為偶數,3n/2—2次,因此總的比較次數至多為3×(n-2),大大提高了計算的速度。
根據以上算法可得△V=Vmax-Vmin,故需要調節的放大倍數β約為:

這樣就計算出了需要調節的AD5245_W的調節值,通過I2C總線通信完成調節,進而進行數據的正式采集。
4 實驗結果及分析
通過對系統進行設計和實現,并對系統進行了測試,在采樣頻率為50 kHz下,對振動信號進行采樣分析,預采集信號時間長度為50 ms,正式采集長度為4 00ms,由頻帶為1~10 kHz的激勵源來激振被測物體,同時實驗存儲數據格式為標準的WAV格式。通過USB接口上傳到PC,用上位機頻譜分析軟件對實驗數據原信號和頻譜分析進行對比試驗,試驗現象如圖6所示。

通過對普通采樣系統和本系統采樣的原信號對比,可見在相同振動激勵下普通信號采集系統采集出信號的幅值最大值約為1000,并未填滿A/D轉換采集模塊最大的量程4096而本系統通過對信號的自適應放大,可將采集信號幅值最大提高到4 000左右,在一定程度上提高了信號采集的精度。
對普通采樣系統和本系統采樣信號的頻譜分析圖進行對比,如圖7所示。

可見普通采集系統的信號的頻譜分析不僅能量值較小,而且易受到其他頻率波的干擾,信噪比較低,影響了對信號特征的有效分析,而本采集系統則能較好地解決此類問題。
評論