單片機如何處理ADC采樣數據? 單片機怎么采集數據

單片機工程師在面試的過程中 , 經常會碰到一些相同的問題 , 筆者總結了十個提問率較高的問題 , 供大家參考 。 現在我們來分析單片機工程師常遇面試問題之五:單片機如何處理ADC采樣數據?
【單片機如何處理ADC采樣數據? 單片機怎么采集數據】 前面作者有文章介紹了單片機是如何采樣電壓和電流的 , 如有不了解單片機ADC采樣原理的小伙伴可以點擊我的頭像進入我的主頁查看文章"單片機是如何采樣電流?" 。
首先一定有小伙伴有疑問 , 為什么還要對采樣的數據進行處理呢?直接拿來用不行嗎?對于這個問題 , 我的回答是不建議這樣做 , 因為任何系統都會存在干擾 , 不進行處理就會有數據存在一定的誤差 。 那么我進行數據處理就是要盡量避免因外界干擾引起的誤差 。
在這里作者推薦兩種方法 , 第一種方法是多次采樣加權取平均 , 我相信很多朋友都可以想到這種方法 , 但在寫程序的時候可以運用一些技巧 , 作者分享給你 。 首先我們ADC采集8次數據并且對這8次數據累加(可以每1ms調用該函數) , 累加完成后將累加結果右移3位得到最后的采樣結果 。 當然這個方法還可以進一步改善 , 比如取樣10次 , 然后去掉最大值和最小值 , 再對剩下的8次進行取平均 。 下面貼出參考程序供小伙伴參考 。

單片機如何處理ADC采樣數據? 單片機怎么采集數據

文章插圖

圖(1)參考程序
當然 , 第一種取平均的方法能夠有效抑制干擾 , 但因為需要多次采樣 , 更新數據的時間會很長 , 比如取樣8次 , 每1ms取樣一次 , 那么更新數據就需要8ms時間 , 所以對采樣的數據實時性要求不是很高的系統才可以用這種方法 。 所以我們第二種方法就是用在實時性比較高的系統 。 作者推薦的是中值濾波的方法 , 實現思想就是取5個數據 , 每次采樣的新數據替換掉最老的數據 , 然后把中間的那個數據當做是采樣數據 , 這樣不僅可以有效抑制干擾 , 而且響應速度快 。

    推薦閱讀