51單片機學習筆記(清翔版)(21)——ADDA數模轉換


A:anolog模擬的         D:digital數字的

AD模擬轉數字,DA數字轉模擬

生活中的基本都是模擬量,如溫度,可以是10℃,10.1℃等

手機的背光亮度自動調節,拿到太陽光下,亮度會增亮,拿到暗的地方光線會減暗,是因為,手機上有一個感光頭,采集環境光的亮度,采集到的的是模擬量,經過內部的AD轉換器,把模擬量轉換成數字量給CPU,CPU通過亮度值再輸出一個數字量,輸出的數字量再轉換為模擬量去控制背光屏的電壓,手機后面有一個背光板,手機液晶屏自身是不發光的,為什么能看到字?是因為手機屏上有背光,很多LED燈組成的還有背光板導光片等,LED燈的亮度決定了屏幕的亮度,光線強的時候,要把亮度調高,先通過感光元件返回的模擬量,轉化為數字量,通過這個數字量控制LED背光亮度,背光亮度是一個電壓,電壓大,會變亮,就是把數字量又輸出出去,控制燈的亮度。

所以手機自動調節用了AD和DA。還有重力感應、打電話時靠近面部息屏等等,以及煙霧傳感器,壓力傳感器等。

光線不充足下,發出聲音,燈會被打開,在下面有孔的鐵罩內,有一個咪頭(咪頭,是將聲音信號轉換為電信號的能量轉換器件,是和喇叭正好相反的一個器件(電→聲)。是聲音設備的兩個終端,咪頭是輸入,喇叭是輸出。)模塊,能檢測到震動或聲音,這些都是模擬量,通過這個模塊,通過內部的電路,把模擬量轉換為數字量,去控制燈的開關,同時在紅罩內,內有光敏電阻,開發板上也有,當光線充足,無論發出多大聲音,燈是不會亮的,只有光線暗,發出聲響,才會亮。它就是靠這聲音檢測和光線檢測結合來控制的。

我們開發板也有AD和DA,我們也可以模擬手機背光,控制LED亮暗。

初學了解技術指標就好,以后設計產品的時候就需要關注ADDA性能了,不同應用場合使用不同的AD。

假設從1變到2,兩個相鄰數碼,那電壓需要變化多大呢?假設電壓從0.1V變到0.2V,數碼就可以從1到2了,如果從0.1邊到0.19V,數字量還是1,這就是說之間有0.1V的變化量,有的AD變化0.05V就可以檢測到,這就是分辨率,分辨率越高,電壓發生一個很小的變化都能識別到。

再例如圖中例子,滿量程10V,是說能采集的最大電壓為10V,從0到10V間發生任何變化,只要在分辨率以內,都可以用一個數字量表示出來,通過這個數字量,通過計算,我們就能知道電壓變化了多少。12位的ADC,電壓每變化2.4mV,它的數字量就會變化一位。如果是2.4mV,數字量是1,通過這個1,就知道電壓是2.4mV,若電壓為4.8mV,那么數字量是2,如果變到5.9mV,那么數字量還是2,因為變化量小於2.4mV,所以不會識別到,這就是分辨率的問題。

例如稱黃金的稱就需要分辨率很高的,每發生幾毫克的變化我都需要知道,因為1g幾百塊是很貴的,所以如果我們要設計一個電子秤,它的用途是稱首飾珠寶的,就需要分辨率高的,如果是批發蔬菜的,那么分辨率就可以低些,少那幾克也沒事,因為AD分辨率越高價格越貴。我們開發板上AD是八位的。滿量程是5V。可以算出沒變化,0.01953125V就可以檢測到。

比如你模擬量能變到0.0000幾,小數點后好幾位,但數字量就不能做到,因為硬件的局限性。

從左面的圖就可以看出,模擬電壓從0到1LSB(最小變化量),數字電壓始終是0。

 

偏移誤差的圖就是上一個圖的右邊的圖像。

上述兩個誤差都是AD內部的誤差,生產工藝決定的,價格不同,誤差也不同,價格越貴,誤差越低,精度越高。當然也不是價格越高越好,要看用到什么場合。總不能稱白菜的稱拿一個做導彈的高速AD去做,一個AD就幾百塊,還需要外部晶振,做出來賣給誰去。

 

線性度

我們開發板用的是第二種逐次逼近式。

里面有DA轉換器、N位寄存器、控制器、比較器、D0~D7數據輸出、VIN數據模擬量輸出、VREF參考電壓。

例如我們開發板,參考電壓是5V,八位,首先把8位最高位置1,其它為0,那么參考電壓就取了一半,VREF/2,拿到VN這里與VIN比較,假設模擬輸入電壓是3.75V(要將他轉換為數字量),如果模擬輸入大,那么比較器會輸出1,保存到移位寄存器,然后把次高位置1(就是又取了剩下的2.5V的一半,也就是1.25V),加上前面你的2.5V,就是3.7V5,然后比較器還是輸出1,下一次又把下一位也置1,這時肯定模擬輸入電壓小,比較器就輸出0,然后再加一個1,比較器又輸出一個0,直到8位,然后就把這個N位寄存器的數字量輸出出去,輸出到鎖存緩沖器,然后輸出。

 

 


 DA:把數字量轉換成模擬量

內部采用電阻分壓的方式,輸出一個數字量,內部有多個開關,控制從哪一個通路走,從不同通路走,通過分壓后,電壓不一樣。

可以輸出0~5V的電壓。而AD可以檢測0~5V的輸入電壓。


 

我們用的5516光敏電阻。

通過光敏電阻就能采集到的環境光的亮度,在通過AD,電阻分壓的方式,只要電阻值變小,電壓就會發生變化。

開發板上也是NTC熱敏電阻,比較常用。

音量調節就是用的電位器。

4個模擬輸入,就是4個AD,1個輸出,即DA。用的I²C總線。

三個地址引腳,和前面的AD24C02,即EEPROM很像,就是在總線上最多運行掛幾個,2的3次方=8個。不需要額外的硬件就可以配置它的地址。

自動增量通道,即檢測完1通道自動增到2通道進行檢測。

量化電壓的時候要根據參考電壓來,接的是5V,所以最多識別0~5V。

EXT時鍾輸入選擇,配置為內部或者外部,我們配置為內部。

1(通道0):模擬輸入0,接了光敏電阻到地,中間接了4.7k電阻到VCC,通過分壓的方式。

  

當光敏電阻阻值越大,模擬輸入電壓就越大,電阻越小,電壓就越小,例如如果拿到強光下時電阻變為0.3k,分壓后,模擬輸入為0.3V,若光線弱,電阻為4.7k,那么模擬輸入為2.5V。有點人會說為什么分壓而不直接把光敏和電源還有地連接?當光敏為0.3k時,電流就很大了,功率浪費了很多,而且很多器件承受不了這么大電流,而且光線再強,若為0,那么等於直接電源接地了,輸入為5V,發熱更嚴重。而若有4.7k電阻,當光敏為0Ω,電流也才1.06..A,功率就很小了。所以采集電壓一般用分壓的方式。

2(通道1):熱敏,也是采用這種分壓方式。

3(通道2):接了10k電位器。

4(通道3):排針引出去。如果要接一些外部器件,有些同學買些模塊,模塊上除了VCC和GND,還有一個叫DO(數字輸出腳),AO(模擬輸出腳),DO隨便接一個IO口就可以,可以檢測到數字量的變化,AO可以用杜邦線接到AIN3這里了。

AOUT數字量轉模擬量的輸出,

有一個跳線帽,如果把它拔掉,模擬輸出可以接到別的地方去,比如我要用一個3.3V電源,我就可以給一個數字量讓他輸出3.3V電源,通過J6上那個1腳輸出到別的地方。

只要功耗不大,都可以采用這種方式。

默認時,AOUT是通過300Ω電阻接到DA指示燈上,數字量變化,輸出的模擬電壓變化,燈的亮度就不同。

有時候,你采集來的值,8位的,最大256,實際表示0~255,你給他5V,可能不是255,參考電壓接了VCC,可能不是標准的5V,有時候你電腦輸出5V,但是板子上有用電設備,電壓會拉低一點,如4.95等。

A2~A0我們都接了0,所以地址就是0x90+讀寫位

 alldata下載數據手冊,或百度找中文。

第二位,模擬輸出使能標志腳,如果允許模擬輸出要置1。其它為0,那么就是0100 0000

先發地址0x90,再發0x40,就是模擬輸出,再發送數字量,就會輸出相應的模擬電壓。

第3、4位,設置輸出方式,單端輸入,差分輸入。

我們開發板就是采用單端輸入,光敏、熱敏和AD芯片就很短。我們那些輸入信號都接了開發板的地。

差分輸入用於長距離傳輸。

第3、4位為00就是單端輸入。

第6位為自動增量標志位,置1,通道自動增量檢測,檢測完1就檢測2...

最后兩位是通道選擇位,00位0通道,01為1通道,10為2通道,11為3通道。

之后開始編程,邏輯是:起始信號,發送8591地址+讀寫方向,控制信號(DA輸出還是單端輸入),做輸入之后就讀DA的值,做DA輸出,發一個數字量,讓他轉為模擬量輸出。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM