單片機如何處理ADC采樣數據?首先一定有小伙伴有疑問,為什么還要對采樣的數據進行處理呢?直接拿來用不行嗎?對于這個問題,我的回答是不建議這樣做,因為任何系統都會存在干擾,不進行處理就會有數據存在一定的誤差。那么我進行數據處理就是要盡量避免因外界干擾引起的誤差。
在這里作者推薦兩種方法,第一種方法是多次采樣加權取平均,我相信很多朋友都可以想到這種方法,但在寫程序的時候可以運用一些技巧,作者分享給你。首先我們ADC采集8次數據并且對這8次數據累加(可以每1ms調用該函數),累加完成后將累加結果右移3位得到最后的采樣結果。當然這個方法還可以進一步改善,比如取樣10次,然后去掉最大值和最小值,再對剩下的8次進行取平均。下面貼出參考程序供小伙伴參考。
當然,第一種取平均的方法能夠有效抑制干擾,但因為需要多次采樣,更新數據的時間會很長,比如取樣8次,每1ms取樣一次,那么更新數據就需要8ms時間,所以對采樣的數據實時性要求不是很高的系統才可以用這種方法。所以我們第二種方法就是用在實時性比較高的系統。作者推薦的是中值濾波的方法,實現思想就是取5個數據,每次采樣的新數據替換掉最老的數據,然后把中間的那個數據當做是采樣數據,這樣不僅可以有效抑制干擾,而且響應速度快。
-
單片機
+關注
關注
6023文章
44378瀏覽量
628599 -
adc
+關注
關注
97文章
6302瀏覽量
542486
發布評論請先 登錄
相關推薦
評論