基于FPGA的新型數(shù)字電壓表設(shè)計(jì)
該電壓表電路中,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é)束。
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。
當(dāng)輸入電壓范圍為O~5 V時(shí),INO導(dǎo)通。此時(shí)U=U26,當(dāng)輸入電壓范圍為5~50 V時(shí),FPGA判斷選擇檔位,INl導(dǎo)通。此時(shí)有U=U27即U=(R1+R3)/(R1+R2+R3)=U26/10。
由于ADC0809數(shù)字量輸出為8位,數(shù)字量化范圍為0~255,當(dāng)輸入電壓為滿量程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所示。
由數(shù)據(jù)對(duì)比可以看出,在O~5 V檔位上,該數(shù)字電壓表的誤差基本在O.01 V內(nèi)。在O~50 V檔位上,誤差有所增大,但也控制在O.02 V以內(nèi),體現(xiàn)了ADC0809的轉(zhuǎn)換精度,電路整體設(shè)計(jì)合理可靠。至于O.02 V以內(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è)量精度較高,能夠滿足物理實(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ī)中使用。
評(píng)論