劉素貞, 魏 建, 李 華, 徐桂芝
(河北工業大學 電磁場與電器可靠性省部共建實驗室, 天津 300130)
隨著電子技術的快速發展,對于數據的采集和顯示越來越趨于高速化、便捷化和多功能化,示波器在采集和顯示被測信號的波形方面至關重要。但傳統示波器在數據測量、數據存儲、數據處理等方面存在一定的局限性[1-3]。虛擬儀器技術是在計算機基礎上發展起來的,它借助計算機的快速計算、數據處理、超大內存等優勢,并利用軟件對數據進行顯示、存儲和分析,具有模塊化、數字化、方便共享等優點[4]。于是,基于虛擬儀器技術的示波器[5-6]應運而生。
近年來,我國高校開發了多種多樣的虛擬示波器。例如湖南大學開發了一種基于LabVIEW的虛擬示波器,不僅實現了波形檢測、分析、存儲等功能[7],還實現了頻譜分析、頻率計等功能;杭州電子科技大學開發了一種基于STM32的虛擬示波器,主要完成了外部信號的調理、采集、預處理等功能[8];北京理工大學開發了一種基于USB2.0的虛擬示波器,主要是利用USB模塊與單片機結合,對信號用快速傅里葉變換進行頻譜分析[9];中北大學開發了一種基于數據采集卡的虛擬示波器[10]。
本文開發設計的基于STM32的多功能虛擬示波儀實現了硬件和軟件的結合,利用計算機強大的數據處理能力完成數據的分析、處理,編寫了幅頻相頻分析、李薩如圖形、功率譜和窗函數等功能算法代碼對波形進行處理;開發了示波儀的濾波功能,支持IIR型濾波器和FIR型濾波器的設計,使目標波形能準確地顯示出來。
本設計主要包括硬件系統和軟件系統的設計。硬件設計主要完成信號的采集和預處理,軟件主要負責信號的處理分析以及信號的顯示。硬件和軟件通過USB數據線連接。
虛擬示波儀系統結構如圖1所示。該系統主要包括信號輸入接口模塊、信號調理電路模塊、數據采集處理模塊、USB2.0通信模塊等。系統通過9 V/1 A的電源適配器供電,主控制器STM32對板上硬件設備進行初始化設置,并通過USB硬件控制模塊對USB設備完成枚舉工作。信號輸入及調理電路主要完成信號的衰減和運算放大。衰減電路在保證有足夠的輸入時,避免回顯時產生信號失真或損壞電子器件。數據采集模塊和USB通信模塊由STM32獨立控制。

圖1 虛擬示波儀結構框圖
數據處理主要由上位機軟件完成,流程如圖2所示。上位機處理過程包括插值處理、數據抓幀、波形合成、濾波處理、波形分析和波形繪制。采集到的信號通過USB數據線快速傳遞給上位機。首先啟動插值處理,對數據進行差值計算,使得波形趨于光滑,防止出現斷點;然后輸送給抓幀模塊和波形合成模塊,對輸入的波形信號進行相加或相乘處理,使波形光滑、聚焦;隨后,將波形輸入給濾波處理模塊進行濾波處理,濾除掉由硬件設備產生的噪聲信號。處理后的信號傳遞給波形分析模塊,此模塊對數據的幅頻、相頻以及相關性進行分析處理,得到輸入信號的幅值、頻率等相關信息,最后將信號波形繪圖顯示出來。

圖2 系統數據處理流程
多功能虛擬示波儀不僅能完成傳統示波器的功能,還加入了波形存儲、波形抓幀處理等功能,其主要參數如下:
輸入電壓范圍:-150 V~+150 V
AD采樣位數:8 bit
采樣帶寬:0 ~20 MHz
采樣速率:48 MS/s
軟件觸發方式:上升/下降沿、差分
軟件分析功能:
濾波處理:支持設計IIR和FIR濾波器
波形合成:波形乘法器、相加器
波形分析:李薩如圖形、幅頻、相頻
數據接口:USB2.0
硬件設計部分采用功能模塊化的設計思路,把一個復雜的系統分為若干個子模塊,最后將各個子模塊進行總體調試。本設計主要包括電源模塊、前級驅動模塊、微處理器模塊和USB接口模塊。
電源電路由板級芯片供電,使得各個芯片發揮其相應的功能。本系統主要利用9 V/1 A的電源適配器供給PCB板工作。板上工作電壓分別為+5 V、-5 V和+3.3 V直流電壓,分別采用低功耗的7805、輸入紋波噪聲小的IB0505S-2W和低釋放電流的1117-3.3得到。電源模塊提供了穩定的直流電壓,而且電路設計簡捷,避免了耦合路徑造成的電磁干擾(EMI)問題。
前級驅動模塊主要包括衰減電路、鉗位電路和放大電路,如圖3所示。輸入信號在接入電路后,首先經過衰減電路,采用電阻分壓和旁路電容濾波,保證有較大輸入時能在A/D采樣范圍內,避免波形回顯時產生信號失真。數據的采集和緩存是由處理器完成的,由于處理器自帶的MCU主要工作在±5 V范圍內,所以需要添加鉗位電路,由2個相互串聯的二極管完成。程序控制放大電路要將小信號放大,由集成運放電路TL082和模擬開關CD4051配合完成。模擬開關將8位數字量信號轉換為STM32可識別的3位二進制代碼,以便進行數據處理。

圖3 前級驅動電路原理圖
微處理器是處理數據的主要芯片,STM32主要起著控制系統中其他模塊的作用,在設計電路時需要考慮芯片與其他模塊的接口問題和電磁兼容(EMC)問題。電磁干擾是對處理器最大的挑戰,主要原因是在PCB電路板中存在時變電流,所以在制備PCB板時,STM32的外圍布線需要降低噪聲耦合。此外,STM32還需要添加復位電路和時鐘電路。時鐘電路需要晶振激起,該部分電路需要做好隔離,防止對芯片造成振蕩干擾[11]。
USB接口模塊主要完成下位機上傳數據和上位機控制信號的傳遞,是上位機和下位機信號傳遞的橋梁。USB接口模塊的電路圖如圖4所示。

圖4 USB接口模塊
系統軟件設計包括固件驅動的開發和上位機軟件的開發,同時需要編寫USB驅動程序以實現軟硬件之間的互聯。
硬件設備主要包括系統時鐘、USB模塊、AD模塊、初始化GPIO引腳等,通過對驅動程序的編寫,完成主控制器對各個器件的控制。本系統采用意法半導體公司的基于ARM32的STM32F103X系列MCU監控芯片。意法半導體公司對各個功能模塊提供了固件庫,直接使用該固件庫可大大縮減開發和調試時間。固件驅動程序需要用Keil軟件編寫,利用TSC-ISP燒寫軟件將固件程序下載到STM32中。
根據USB2.0協議[12],當USB2.0連接到PC端時,計算機會自動為USB分配一個數字來標識這個設備。USB設備驅動向控制器傳遞的每次驅動請求成為一個事務;每個事務都會分為若干個數據包在USB總線上傳輸;每次傳輸都必須經歷USB控制器向USB設備發出讀或寫命令,再由USB設備做出相應的操作。
由DriveStudio生成的USB驅動程序框架主要包括STM Virtual COM PortDrive.cpp和STM Virtual COM PortDevice.cpp兩個源程序。前者用于USB設備初始化,需要編寫入口函數DriveEntry、AddDevice和Unload;后者用于在WDM環境支持即插即用功能,包括設備的插拔、設備讀寫、電源管理等例程。只需在特定的函數中添加代碼即可實現USB設備的各項功能。通過編譯運行后將生成驅動文件——STM Virtual COM Port.sys和STM Virtual COM Port.inf兩個可執行文件。當插上USB數據傳輸線時,進入USB設備驅動向導,進行驅動的安裝。
用戶通過上位機與虛擬示波儀友好交互,可以方便地控制下位機和監測下位機的狀態。上位機程序主要是通過VC++軟件編寫,利用VC++程序中新建MFC工程,采用面向對象的編程方法,可以方便地對上位機添加模塊、按鈕、文字標注等。上位機程序功能如圖5所示。

圖5 上位機程序功能圖
在明確上位機程序功能后,需要進行上位機功能程序的編寫。上位機數據處理流程如圖6所示。當上位機啟動后,首先調用主程序對電路板和軟件進行參數重置,由上位機向下位機發布讀數據指令,進行數據采集,將采集到的數據傳輸至上位機數據處理模塊。處理后的數據輸出顯示,也可將數據存儲于計算機中,以便下次進行數據查看和分析處理。
上位機軟件的編寫主要是對上位機功能的編寫,通過VC++軟件編寫程序算法,一方面豐富傳統示波器功能,另一方面又開發波形處理、濾波器設計等功能。程序的軟件功能如圖7所示。

圖6 上位機數據處理流程圖

圖7 程序軟件功能圖
將下位機通電后,由函數發生器Agilent 33220A分別發出頻率1 kHz、幅值2.8 V的矩形波和正弦波。用Tektronix公司示波器測量信號,然后將函數發生器與下位機相連。下位機通過USB數據線與PC相連,利用上位機軟件測量兩種信號。圖8為上位機軟件通過系統分析所繪制的矩形波和正弦波。
通過對數據采集、顯示,得到矩形波和正弦波誤差分析(見表1和表2)。

圖8 虛擬示波儀上位機繪制采集的波形

波形頻率實測值/Hz誤差/%正電壓實測值/Hz誤差/%負電壓實測值/Hz誤差/%標準波10002.800-2.800矩形波9762.42.7730.96-2.7790.75

表2 正弦波誤差分析
設計的虛擬示波儀支持設計IIR型濾波器和FIR型濾波器。為驗證虛擬示波儀的濾波器效果,進行了一組對比實驗。圖9(a)為采集到的原始電磁超聲信號,原始信號中存在大量的噪聲信號。采用虛擬示波儀中截止頻率為2 MHz的10階巴特沃斯低通FIR型濾波器對電磁超聲信號進行濾波,圖9(b)為濾波后的波形。可見噪聲信號被濾除,能夠滿足電磁噪聲背景下對微弱電磁超聲回波信號的檢測,并且數據誤差很小。

圖9 巴特沃斯低通濾波器的濾波器效果
設計的虛擬示波儀不僅實現了軟硬件結合采集信號,具有軟件處理和濾波功能,而且體積小、穩定可靠。由于本設計采用STM32芯片,內部集成多功能模塊,進而可豐富本系統的功能,并且此類芯片具有低功耗、外設資源豐富等特點,可滿足外接ADC、IIC、SPI、DMA、USART、USB、SWJ-DP等外設接口,實現本系統的進一步開發,提高系統精度和豐富系統功能。
References)
[1] 徐巧玉,李鵬,王軍委,等.便攜式數字存儲示波器的設計[J].自動化與儀表,2014,29(4):19-22.
[2] 王秀芳,郝建勛.虛擬示波器的設計與實現[J].儀器儀表學報,2005,26(增刊2):253-254.
[3] 林永平,蔡堅勇.基于網絡的虛擬示波器的設計[J].福建師范大學報(自然科學版),2005,21(2):47-50.
[4] 馬宏偉,王華玲,李海寧.基于LabVIEW的超聲檢測虛擬儀器開發[J].儀器儀表學報,2006(增刊3):1785-1787.
[5] 沈輝,沙立民,張重龍.基于LabVIEW的多功能虛擬示波器設計[J].電子測量技術,2012(11):90-93.
[6] 王莉,楊鵬.基于LabVIEW的虛擬示波器的設計與實現[J].實驗室研究與探索,2010,29(1):62-64.
[7] 唐求,滕召勝,黃鴻鳴.基于LabVIEW的多功能虛擬示波器設計[J].微計算機信息,2007,23(1):151-152.
[8] 丁紅斌,秦會斌,孫順遠.基于STM32的虛擬示波器的設計與實現[J].電子器件,2009,32(6):1007-1010.
[9] 王全玉,劉丹軍,關文舉.基于USB2.0的虛擬示波器設計[J].電測與儀表,2004,41(4):40-42.
[10] 陳昌鑫,謝冰.數據采集卡和虛擬示波器系統[J].儀表技術與傳感器,2012(3):67-69.
[11] 劉家富,雷宛,張揚,等.瞬變電磁信號去噪方法對比分析與評價[J].工程勘察,2014,42(11):88-93.
[12] 何蘇秦,黃翠翠.基于USB2.0的異步數據傳輸和控制接口的設計[J].國外電子測量技術,2010,29(3):79-83.