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

模數轉換器的工作原理
下圖 1 所示是 ATMEGA328 中使用的 ADC 的框圖。

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

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

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