張佑春
(安徽工商職業學院 電子信息系,合肥231131)
伴隨著電子技術、計算機技術、測試測量技術等的飛速發展,傳統的測試儀器由于其本身存在的測量精度、測量誤差、硬件固化及維護成本等諸多缺陷,越來越不能適應當下測試測量行業發展的要求。20世紀80年代由NI公司提出的虛擬儀器是對傳統儀器時代的一次革命,虛擬儀器主要借助于計算機豐富的軟硬件資源,實現傳統測試測量儀器的數據采集功能,同時完成對信號的調理、處理、存儲、輸出和顯示等諸多功能[1-3]。虛擬儀器開發中使用一種圖形化的編程語言——LabVIEW,該軟件內置VXI、GPIB、RS-232、RS-422、RS-485、USB等協議接口,富含ActiveX、TCP/IP等軟件標準庫函數,同時還提供CIN代碼接口節點和DLL動態鏈接庫功能[4-6]。軟件編程摒棄傳統的文本語言,采用直觀的圖形化語言——G語言,編程方便、界面友好。
本研究正是在綜合考慮傳統儀器與虛擬儀器的各自特點與應用場合后,采用了虛擬儀器LabVIEW軟件,以計算機豐富的軟硬件為平臺,設計了一種新型的數字式直流電壓表。
虛擬直流電壓表的硬件系統設計主要包括測量對象、A/D轉換模塊、增益選擇模塊和通道輸入模塊4個部分。系統框圖如圖1所示。

圖1 虛擬直流電壓表的硬件系統設計框圖Fig.1 Design diagram of virtual DC voltmeter hardware system
A/D轉換電路設計采用雙積分式12位A/D轉換芯片ICL7109,該芯片具有轉換速度快、轉換精度高等特點。為與微處理器通信方便,該芯片分別內置了2個14位的數據寄存器和鎖存器,大大簡化了外圍電路設計。ICL7109提供了2種數據交換方式,即間接方式和直接方式,可以通過設置MODE引腳完成方式設定。前者采用標準工業數據交換格式,主要針對遠程數據采集;后者在數據輸出過程中,由B1~B8完成低8位字節數據輸出,由B9~B12完成高4位數據輸出。該方式可在片選和字節使能的控制下直接讀取數據[7-9]。系統MODE引腳設置低電平,為直接方式,通過改變電位器的狀態,經INH引腳完成模擬電壓Vx的輸入。A/D轉換時序圖與模塊電路原理圖分別如圖2、圖3所示。
鑒于待測模擬信號比較微弱,為得到合適的測量信號,電路引入集成運算放大器LM324,增益選擇功能可以通過模擬開關CD4052實現。它是數字控制的模擬數據選擇/分配器,具有低導通阻抗和低泄漏電流等特性,通過2個二進制輸入端A、B和一個禁止輸入端INH來實現通道選擇。模塊電路中支持4檔增益選擇,即0.5、1、2、5倍。增益選擇模塊電路如圖4所示。
通道輸入模塊電路提供了3路輸入信號,分別是2.048V參考電壓VREF輸入通道,0V接地通道,以及直流測量電壓輸入通道,即7109+和7109-。需要說明的是,測量電壓通過調節電位器來實現,電壓范圍在0~±4V之間。
由ICL7109的A/D轉換關系,有


圖2 A/D轉換時序圖Fig.2 A/D conversion timing chart
式中:VIN—A/D轉換器輸入電壓;NOUT—A/D轉換結果的12位數字量;VREF—A/D轉換器外部參考輸入電壓。調節至VREF=2.048V,此時NOUT可以看作為以mV為單位表示的VIN,即


圖3 A/D轉換模塊電路原理圖Fig.3 A/D converter module circuit diagram

圖4 增益選擇模塊電路原理圖Fig.4 Gain selection module circuit diagram
系統基于PC機的虛擬儀器軟件平臺——LabVIEW構建測量方案,實現直流電壓的數字化測量,完成虛擬交流數字電壓表的設計。整個流程采取順序程序結構,依次實現對象選擇、量程選擇、EPP接口初始化與讀數校驗、7109啟動與運行、量程超出判斷,以及結果顯示等功能。整個軟件設計流程圖如圖5所示。
程序設計主要借助Labwindows/CVI編寫底層fp函數,在程序實現時可直接調用驅動函數動態鏈接,即7109.dll函數,驅動函數原型及常數和變量在封裝在cvidll.prj工程中。程序設計時,應加入動態鏈接7109.dll動態鏈接庫函數。實現直流電壓測量的驅動函數主要包括以下函數:
void stdcall epp_init(void) ∥初始化EPP接口;
int stdcall epp_read_check(void) ∥EPP讀數檢查;
int stdcall run_7109(unsigned char m_what,unsigned char gain_cw,double vref,double*rult) ∥運行7109,實現7109的讀數及轉化;
void stdcall amp_7109(unsigned char gain_cw,double*gain,int*showdot) ∥根據量程設置增益和顯示位數;
void stdcall indicator_7109(unsigned char gain_cw,double*indicator_gain,double*indicator_max) ∥根據量程設置7109輸入增益,電壓表最大顯示數字;
void stdcall start_7109(void) ∥啟動7109;
int stdcall display(double display_data) ∥顯示。
虛擬直流數字電壓表的主要功能是用于完成測量與顯示電位器或外部直流電壓。虛擬儀器前面板設計有測量對象選擇按鈕和測量與自測選擇按鈕,在數據測量中提供了數字和表盤兩者同時顯示。參照高速數據采集的相關主要性能指標,設計設置了8檔量程,即8、4、2、0.8、0.4、0.2、0.08、0.04V,對應增益為0.5、1、2、5、10、20、50、100倍。同時,前面板上設置超量程指示,測量的啟動和退出等功能。考慮到電壓表在實際使用時的需要,故將量程選在最大檔,量程缺省值設為8V。虛擬直流電壓表前面板設計如圖6所示。

圖5 軟件設計流程圖Fig.5 Software design flow

圖6 虛擬直流電壓表前面板Fig.6 Front panel of virtual DC voltmeter
由前面板設計可知,“退出”按扭控制了程序的運行狀況,“測量”按鈕控制了測量狀況,因而可采用structure中的while循環作為設計主框架。考慮到LabVIEW的順序流程特性,順序結構同樣適用于循環內部設計。因此,可借助structure中的flat sequence case結構完成程序流圖設計。
整體設計流程大體上由4個步驟構成:首先,對EPP接口初始化,可通過調用動態鏈接庫函數來完成,同時庫函數無需返回數值;其次,啟動7109,依然可通過調用動態鏈接庫函數來完成,庫函數仍無需返回數值;再次,啟用EPP讀數據校驗,此處通過設置函數返回值來判斷EPP讀數據成功與否,成功則繼續,否則將“測量”按鈕彈起,程序停止;最后,運行7109,借助case結構選擇測量對象和量程,把run_7109的輸出用于表盤和led數字顯示。超量程可根據7109的返回值判斷,不等于1則超出,同時點亮超量程指示燈。部分程序框圖面板如圖7所示。

圖7 虛擬直流電壓表程序框圖面板Fig.7 Program diagram panel of virtual DC voltmeter
為分析與比較虛擬直流電壓表和傳統電壓表的測量測試性能,分別對被測對象進行了測試,采用3塊傳統直流電壓表得到平均值,再與虛擬直流電壓表進行誤差比較。容易得出,采用虛擬直流電壓表測試數據誤差小、精度高。測試結果分別如表1、表2所示。

表1 傳統電壓表測試數據Table 1 Test data of traditional voltmeter

表2 虛擬直流電壓表測試數據Table 2 Test data virtual DC voltmeter
采用虛擬儀器LabVIEW軟件設計的虛擬直流電壓表,大大簡化了傳統電壓表的硬件結構與制造維護成本,克服了傳統電壓表測量精度不高,數據無法存儲、分析、計算以及攜帶不方便等一系列缺點;同時,簡化的圖形編程語言進一步縮短了開發周期,也方便后期產品功能更新和性能優化。由于設計選取的A/D轉換器、參考電壓和增益電阻的精度高,經過實驗測試,開發的虛擬直流電壓表具有測試方便、測量精度高等優勢,有廣闊的市場應用前景。
[1] National Instruments Corporation.LabVIEW User Manual[Z].2008.
[2] 陳國順,于涵偉,王格芳,等.測試工程及LabVIEW應用[M].北京:清華大學出版社,2013.
[3] 章佳榮,王璨,趙國宇.精通LabVIEW虛擬儀器程序設計與案例實現[M].北京:人民郵電出版社,2013.
[4] 陳世超.基于虛擬儀器的多路電壓測量的設計與實現[J].電子設計工程,2012,20(8):82-84.
[5] 程雙江,李世平,鄭堂.基于LabVIEW 的數字電壓表設計[J].電子測量技術,2013,36(1):88-90,104.
[6] 范強,付永麗.基于LabVIEW 8.2的多用虛擬電壓表設計[J].現代電子技術,2009,311(24),183-185,188.
[7] 莫勇濤,楊景常.基于LabVIEW 的多功能虛擬直流電壓表設計[J].計算機測量與控制,2011,19(6):1507-1509.
[8] 王鋒,楊超,趙河明.基于LabVIEW 的虛擬溫度檢測系統[J].測試技術學報,2013,27(5):431-435.
[9] 劉東升,尹成群,呂安強,等.基于虛擬儀器技術的電子測量儀器平臺開發[J].儀表技術與傳感器,2011(9):23-25,55.