ADC 採樣數據抖動

MSP430或STM32,在使用內部ADC出現的採樣數據異常抖動問題

採樣設計:

用於檢測供電線路電流及電壓。

產品運行在兩種模式下,1、低功耗靜態模式(倉儲態),2、全功能全速運行模式(工作態)。

在倉儲態下,所有外設均處於關閉狀態,MCU也處於低功耗模式下(如MSP430處於LPM3模式,STM32處於STOP2模式下),僅保留低功耗定時器及ADC,ADC處於低速運行狀態,檢測的是工頻信號,在一個工頻週期內檢測8個點的數據,每隔2.5ms採樣一次。外部採樣通道也通過MOS管進行開啓關閉。

ADC轉換器內部圖:

問題1.ADC多通道連續採樣,採樣值異常波動

當MCU需要多通道連續採樣時,ADC從設置的通道開始順序採樣到通道結束,其內部使用的是一個ADC進行對不同的採樣通道的切換,在切換過程中,不可避免的需要對ADC內部RC(Cadc)進行充放電,此時就存在一個隱蔽的問題。

若不同的採樣通道之間的採樣幅值不同,如CHANEL1的信號爲3.6V的電池電壓,CHANEL2的信號爲1V基準的交流信號,CHANEL3的信號爲3V左右的溫度信號。此時ADC先採樣CHANEL1,完成後將結果寫入結果寄存器,緊接着採樣CHANEL2,再採樣CHANEL3。

這個過程中,當不同的信道接入ADC時,外接待採樣信號會通過RC迴路進行充放電(這個過程需要一定的採樣保持時間設置),sample and hold time越長時間,Cadc的電壓值與待採信號值越一致,採樣結果越準確。但增加該時間則增加相應的時間及功耗。

產品在運行過程中出現的問題也基於此。在運行過程中,偶發異常的採樣到與實際值偏離較大的數據,採樣的交流信號產生了失真,計算出來的值也發生了跳動。

原因在於:由於通道1連接的電壓爲3.6V,而通道2連接的信號低於1,在採樣完成CHANEL1時,ADC自動切換到CHANEL2,此時由於採樣保持時間設置較小,ADC的RC還未放電完成,由較高的電壓信號切換到較低的電壓信號,RC未完成放電,導致最後的採樣結果出錯。但其實該種情況也不會必現,MCU差異性導致批量的產品中只有部分會出現該問題。

相同的道理,如果相鄰的通道,CHANEL2電壓信號較低,CHANEL3的電壓信號較高時,也可能產生ADC的Cadc未完成充電,採樣得到的值也不準確。

解決方法:1、增加採樣保持時間。2、在電壓信號相差較大的信道中間,增加對基準電壓的採樣,使信號處於平均值,在切換通道時不會因爲充放電不及時導致數據錯誤。

 

問題2 對MOS管控制的週期開關的通道進行採樣,異常檢測到有信號

試產的產品部分出現ADC採樣的信號呈下降趨勢,如2080,2070,2060,2055,2048,2048,但待檢信號無異常,信號源無明顯抖動。

由於功耗的限制,對於某些採樣信號的通道無法長時間開啓着,需要通過MOS來通道開啓和關閉,通過定時器對其週期性的開啓測量計算。

原因:在開啓MOS管時會產生一個衝擊信號,需要較長的時間穩定,由於器件的一致性差異,穩定的時間也略有差別。在設計時,設計爲執行開啓後60ms再去進行採樣,部分產品就會檢測到異常值,導致計算出現偏差,產品運行狀態也出現偏差。

解決方法:增加等待時間,開啓通道後,等待80ms再進行採樣,採樣數據無誤。

 

STM32 ADC採樣異常 採樣發生抖動

同樣在設計階段,產品在低功耗狀態下的採樣無異常。產品邏輯是在採樣計算到交流信號時,喚醒MCU外設開啓工作。

在第二次試產時,出現了部分設備,在無外部信號時,也採樣計算到了數據,導致運行狀態發生錯誤,體現在靜態功耗異常。從外部基準電源、工作電源、待檢信號來查,其紋波均較小無異常,但ADC還是採樣到抖動數據。

產品設計在定時器LPTIME中斷裏2.5ms週期觸發開啓ADC轉化,隨後MCU進入STOP2模式。

問題:採樣到的數據,偶發的出現一兩個點的跳動,如2048,2048,2048,1750,2048,2048,通過計算後,判定爲檢測到外部信號,喚醒了MCU及其外設,導致功耗異常。

但是通過JLINK調試就不會出現ADC採樣異常。

通過更換MCU可以解決問題。

切換到外部ADC採樣芯片時,不會出現抖動

MCU高速運行時,不會出現抖動

通過詢問技術支持,1、輸入阻抗不匹配 2、採樣電容沒充飽。(回到第一個問題了)

在更改程序,增加採樣保持時間後,修復了部分異常設備。但依舊有部分設備異常。此時採樣保持時間已加到最大,也無法解決該問題,且通過更換MCU可解決問題,又懷疑到硬件設計上來。。。

原因:

由於產品設計,在LPTIME中斷裏開啓ADC採樣,隨後退出中斷後立即進入STOP2模式,以降低整機功耗,使其運行在超低功耗狀態下,此時MCU主頻爲4MHz。在測試過程中將採樣保持時間開啓到最大,但在實際運行過程中,ADC的時鐘是與SYSCLK時鐘一致的,在退出LPTIME的中斷後MCU進入了STOP2模式,此時SYSCLK是被關閉的,ADC時鐘也被關閉了,再多的採樣保持時間也會停止不運行採樣了。

解決:開啓ADC->DMA中斷,在觸發ADC採樣後,等待DMA傳輸完成中斷(即等待所有ADC通道都採樣完成),再進入STOP2模式。此時保證了設置的採樣保持時間有效執行。但隨即也引入了靜態功耗增加的問題,爲該處等待,功耗增加10uA。

總結:

在多次試產過程中,總會出現各種奇奇怪怪的問題是在設計和準備樣機過程中無法發現的問題。在設計包括準備樣機的過程中,會對所用的器件一一進行篩選,且數量較少。當批量生產時,由於器件一致性差異,生產過程的老化破壞,操作人員的黑盒操作,都會使問題逐一暴露。所以一個產品在真正批量供貨問世前,必須經過至少3輪的試產試運行,才能保證問題基本在廠內消滅。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章