關(guān)于ADC表達(dá)精度問(wèn)題的淺顯思考
只是一個(gè)電路小白對(duì)ADC的一些淺顯思考,如果有不對(duì)的地方,請(qǐng)各位大佬評(píng)論區(qū)指正一下。
此次討論不考慮【偏置誤差、增益誤差、微分非線性誤差、積分非線性誤差】,認(rèn)為這些誤差都不存在,ADC是理想情況,只考慮原理。
一、輸出的值究竟代表多少
剛開(kāi)始使用STM32的ADC的時(shí)候,對(duì)編程該除以多少產(chǎn)生了疑問(wèn)

假如我們使用一個(gè)3位的ADC,一共有個(gè)值(0-7),一共分成了7份,所以計(jì)算輸出的時(shí)候應(yīng)該除以7,所以最后的結(jié)果應(yīng)該是(誤):
當(dāng)ADC輸出為7,參考電壓為STM32的供電電壓3.3V時(shí),也就是(誤):
,輸出為3.3V
當(dāng)時(shí)認(rèn)為這理所應(yīng)當(dāng),非常合理,ADC也做到了滿量程輸出,所以編程(偽代碼)就是這樣:
當(dāng)時(shí)還沾沾自喜,看別人的程序都是除以4096,還說(shuō)他們居然這么簡(jiǎn)單的問(wèn)題都想不清楚,殊不知,真正年輕的人是自己。
二,糾正除數(shù)
慢慢的自己看ADC的手冊(cè),發(fā)現(xiàn),手冊(cè)里面寫(xiě)的和自己的理解完全不是一回事,

看PCF8591的數(shù)據(jù)手冊(cè)可以發(fā)現(xiàn),他是8位的ADC,他的LSB就是除以2^8,也就是256,并沒(méi)有減1的操作,那問(wèn)題就來(lái)了,按這個(gè)算法,還是上面的3位ADC的例子(方便說(shuō)明問(wèn)題)。輸出值就變成了:
這樣就在ADC滿輸出的情況下(111,也就是7),居然不是參考電壓了,這肯定不對(duì)啊【還是我自己年輕了】。

可以在XPT2046的數(shù)據(jù)手冊(cè)上清晰的看到,最大的輸出值對(duì)應(yīng)的就是FS-1LSB,確實(shí)是達(dá)不到參考電壓的【原來(lái)小丑竟是我自己】,這同樣也在

這個(gè)視頻下的這個(gè)老哥的評(píng)論得到印證

不過(guò)這個(gè)老哥的FS是指輸出,不是上面數(shù)據(jù)手冊(cè)里的Full_Scale(上面數(shù)據(jù)手冊(cè)的FS等于Vref),或者說(shuō)這個(gè)老哥是說(shuō)輸出的全量程。
總之,現(xiàn)在正確的編程(偽代碼)應(yīng)該是:
本來(lái)事情到這里就應(yīng)該告一段落了,但是看了上面的視頻,又有了新的問(wèn)題。
三、關(guān)于量化誤差的問(wèn)題
視頻里面講了并聯(lián)比較型ADC(Flash ADC)的工作原理,提到是用電阻分壓來(lái)比較電壓的大小

所以這個(gè)3位的ADC的量化表應(yīng)該是下面的表格:

由前面知道,8V的參考電壓,3位的ADC(LSB=1V),滿量程(111,也就是7)輸出:
得到的結(jié)果是7V,但是從上圖給出的原理圖看,量化誤差要不是6-7V,要不是7-8V,而我們希望的量化誤差是在一個(gè)LSB之內(nèi)【前后各半個(gè)LSB】也就是:
也就是:
我們希望當(dāng)ADC給出7V的結(jié)果時(shí),輸入的真實(shí)電壓在6.5-7.5V之間,而且各個(gè)數(shù)據(jù)手冊(cè)也確實(shí)是這樣輸出的:


而上圖這個(gè)電路顯然沒(méi)辦法滿足上述要求,所以真實(shí)的電路會(huì)不會(huì)是這樣呢:

這樣就可以做到:

這次就符合了數(shù)據(jù)手冊(cè),但是我沒(méi)有設(shè)計(jì)過(guò)adc芯片,也沒(méi)有查詢(xún)到相關(guān)資料證明adc里面就是這么設(shè)計(jì)的,有沒(méi)有懂這方面知識(shí)的大佬指點(diǎn)一二?謝謝~~