STM32在利用AD採集時,若是是採集的傳感器數據或其餘傳入的數據的靈敏度至關高,或者由於其餘緣由致使數據不穩定,AD採樣採集進去後,數據抖動明顯,影響後期的數據利用,就須要對波動數據進行簡單的處理,如下是慕塵提供的可供嘗試的思路。大數據
1、平均值濾波基礎
最爲簡單且容易想到的就是平均值濾波,屢次採樣數據,而後取平均值,好比採樣一組16包數據,對16包數據取平均,默認此時結果有效;可是均值濾波會將毛刺和錯誤的值也計算其中,同時,若是數據的波動不均勻,也會致使結果不穩定;再此基礎上,咱們能夠進一步考慮二次均值濾波,對多組採樣數據取平均,而後再對取得的平均值再次進行平均,最後獲得結果。方法
2、四捨五入數據
若是是對採樣數據的精度要求不是很嚴格或者採樣的數據在某種程度上面知足須要,就能夠採起這種方法,以丟失部分精度來換取數據的穩定,便於後期處理。至於「四捨五入」,倒不必定非得是真的要按照四捨五入,好比,若是一組數據是3.23 4.45 5.78 6.88 7.01 8.34,按照須要能夠進行整數位的四捨五入,或者小數十分位的四捨五入(可先將十分位數據倍乘十,再進行取整),以此類推;可是ha也能夠按照必定的範圍來設置四捨五入,好比上面這組數據,不必定非得取整四捨五入,能夠選取必定範圍,認爲在這個範圍裏面的數就爲有效,咱們能夠認爲整數附近加減0.3的數據均爲有效,這樣就能夠篩選數據,可能這個方法適用於波動跳躍稍微大一些的狀況。採集
3、中值濾波錯誤
屢次採樣數據獲得一組樣本,而後對採樣數據進行排列,取這組數據的中位值,便可;可是中值濾波會比較受到極值的干擾,兩端的波動會干擾最終數據的穩定,咱們能夠在中值濾波的基礎上再進一步處理,前面已經獲得了一組採樣數據,咱們能夠取多組採樣數據,而後同時對多組採樣數據排列後取中位值,若是最終的數據結果被要求在某一範圍內,那麼咱們能夠設定這多組數據的中位值若是當中存在n次處於有效範圍內,就認爲這次中值有效,不然從新進行採樣取值;若是最終結果沒有指望範圍,就能夠直接再對這些中值排列取中位值,進行二次中值濾波,可是這樣會對採樣速率有必定要求。
4、方差
進行多組數據採樣,而後對每一組的數據進行方差處理,最後獲得最小方差的一組數據,能夠認爲這組數據的波動最小,而後再取這組最小方差的數據取平均,獲得結果;
小結:上述方法只是可供參考的簡單的,在實際面對AD採樣時數據抖動時的處理,固然還會存在更多更有效的濾波處理方法。能夠想見的是上述方法都存在必定的缺陷,須要針對實際的狀況來採起恰當的方法,好比上述的二次均值濾波,二次中值濾波,其實認真一看不過是加大采樣率擴大數據樣本的結果而已。
牧塵執筆,轉載請註明出處。