一個關(guān)于STM32F207 AD采集正弦信號不穩(wěn)定的話題
前言
客戶W在使用STM32F207VET6做一款電源監(jiān)控產(chǎn)品,STM32通過ADC采集一路正弦波信號。發(fā)現(xiàn)ADC采集的數(shù)據(jù)總會不定時的出現(xiàn)異常波動。采集完成后即使對數(shù)據(jù)進行處理,最后還是有會有一些異常數(shù)據(jù)無法消除。
硬件環(huán)境:STM32F207VET6 ST-Link仿真器
軟件環(huán)境:MDK Matlab
ADC數(shù)據(jù)的處理
ADC采集完的數(shù)據(jù)一般都需要有濾波算法進行處理。因為單次的數(shù)據(jù)采集,有很多的隨機因素導致采集數(shù)據(jù)不準,常見的干擾源由以下幾點:
高斯白噪聲:這是一種正態(tài)分布的隨機噪聲,功率譜密度服從均勻分布,幅值分布服從高斯分布。對于此種噪聲,我們可以通過取算術(shù)平均值的方式將其噪聲去掉。
固定頻率的噪聲:比如在被采集的信號源有一個固定頻率的噪聲會周期性的影響被采集信號。對此種噪聲,我們可以通過提高采集頻率,軟件中實現(xiàn)數(shù)字濾波的方式進行去除。
隨機噪聲:這種噪聲是沒有規(guī)律的噪聲,有可能是數(shù)據(jù)采集錯誤,或者是意外的參考電壓波動引起的。一般可以適用中值平均濾波算法來降低這種隨機信號對數(shù)據(jù)的影響。對于水位、液壓、溫度等緩慢變化的信號有很好的濾波效果,但是對于數(shù)據(jù)變化較快的信號并不適用。
針對STM系列的MCU如何提高采集信號的精度,有對應(yīng)的應(yīng)用文檔來進行介紹:
AN4073(針對STM32F2/F4xx)
AN2834(針對STM32F10x)
AN3137(針對STM8Lxx)
在AN4073中,一些通用的方式來降低系統(tǒng)噪聲的辦法有如下幾種。
現(xiàn)場檢查
在仔細查看了客戶的原理圖與硬件PCB布線后,并沒有發(fā)現(xiàn)硬件中有什么問題。但是在數(shù)據(jù)的采集中,的確會發(fā)現(xiàn)有一些數(shù)據(jù)明顯高于其他測試點的值,類似下圖:
首先,建議客戶修改濾波算法??蛻粢郧霸跁r域不做任何濾波工作的,而是直接將采集到的數(shù)據(jù)進行頻域轉(zhuǎn)換,在頻域中進行濾波操作。建議客戶在采集數(shù)據(jù)之后,馬上進行濾波(因為在時域上已經(jīng)可以明顯的看到異常數(shù)據(jù)了)。
增加上濾波算法后是可以減少一些‘毛刺’的出現(xiàn),但是因為噪聲的隨機性和客戶的真實數(shù)據(jù)就是正弦波,客戶最后還需要將時域的數(shù)據(jù)轉(zhuǎn)換到頻域進行計算,在最后的結(jié)果中還有‘不和諧’的因素在里邊。
其次,通過查看勘誤手冊,關(guān)于系統(tǒng)限制的說明中有關(guān)于噪聲的說明。所以修改MCU的系統(tǒng)配置參數(shù)進行嘗試。
注意,這個問題并不是寫在ADC部分,而是寫在了勘誤手冊的系統(tǒng)設(shè)計限制中。
這里說的很清楚,MCU的內(nèi)部會產(chǎn)生噪聲對ADC的精度造成影響。解決的辦法就是關(guān)閉ART加速器的預(yù)取功能并通過取平均值的濾波算法來實現(xiàn)降低這個干擾。
于是請客戶按照我們的參考文檔AN4073中所描述的方式進行操作。
最后,發(fā)現(xiàn)此方法對于降低異常數(shù)據(jù)有更好的效果,采集到的數(shù)據(jù)的穩(wěn)定性能夠進一步的提高。但因為這個部分的噪聲來源于MCU內(nèi)部(MCU只要工作,這個噪聲就是存在的),也無法做到100%消除這種異常值。且此計算需要時間(一次計算大概需要2ms),客戶的對于時間的要求很嚴格,需要有大量的應(yīng)用功能需要計算。異常值對于在頻域的功率因數(shù)等參數(shù)的影響又較大,故此種方式并不適用客戶的實際應(yīng)用場合。但客戶也肯定了我們這樣的ADC對于采集直流信號,噪聲為高斯白噪聲的情況下是適用的。采集速度也比較快。
小結(jié): 對于不同的場合,根據(jù)不同的噪聲類型,我們可能需要對ADC采集到的信號進行處理。具體到STM32F2和STM32F4,因為系統(tǒng)設(shè)計的限制,MCU 內(nèi)部的噪聲會對ADC的采集精度造成一定的影響,所以必須將ART加速器的預(yù)取功能關(guān)閉(數(shù)據(jù)緩存 指令緩存 打開)。對于采集交流信號源,并需要在頻域做相關(guān)處理的領(lǐng)域不太合適,主要是對于功率因數(shù)的計算產(chǎn)生影響較大。但是對于一般的直流信號的采集還是非常不錯的。