想要提高ADC采集精度,軟件和硬件工程師都應(yīng)該了解一下相關(guān)的內(nèi)容!
1寫在前面
ADC:Analog Digital Converter,指模數(shù)轉(zhuǎn)換,也就是(電壓)模擬量轉(zhuǎn)換成數(shù)字量。
大多數(shù)MCU中都集成了ADC模塊,同時(shí)ADC也是在產(chǎn)品開發(fā)中使用率較高的一個(gè)模塊,相信大部分人都使用過ADC這個(gè)功能。
在STM32中內(nèi)置最多四個(gè)高級(jí)12位ADC控制器(ADC1、2、3、4)。當(dāng)然,ADC控制器數(shù)量多少取決于STM32型號(hào),還有部分STM32具有16位采樣的ADC(如STM32F373)。他們提供自校準(zhǔn)功能,用于提高環(huán)境條件變化時(shí)的ADC精度。
我們平時(shí)在使用ADC中要求不是很高,可能就沒有在于ADC轉(zhuǎn)換的值是否精確。但是,有些特定場(chǎng)合就需要更精確的轉(zhuǎn)換值,那么我們就需要對(duì)ADC做更多了解。下面章節(jié)帶領(lǐng)大家了解相關(guān)內(nèi)容。
2
ADC誤差
在涉及模數(shù)轉(zhuǎn)換的應(yīng)用中, ADC精度會(huì)影響整體的系統(tǒng)質(zhì)量和效率。為了提高此精度,有必要了解與ADC相關(guān)的誤差。
ADC誤差主要包含:ADC自身和環(huán)境導(dǎo)致的誤差。
1.ADC自身導(dǎo)致的誤差
說(shuō)誤差之前,先說(shuō)下ADC精度,為便于參考,將精度誤差表達(dá)為1 LSB的倍數(shù):
1 LSB = VREF+ / 2^12.
A.偏移誤差
偏移誤差是第一次實(shí)際轉(zhuǎn)換和第一次理想轉(zhuǎn)換之間的偏離。第一次轉(zhuǎn)換發(fā)生在數(shù)字ADC輸出從0變?yōu)?時(shí)。理想情況下,當(dāng)模擬輸入介于0.5 LSB和1.5 LSB之間時(shí),數(shù)字輸出應(yīng)為1。
仍然是理想情況下,第一次轉(zhuǎn)換發(fā)生在0.5 LSB處。用EO表示偏移誤差。可通過應(yīng)用固件輕松校準(zhǔn)偏移誤差。
正偏移誤差的表示方法:
負(fù)偏移誤差的表示方法:
B.增益誤差
增益誤差是最后一次實(shí)際轉(zhuǎn)換和最后一次理想轉(zhuǎn)換之間的偏離。增益誤差用EG表示。
正增益誤差的表示方法:
負(fù)增益誤差的表示方法:
C.微分線性誤差
微分線性誤差( DLE)為實(shí)際步進(jìn)和理想步進(jìn)之間的最大偏離。這里的“理想情況”不是指理想傳輸曲線,而是指ADC分辨率。
理想情況下, 1 LSB的模擬輸入電壓變化量應(yīng)導(dǎo)致數(shù)字代碼變化。如果需要大于1 LSB的模擬輸入電壓才能導(dǎo)致數(shù)字代碼變化,將觀察到微分線性誤差。因此, DLE對(duì)應(yīng)于從一個(gè)數(shù)字代碼變?yōu)橄乱粋€(gè)數(shù)字代碼所需的最大額外電壓。
D.積分線性誤差
積分線性誤差為任何實(shí)際轉(zhuǎn)換和端點(diǎn)相關(guān)線間的最大偏離,用EL表示ILE。
端點(diǎn)相關(guān)線可以定義為A/D傳輸曲線上連接第一次實(shí)際轉(zhuǎn)換與最后一次實(shí)際轉(zhuǎn)換的線。 EL是指與每一次轉(zhuǎn)換的這條線的偏離。因此,端點(diǎn)相關(guān)線對(duì)應(yīng)于實(shí)際傳輸曲線并且與理想傳輸曲線不相關(guān)。
E.總未調(diào)整誤差
總未調(diào)整誤差( TUE)為實(shí)際和理想傳輸曲線間的最大偏離。此參數(shù)指定可能發(fā)生的會(huì)導(dǎo)致理想數(shù)字輸出與實(shí)際數(shù)字輸出之間最大偏離的總誤差。 TUE是記錄到的任何輸入電壓的理想預(yù)期值與從ADC獲得的實(shí)際值之間的最大偏離。
2.ADC環(huán)境導(dǎo)致的誤差
A.參考電壓噪聲
由于ADC輸出為模擬信號(hào)電壓與參考電壓之比,因此模擬參考上的任何噪聲都會(huì)導(dǎo)致轉(zhuǎn)換后數(shù)字值的變化。在某些封裝中, VDDA模擬電源被用作參考電壓( VREF+),因此VDDA電源的質(zhì)量會(huì)影響ADC誤差。
B.參考電壓/電源調(diào)節(jié)
電源調(diào)節(jié)對(duì)于ADC精度十分重要,因?yàn)檗D(zhuǎn)換結(jié)果是模擬輸入電壓與VREF+值之比。
當(dāng)連接到VDDA或VREF+時(shí),如果這些輸入上的負(fù)載及其輸出阻抗導(dǎo)致電源輸出下降,將在轉(zhuǎn)換結(jié)果中產(chǎn)生誤差。
C.外部參考電壓參數(shù)
當(dāng)使用外部參考電壓源( VREF+引腳上)時(shí),該外部參考源有一些重要參數(shù)。必須考慮三個(gè)參考電壓規(guī)格:溫度漂移、電壓噪聲和長(zhǎng)期穩(wěn)定性。
D.模擬輸入信號(hào)噪聲
在采樣時(shí)間內(nèi),小而高頻率的信號(hào)變化可導(dǎo)致較大轉(zhuǎn)換誤差。此噪聲由電氣設(shè)備(例如電機(jī)、發(fā)動(dòng)機(jī)點(diǎn)火、電源線)生成。它增加了不需要的信號(hào),因此會(huì)影響源信號(hào)(例如傳感器)。這樣一來(lái),導(dǎo)致ADC轉(zhuǎn)換結(jié)果不準(zhǔn)確。
E.最大輸入信號(hào)幅度的ADC動(dòng)態(tài)范圍匹配不佳
為獲得最高ADC轉(zhuǎn)換精度, ADC動(dòng)態(tài)范圍必須與待轉(zhuǎn)換信號(hào)的最大幅度相匹配。
我們假設(shè)待轉(zhuǎn)換信號(hào)在0 V與2.5 V之間變化,并且VREF+等于3.3 V。 如下圖,有部分未使用的ADC轉(zhuǎn)換范圍,也會(huì)使轉(zhuǎn)換后信號(hào)精度下降。
3
如何提高ADC采集數(shù)據(jù)準(zhǔn)確性
這個(gè)問題之前寫過相關(guān)的內(nèi)容,只是沒有單獨(dú)提出來(lái)說(shuō),這里匯總一下。
1.減少ADC相關(guān)誤差的影響
上面描述了“ADC自身導(dǎo)致的誤差”,使用STM32 ADC自校準(zhǔn)功能或通過微控制器固件可以輕松補(bǔ)償偏移誤差和增益誤差。
之前在分享的代碼中有提到,比如:ADC_StartCalibration(ADC1);
2.使外部環(huán)境誤差最小化
A.參考電壓/電源噪聲最小化
也就是在VREF和VDDA引腳連接外部去耦電容。
B.模擬輸入信號(hào)噪聲消除
通過添加外部RC濾波器以消除高頻。
C.將ADC動(dòng)態(tài)范圍與最大信號(hào)幅度進(jìn)行匹配
也就是將參考電壓范圍匹配采樣電壓(當(dāng)然,需要有參考電壓引腳的芯片才行)。
同時(shí),也可以使用放大器針對(duì)ADC范圍調(diào)整輸入信號(hào)范圍:
D.溫度影響補(bǔ)償
第一種方法是完整描述偏移和增益漂移特性,并在存儲(chǔ)器中提供查詢表,以便根據(jù)溫度變化修正測(cè)量值。此校準(zhǔn)方法需要額外的成本和時(shí)間。
第二種方法包括使用內(nèi)部溫度傳感器和ADC看門狗,以在溫度變化達(dá)到給定值時(shí)重新校準(zhǔn)ADC。
E.優(yōu)化PCB布局
將模擬和數(shù)字布局分開
隔離模擬和數(shù)字電路電源
對(duì)供電和接地使用單獨(dú)的PCB層
3.提高精度的軟件方法
A.平均采樣
·平均會(huì)降低速度但可以提高精度
B.數(shù)字濾波(抑制DC值中的50/60 Hz噪聲)
·設(shè)置適當(dāng)?shù)牟蓸宇l率(這種情況下,從計(jì)時(shí)器觸發(fā)十分有用)。
·對(duì)采樣數(shù)據(jù)執(zhí)行軟件后處理(例如,對(duì)50 Hz噪聲及其諧波抑制進(jìn)行組合濾波)。
C.AC測(cè)量的快速傅里葉變換( FFT)
·此方法可以顯示被測(cè)信號(hào)中的諧波部分。
·由于使用了更強(qiáng)的計(jì)算能力,因此速度較慢。
D.ADC校準(zhǔn):偏移、增益、位權(quán)重校準(zhǔn)
·ADC校準(zhǔn)可減少內(nèi)部ADC誤差。但是,必須知道內(nèi)部ADC結(jié)構(gòu)。
E.使CPU生成的內(nèi)部噪聲最小化
應(yīng)用設(shè)計(jì)必須確保
·ADC轉(zhuǎn)換期間來(lái)自微控制器的干擾盡可能小。
·使采樣和轉(zhuǎn)換期間的數(shù)字信號(hào)變化量最小化(數(shù)字靜默)。
好了,就寫到這里。本文內(nèi)容參考ST官方應(yīng)用筆記內(nèi)容,經(jīng)我整理分享給大家,還有許多方法,大家可以自行研究。
-
mcu
+關(guān)注
關(guān)注
146文章
17984瀏覽量
367169 -
adc
+關(guān)注
關(guān)注
99文章
6709瀏覽量
549275 -
引腳
+關(guān)注
關(guān)注
16文章
1735瀏覽量
52932
發(fā)布評(píng)論請(qǐng)先 登錄
ADC采集精度不良
【BPI-CanMV-K230D-Zero開發(fā)板體驗(yàn)】+ADC數(shù)據(jù)采集及尋找引腳的問題
AD7091R-8讀取數(shù)據(jù)不準(zhǔn)確怎么解決?
采集ADC,軟件上面有什么實(shí)現(xiàn)方法嗎?
利用隔離式精密信號(hào)鏈保持數(shù)據(jù)采集的準(zhǔn)確度
ADS1282采集數(shù)據(jù)不是很準(zhǔn)確,什么原因?qū)е碌模?/a>
THS4521采集出來(lái)的數(shù)據(jù)不準(zhǔn)確,誤差特別大怎么解決?THS4521的輸入阻抗如何計(jì)算呢?
使用了一片ADS1198做肌電信號(hào)采集,所有通道的數(shù)據(jù)都不準(zhǔn)確,為什么?
ADS1256對(duì)ADC采集到的數(shù)據(jù)進(jìn)行FFT處理時(shí),需要在FFT之前將采集到的ADC轉(zhuǎn)換后的DATA值轉(zhuǎn)換成電壓值嗎?
什么原因?qū)е铝薃DS1262采集到的數(shù)據(jù)不準(zhǔn)確了?
將LM50接在雙極性的ADC上,能否采集到準(zhǔn)確的溫度?
ADC12DL3200的測(cè)試模式下數(shù)據(jù)采集不正確的原因?怎么處理?
TLV320AIC3104內(nèi)置ADC實(shí)現(xiàn)MIC數(shù)據(jù)采集的準(zhǔn)確度,為什么Codec測(cè)得的數(shù)據(jù)比原始信號(hào)要大那么多?
NIUSB6009 采集準(zhǔn)確率的問題?
第12章-ADC采集電壓和顯示 基于STM32的ADC—電壓采集(詳細(xì)講解+HAL庫(kù))

評(píng)論