STM32F4關於AD采樣數據不穩定時“消抖”處理的幾種方法


  STM32在利用AD采集時,如果是采集的傳感器數據或其他傳入的數據的靈敏度相當高,或者因為其他原因導致數據不穩定,AD采樣采集進去后,數據抖動明顯,影響后期的數據利用,就需要對波動數據進行簡單的處理,以下是慕塵提供的可供嘗試的思路。

  一、平均值濾波

  最為簡單且容易想到的就是平均值濾波,多次采樣數據,然后取平均值,比如采樣一組16包數據,對16包數據取平均,默認此時結果有效;但是均值濾波會將毛刺和錯誤的值也計算其中,同時,如果數據的波動不均勻,也會導致結果不穩定;再此基礎上,我們可以進一步考慮二次均值濾波,對多組采樣數據取平均,然后再對取得的平均值再次進行平均,最后得到結果。

  二、四舍五入

  如果是對采樣數據的精度要求不是很嚴格或者采樣的數據在某種程度上面滿足需要,就可以采取這種方法,以丟失部分精度來換取數據的穩定,便於后期處理。至於“四舍五入”,倒不一定非得是真的要按照四舍五入,比如,如果一組數據是3.23 4.45 5.78  6.88 7.01 8.34,按照需要可以進行整數位的四舍五入,或者小數十分位的四舍五入(可先將十分位數據倍乘十,再進行取整),以此類推;但是ha也可以按照一定的范圍來設置四舍五入,比如上面這組數據,不一定非得取整四舍五入,可以選取一定范圍,認為在這個范圍里面的數就為有效,我們可以認為整數附近加減0.3的數據均為有效,這樣就可以篩選數據,可能這個方法適用於波動跳躍稍微大一些的情況。

  三、中值濾波

  多次采樣數據得到一組樣本,然后對采樣數據進行排列,取這組數據的中位值,即可;但是中值濾波會比較受到極值的干擾,兩端的波動會干擾最終數據的穩定,我們可以在中值濾波的基礎上再進一步處理,前面已經得到了一組采樣數據,我們可以取多組采樣數據,然后同時對多組采樣數據排列后取中位值,如果最終的數據結果被要求在某一范圍內,那么我們可以設定這多組數據的中位值如果當中存在n次處於有效范圍內,就認為此次中值有效,否則重新進行采樣取值;如果最終結果沒有期望范圍,就可以直接再對這些中值排列取中位值,進行二次中值濾波,但是這樣會對采樣速率有一定要求。

  四、方差

  進行多組數據采樣,然后對每一組的數據進行方差處理,最后得到最小方差的一組數據,可以認為這組數據的波動最小,然后再取這組最小方差的數據取平均,得到結果;

  小結:上述方法只是可供參考的簡單的,在實際面對AD采樣時數據抖動時的處理,當然還會存在更多更有效的濾波處理方法。可以想見的是上述方法都存在一定的缺陷,需要針對實際的情況來采取恰當的方法,比如上述的二次均值濾波,二次中值濾波,其實認真一看不過是加大采樣率擴大數據樣本的結果而已。

   

      牧塵執筆,轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM