我們生活在一個模擬世界中,其中大多數(shù)物理變量都是模擬信號。但是,微控制器只能處理數(shù)字格式的可用數(shù)據(jù)。正是由于這個原因,模數(shù)轉(zhuǎn)換(ADC)在與模擬環(huán)境交互的嵌入式系統(tǒng)中是如此重要。在本教程中,我們將討論chipKIT UNO32板的ADC功能,并說明如何從其ADC通道讀取模擬輸入信號。

模擬到數(shù)字轉(zhuǎn)換
理論
許多嵌入式應(yīng)用程序處理諸如運動,溫度,壓力,相對濕度,光強度和聲音。微控制器無法直接處理這些實體,因為i)它們是非電信號,ii)它們是模擬量,這意味著與數(shù)字信號的離散值相比,它們在給定范圍內(nèi)具有一組連續(xù)的值。為了使微控制器能夠處理這些數(shù)量,必須以某種方式將它們表示為數(shù)字信號。此過程的第一步是將物理信號轉(zhuǎn)換為電信號,這需要使用換能器。
換能器是一種將物理信號轉(zhuǎn)換為電信號的機電系統(tǒng),反之亦然。換能器的最簡單示例是光敏電阻或LDR,可用于測量環(huán)境光的強度。 LDR是一種特殊的電阻器,其電阻會隨著落在其表面上的光強度而變化。 LDR的電阻隨著光強度的升高而降低。下圖顯示了在兩種不同強度的光照射下LDR的電阻的測量結(jié)果。

在較高的光強度下,LDR的電阻較低(1.31 K?)

當落在其上的光被阻擋時,LDR電阻會升高(6.30 K?)
與固定值電阻器串聯(lián)的電阻可用于構(gòu)建將光強度轉(zhuǎn)換為電壓的機制。稍后將對此進行更詳細的討論。換能器的另一個示例是電動機,它將電壓轉(zhuǎn)換為運動。
現(xiàn)在,物理信號已轉(zhuǎn)換為電信號,但由于其模擬性質(zhì),尚未準備好進行計算機處理。因此,下一步需要模數(shù)轉(zhuǎn)換(ADC)系統(tǒng),該系統(tǒng)采用連續(xù)變化的電壓輸入并返回適合微控制器使用的二進制數(shù)字表示形式。
如今,許多微控制器都配備了模數(shù)轉(zhuǎn)換系統(tǒng)。 chipKIT UNO32板上的PIC32MX320F128H微控制器具有一個內(nèi)置ADC,具有16個ADC輸入通道。在Uno32板上,只有12個可通過排針A0至A11進行訪問。 ADC的分辨率為10位,這意味著對于給定范圍的模擬信號,可以進行1024(2 10 )個離散二進制表示形式(0至1023)。 ADC的可接受范圍通過參考電壓(VREF)設(shè)置。 chipKIT UNO32板上PIC32MX320F128H微控制器的默認設(shè)置參考電壓是其電源電壓(Vcc = 3.3 V)。這也是可以在chipKIT UNO32板上的任何ADC通道上施加的模擬電壓的最大值。假設(shè),如果將ADC的范圍設(shè)置為0-3.3V(VREF = 3.3 V),則ADC分辨率也可以用電壓表示為3.3/1024? 3.2毫伏。這是片上模數(shù)(A/D)轉(zhuǎn)換器可檢測到的模擬輸入電壓的最小變化。因此,0到3.2 mV之間的任何值都將由十進制0表示,十進制1則介于3.2 mV和6.4 mV之間,十進制2代表6.4 mV和9.6 mV之間,…,最后是1023介于3.2968 V和3.3 V之間。可以看到,采用這種配置,模擬電壓的數(shù)字表示形式中的最大誤差可能為3.2 mV。這也稱為量化誤差。
有時,模擬輸入電壓的范圍與3.3V相比過小,并且變化很小。例如,房間內(nèi)的空氣溫度變化不大。在這種情況下,您可以提高A/D轉(zhuǎn)換器的分辨率(從而減少量化誤差)以更精確地跟蹤溫度。假設(shè)如果您知道溫度感測傳感器的輸出電壓不能超過1V,則將VREF設(shè)置為1V可以提高分辨率為1/1024? 1毫伏。現(xiàn)在,A/D轉(zhuǎn)換器能夠檢測到輸入信號中很小的變化。外部ADC參考電壓可以通過其AREF引腳(在連接器J5上標記為A)提供給chipKIT UNO32板上的微控制器。可以施加到該引腳的最大電壓為3.3V。
電路設(shè)置
在本教程中,一個2.2K電阻與LDR以構(gòu)建分壓網(wǎng)絡(luò),如下所示。通過Uno32板的ADC通道A0測量電阻兩端的電壓。當光線落在LDR上時,其電阻減小,因此2.2K電阻兩端的電壓升高。如果光線被阻止落到LDR上,則會發(fā)生相反的情況。因此,10位ADC輸出與落在LDR上的光強度成正比。評估板已連接到PC,ADC輸出將通過串行端口發(fā)送并顯示在串行監(jiān)視器窗口中。

傳感模擬世界

面包板上的LDR電路設(shè)置
書寫草圖
ADC輸出通過串行線路發(fā)送,必須在設(shè)置功能中初始化串行端口和波特率。 analogRead()函數(shù)用于從括號內(nèi)指定的模擬引腳讀取模擬輸入信號。默認情況下,3.3V的電源電壓用作A/D轉(zhuǎn)換的參考電壓,這意味著0到3.3伏之間的輸入電壓映射為0到1023之間的整數(shù)值。為了使用施加到A引腳的外部參考電壓,請在草圖中使用 analogReference(External)函數(shù)。這是完整的chipKIT草圖,可讀取A0 ADC通道上的輸入值并將ADC輸出打印到串行監(jiān)視器。
/*
Tutorial 4: Analog to digital conversion
Description: Reads an analog signal input to A0 pin and send the
10-bit ADC output to PC to display on the serial monitor.
Board: chipKIT UNO32
*/
int ADC_OUTPUT;
void setup() {
Serial.begin(9600);
}
void loop() {
ADC_OUTPUT = analogRead(A0);
Serial.print(“LDR sensor output = ”);
Serial.println(ADC_OUTPUT, DEC);
delay(1000);
}
下載草圖文件
輸出
將以上草圖上傳到Uno32板上,然后從MPIDE打開串行終端窗口。 ADC樣本(整數(shù)ADC輸出)以1秒的間隔打印在窗口上。您可以觀察這些數(shù)字如何隨著LDR上光線的變化而變化。如果您將手指放在LDR上并阻擋掉落在LDR上的光,則ADC輸出將突然下降。

chipKIT Uno32板通過串行將ADC輸出發(fā)送到PC界面

責任編輯:wv
-
adc
+關(guān)注
關(guān)注
100文章
7511瀏覽量
556004
發(fā)布評論請先 登錄
CW32L010_ADC介紹
?ADC122S625 雙通道12位同步采樣模數(shù)轉(zhuǎn)換器技術(shù)規(guī)格總結(jié)
ADC 實戰(zhàn):如何精準讀取傳感器信號
ADC128S052/ADC128S052-Q1 8 通道高速低功耗 ADC 產(chǎn)品總結(jié)
TLA2518 小型 8 通道 12 位模數(shù)轉(zhuǎn)換器 (ADC)技術(shù)手冊
ADC12DJ5200RF 具有雙通道 5.2 GSPS 或單通道 10.4 GSPS 的射頻采樣 12 位 ADC技術(shù)手冊
?ADC168M102R-SEP 輻射耐受型8通道1MSPS 16位ADC完整總結(jié)
Modbus TCP或EtherNet/IP從站轉(zhuǎn)6通道輸入模擬量(AI)
Analog Devices / Maxim Integrated MAX22005A 12通道模擬輸入數(shù)據(jù)手冊
EEPROM芯片內(nèi)部的1路14bit ADC, ADC精度受使用通道數(shù)和采樣率是怎么樣的?
MAX22005 12通道工廠校準可配置工業(yè)模擬輸入技術(shù)手冊
如何從其ADC通道讀取模擬輸入信號
評論