在線監(jiān)測系統(tǒng)中,待測信號幅值在50μV左右,而背景噪聲幅值在50mV以上,用一般的采集和測量系統(tǒng)無法準(zhǔn)確檢測該信號。針對被背景噪聲覆蓋的微小信號,采用濾波降噪和差分放大手段,提高信噪比,保證待測信號能被準(zhǔn)確采集;采用基于ARM核的32位微處理芯片S3C44B0X和基于μClinux操作系統(tǒng)的嵌入式圖形用戶界面MicroWindows,完成實(shí)時(shí)顯示測量結(jié)果和實(shí)現(xiàn)故障自動(dòng)報(bào)警,同時(shí)具有體積小、功耗低、操作靈活的特點(diǎn),為實(shí)現(xiàn)微伏信號在線監(jiān)測功能提供了一種良好的解決方案。
2 系統(tǒng)硬件設(shè)計(jì)
整個(gè)微伏信號在線監(jiān)測系統(tǒng)硬件主要分為兩個(gè)部分,即前置放大電路和基于ARM的數(shù)據(jù)采集與顯示電路,如圖1所示。
2.1 前置放大電路
待測信號幅值為50μV,而背景噪聲幅值在50mV以上,SNR(信噪比值)在1/1000以下,所以必須根據(jù)信號特點(diǎn)進(jìn)行降低噪聲功率,提高信噪比。通過實(shí)驗(yàn),發(fā)現(xiàn)信號與噪聲頻譜不重疊,噪聲頻率主要集中在高頻段。利用濾波器的頻率選擇特性,可設(shè)置低通濾波器,其通帶范圍能夠覆蓋信號的頻譜,使信號通過濾波器衰減很少,同時(shí)噪聲頻率處于通帶之外,通過濾波器后功率大幅度衰減,因此信噪比得以提高。
本設(shè)計(jì)采用二階有源低通濾波器,經(jīng)實(shí)驗(yàn)對比,取二階有源低通濾波器的截止頻率fH為200Hz,品質(zhì)因數(shù)Q為0.707,可使SNR達(dá)10以上,SNIR(信噪改善比)達(dá)10000以上。
在實(shí)際應(yīng)用中發(fā)現(xiàn),待測信號和監(jiān)測系統(tǒng)之間的參考零電勢點(diǎn)之間存在電勢差,由于兩者由同一電源供電,因而形成“地環(huán)流”。電流從電源地線流入被測信號的接地點(diǎn),然后通過信號地線流入監(jiān)測系統(tǒng),又通過監(jiān)測系統(tǒng)的接地點(diǎn)回到電源地線,導(dǎo)致在線監(jiān)測的過程中地線上出現(xiàn)很高的共模干擾噪聲。在這樣的工作環(huán)境下,使用普通的低溫漂高精度運(yùn)算放大電路,不能準(zhǔn)確放大和測量待測信號。因此本設(shè)計(jì)采用高增益、高輸入阻抗和高共模抑制比的三運(yùn)放差分放大電路,消除共模干擾,如圖2所示。
圖2 三運(yùn)放差分放大電路
集成運(yùn)放A1和A2都接成同相輸入、比例運(yùn)算電路形式,這樣電路輸入阻抗很高。電路結(jié)構(gòu)采用嚴(yán)格地對稱形式,以使漂移、噪聲、失調(diào)電壓及失調(diào)電流等互相抵消。同時(shí)采用高精密電阻,以提高測量精度。將濾波后的信號線接入Vi+端口,而把信號地線接入Vi-端口,經(jīng)過三運(yùn)放差分放大電路輸出電壓為:
經(jīng)實(shí)驗(yàn)對比,本設(shè)計(jì)在強(qiáng)干擾環(huán)境下,對微伏信號有較好的放大效果。經(jīng)過前置放大后的信號,有效地消除了干擾和噪聲,具有良好的線性關(guān)系,實(shí)驗(yàn)結(jié)果如圖3所示。經(jīng)過差動(dòng)放大后的信號,再經(jīng)過普通運(yùn)算放大器進(jìn)行電壓平移和放大,即可成為符合A/D采集要求的0~2.5V電壓單極性信號。
圖3 前置放大電路的線性關(guān)系
2.2 數(shù)據(jù)采集與顯示電路
本設(shè)計(jì)中數(shù)據(jù)采集和顯示電路的核心器件采用32位ARM7內(nèi)核嵌入式處理器S3C44B0X。S3C44B0X內(nèi)置部件有8通道10位ADC(模數(shù)轉(zhuǎn)換器)、8KB cache(高速緩存器)、內(nèi)置SDRAM(同步動(dòng)態(tài)存儲(chǔ)器)、LCD控制器、2通道UART(通用異步收發(fā)器)、4通道DMA(直接存儲(chǔ)器存取)、71個(gè)通用I/O端口等。
本設(shè)計(jì)中使用S3C44B0X完成A/D數(shù)據(jù)采集、LCD控制液晶顯示器、鍵盤輸入和故障報(bào)警四個(gè)主要功能。經(jīng)前置放大電路處理完成之后的0~2.5V電壓電極性信號,由S3C44B0X的10位精度片上A/D采集到CPU中。S3C44B0自帶LCD控制器,利用DMA控制器從系統(tǒng)RAM中的顯示緩沖區(qū)讀取顯示數(shù)據(jù),提供給LCD控制器刷新液晶顯示屏。鍵盤和報(bào)警電路利用S3C44B0通用I/O端口進(jìn)行控制。
3 系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)軟件設(shè)計(jì)基于μClinux操作系統(tǒng)和MicroWindows圖形用戶界面。μClinux操作系統(tǒng)是從Linux內(nèi)核派生而來,在標(biāo)準(zhǔn)的Linux基礎(chǔ)上進(jìn)行了適當(dāng)?shù)牟眉艉蛢?yōu)化,具有易配置、體積小、易移植的優(yōu)點(diǎn)。用MicroWindows圖形用戶界面實(shí)現(xiàn)類似桌面電腦的視窗效果,易于實(shí)現(xiàn)人機(jī)交互。
系統(tǒng)軟件包括操作系統(tǒng)自帶的設(shè)備驅(qū)動(dòng)程序、操作系統(tǒng)運(yùn)行環(huán)境、根據(jù)用戶需要自定義的設(shè)備驅(qū)動(dòng)程序、封裝了底層驅(qū)動(dòng)的中間層接口程序、高級應(yīng)用程序幾個(gè)部分。在本系統(tǒng)軟件設(shè)計(jì)中,分別在驅(qū)動(dòng)層和高級應(yīng)用層程序中實(shí)現(xiàn),其中高級應(yīng)用層程序框圖如圖4所示。
圖4 高級應(yīng)用程序框圖
高級應(yīng)用程序的設(shè)計(jì)以控制算法為核心,多個(gè)任務(wù)為控制服務(wù)。系統(tǒng)內(nèi)核定時(shí)將測得的數(shù)據(jù)通過回調(diào)函數(shù)傳遞給高級應(yīng)用程序。高級應(yīng)用程序?yàn)槊總€(gè)被測通道分配一個(gè)數(shù)據(jù)緩沖區(qū),數(shù)據(jù)緩沖區(qū)是個(gè)含有10個(gè)無符號整型數(shù)的數(shù)組,GCC編譯器默認(rèn)無符號整型數(shù)長度為16位。測量電路中ADC為10位模數(shù)轉(zhuǎn)換器,緩沖區(qū)中的每個(gè)單元的低10位存儲(chǔ)數(shù)值,最高位為1表示該數(shù)據(jù)無效或者已經(jīng)被處理,為0表示該數(shù)據(jù)有效并等待處理,第10~14位表示數(shù)據(jù)編號,用以區(qū)分不同通道的數(shù)據(jù)。內(nèi)核驅(qū)動(dòng)程序把測量數(shù)據(jù)按格式準(zhǔn)備好后,回調(diào)函數(shù)把數(shù)據(jù)傳送給高級應(yīng)用程序。應(yīng)用程序只要使用“與”、“或”操作就可以提取數(shù)據(jù)類型、實(shí)際數(shù)據(jù)等信息。
3.1 自定義設(shè)備驅(qū)動(dòng)
設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)和硬件設(shè)備之間的接口,它主要完成對設(shè)備初始化、實(shí)現(xiàn)內(nèi)核和應(yīng)用程序與設(shè)備之間的數(shù)據(jù)交換、檢測處理設(shè)備錯(cuò)誤等功能。在μClinux操作系統(tǒng)使用設(shè)備文件的方式來進(jìn)行設(shè)備管理應(yīng)用,一個(gè)具體的物理設(shè)備被映射為一個(gè)設(shè)備文件,用戶程序可以像對其它文件一樣對此設(shè)備文件進(jìn)行打開、關(guān)閉、數(shù)據(jù)讀寫等操作。
系統(tǒng)軟件設(shè)計(jì)中的驅(qū)動(dòng)層部分,除了使用μClinux操作系統(tǒng)自帶的設(shè)備驅(qū)動(dòng)程序以外,需要對外部設(shè)備編寫自定義的設(shè)備驅(qū)動(dòng)程序,以滿足操作系統(tǒng)的要求。以字符設(shè)備為ADC為例,主要對其編寫自定義的驅(qū)動(dòng)程序。使用結(jié)構(gòu)體file_operations{}作為ADC字符設(shè)備的函數(shù)接口,內(nèi)核通過這個(gè)函數(shù)接口來操作設(shè)備。自定義后的file_operations{}結(jié)構(gòu)體如下:
編寫自定義的驅(qū)動(dòng)程序完成后,內(nèi)核調(diào)用相應(yīng)的函數(shù)即對ADC設(shè)備文件進(jìn)行open、ioctl等具體操作。
3.2 圖形用戶界面設(shè)計(jì)
圖形用戶界面(GUI)把圖形視窗引入到嵌入式平臺上,其友好的界面為大多數(shù)用戶所接受,也得到越來越廣泛的應(yīng)用。本設(shè)計(jì)采用MicroWindows來實(shí)現(xiàn)圖形界面,以窗口形式顯示測量數(shù)據(jù)及其它參數(shù)。MicroWindows是一個(gè)較早出現(xiàn)的、開放源碼的嵌入式圖形用戶界面軟件,它提供了比較完整的圖形功能,支持多種外部設(shè)備輸入,具有占用空間小、可移植性好的優(yōu)點(diǎn)。在μClinux操作系統(tǒng)上使用MicroWindows易于圖形程序的開發(fā)。
MicroWindows采用了層次化結(jié)構(gòu):在底層提供設(shè)備的驅(qū)動(dòng),在中間層通過一個(gè)可移植圖形引擎實(shí)現(xiàn)繪制多邊形、區(qū)域填充、使用顏色等,在頂層實(shí)現(xiàn)多種API以適應(yīng)不同的應(yīng)用環(huán)境。MicroWindows API之間采用消息傳遞的基本通信機(jī)制。消息被儲(chǔ)存在應(yīng)用程序的消息隊(duì)列中,不同消息對應(yīng)不同的事件,核心的API通過傳遞對應(yīng)相應(yīng)事件的消息來實(shí)現(xiàn)各種功能,如窗口的創(chuàng)建、繪制、移動(dòng)等等。
在本設(shè)計(jì)中,編寫基于Microwindows的應(yīng)用程序,基本結(jié)構(gòu)為初始化、創(chuàng)建窗口與資源、進(jìn)入消息循環(huán)三部分。主程序中相關(guān)部分如下所示:
在調(diào)用窗口創(chuàng)建函數(shù)CreateWindowEx()后,系統(tǒng)在內(nèi)存中創(chuàng)建了一個(gè)虛擬的窗口,之后調(diào)用窗口顯示函數(shù)ShowWindow()就可將虛擬窗口顯示為可視窗口,成為Windows風(fēng)格的視窗界面。在本設(shè)計(jì)中,主程序運(yùn)行時(shí)不斷調(diào)用提取消息函數(shù)PeekMessage(),查看消息隊(duì)列是否收到任務(wù)信息,當(dāng)有信息產(chǎn)生時(shí),就執(zhí)行對應(yīng)的消息處理函數(shù)。同時(shí),在消息循環(huán)里也反復(fù)調(diào)用鍵盤緩沖區(qū)查詢函數(shù)RxKeyvalue (),查看是否有鍵盤輸入,以便隨時(shí)響應(yīng)。
4 抗干擾措施
在本設(shè)計(jì)中,采用低溫漂的基準(zhǔn)穩(wěn)壓電源為前置放大電路供電,并且在每個(gè)元件的電源管腳處加去耦電容。元器件選用高精度、漂移小的精密運(yùn)算放大器;選用高精度、低溫漂的精密電阻;信號線采用雙絞線或屏蔽線。印刷板布線時(shí),盡量縮短前置放大電路的信號線,并確保了電路接地、屏蔽良好。
5 結(jié)語
本文創(chuàng)新點(diǎn)在于設(shè)計(jì)和實(shí)現(xiàn)了一種基于ARM的微伏信號在線監(jiān)測系統(tǒng),以差動(dòng)放大方式消除外界對測量信號的干擾,利用S3C44B0X微處理器和μClinux操作系統(tǒng)實(shí)現(xiàn)液晶屏顯示數(shù)據(jù)、人機(jī)交互和故障自動(dòng)報(bào)警功能,為實(shí)現(xiàn)微伏信號在線監(jiān)測提供了一種體積小、功耗低、操作靈活的解決方案。本設(shè)計(jì)已投入使用,長時(shí)間工作穩(wěn)定。
參考文獻(xiàn):
[1] Samsung公司,《S3C44B0 Microprocessor——Product overview》
[2] 萬沛霖等,低噪聲寬頻帶弱信號前置測量電路的研制,電測與儀表,No.429: 26-27,2001,
[3] 周立功等,《ARM嵌入式Linux系統(tǒng)構(gòu)建與驅(qū)動(dòng)開發(fā)范例》,北京:北京航空航天大學(xué)出版社,2006
[4] 張進(jìn)等,基于ARM7的嵌入式系統(tǒng)中頻率數(shù)據(jù)獲取與共享,微計(jì)算機(jī)信息,No.11: 82-83,2006