一種基于AT89C1051/2051的低成本A/D轉換方法
發布時間:2007/8/15 0:00:00 訪問次數:2463
摘要:介紹一種基于AT89C1051/2051的低成本A/D轉換電路和方法。該電路采用通用、廉價的器件,利用線性鋸齒波和單片機內部的定時器來獲得A/D轉換結果,與單片機接口簡單。采用該方法除了能獲得較快的轉換速度以外,轉換的分辨率也可靈活設置,具有一定的實用價值。
關鍵詞:A/D轉換 線性鋸齒波 模擬比較器 AT89C1051/2051
在低成本智能儀表的設計過程中優先考慮的是成本問題,作為核心部件的單片機通常選用低檔的8位機或4位機。就目前的情況而言,自帶A/D轉換的低檔單埏機價格昂貴,在需要進行數據采集要時往往通過外部A/D轉換器件,這在很大程度上增加了系統的成本。例如,目前AT89C2051單片機的零售價僅7~8元,而中速A/D轉換器件的價格大都在20元以上。本文介紹的低成本A/D轉換方法僅使用兩片通用、廉價的器件就能達到中速A/D轉換的速度和低于16位的轉換分辨率。
1 原理
有一線性良好的鋸齒波信號,最大幅度為Vmax,正程(0~Vmax)的掃描時間為t2(如圖1中的直線OB),在正程掃描期間的某一時刻t所對應的電壓Vt為Vmax(t/t2)。圖1中的曲線CD為一待測模擬信號,兩信號在A點相交,時間為t1,不難理解,線性鋸齒波在A點的幅度就是待測的模擬信號的大小,其值Vt1可以表示為:Vt1=Vmax(t1/t2)。這就是說,可以采用一種方法將待測的模擬信號與線性鋸齒波進行比較,當線性鋸齒波在某一時刻的幅度超過待測模擬信號的幅度時就會引起比較器輸出狀態的改變。因此,測出比較器輸出狀態翻轉的時間,就能通過計算得到待測模擬信號的大小。
2 電路及A/D轉換的過程
圖2給出了具有8位分辨率的A/D轉換電路。圖中,IC1為AT89C2051單片機,其P1.0和P1.1除了具有通用I/O口線的功能外,還是內部模擬比較器的同相輸入端和反相輸入端,比較器輸出的結果在內部連接到P3.6。IC2和IC3為線性鋸齒波產生電路,其正程開始掃描的時刻由單片機的P3.7控制。IC3為一雙輸入與非門緩沖驅動器,這里等效為一個開關。當P3.7=0時,開關斷開,C1通過R1、W1充電,線性鋸齒波開始正程掃描,同時單片機內部定時器0開始計數,計數脈沖為單片機內部時鐘。待測的模擬信號從P1.1輸入,因為線性鋸齒波電壓是從0開始線性遞增的,所以在開始正程掃描的時刻,P3.6為0.當鋸齒波的電壓線性遞增到超過待測模擬信號的電壓時, 比較器的輸出翻轉,P3.6為1,此時定時器0的數值就是A/D轉換的結果,也就是圖1中所示的t1,通過前面的公式就可以得到待測模擬電壓的值。其程序框圖如圖3所示。
3 線性鋸齒波電路參數的確定
AT89C2051單片機的定時器0是一個16位計數器,因此這種方法所能達到的最高分辨率為16位,在最高時鐘頻率下(24MHz)完成一次A/D轉換的最長時間約為33ms。在實際應用過程中不一定使用這么高的分辨率,在8位分辨率的情況下完成一次A/D轉換的最長時間為128μs。下面以8位分辨率為例介紹鋸齒波電路參數的確定方法。
對于圖2電路,當P3.7輸出為低時,鋸齒波正程掃描開始,C1經R1、W1充是,其電壓Vc1為:
Vc1=Vcc×(1-e-(t/τ))
其中τ=(R1+Rw1)C1
如果運放IC2:B將Vc1放大10倍,其輸出為:
Vo1=[1+(R3/R2)]Vc1
=10Vcc(1-e-(t/τ))
因為IC2:B
摘要:介紹一種基于AT89C1051/2051的低成本A/D轉換電路和方法。該電路采用通用、廉價的器件,利用線性鋸齒波和單片機內部的定時器來獲得A/D轉換結果,與單片機接口簡單。采用該方法除了能獲得較快的轉換速度以外,轉換的分辨率也可靈活設置,具有一定的實用價值。
關鍵詞:A/D轉換 線性鋸齒波 模擬比較器 AT89C1051/2051
在低成本智能儀表的設計過程中優先考慮的是成本問題,作為核心部件的單片機通常選用低檔的8位機或4位機。就目前的情況而言,自帶A/D轉換的低檔單埏機價格昂貴,在需要進行數據采集要時往往通過外部A/D轉換器件,這在很大程度上增加了系統的成本。例如,目前AT89C2051單片機的零售價僅7~8元,而中速A/D轉換器件的價格大都在20元以上。本文介紹的低成本A/D轉換方法僅使用兩片通用、廉價的器件就能達到中速A/D轉換的速度和低于16位的轉換分辨率。
1 原理
有一線性良好的鋸齒波信號,最大幅度為Vmax,正程(0~Vmax)的掃描時間為t2(如圖1中的直線OB),在正程掃描期間的某一時刻t所對應的電壓Vt為Vmax(t/t2)。圖1中的曲線CD為一待測模擬信號,兩信號在A點相交,時間為t1,不難理解,線性鋸齒波在A點的幅度就是待測的模擬信號的大小,其值Vt1可以表示為:Vt1=Vmax(t1/t2)。這就是說,可以采用一種方法將待測的模擬信號與線性鋸齒波進行比較,當線性鋸齒波在某一時刻的幅度超過待測模擬信號的幅度時就會引起比較器輸出狀態的改變。因此,測出比較器輸出狀態翻轉的時間,就能通過計算得到待測模擬信號的大小。
2 電路及A/D轉換的過程
圖2給出了具有8位分辨率的A/D轉換電路。圖中,IC1為AT89C2051單片機,其P1.0和P1.1除了具有通用I/O口線的功能外,還是內部模擬比較器的同相輸入端和反相輸入端,比較器輸出的結果在內部連接到P3.6。IC2和IC3為線性鋸齒波產生電路,其正程開始掃描的時刻由單片機的P3.7控制。IC3為一雙輸入與非門緩沖驅動器,這里等效為一個開關。當P3.7=0時,開關斷開,C1通過R1、W1充電,線性鋸齒波開始正程掃描,同時單片機內部定時器0開始計數,計數脈沖為單片機內部時鐘。待測的模擬信號從P1.1輸入,因為線性鋸齒波電壓是從0開始線性遞增的,所以在開始正程掃描的時刻,P3.6為0.當鋸齒波的電壓線性遞增到超過待測模擬信號的電壓時, 比較器的輸出翻轉,P3.6為1,此時定時器0的數值就是A/D轉換的結果,也就是圖1中所示的t1,通過前面的公式就可以得到待測模擬電壓的值。其程序框圖如圖3所示。
3 線性鋸齒波電路參數的確定
AT89C2051單片機的定時器0是一個16位計數器,因此這種方法所能達到的最高分辨率為16位,在最高時鐘頻率下(24MHz)完成一次A/D轉換的最長時間約為33ms。在實際應用過程中不一定使用這么高的分辨率,在8位分辨率的情況下完成一次A/D轉換的最長時間為128μs。下面以8位分辨率為例介紹鋸齒波電路參數的確定方法。
對于圖2電路,當P3.7輸出為低時,鋸齒波正程掃描開始,C1經R1、W1充是,其電壓Vc1為:
Vc1=Vcc×(1-e-(t/τ))
其中τ=(R1+Rw1)C1
如果運放IC2:B將Vc1放大10倍,其輸出為:
Vo1=[1+(R3/R2)]Vc1
=10Vcc(1-e-(t/τ))
因為IC2:B
上一篇:常見硬盤自舉失敗的分析