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

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

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

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

傳感模擬世界

面包板上的LDR電路設(shè)置
書寫草圖
ADC輸出通過串行線路發(fā)送,必須在設(shè)置功能中初始化串行端口和波特率。 analogRead()函數(shù)用于從括號內(nèi)指定的模擬引腳讀取模擬輸入信號。默認(rèn)情況下,3.3V的電源電壓用作A/D轉(zhuǎn)換的參考電壓,這意味著0到3.3伏之間的輸入電壓映射為0到1023之間的整數(shù)值。為了使用施加到A引腳的外部參考電壓,請?jiān)诓輬D中使用 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界面

責(zé)任編輯:wv
-
adc
+關(guān)注
關(guān)注
100文章
7946瀏覽量
556885
發(fā)布評論請先 登錄
LTC2496:16位8/16通道ΔΣ ADC的卓越性能與應(yīng)用解析
LTC2488:16位2/4通道ΔΣ ADC的卓越性能與應(yīng)用解析
LTC2281:高性能10位雙通道ADC在高速信號處理中的應(yīng)用
MAX155/MAX156:8/4通道ADC的技術(shù)解析與應(yīng)用指南
MAX1302:8通道、±VREF多量程輸入串行16位ADC的深度解析
ADE7903:3通道Σ-Δ ADC的技術(shù)解析與應(yīng)用探索
AD7605 - 4:4 通道 16 位雙極性輸入同步采樣 ADC 的深度解析
CW32L010_ADC介紹
ADC 實(shí)戰(zhàn):如何精準(zhǔn)讀取傳感器信號
TLA2518 小型 8 通道 12 位模數(shù)轉(zhuǎn)換器 (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ù)手冊
如何從其ADC通道讀取模擬輸入信號
評論