模數(shù)轉(zhuǎn)換器是一種用于將模擬信號(hào)(如光敏電阻或熱敏電阻的輸出)轉(zhuǎn)換為可由數(shù)字計(jì)算機(jī)或微控制器處理的二進(jìn)制信號(hào)的設(shè)備。
將模擬信號(hào)轉(zhuǎn)換為二進(jìn)制數(shù)字信號(hào)有多種方法,但在本教程中我們將討論逐次逼近法,因?yàn)檫@可能是最常用的方法。
采樣
每個(gè)交流波形都有特定的頻率、波長(zhǎng)和振幅。為了將這種波轉(zhuǎn)換成數(shù)字信號(hào),我們以周期性間隔(稱為采樣率)測(cè)量交流波形的振幅。更高的采樣率將產(chǎn)生更精確的交流波形表示:

模數(shù)轉(zhuǎn)換器的工作原理
下圖 1 所示是 ATMEGA328 中使用的 ADC 的框圖。

圖1:逐次逼近型模數(shù)轉(zhuǎn)換器
時(shí)鐘 CLK 提供采樣率,SAR 是逐次逼近寄存器,EOC 是輸出到處理器的信號(hào),用于指示當(dāng)前采樣已完成,Vref 是 5V 電源或外部電壓基準(zhǔn)。DAC 是數(shù)模轉(zhuǎn)換器,Vin 是模擬輸入引腳,S/H 是采樣保持器,COMP 是比較器。
轉(zhuǎn)換過程由輸入 ADC 的 Vin 端模擬信號(hào)啟動(dòng)。接收到該信號(hào)后,ADC 的控制單元將向逐次逼近寄存器發(fā)出命令,該寄存器開始通過逐次逼近法生成數(shù)字信號(hào)。生成的數(shù)字?jǐn)?shù)據(jù)由 DAC 轉(zhuǎn)換為模擬信號(hào),然后與當(dāng)前模擬信號(hào)和參考電壓進(jìn)行比較。此時(shí)可用的數(shù)字?jǐn)?shù)據(jù)通過輸出寄存器輸出。
ADC 的核心是采樣保持 (S/H),如下圖 2 所示:

圖 2:采樣和保持
對(duì)于每個(gè)采樣時(shí)鐘周期,S1 閉合,S2 斷開,使電容器快速充電至波形的當(dāng)前值。然后,S2 閉合,S1 斷開,比較器讀取電壓。
數(shù)模轉(zhuǎn)換的工作原理
我們?nèi)绾螌?ADC 輸出的數(shù)字位與模擬電壓電平關(guān)聯(lián)起來?假設(shè)一個(gè) 10 位 ADC 的采樣值為 0001100100。我們首先需要將這個(gè)二進(jìn)制數(shù)轉(zhuǎn)換為整數(shù)。
如何將二進(jìn)制數(shù)轉(zhuǎn)換為整數(shù)。首先,將二進(jìn)制數(shù)按下表排列,可能的組合數(shù)從右到左依次遞增:

現(xiàn)在,將位值乘以可能的組合數(shù):
0512 + 0256 + 0128 + 164 + 132 + 016 + 08 + 14 + 02 + 01 = 100
那么,我們讀到的電壓是多少?
在 Arduino ADC 中,ADC 輸出范圍限制在 0 到 1023 之間。假設(shè)我們使用本地 5V 作為參考,則:(1023 / 5V)* Vin = 返回的整數(shù)值。
因此,如果 ADC 輸出整數(shù)值 100(如上所示),則電壓為:電壓 = (5V * 100) / 1023 = 0.488V
就是這樣!模數(shù)轉(zhuǎn)換器(A/D 轉(zhuǎn)換器)雖然相當(dāng)復(fù)雜,但了解它們確實(shí)很有益處。
-
adc
+關(guān)注
關(guān)注
100文章
7513瀏覽量
556089 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7809瀏覽量
93232 -
模數(shù)轉(zhuǎn)換器
+關(guān)注
關(guān)注
26文章
4014瀏覽量
130123
發(fā)布評(píng)論請(qǐng)先 登錄
ADC模數(shù)轉(zhuǎn)換器介紹
模數(shù)轉(zhuǎn)換器(ADC)到底在干嘛?
評(píng)論