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)推薦
深度解析三種不同方式ADC應(yīng)用實例
![深度解析三種不同方式<b class='flag-5'>ADC</b>應(yīng)用實例](https://file.elecfans.com/web1/M00/EC/DB/o4YBAGCI1CGATHFoAACM3C29wgw526.png)
ADC121S021讀取的數(shù)據(jù)如何計算電壓?
初學(xué)電子 ADC模塊應(yīng)用的一些問題
轉(zhuǎn):ADC采樣值轉(zhuǎn)化成電壓值詳解
輸入DSP AD口的模擬電壓為Vin ,進入DSP轉(zhuǎn)換成數(shù)字量的值是: 4095*( Vin-ADCLO)/3 嗎?
關(guān)于12位ADC轉(zhuǎn)換數(shù)據(jù)不能達到4095的現(xiàn)象
單片機是如何采樣ADC值的?
怎么得到參考電壓Vref?
KW36如何在Vref范圍內(nèi)降低adc輸入電壓?
怎么得到參考電壓Vref?
AD9248的VIN+A、VIN-A等對地的輸入電壓范圍到底是多少?
MSP430單片機之ADC的詳細(xì)資料說明
![MSP430單片機之<b class='flag-5'>ADC</b>的詳細(xì)資料說明](https://file.elecfans.com/web1/M00/8B/24/o4YBAFyTKgSAKf5CAAFOSNjyC4g210.png)
N76E003 ADC計算電壓值
![N76E003 <b class='flag-5'>ADC</b><b class='flag-5'>計算</b><b class='flag-5'>電壓</b><b class='flag-5'>值</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論