《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的新型數(shù)字電壓表設(shè)計(jì)
基于FPGA的新型數(shù)字電壓表設(shè)計(jì)
摘要: 本文采用National Semiconductor。公司性能優(yōu)越的8位A/D轉(zhuǎn)換器ADC0809對(duì)模擬電壓采樣,,以一片高性能FPGA芯片為控制核心,,以軟件實(shí)現(xiàn)了諸多硬件功能,對(duì)電壓信號(hào)的轉(zhuǎn)換結(jié)果進(jìn)行準(zhǔn)確實(shí)時(shí)的運(yùn)算處理并送出顯示,。系統(tǒng)的主要功能都集成在一塊芯片上,,大大減少了系統(tǒng)的分立元件數(shù)量,降低了功耗,增加了可靠性,,較好地實(shí)現(xiàn)了電壓的精準(zhǔn)測(cè)量,。
關(guān)鍵詞: FPGA 電壓表 ADC0809
Abstract:
Key words :

  數(shù)字電壓表是大學(xué)物理教學(xué)和實(shí)驗(yàn)中的重要儀表,其數(shù)字化是指將連續(xù)的模擬電壓量轉(zhuǎn)換成不連續(xù),、離散的數(shù)字量并加以顯示,。傳統(tǒng)的實(shí)驗(yàn)用模擬電壓表功能單一、精度低,、體積大,且存在讀數(shù)時(shí)的視差,,長(zhǎng)時(shí)間連續(xù)使用易引起視覺(jué)疲勞,,使用中存在諸多不便。而目前數(shù)字萬(wàn)用表的內(nèi)部核心多是模/數(shù)轉(zhuǎn)換器,,其精度很大程度上限制了整個(gè)表的準(zhǔn)確度,,可靠性較差。本文采用National Semiconductor,。公司性能優(yōu)越的8位A/D轉(zhuǎn)換器ADC0809對(duì)模擬電壓采樣,,以一片高性能FPGA芯片為控制核心,以軟件實(shí)現(xiàn)了諸多硬件功能,,對(duì)電壓信號(hào)的轉(zhuǎn)換結(jié)果進(jìn)行準(zhǔn)確實(shí)時(shí)的運(yùn)算處理并送出顯示,。系統(tǒng)的主要功能都集成在一塊芯片上,大大減少了系統(tǒng)的分立元件數(shù)量,,降低了功耗,,增加了可靠性,較好地實(shí)現(xiàn)了電壓的精準(zhǔn)測(cè)量,。

  1 設(shè)計(jì)方案比較

  采用雙積分式模/數(shù)轉(zhuǎn)換器為核心器件,,稱(chēng)為雙積分式電壓表。在一個(gè)測(cè)量周期內(nèi),,將被測(cè)電壓Ui加到積分器的輸入端,,在確定的時(shí)間內(nèi)進(jìn)行積分。然后切斷輸入電壓,,在積分器的輸入端加與Ui極性相反的電壓U,,進(jìn)行定值積分,但積分方向相反,,直到積分輸出達(dá)到起始電平為止,,從而將Ui轉(zhuǎn)換成時(shí)間間隔量進(jìn)行測(cè)量。只要用計(jì)數(shù)器累計(jì)時(shí)間間隔內(nèi)的脈沖數(shù),,即為Ui之值,。電路簡(jiǎn)單,便于維護(hù)。但電壓表的測(cè)量精度完全受限于模/數(shù)轉(zhuǎn)換的精度,。而且系統(tǒng)無(wú)升級(jí)空間,。

  另外,采用單片機(jī)作為系統(tǒng)的控制核心,。輸入信號(hào)經(jīng)模/數(shù)轉(zhuǎn)換后送到單片機(jī)進(jìn)行數(shù)據(jù)處理,,根據(jù)不同電壓信號(hào)計(jì)算出不同數(shù)值,并送出顯示,。這種方案優(yōu)點(diǎn)是的單片機(jī)技術(shù)成熟,、運(yùn)算功能較強(qiáng)、編程靈活,、設(shè)計(jì)成本也較低,,能較準(zhǔn)確地測(cè)量輸入電壓。但在單片機(jī)系統(tǒng)中必須使用許多分立元件組成其外圍電路,,整個(gè)系統(tǒng)顯得十分復(fù)雜,,可靠性較低,抗干擾能力差,,而且功耗高,。

  采用現(xiàn)場(chǎng)可編程門(mén)陣列即FPGA為系統(tǒng)核心,是當(dāng)今電子產(chǎn)品設(shè)計(jì)的熱門(mén)發(fā)展方向,。系統(tǒng)最大限度地將所有器件集成在FPGA芯片上,,體積大大減小、集成度高,,可靠性高,。而且邏輯單元控制靈活、適用范圍極廣,,實(shí)現(xiàn)了大規(guī)模和超大規(guī)模電路的集成,。其硬件功能完全由軟件編程實(shí)現(xiàn),修改調(diào)試方便,,在不改變?cè)须娐返幕A(chǔ)上便可實(shí)現(xiàn)系統(tǒng)升級(jí),。較好地克服了另外兩種方案的缺陷,具有自己獨(dú)特的優(yōu)勢(shì),。綜合上述分析,,采用FPGA技術(shù),優(yōu)勢(shì)明顯,。

  2 系統(tǒng)工作原理

  首先,,被測(cè)電壓信號(hào)進(jìn)入A/D轉(zhuǎn)換器,F(xiàn)PGA中控制信號(hào)模塊發(fā)出控制信號(hào),,啟動(dòng)A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換,,其采樣得到的數(shù)字信號(hào)數(shù)據(jù)在相應(yīng)的碼制轉(zhuǎn)換模塊中轉(zhuǎn)換為顯示代碼,。最后譯碼驅(qū)動(dòng)模塊發(fā)出顯示控制與驅(qū)動(dòng)信號(hào),驅(qū)動(dòng)外部的LCD模塊顯示相應(yīng)的數(shù)據(jù),。通過(guò)外部的鍵盤(pán),,可以手動(dòng)對(duì)系統(tǒng)進(jìn)行復(fù)位控制和檔位選擇,不同的檔位決定不同的電壓輸入范圍,,在程序中實(shí)現(xiàn)自動(dòng)轉(zhuǎn)換,。基本工作原理框圖如圖1所示,。

基本工作原理框圖

  3 關(guān)鍵電路設(shè)計(jì)

  3.1 A/D轉(zhuǎn)換電路

  實(shí)現(xiàn)A/D轉(zhuǎn)換的方法比較多,,常見(jiàn)的有計(jì)數(shù)法、雙積分法和逐次逼近法,。由于逐次逼近式A/D轉(zhuǎn)換具有速度快,,分辨率高等優(yōu)點(diǎn),而且采用該法的ADC芯片成本較低,,因此在設(shè)計(jì)中采用該種方式。逐次逼近式A/D轉(zhuǎn)換器的原理如圖2所示,。它由逐次逼近寄存器,、D/A轉(zhuǎn)換器、比較器和緩沖寄存器等組成,。當(dāng)啟動(dòng)信號(hào)由高電平變?yōu)榈碗娖綍r(shí),,逐次逼近寄存器清0,這時(shí),,D/A轉(zhuǎn)換器輸出電壓V,。也為O,當(dāng)啟動(dòng)信號(hào)變?yōu)楦唠娖綍r(shí),,轉(zhuǎn)換開(kāi)始,,同時(shí),逐次逼近寄存器進(jìn)行計(jì)數(shù),。轉(zhuǎn)換原理如圖2所示,。

逐次逼近式A

  逐次逼近寄存器工作時(shí)與普通計(jì)數(shù)器不同,它不是從低位向高位逐一進(jìn)行計(jì)數(shù)和進(jìn)位,,而是從最高位開(kāi)始,,通過(guò)設(shè)置試探值來(lái)進(jìn)行計(jì)數(shù)。在第一個(gè)時(shí)鐘脈沖到來(lái)時(shí),,控制電路把最高位送到逐次逼近寄存器,,使它的輸出為10000000,這個(gè)輸出數(shù)字一出現(xiàn),,D/A轉(zhuǎn)換器的輸出電壓V,。就成為滿(mǎn)量程值的128/255,。這時(shí),若Vo>Vi則作為比較器的運(yùn)算放大器的輸出就成為低電平,,控制電路據(jù)此清除逐次逼近寄存器中的最高位,;若Vo≤Vi則比較器輸出高電平,控制電路使最高位的1保留下來(lái),。

  若最高位被保留下來(lái),,則逐次逼近寄存器的內(nèi)容為10000000,下一個(gè)時(shí)鐘脈沖使次低位D6為1,。于是,,逐次逼近寄存器的值為11000000,D/A轉(zhuǎn)換器的輸出電壓Vo到達(dá)滿(mǎn)量程值的192/255,。此后,,若Vo>Vi則比較器輸出為低電平,從而使次高位域復(fù)位,;若Vo

  這里采用的ADC0809是單片雙列直插式集成芯片,,是8通道8位A/D轉(zhuǎn)換器,其主要特點(diǎn)是:分辨率為8位,;總的不可調(diào)誤差±1 LSB,;當(dāng)模擬輸入電壓范圍為0~5 V時(shí),可使用單一的+5V電源,;轉(zhuǎn)換時(shí)間為100μs,;溫度范圍-40~+85℃,;不需另加接口邏輯可直接與CPU連接;可以輸入8路模擬信號(hào),;輸出帶鎖存器,;邏輯電平與TTL兼容。

 

  ADC0809帶有8位轉(zhuǎn)換器,、8位多路切換開(kāi)關(guān)以及與微處理機(jī)兼容的控制邏輯的CMOS組件,。它的8位A/D轉(zhuǎn)換器轉(zhuǎn)換方法為逐次逼近法。在A/D轉(zhuǎn)換器的內(nèi)部,,含有一個(gè)高阻抗斬波穩(wěn)定比較器,,一個(gè)帶有模擬開(kāi)關(guān)樹(shù)組的256R分壓器,以及一個(gè)逐次逼近的寄存器,。8路的模擬開(kāi)關(guān)由地址鎖存器和譯碼器控制,,可以在8個(gè)通道中任意訪問(wèn)一個(gè)單邊的模擬信號(hào)。其工作框圖如圖3所示,。

工作框圖

  該A/D轉(zhuǎn)換器無(wú)需調(diào)零和滿(mǎn)量程調(diào)整,。由于多路開(kāi)關(guān)的地址輸入能夠進(jìn)行鎖存和譯碼,而且三態(tài)TTL輸出也可以鎖存,,易于與微處理器進(jìn)行接口,。

  如圖3所示,它由兩大部分所組成:第一部分是8通道多路模擬開(kāi)關(guān),,它用于控制C,B,,A端子和地址鎖存允許端子,,可使其中一個(gè)通道被選中;第二部分為一個(gè)逐次逼近型A/D轉(zhuǎn)換器,,它由比較器,、控制邏輯、輸出緩沖鎖存器,、逐次逼近寄存器以及開(kāi)關(guān)樹(shù)組和256R電阻分壓器組成,。后兩種電路,即開(kāi)關(guān)樹(shù)和256R電阻分壓器,,組成了D/A轉(zhuǎn)換器,。控制邏輯用來(lái)控制逐次逼近寄存器從高位到低位逐次取1,,然后將此數(shù)字量送到開(kāi)關(guān)樹(shù)組,,即8位開(kāi)關(guān),用來(lái)控制開(kāi)關(guān)S7~S0與參考電平相連接,。參考電平經(jīng)256R電阻分壓器,,輸出一個(gè)模擬電壓Uo,,Uo,Ui在比較器中進(jìn)行比較,。當(dāng)Uo>Ui時(shí),,本位D=O;當(dāng)Uo≤Ui時(shí),,則本位D=1,。因此,從D7~D0比較8次即可逐次逼近寄存器中的數(shù)字量,,即與模擬量Ui所相當(dāng)于的數(shù)字量相等,。此數(shù)字量送入輸出鎖存器,并同時(shí)發(fā)轉(zhuǎn)換結(jié)束脈沖,。

  該電壓表電路中,,ADC0809的工作時(shí)序如圖4所示。主要控制信號(hào):START是轉(zhuǎn)換啟動(dòng)信號(hào),,高電平有效,;ALE是3位通道選擇地址(ADDC,ADDB,,ADDA)信號(hào)的鎖存信號(hào),。當(dāng)模擬量送至某一輸入端,由3位地址信號(hào)進(jìn)行選擇,,而地址信號(hào)由ALE鎖存,;EOC是檔位轉(zhuǎn)換的狀態(tài)信號(hào)。EOC輸出高電平時(shí),,表示轉(zhuǎn)換結(jié)束,;在EOC的上升沿后,若使能輸出信號(hào)OE為高電平,,則三態(tài)緩沖器打開(kāi),,將轉(zhuǎn)換完畢的8位數(shù)據(jù)結(jié)果輸至數(shù)據(jù)總線,至此ADC0809的一次轉(zhuǎn)換結(jié)束,。

ADC0809的工作時(shí)序

  3.2 檔位轉(zhuǎn)換電路

  為了增加數(shù)字電壓表的測(cè)量范圍,,設(shè)計(jì)了檔位選擇電路。采用精密電阻分壓方法,,簡(jiǎn)潔實(shí)用,。ADC0809有8路數(shù)據(jù)輸入端口,原理上可以分為8個(gè)檔位,。從實(shí)用性出發(fā),,只分了兩檔,如圖5所示,。圖5中電位器負(fù)責(zé)電阻校準(zhǔn),。盡管采用精密電阻,,各電阻值的制造誤差不可避免,用電位器來(lái)微調(diào)校準(zhǔn)以保證測(cè)量精度,。ADC0809的輸入范圍為0~5 V,,檔位的切換是通過(guò)程序來(lái)控制ADC0809各個(gè)通道的選通來(lái)自動(dòng)實(shí)現(xiàn)。只要輸入的電壓范圍超過(guò)5 V,,則檔位自動(dòng)切換到另一檔,,即選通通道INl。

檔位轉(zhuǎn)換電路

  當(dāng)輸入電壓范圍為O~5 V時(shí),,INO導(dǎo)通,。此時(shí)U=U26,當(dāng)輸入電壓范圍為5~50 V時(shí),,F(xiàn)PGA判斷選擇檔位,,INl導(dǎo)通。此時(shí)有U=U27即U=(R1+R3)/(R1+R2+R3)=U26/10,。

  由于ADC0809數(shù)字量輸出為8位,,數(shù)字量化范圍為0~255,當(dāng)輸入電壓為滿(mǎn)量程5 V時(shí),,轉(zhuǎn)換電路對(duì)輸入電壓的分辨能力為:

公式

  3.3 FPGA內(nèi)部模塊設(shè)計(jì)

  (1)碼制轉(zhuǎn)換模塊,。在此碼制變換模塊DATA_CONVERSION功能是將AD0809采樣送來(lái)的8位二進(jìn)制數(shù)轉(zhuǎn)換為可被LCD識(shí)別的字符型LCD碼。首先,,將8位二進(jìn)制碼變換為BCD碼,;然后,再分別進(jìn)行轉(zhuǎn)換,,得到字符型碼,,并送入譯碼顯示模塊。

  (2)譯碼驅(qū)動(dòng)模塊,。數(shù)字電壓值的顯示由LCD實(shí)現(xiàn),。選用了HY系列字符型液晶顯示模塊HD44780,。實(shí)現(xiàn)了低功耗,,而且可帶單位雙排顯示,字體美觀大方,。

  整個(gè)電路十分簡(jiǎn)潔,。系統(tǒng)工作過(guò)程:FPGA芯片EP2C5T144對(duì)ADC0809及LCD進(jìn)行初始化。當(dāng)有輸入信號(hào)Vi時(shí),,由FPGA向ADC0809傳送控制信號(hào)控制字,,使其對(duì)輸入的模擬信號(hào)進(jìn)行轉(zhuǎn)換,變?yōu)?位的數(shù)字信號(hào)并送到輸出端,。由FPGA經(jīng)過(guò)碼制變換等處理后,,再通過(guò)LCD的接口驅(qū)動(dòng),,向其發(fā)送數(shù)據(jù)。當(dāng)ADC0809采樣完成后,,F(xiàn)PGA中的碼字轉(zhuǎn)換模塊將數(shù)據(jù)轉(zhuǎn)換為L(zhǎng)CD可識(shí)別的字符型數(shù)據(jù),,然后送至驅(qū)動(dòng)模塊,由其驅(qū)動(dòng)LCD,,將字符型數(shù)據(jù)送到LCD的DO~D7端,,實(shí)現(xiàn)顯示。

  4 關(guān)鍵算法實(shí)現(xiàn)

  4.1 檔位自動(dòng)切換算法

  將數(shù)字電壓表分為兩個(gè)檔位,,分別是0~5 V,,0~50 V。檔位切換算法如下:

  設(shè)定初始量程為0~5 V,。采集100個(gè)數(shù)據(jù)點(diǎn),,對(duì)輸入信號(hào)Vi的采樣值取絕對(duì)值的最大值,將其作為Vi的最大值的估計(jì)值,。如果Vi的最大絕對(duì)值估計(jì)值小于5 V,,則將檔位切換到O~5 V,否則,,切換到0~50 V,。

  4.2 信號(hào)采樣周期自調(diào)整算法

  為協(xié)調(diào)好數(shù)據(jù)精度和系統(tǒng)負(fù)擔(dān)兩者之間的關(guān)系,對(duì)于疊加周期信號(hào)的輸入信號(hào)Vi,,規(guī)定單個(gè)周期的數(shù)據(jù)采集不少于8個(gè)點(diǎn),,因此要對(duì)AD0809的采樣周期進(jìn)行自適應(yīng)調(diào)整。這里使用過(guò)零點(diǎn)檢測(cè)的方法,,如果疊加信號(hào)的周期在0~25 Hz范圍內(nèi),,采樣周期為5 ms。疊加信號(hào)周期在25~50 Hz時(shí),,采樣周期為2 ms,;疊加信號(hào)周期在50~100 Hz時(shí),采樣周期為1 ms,。

  設(shè)采樣周期的初始值為2 ms,,采樣數(shù)為100點(diǎn)。則有:首先采集100個(gè)數(shù)據(jù),,計(jì)算平均值,,作為輸入信號(hào)Vi的均估值(平均值的估計(jì)值);再采集100個(gè)數(shù)據(jù),,與Vi的均估值進(jìn)行比較,,計(jì)算過(guò)零點(diǎn)的數(shù)量并統(tǒng)計(jì);根據(jù)此數(shù)量,調(diào)整采樣周期,,當(dāng)此數(shù)量大于20時(shí),,令采樣周期為1 ms。當(dāng)此數(shù)量不大于10時(shí),,令采樣周期為5 ms,。其他令采樣周期為2 ms。

  4.3 檢測(cè)疊加信號(hào)周期算法

  依舊采用檢測(cè)過(guò)零點(diǎn)的數(shù)目來(lái)檢測(cè)周期,。

  設(shè)采集的數(shù)據(jù)點(diǎn)為1O0個(gè),,計(jì)算均值,作為輸入信號(hào)Vi的均估值,;再采集數(shù)據(jù),,與Vi的均估值進(jìn)行比較,計(jì)算過(guò)零點(diǎn)的數(shù)量并統(tǒng)計(jì),,同時(shí)統(tǒng)計(jì)每個(gè)數(shù)據(jù)過(guò)零點(diǎn)的時(shí)刻,;檢測(cè)到三個(gè)過(guò)零點(diǎn)時(shí),判斷其是否符合均勻分布,,判斷是否檢測(cè)到一個(gè)周期,。若檢測(cè)到一個(gè)周期,則停止檢測(cè)并計(jì)算此周期,,否則繼續(xù)檢測(cè),。若檢測(cè)到相當(dāng)數(shù)量的數(shù)據(jù)點(diǎn),過(guò)零點(diǎn)數(shù)量仍小于3個(gè),,則認(rèn)為輸入信號(hào)為直流信號(hào),。

  5 程序流程

  程序流程如圖6所示。

程序流程

  6 測(cè)試結(jié)果分析

  采用高精度數(shù)字多用表UT88B輸出值作為標(biāo)準(zhǔn)值,。由表1所示,。

測(cè)試數(shù)據(jù)表

  由數(shù)據(jù)對(duì)比可以看出,在O~5 V檔位上,,該數(shù)字電壓表的誤差基本在O.01 V內(nèi),。在O~50 V檔位上,誤差有所增大,,但也控制在O.02 V以?xún)?nèi),,體現(xiàn)了ADC0809的轉(zhuǎn)換精度,電路整體設(shè)計(jì)合理可靠,。至于O.02 V以?xún)?nèi)的偏差,,可修改程序,,采用軟件的方法進(jìn)行數(shù)據(jù)校正,,也可以進(jìn)一步校正A/D的基準(zhǔn)電壓。

  7 結(jié)語(yǔ)

  利用現(xiàn)場(chǎng)可編程門(mén)陣列技術(shù),,設(shè)計(jì)了該新型數(shù)字式電壓表,。用軟件替代諸多硬件,,在一塊高性能FPGA芯片上,實(shí)現(xiàn)采樣時(shí)序的控制,、檔位的判斷選擇,、碼制的轉(zhuǎn)換和LCD驅(qū)動(dòng),極大地提高了系統(tǒng)集成度和可靠性,。文中重點(diǎn)介紹了檔位電路和FPGA內(nèi)部模塊的設(shè)計(jì)以及關(guān)鍵算法的實(shí)現(xiàn)步驟,。由測(cè)試結(jié)果,可看出該儀表測(cè)量范圍較寬,,測(cè)量精度較高,,能夠滿(mǎn)足物理實(shí)驗(yàn)中電量的測(cè)量要求。經(jīng)實(shí)際使用證明,,系統(tǒng)運(yùn)行穩(wěn)定,、操作方便。為了方便電壓表系統(tǒng)與計(jì)算機(jī)直接通信,,還可進(jìn)一步增加RS 232接口,,進(jìn)行電平轉(zhuǎn)換,可將測(cè)得的數(shù)據(jù)實(shí)時(shí)導(dǎo)入計(jì)算機(jī)中使用,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。