ADC高速采樣電路設(shè)計詳解:STM32 踩坑?
發(fā)布時間:2024-10-16作者:admin點擊:81
一、踩坑過程
最近用STM32F334做數(shù)字電源,用到了高速ADC采集電壓電流。設(shè)計的參考電壓VREF為3.3V,輸入信號經(jīng)運放跟隨后直接接入單片機的采樣通道。一開始測試一切正常,但隨著輸入信號增加到2.5V左右,采集到的電壓值突然嚴重偏大(比如實際2.5V,ADC采集到的電壓為2.6V)。
首先排除軟件問題,因為電壓較低時采集到的數(shù)據(jù)一切正常。然后檢查硬件問題,確認輸入信號正常,確認參考電壓正常,甚至排除了通道間相互干擾的可能性,最終問題依舊。也懷疑過單片機自身的缺陷,但根據(jù)多年的踩坑經(jīng)驗,大概率還是自己的硬件設(shè)計或者軟件有不完善的地方。
對比以往的經(jīng)驗,所用到的ADC的采樣率都很低(基本上小于1kHz),而這次采樣率很高(達到300kHz)。因此初步懷疑,這次和以往的不同應(yīng)該有什么沒注意到的問題。由于需要快速采樣,本次的ADC時鐘到達72MHz,采樣時間設(shè)為了最小1.5個周期,單次采樣時間0.149us左右。
懷疑采樣時間太快,導(dǎo)致采集出錯,因此將采樣時間設(shè)大。設(shè)大后有明顯效果,采集到的值誤差變小,基本判定此處有玄機。于是仔細看了下手冊關(guān)于采樣時間的的描述
描述中明確提到,需要有足夠的采樣時間,確保輸入信號對內(nèi)嵌的保持電容充電并達到穩(wěn)定狀態(tài)。之后把采樣時間設(shè)置到最大,采樣的結(jié)果好了很多,但卻沒有完全解決問題。明顯這已經(jīng)不能真正解決問題了,因為采樣時間已經(jīng)超出我能接受的范圍。同時還有一個疑惑,如果充電時間太短導(dǎo)致電壓未達到實際值,采樣結(jié)果應(yīng)該偏小才對,為啥會偏大呢?看來是有必要把ADC的相關(guān)問題系統(tǒng)徹底的研究一下了。首先應(yīng)該深入了解下單片機內(nèi)ADC的基本原理,在網(wǎng)上找到了一篇文章https://blog.csdn.net/Zhuo3364/article/details/142112282,看完后才真正解開了我的疑惑。問題就出在輸入信號的處理上。由于我直接運放跟隨后接入ADC,在低速采樣時有足夠時間來穩(wěn)定電壓,所以不會有問題。但在高速時,采樣開關(guān)開啟的瞬間,放大器會產(chǎn)生尖峰。又由于采集時間很短,尖峰還未消除,采集開關(guān)已經(jīng)關(guān)閉,因此實際采樣到的值會偏大。至此問題算是真的找到了,下面將ADC采樣電路的設(shè)計要點總結(jié)一下。
二、ADC設(shè)計要點總結(jié)
1、基準源的設(shè)計
2、輸入信號的設(shè)計
輸入信號為什么要處理
關(guān)于輸入信號,很多新手都會犯一個錯誤,就是直接把電阻分壓的信號接入ADC采樣,如下圖示意。為什么說這是個錯誤呢,經(jīng)歷過的人就知道這樣采樣得到的值也會有偏差,嚴重時跟設(shè)計完全不符。
這個問題在于,ADC本身有一定的輸入阻抗,但阻抗并不高,有些甚至只有幾kΩ。這樣直接接入信號,ADC的輸入阻抗就會起到分壓的作用。如下圖,ADC的輸入阻抗Rz和R2并聯(lián)后再和R1分壓,因此實際分壓比就和設(shè)計的完全不同了,采樣到的值自然會和設(shè)計值差別很大。所以輸入信號應(yīng)該要做適當?shù)奶幚怼?/p>
輸入信號跟隨
常規(guī)的處理,就是輸入信號加個跟隨器,因為放大器的輸入阻抗可以認為是無窮大的,所以不存在上述分壓的問題。這基本上可以滿足絕大部分低速采樣的需求,但對于高速采樣,只跟隨不濾波也會有問題,這也是本次踩坑的點所在。
輸入信號抗混疊
找了一個專用的ADC手測仔細研究了下,里面重點就強調(diào)了輸入信號抗混疊的處理。其實就是對輸入信號進行低通濾波。
下面這張圖片也很好的顯示了輸入信號加RC濾波和不加的區(qū)別,這也是為什么我這次踩坑的原因。從不加RC的曲線可以看到,采樣瞬間放大器輸出信號產(chǎn)生了一個尖峰,如果采樣周期很短,尖峰還未消除,就完成了采樣,那么采樣到的值肯定偏大。而加了RC的曲線則是平穩(wěn)上升到實際的值。
三、反思很多時候我們以為自己懂了,其實沒懂,只是湊巧沒出問題而已。知其然后還是應(yīng)該要知其所以然,面對問題方能處變不驚,游刃有余。
- 上一篇:【電路設(shè)計】緩啟動電路原理解析
- 下一篇:功率開關(guān)管