AD轉換
1.基本概念
什么是AD轉換?
- A(A,analog,模擬的,D,digital,數字的)
- 現實世界是模擬的,連續分布的,無法被分成有限份;
- 計算機世界是數字的,離散分布的,是可以被分成有限份的;
- AD轉換就是把一個物理量從模擬的轉換成數字的。即模擬信號到數字信號的轉換。
在儀器儀表系統中,常常需要將檢測到的連續變化的模擬量如:溫度、壓力、流量、速度、光強等轉變成離散的數字量,才能輸入到計算機中進行處理。這些模擬量經過傳感器轉變成電信號(一般為電壓信號),經過放大器放大后,就需要經過一定的處理變成數字量。實現模擬到數字量轉變的設備通常稱為模數轉換器(ADC),簡稱A/D。
- ADC主要應用在(低速)數字萬用表、電子稱等;(中速)工業控制、實驗設備等;(高速)數字通信、導彈測距等;(超高速)數字音頻、視頻信號變化、氣象數據分析處理。
- ADC輸入的是模擬量,輸出的是數字量。
- ADC輸出的數字量可視為輸入電壓(電流)與基准電壓(電流)相比所占的比例。
- 輸出和輸入關系可表示如下:
在模擬轉換器ADC中,由於模擬信號是時間上和數值上均為連續的物理量
,而數字信號是時間上和數值上均為離散的物理量
。
要進行模數轉換時,先要按一定的時間間隔對模擬電壓(或電流)進行采樣,室其變為時間上離散的信號,然后將采樣的電壓(或電流)值保持,並同時對采樣進行量化和編碼,如此經量化、編碼后的信號就成為了時間上和幅值上都離散的數值信號了。
通常情況下,A/D轉換一般要經過取樣、保持、量化及編碼4個過程。
取樣
- 取樣是將隨時間連續變化的模擬量轉換為時間離散的模擬量。取樣過程示意圖如下所示。圖(a)為取樣電路結構,其中,傳輸門受取樣信號S(t)控制,在S(t)的脈寬τ期間,傳輸門導通,輸出信號vO(t)為輸入信號v1,而在(Ts-τ)期間,傳輸門關閉,輸出信號vO(t)=0。電路中各信號波形如圖(b)所示。
通過分析可以看到,取樣信號S(t)的頻率愈高,所取得信號經低通濾波器后愈能真實地復現輸入信號。但帶來的問題是數據量增大,為保證有合適的取樣頻率,它必須滿足取樣定理。
- 取樣定理:設取樣信號S(t)的頻率為fs,輸入模擬信號v1(t)的最高頻率分量的頻率為fimax,則fs與fimax必須滿足下面的關系\(f_s≥2f_{imax}\),工程上一般取\(f_s=(3-5)f_{imax}\)。
- 將取樣電路每次取得的模擬信號轉換為數字信號都需要一定時間,為了給后續的量化編碼過程提供一個穩定值,每次取得的模擬信號必須通過保持電路保持一段時間。
- 取樣與保持過程往往是通過取樣-保持電路同時完成的。取樣-保持電路的原理圖及輸出波形如圖所示。
-
電路由輸入放大器A1、輸出放大器A2、保持電容CH和開關驅動電路組成。電路中要求A1具有很高的輸入阻抗,以減少對輸入信號源的影響。為使保持階段CH上所存電荷不易泄放,A2也應具有較高輸入阻抗,A2還應具有低的輸出阻抗,這樣可以提高電路的帶負載能力。一般還要求電路中AV1·AV2=1。
-
現結合圖(a)來分析取樣-保持電路的工作原理。
- 在t=t0時,開關S閉合,電容被迅速充電,由於AV1·AV2=1,因此v0=vI,在t0~t1時間間隔內是取樣階段。
- 在t=t1時刻S斷開。若A2的輸入阻抗為無窮大、S為理想開關,這樣可認為電容CH沒有放電回路,其兩端電壓保持為v0不變,圖(b)中t1到t2的平坦段,就是保持階段。
-
取樣-保持電路以由多種型號的單片集成電路產品。如雙極型工藝的有AD585、AD684;混合型工藝的有AD1154、SHC76等。
量化與編碼
-
數字信號不僅在時間上是離散的,而且在幅值上也是不連續的。任何一個數字量的大小只能是某個規定的最小數量單位的整數倍。為將模擬信號轉換為數字量,在A/D轉換過程中,還必須將取樣-保持電路的輸出電壓,按某種近似方式歸化到相應的離散電平上,這一轉化過程稱為數值量化,簡稱量化。量化后的數值最后還需通過編碼過程用一個代碼表示出來。經編碼后得到的代碼就是A/D轉換器輸出的數字量。
-
量化過程中所取最小數量單位稱為量化單位,用△表示。它是數字信號最低位為1時所對應的模擬量,即1LSB。
-
在量化過程中,由於取樣電壓不一定能被△整除,所以量化前后不可避免地存在誤差,此誤差稱之為量化誤差,用ε表示。量化誤差屬原理誤差,它是無法消除的。A/D 轉換器的位數越多,各離散電平之間的差值越小,量化誤差越小。
-
量化過程常采用兩種近似量化方式:只舍不入量化方式和四舍五入的量化方式。
1.只舍不入量化方式
以3位A/D轉換器為例,設輸入信號v1的變化范圍為0~8V,采用只舍不入量化方式時,取△=1V,量化中不足量化單位部分舍棄,如數值在0~1V之間的模擬電壓都當作0△,用二進制數000表示,而數值在1~2V之間的模擬電壓都當作1△,用二進制數001表示……這種量化方式的最大誤差為△。
2.四舍五入量化方式
如采用四舍五入量化方式,則取量化單位△=8V/15,量化過程將不足半個量化單位部分舍棄,對於等於或大於半個量化單位部分按一個量化單位處理。它將數值在0~8V/15之間的模擬電壓都當作0△對待,用二進制000表示,而數值在8V/15~24V/15之間的模擬電壓均當作1△,用二進制數001表示等。
3.比較
采用前一種只舍不入量化方式最大量化誤差│εmax│=1LSB,而采用后一種有舍有入量化方式│εmax│=1LSB/2,后者量化誤差比前者小,故為多數A/D轉換器所采用。
2.A/D轉換器的基本原理和分類
根據A/D轉換器的原理可將A/D轉換器分成兩大類。一類是直接型A/D轉換器
,將輸入的電壓信號直接轉換成數字代碼,不經過中間任何變量;另一類是間接型A/D轉換器
,將輸入的電壓轉變成某種中間變量(時間、頻率、脈沖寬度等),然后再將這個中間量變成數字代碼輸出。
分類
盡管A/D轉換器的種類很多,但目前廣泛應用的主要有三種類型:
逐次逼近式A/D轉換器
雙積分式A/D轉換器
V/F(電壓-頻率)變換式A/D轉換器
- 另外,近些年有一種新型的
Σ-Δ型A/D轉換器
異軍突起,在儀器中得到了廣泛的應用。
逐次逼近式(SAR)A/D轉換器(SAR)的基本原理是:將待轉換的模擬輸入信號與一個推測信號進行比較,根據二者大小決定增大還是減小輸入信號,以便向模擬輸入信號逼進。推測信號由D/A轉換器的輸出獲得,當二者相等時,向D/A轉換器輸入的數字信號就對應的時模擬輸入量的數字量。這種A/D轉換器一般速度很快,但精度一般不高。常用的有ADC0801、ADC0802、AD570等。
雙積分式A/D轉換器的基本原理是:先對輸入模擬電壓進行固定時間的積分,然后轉為對標准電壓的反相積分,直至積分輸入返回初始值,這兩個積分時間的長短正比於二者的大小,進而可以得出對應模擬電壓的數字量。這種A/D轉換器的轉換速度較慢,但精度較高。由雙積分式發展為四重積分、五重積分等多種方式,在保證轉換精度的前提下提高了轉換速度。常用的有ICL7135、ICL7109等。
Σ-Δ型AD由積分器、比較器、1位D/A轉換器和數字濾波器等組成。原理上近似於積分型,將輸入電壓轉換成時間(脈沖寬度)信號,用數字濾波器處理后得到數字值。電路的數字部分基本上容易單片化,因此容易做到高分辨率。主要用於音頻和測量。這種轉換器的轉換精度極高,達到16到24位的轉換精度,價格低廉,弱點是轉換速度比較慢,比較適合用於對檢測精度要求很高但對速度要求不是太高的檢驗設備。常用的有AD7705、AD7714等。
V/F轉換器是把電壓信號轉換成頻率信號,由良好的精度和線性,而且電路簡單,對環境適應能力強,價格低廉。適用於非快速的遠距離信號的A/D轉換過程。常用的有LM311、AD650等。
51單片機讀取轉換結果的方式:延時方式、查詢方式、中斷方式。
- 查詢法
采用查詢法就是將轉換結束信號接到I/O接口的某一位,或經過三態門接到單片機數據總線上。A/D轉換開始之后,CPU就查詢轉換結束信號,即查詢EOC引腳的狀態:若它為低電平,表示A/D轉換正在進行,則MCS-51應當繼續查詢;若查詢到EOC變為高電平,則給OE線送一個高電平,以便從線上提取A/D轉換后的數字量。
-
優點:接口電路設計簡單。
-
缺點:A/D轉換期間獨占CPU,致使CPU運行效率降低。
- 延時法
對於每種A/D轉換器,轉換時間作為一項技術指標,是已知的和固定的。如ADC0809的轉換時間為128us。可以設計一個延時子程序,當啟動轉換后,CPU調用該延時子程序或用定時器定時,延時時間或定時時間稍大於A/D轉換所需時間。等時間一到,轉換已經完成,就可以從“三態輸出鎖存器”讀取數據。
-
優點:接口電路設計比查詢法簡單,不必讀取EOC的狀態。
-
缺點:A/D轉換期間獨占CPU,致使CPU運行效率降低;另外還必須知道A/D轉換器的轉換時間。
- 中斷法
采用中斷方式傳送數據時,將轉換結束信號接到單片機的中斷申請端,當轉換結束時申請中斷,CPU響應中斷后,通過執行中斷服務程序,使OE引腳變高電平,以提取A/D轉換后的數字量。
-
優點:A/D轉換期間CPU可以處理其它的程序,提高CPU的運行效率。
-
缺點:接口電路復雜。
3.ad轉換的步驟
- 對於 ALE 信號是上升沿有效,鎖存地址並選中相應通道。clk:時鍾信號,可由單片機ale信號分頻得到。
- 而對於ST 信號來說是下將沿有效有效,然后開始轉換。A/D轉換期間ST為低電平。
- 此時,我們還需要知道 EOC 信號,也就是高電平結束,輸出高電平,表示轉換結束。
- 然后對於 OE 信號 來說是高電平允許輸出有效,允許輸出轉換結束。電壓輸出DAC。
注意事項
- 不同信號作用不同。
- 不同信號轉換結束代表不同。
A/D轉換器主要參數指標
- 分辨率
-
分辨率為A/D轉換器對輸入信號的分辨能力,其計算公式如下,其中n為A/D轉換器的位數:
$分辨率=\frac{1}{2^n} $ -
當A/D轉換器支持輸入負電壓時,第一位代表正負,則分辨率的計算公式為:
$分辨率=\frac{1}{2^{n-1}} $ -
可以求得模擬電壓的最小值如下, 滿刻度為輸入的模擬電壓最大值:
\(變化最小值=滿刻度×分辨率\)
2.轉換誤差
- 轉換誤差表示A/D轉換器實際輸出的數字量與理論輸出量的區別。分為量化誤差、偏移誤差和滿刻度誤差。其中偏移誤差和滿刻度誤差合稱為非線性誤差。
3.轉換精度
- 轉換精度為實際模擬量輸入與理論模擬輸入之差的最大值。對於A/D轉換器而言,可以在每個階梯的水平中點進行測量,它包括了所有誤差。
4.轉換時間
- 即完成一次A/D轉換所需要的時間(包括穩定時間)。而轉換時間的倒數為轉換速率,即每秒轉換的次數。
4.ADC0809工作流程
- ADDA、ADDB、ADDC 輸入的通道地址在 ALE 有效時被鎖存,經地址譯碼器譯碼從 8 路模擬通道中選通一路。
- 啟動信號 START(高脈沖)的上升沿使逐次逼近寄存器復位,下降沿啟動 A/D 轉換, 並使 EOC 信號在 START 的下降沿到來 10μs 后變為無效的低電平,這要求查詢程序待 EOC 無效后再開始查詢。
- 當轉換結束時,轉換結果送入到輸出三態鎖存器中,並使 EOC 信號為高電平。通知 CPU 已轉換結束。
- 當 CPU 執行一條讀數據指令后,使 OE 為高電平,則從輸出端 D0~D7 讀出數據。
5.本次實驗
一.實驗要求
- 利用實驗板上的ADC0809做A/D轉換器,利用實驗板上的電位器W1提供模擬量輸入。編制程序,將模擬量轉換成二進制數字量,用發光二極管顯示。
二.實驗目的
-
掌握A/D轉換與單片機的接口方法。
-
了解A/D芯片ADC0809轉換性能及編程。
-
通過實驗了解單片機如何進行數據采集。
三.實驗電路及連線
- 連線:將P1.0 ~ P1.7連至L0~L7上:將 ADCO809旁的/EOC連至 P3.3;把 ADCO809 的0通道 IN3 接至電位器模擬電壓產生區 Vout插孔(O ~ 5V);ADCO809的時鍾 CLK_0809 插孔與固定脈沖輸出端 500KHz 相連;ADC 0809 的片選端CS_0809連至系統譯碼器輸出端YO。
- 啟動Keil uvision 2,建立工程,編輯、保存源程序(.ASM),並將源程序添加到工程。方法請參照實驗一;
- 按照實驗一的方法設置工程屬性;
- 點擊Keil uvision 2主窗口中的開始調試工具欄按鈕版將目標程序下載到實驗箱中的仿真機;
- 點擊Keil uvision 2主窗口中的運行程序工具欄按鈕運行程序;
- 調節電位器旋鈕,以改變電位器輸出的模擬電壓值。用萬用表測量電位器的輸出電壓;
- 根據L0~L7的亮滅情況,將其轉換成十六進制數,即為電位器輸出的模擬電壓所對應的數字量;
- 觀察並記錄實驗結果:電壓值與其對應的數字量。
實驗說明
- ADC0809是八位逐次逼近法A/D轉換器,每采集一次一般需100us。中斷方式下,A/D轉換結束后會自動產生EOC信號,經一級74LS14反向后與8031的INT0相接。本實驗采取了中斷處理來正確讀取A/D轉換的結果。
原理:利用實驗系統上的ADC0809作為A/D轉換器,實驗系統的電位器提供模擬量輸入,編制程序,將模擬量轉換成數字量並顯示。
ORG 0000H
LJMP MAIN
ORG 0013H
LJMP INT1P
ORG 0040H
MAIN: MOV SP,#50H ;設置堆棧指針
MOV IE,#84H ;允許外接中斷1
SETB IT1 ;設置外中斷1的觸發方式為下降沿有效
MOV P1,#00 ;關閉所有LED
MOV A,#03H ;使用ADC0809的通道3進行轉換
MOV DPTR,#8003H
MOVX @DPTR,A ;啟動第一次轉換
DISP: MOV P1,30H ;將轉換結果通過P1口輸出,使用八個LED顯示轉換結果
SJMP DISP ;外中斷1服務子程序
INT1P: MOV DPTR,#8003H ;讀取轉換結果
MOVX A,@DPTR
MOV 30H,A ;將轉換結果保存到內部RAM30H單元
MOV A,#03H ;選擇通道3
MOV DPTR,#8003H ;啟動下一次轉換
MOVX @DPTR,A ;中斷返回
RETI
END
如何用查詢的方式讀取A/D轉換結果?