陳李津
(中華人民共和國廈門海關,福建廈門361000)
模數(shù)轉換器(ADC)和單片機在數(shù)字儀表和計算機控制等領域有廣泛應用,常用的ADC有:逐次比較式、積分式、并行比較式、電荷平衡式(或壓頻變換式)、ΣΔ 式和流水線式,其中電荷平衡式ADC具有精度高、價格低、分辨率高、抗干擾能力強、接口簡單等優(yōu)點,廣泛應用于低速、精密測量等領域[1-2],如數(shù)字電壓表等. 單片機的發(fā)展趨勢則是SoC化,主流的單片機內部均集成有逐次比較式模數(shù)轉換器[3],但多數(shù)單片機內部的模數(shù)轉換器只有10位,精度較低,不適合用于低速、精密測量等領域. AT89C51是使用最為廣泛的單片機之一,其內部沒有模數(shù)轉換器,文獻[4]介紹了用AT89C51 與I2C 總線8 位逐次比較式ADC 模塊TLC549 的接口電路設計,并用Proteus 平臺進行軟硬件仿真與測試,詳細分析TLC549 的重要參數(shù). 本文在Proteus 平臺下,用AT89C51 和電壓比較器LM393 設計了電荷平衡式模數(shù)轉換器,在此基礎上構建一個直流電壓測量系統(tǒng),量程為0~5 V,用于測試該模數(shù)轉換器的性能,驗證設計.
使用模擬比較器和定時器可構成電荷平衡式ADC,其工作原理如圖1 所示. Vin 為輸入模擬電壓(直流緩變信號),Vref 為參考電壓,用模擬比較器的比較結果CMPRES 控制電容C 的充放電,當Vin 高于電容電壓Vc 時,比較結果CMPRES=1,參考電壓對電容C 充電,Vc 上升;當Vin 低于電容電壓Vc 時,比較結果CMPRESS=0,電容C放電,Vc下降. 假設一個A/D轉換周期為Tadc,電容充電(即比較結果CMPRES=1的狀態(tài))的時間為Tp,如果Vin沒有超量程,且積分時間RC< 圖1 電荷平衡式ADC原理Fig.1 Charge balance ADC principle 如圖2 所示電路,在Proteus8.6 平臺上,用智能原理圖輸入系統(tǒng)ISIS 軟件設計直流電壓測量與顯示系統(tǒng),其中用AT89C51 和模擬電壓比較器LM393 構成電荷平衡式ADC,C0 為積分電容,P2.7 引腳作為C0 的充放電控制開關,參考電壓Vref 取VCC=5.0 V;4 位數(shù)碼管和六非門74HC04 構成動態(tài)數(shù)碼顯示電路,VCC經(jīng)電位器RV1后的電壓Vin由ADC轉換后在數(shù)碼顯示器上顯示,顯示格式為:X.XXX,單位伏. 圖2 用AT89C51和LM393構成電荷平衡式ADC原理Fig.2 Using AT89C51 and LM393 to form the charge balance ADC 電荷平衡式A/D 轉換器的核心是電容C0 的充放電控制及充電時間Tp 計時,將AT89C51 的定時/計數(shù)器T1 設置成溢出時間為40 us 的定時器,并以T1 的溢出時間為充放電計時基準TC,設A/D 轉換周期由5 000個T1溢出時鐘構成,則Tadc = 200 ms. 一方面,該Tadc既滿足Tadc等于工頻周期的整數(shù)倍,也滿足Tadc>>積分時間R0 * C0;另一方面按圖2參數(shù),在T1的1個溢出時鐘TC內,電容C0的充放電導致其端電壓的最大變化量ΔVc_max = 20 mV,因此可控制平衡時電容電壓Vc 在Vin 左右20 mV 內波動,滿足Vc ≈Vin條件. 設置定時器T1溢出中斷為高優(yōu)先級中斷,在T1的中斷服務程序中根據(jù)比較結果P26的邏輯值控制電容C0的充放電,并作充電時間Tp計時. 當A/D轉換過程結束,由(1)式計算轉換結果、設置轉換結束標志、重啟新的轉換過程. 基于電荷平衡式ADC的直流電壓測量與顯示系統(tǒng)的代碼由五個函數(shù)構成:主函數(shù)void main()、數(shù)碼動態(tài)掃描函數(shù)void disp()、定時器T0初始化函數(shù)void T0_Init()、定時器T1初始化函數(shù)(即電荷平衡式ADC)void CMP_Init()和定時器T1 中斷服務函數(shù)void T1_Isr(),最后兩個函數(shù)是核心,這兩個函數(shù)的代碼如下: 在Keil uVision4 平臺上進行軟件工程創(chuàng)建、代碼輸入、編譯,生成目標代碼,在Proteus8.6 平臺上調用目標代碼,進行軟件硬仿真聯(lián)合調試. 調試結束后,在Proteus8.6 平臺上對電壓測量系統(tǒng)進行仿真測試. 如圖2 所示,在電路中放置電壓探針Vin和CMP-,用于測量Vin和Vc;放置虛擬示波器,用于監(jiān)測電容充放電控制引腳P2.7的脈沖信號和電容電壓Vc. 通過點擊電位器RV1 邊上的↑和↓按鈕,緩慢調整電位器RV1 的抽頭位置,改變輸入電壓Vin,從其電壓探針讀出Vin 的值,電壓測量結果由數(shù)碼顯示器讀出,測試結果如表1 所示. 從表1 可見,在20%~90%量程范圍內,電荷平衡式ADC 的轉換測量精度和線性度均優(yōu)于1%. 電壓測量系統(tǒng)呈負偏差,其原因是AT89C51的I/O端口拉電流(充電過程)負載能力比灌電流(放電過程)負載能力弱. 表1 電荷平衡式ADC仿真測試結果Tab.1 Simulation results of charge balance ADC 圖2中的虛擬示波器用于觀測電荷平衡式ADC的工作波形,按如下方式設置虛擬示波器:1)A通道,分辨率20 mV/DIV、AC 耦合,觀測Vc 波形;2)B 通道,分辨率1V/DIV、DC 耦合,觀測充放電控制引腳P2.7 的脈沖信號;3)掃描,水平分辨率40 us/DIV、B 通道觸發(fā)源、自動觸發(fā). 當電位器RV1 的抽頭位置分別置于20%、50%、80%情況下,電荷平衡式ADC 內部工作波形輸出打印結果如圖3 所示((a)抽頭位置20%;(b)抽頭位置50%;(c)抽頭位置80%),波形與電荷平衡式ADC 的工作原理完全一致;平衡時Vc 的起伏小于20 mV,與電路設計分析一致. 圖3 Vc信號波形Fig.3 Vc Signal waveform 經(jīng)Proteus8.6 平臺上的虛擬仿真與測試,本文提出的用AT89C51 和模擬電壓比較器LM393 設計電荷平衡式模數(shù)轉換器的方案可行. 該方案有四個特點:1)適用于低速、精密測量,模數(shù)轉換精度和線性度均優(yōu)于1%;2)高性價比,所用器件均為基礎元件,無特殊要求,成本低廉;3)電路結構和控制程序簡單;4)抗工頻干擾能力強. 本設計方法不限于AT89C51單片機,也適用于其它系列的單片機.2 用AT89C51和LM393設計電荷平衡式ADC
3 測試
4 結論