Part 01
前言
最近在看ADC電壓采樣的相關(guān)資料,目前用的比較多的就是逐次逼近寄存器型ADC,又叫做SAR ADC,我們用ADC的目的就是把模擬信號轉(zhuǎn)換成相應(yīng)的二進制編碼,之后再通過軟件把相應(yīng)的二進制編碼轉(zhuǎn)換成十進制AD值,最后通過相應(yīng)的轉(zhuǎn)換公式把十進制AD值轉(zhuǎn)換成電壓值。對應(yīng)的轉(zhuǎn)換公式有些資料中認(rèn)為12位ADC的Vin=AD值*Vref/4095,有些資料中認(rèn)為認(rèn)為12位ADC的Vin=AD值*Vref/4096,各大論壇里各位硬件專家也是爭論的十分激烈,可謂是公說公有理,婆說婆有理,那么到底哪個是對的呢?
Part 02
SAR ADC工作原理說明
先溫習(xí)一下SAR ADC的工作原理吧,
1.采樣和保持
首先,輸入的模擬電壓(VIN)通過采樣/保持電路保持穩(wěn)定,以便進行轉(zhuǎn)換。初始化:N位寄存器(SAR寄存器)被初始化為中間值,即最高有效位(MSB)設(shè)置為1,其余位為0。例如,對于8位寄存器,初始值為10000000。
2.DAC轉(zhuǎn)換
數(shù)模轉(zhuǎn)換器(DAC)將寄存器中的值轉(zhuǎn)換為對應(yīng)的模擬電壓(VDAC)。初始時,VDAC為基準(zhǔn)電壓(VREF)的一半,即VREF/2。
3.比較
比較器比較VIN和VDAC。如果VIN大于VDAC,比較器輸出高電平(邏輯1),寄存器中的MSB保持為1;如果VIN小于VDAC,比較器輸出低電平(邏輯0),寄存器中的MSB清零。
4.逐位逼近
SAR控制邏輯將寄存器移到下一位,并將該位設(shè)置為高電平。DAC再次將更新后的寄存器值轉(zhuǎn)換為新的VDAC。比較器再次比較VIN和VDAC,并更新寄存器中的當(dāng)前位。這一過程重復(fù)進行,每次都移到下一位,直到所有位(從MSB到LSB)都經(jīng)過比較和更新。
5.完成轉(zhuǎn)換
當(dāng)所有位都經(jīng)過比較和更新后,寄存器中的值即為對應(yīng)的數(shù)字輸出,代表輸入模擬電壓的數(shù)字量化值。最終的N位數(shù)字結(jié)果存儲在寄存器中,完成模數(shù)轉(zhuǎn)換過程。
Part 03
12位ADC是4095 or4096?
為了便于理解,我們以3位ADC,F(xiàn)s為參考電壓為例,下圖是不同的輸入電壓對應(yīng)的二進制編碼值,參考電壓是Fs,3位ADC實際上是分了8段模擬輸入電壓范圍進行編碼,每一段對應(yīng)的模擬輸入電壓為Fs/2^3=Fs/8V,那么:
0(0~Fs/16V):000
Fs/8(/16V~3*Fs/16V):001
...
Fs*7/8(13*Fs/16V~Fs*V):111
這樣就能得到傳遞函數(shù):Vin=AD值*Fs/2^3=AD值*Fs/8。
這個時候肯定有人會有疑問,如果輸入電壓Vin等于參考電壓Fs,此時對應(yīng)的AD值是7,那上面的等式不就不成立了? 這里有個誤區(qū)在于我們認(rèn)為的滿量程就是參考電壓Fs,比如我們的ADC參考電壓是5V,那么我們想當(dāng)然認(rèn)為5V就是滿量程電壓,但是基于下面的輸入電壓-編碼圖可知,111對應(yīng)的是Fs*7/8,并非是Fs,也就是ADC的滿量程定義為Fs-1LSB。所以雖然參考電壓是Fs,但是ADC的ADC的滿量程為Fs-1LSB,這樣當(dāng)輸入電壓等于Fs-1LSB時就已經(jīng)達到了滿量程,對應(yīng)的編碼就是111。
所以對于12位ADC,Vin=AD值*Vref/4096,12位ADC的二進制編碼值對應(yīng)是10進制AD值范圍就是0~2^12 -1,也就是0~4095,但是我們在通過AD值計算輸入電壓時是4096哦。
有問題歡迎在評論區(qū)留言交流哦!
審核編輯 黃宇
-
寄存器
+關(guān)注
關(guān)注
31文章
5343瀏覽量
120348 -
SAR
+關(guān)注
關(guān)注
3文章
416瀏覽量
45957 -
adc
+關(guān)注
關(guān)注
98文章
6498瀏覽量
544630 -
輸入電壓
+關(guān)注
關(guān)注
1文章
504瀏覽量
16558
發(fā)布評論請先 登錄
相關(guān)推薦
評論