曾 駿,何劍鋒,李衛(wèi)東,谷 偉,吳昌成,杜志恒
(1.東華理工大學(xué)信息工程學(xué)院,江西南昌 330013;2.江西省核地學(xué)數(shù)據(jù)科學(xué)與系統(tǒng)工程技術(shù)研究中心,江西南昌 330013;3.江西省放射性地學(xué)大數(shù)據(jù)技術(shù)工程實(shí)驗(yàn)室,江西南昌 330013)
隨著油田開(kāi)采、礦洞挖掘、核工業(yè)及地質(zhì)探測(cè)等的日益發(fā)展,核輻射造成的威脅也在劇增,核輻射的監(jiān)測(cè)與分析是一項(xiàng)重要技術(shù)。通過(guò)對(duì)γ能譜測(cè)量并分析可知放射性元素信息[1]。γ能譜儀作為常用的核輻射測(cè)量?jī)x器,在核輻射相關(guān)工業(yè)中發(fā)揮重要作用。傳統(tǒng)γ能譜儀一般由探頭、多道脈沖幅度分析器、記錄顯示電路3部分組成,記錄顯示多為PC端與多道脈沖幅度分析器通過(guò)串口進(jìn)行數(shù)據(jù)交換,體積大且非一體化,不便于攜帶[2]。隨著核科學(xué)的發(fā)展,越來(lái)越多的場(chǎng)合需要可手持的便攜式一體化γ能譜儀,如礦洞探測(cè)、野外探測(cè)等[3],而且,傳統(tǒng)γ能譜儀難以滿(mǎn)足用戶(hù)對(duì)能譜儀的功耗與續(xù)航的需求[4]。ARM嵌入式系統(tǒng)具有高性能、低成本、低功耗及開(kāi)發(fā)方便等優(yōu)點(diǎn),QT作為一個(gè)跨平臺(tái)圖形界面應(yīng)用程序開(kāi)發(fā)框架,其具有重用性好、開(kāi)發(fā)方便、API豐富等優(yōu)點(diǎn),是嵌入式人機(jī)交互開(kāi)發(fā)中的首選。因此,本文設(shè)計(jì)了一款基于imx6ull/QT的便攜式智能γ能譜儀,該能譜儀將數(shù)字化多道脈沖幅度分析器與能譜數(shù)據(jù)處理、記錄顯示功能均通過(guò)一塊Cortex-A7內(nèi)核處理器完成,NaI探頭與整機(jī)在結(jié)構(gòu)上固定在一起,整個(gè)設(shè)備具有低功耗、便攜性以及人機(jī)交互友好等特點(diǎn),適用于多種復(fù)雜環(huán)境下核輻射探測(cè)。
由于γ射線不能通過(guò)肉眼直接觀察,要探測(cè)只能借助物質(zhì)與其發(fā)生作用產(chǎn)生可采集的信號(hào)[5]。
探測(cè)器在γ射線的激發(fā)下,產(chǎn)生光子,經(jīng)過(guò)光電轉(zhuǎn)換和信號(hào)調(diào)理后,經(jīng)ADC采樣,可產(chǎn)生具有統(tǒng)計(jì)特性的放射性粒子。具體統(tǒng)計(jì)特性如下:
具有N0個(gè)放射性原子核的放射源在t時(shí)間內(nèi)的衰變總數(shù),服從二項(xiàng)式分布。原子衰變指數(shù)規(guī)律:
N(t)=N0e-λt
(1)
在0~t時(shí)間內(nèi),發(fā)生衰變的原子核數(shù)為
ΔN(t)=N0-N(t)=N0(1-e-λt)
(2)
1個(gè)原子核在0~t時(shí)間內(nèi)發(fā)生衰變的概率為
(3)
不發(fā)生衰變的概率為
q=1-P=e-λt
(4)
在N0很大、P很小的情況下,服從二項(xiàng)式分布的隨機(jī)變量近似服從泊松分布,其概率函數(shù)為
(5)
當(dāng)m>>1時(shí),泊松分布近似為高斯分布,此時(shí)核輻射數(shù)據(jù)近似看作如下函數(shù)的連續(xù)性隨機(jī)變量:
(6)
對(duì)統(tǒng)計(jì)特性的放射性粒子采集并做記錄與顯示,持續(xù)一段時(shí)間后,可得到含有近似高斯分布的譜峰的能譜圖,對(duì)能譜圖進(jìn)行處理與分析,即可測(cè)量核輻射的相關(guān)數(shù)據(jù)。
γ能譜儀的系統(tǒng)設(shè)計(jì)如圖1所示,該能譜儀分為探頭部分和ARM嵌入式系統(tǒng)部分。探頭部分采用NaI閃爍體探測(cè)器,探測(cè)器的晶體與輻射相互作用產(chǎn)生微弱的光脈沖信號(hào),經(jīng)過(guò)PMT轉(zhuǎn)換為電脈沖信號(hào),再通過(guò)信號(hào)調(diào)理電路等一系列處理后形成近似指數(shù)衰減的脈沖信號(hào)供ADC采集,高速ADC與FIFO緩存器相接,F(xiàn)IFO與IO口相接。ARM嵌入式系統(tǒng)部分由imx6ull處理器及外設(shè)組成,imx6ull是基于Cortex-A7內(nèi)核的處理器,性能強(qiáng)且功耗低,該CPU用于實(shí)現(xiàn)數(shù)字化多道脈沖幅度分析與記錄顯示等功能。整個(gè)系統(tǒng)可用于野外、礦洞等復(fù)雜環(huán)境下的核輻射探測(cè)。
圖1 系統(tǒng)總體架構(gòu)
作為數(shù)字化能譜儀,其硬件設(shè)計(jì)遠(yuǎn)比基于模擬電路設(shè)計(jì)的能譜儀簡(jiǎn)單。本系統(tǒng)的功能基本在imx6ull處理器片內(nèi)完成,主要功能設(shè)計(jì)通過(guò)軟件算法實(shí)現(xiàn)。所以片外的硬件非常簡(jiǎn)單,基本只有引出的I/O、高速ADC、FIFO存儲(chǔ)器、LCD屏以及一些電源電路以及信號(hào)調(diào)理電路。其中,ADC用于核脈沖信號(hào)采集,F(xiàn)IFO存儲(chǔ)器作為ADC與IO口之間的橋梁,用于協(xié)調(diào)高速ADC與速率較低IO口間的數(shù)據(jù)傳輸,以實(shí)現(xiàn)ARM高速采集接口滿(mǎn)足數(shù)字化多道采樣速率要求。LCD屏用于人機(jī)交互。
能譜儀基于ARM-Linux系統(tǒng)在ubuntu14.0下進(jìn)行軟件開(kāi)發(fā),開(kāi)發(fā)方式為交叉編譯。
由于系統(tǒng)啟動(dòng)時(shí)需要通過(guò)Bootloader來(lái)完成,即先在uboot官網(wǎng)下載源文件后進(jìn)行修改、配置、編譯等操作后得到u-boot.bin文件,通過(guò)燒寫(xiě)軟件將bin文件燒寫(xiě)到EMMC的指定地址[6]。
接下來(lái)的步驟為L(zhǎng)inux內(nèi)核移植,將NXP的內(nèi)核源碼下載后根據(jù)實(shí)驗(yàn)平臺(tái)進(jìn)行配置、修改、裁剪,通過(guò)make編譯生成zImage內(nèi)核映像文件,將映像文件燒錄到EMMC指定位置。
根文件系統(tǒng)采用busybox構(gòu)建,開(kāi)發(fā)階段采用NFS掛載根文件系統(tǒng),根文件系統(tǒng)構(gòu)建后就有一個(gè)可以運(yùn)行的最小系統(tǒng)。實(shí)驗(yàn)程序編譯成模塊的形式放置根文件系統(tǒng)的目錄內(nèi),采用裝載和卸載.ko文件的方式實(shí)驗(yàn),不用重新編譯內(nèi)核,方便修改和測(cè)試。
通過(guò)前面的配置搭建了一個(gè)最小可運(yùn)行系統(tǒng),但是一個(gè)完整的嵌入式系統(tǒng)還需要可視化人機(jī)交互界面。QT作為一個(gè)跨平臺(tái)的C++開(kāi)發(fā)庫(kù),應(yīng)用在可交互人機(jī)界面開(kāi)發(fā)中,最后的環(huán)境搭建工作是QT5.12的移植,此項(xiàng)目對(duì)QT5.12源碼修改、配置后編譯并移植到根文件系統(tǒng)中,完成項(xiàng)目開(kāi)發(fā)環(huán)境的搭建。
2.3.1 ADC驅(qū)動(dòng)
ADC作為一種常見(jiàn)的字符設(shè)備,其開(kāi)發(fā)嚴(yán)格遵循字符設(shè)備驅(qū)動(dòng)框架。驅(qū)動(dòng)程序作用是獲取硬件數(shù)據(jù)及與應(yīng)用層互傳數(shù)據(jù),設(shè)計(jì)一個(gè)驅(qū)動(dòng)程序同時(shí)需要設(shè)計(jì)一個(gè)應(yīng)用程序,應(yīng)用程序通過(guò)API接口經(jīng)系統(tǒng)調(diào)用進(jìn)入內(nèi)核,訪問(wèn)驅(qū)動(dòng)程序以控制硬件,具體過(guò)程如圖2所示。本設(shè)計(jì)嚴(yán)格按驅(qū)動(dòng)框架編寫(xiě)ADC的驅(qū)動(dòng)入口出口函數(shù)以及file_operations結(jié)構(gòu)體里面的驅(qū)動(dòng)層程序。驅(qū)動(dòng)程序設(shè)計(jì)完成通過(guò)編寫(xiě)Makefile文件生成ADC.ko驅(qū)動(dòng)文件。由于Linux以文件的形式存儲(chǔ)及管理,通過(guò)modprobe加載驅(qū)動(dòng)后驅(qū)動(dòng)設(shè)備的表現(xiàn)就是生成/dev/目錄下的相應(yīng)文件,應(yīng)用層通過(guò)操作文件就能獲取數(shù)據(jù)。與ADC相接的FIFO存儲(chǔ)器視為特殊文字符設(shè)備,其驅(qū)動(dòng)方式與ADC類(lèi)似。
圖2 Linux內(nèi)核工作流程
2.3.2 觸摸屏驅(qū)動(dòng)
Linux系統(tǒng)通過(guò)幀緩沖接口對(duì)顯示緩沖區(qū)進(jìn)行讀寫(xiě),即應(yīng)用程序通過(guò)訪問(wèn)/dev/fbX設(shè)備就可以訪問(wèn)LCD。由于NXP在Linux內(nèi)核中已經(jīng)寫(xiě)好了驅(qū)動(dòng)程序,所以觸摸屏驅(qū)動(dòng)方式為配置好內(nèi)核和設(shè)備樹(shù)使/dev/目錄下生成/dev/fb0文件,并移植tslib等數(shù)據(jù)庫(kù),不需要編寫(xiě)驅(qū)動(dòng)程序,只需編寫(xiě)應(yīng)用層程序即可控制LCD屏。
應(yīng)用層基于QT平臺(tái)并以C++語(yǔ)言進(jìn)行開(kāi)發(fā),先初始化Ui及數(shù)據(jù)庫(kù),完成一些布局工作及核數(shù)據(jù)庫(kù)的建立。再設(shè)置測(cè)量時(shí)間,設(shè)置完成后通過(guò)觸摸按鈕開(kāi)始測(cè)量,當(dāng)測(cè)量時(shí)間到自動(dòng)停止測(cè)量。應(yīng)用程序采用多線程技術(shù)開(kāi)發(fā)。子線程每s讀取一定的ADC數(shù)據(jù)并保存至內(nèi)存中,進(jìn)程實(shí)時(shí)讀取內(nèi)存中1 s內(nèi)ADC采集到的指數(shù)衰減脈沖信號(hào),并做梯形成形、基線估計(jì)、堆積判棄、幅值提取、譜數(shù)據(jù)存儲(chǔ)等處理,Ui界面實(shí)時(shí)顯示當(dāng)前時(shí)間并道后每道對(duì)應(yīng)的計(jì)數(shù),并清空內(nèi)存中的ADC數(shù)據(jù)繼續(xù)接收下1 s內(nèi)ADC采集的脈沖,當(dāng)測(cè)量時(shí)間到達(dá),停止測(cè)量并退出子線程,以及得到了相應(yīng)的能譜。接下來(lái)可以依次對(duì)能譜進(jìn)行平滑、去本底、尋峰、能量刻度、核素識(shí)別等操作。應(yīng)用程序的工作流程如圖3所示[7]。
圖3 應(yīng)用程序架構(gòu)
3.1.1 梯形成形算法
為了提高信噪比以及方便幅值提取等,需對(duì)脈沖信號(hào)梯形成形,具體算法如下:
探測(cè)器輸出的核脈沖信號(hào)經(jīng)過(guò)光電轉(zhuǎn)換、信號(hào)調(diào)理后,可近似看作單指數(shù)衰減信號(hào)[8],它的表達(dá)式為
Vi(t)=Vmaxe-t/τu(t)
(7)
式中:Vmax為核脈沖信號(hào)的最大幅值;τ為信號(hào)衰減時(shí)間常數(shù);u(t)為單位階躍函數(shù)。
令t=nT,其中T為采樣周期,得脈沖序列表達(dá)式為
Vi(t)=Vmaxe-nT/τu(t)
(8)
令e-nT/τ=d,對(duì)式(7)進(jìn)行Z變換得:
(9)
文獻(xiàn)[9]對(duì)梯形成形算法做了詳細(xì)推導(dǎo)。理想梯形函數(shù)的分段函數(shù)表示如下:
(10)
令ta=naTs、tb=nbTs、tc=ncTs,對(duì)式(10)進(jìn)行Z變換得:
(11)
從而得整個(gè)算法的系統(tǒng)傳遞函數(shù):
(12)
對(duì)H(z)做逆Z變換得:
vo[n]=2vo[n-1]-vo[n-2]+{vi[n-1]-vi[n-na-
1]-vi[n-nb-1]+vi[n-nc-1]-d[vi[n-2]-
(13)
式中:vi為輸入的指數(shù)衰減信號(hào);vo為算法處理后輸出的梯形信號(hào);na、nb、nc參數(shù)調(diào)節(jié)可以改變梯形形狀。
在Matlab下對(duì)以上成形算法進(jìn)行仿真,結(jié)果如圖4所示,最后將此算法用C++編寫(xiě)并在嵌入式平臺(tái)運(yùn)行用于處理ADC采集的核脈沖信號(hào)。
圖4 梯形成形算法仿真
3.1.2 基線估計(jì)
由于核脈沖信號(hào)的值疊加了一定的基線值,造成能譜基線漂移[10]?;€估計(jì)是為了得到基線值并扣除以獲取更精確的脈沖信號(hào)。本文采用的基線估計(jì)方法是在梯形上升沿來(lái)臨前隨機(jī)取若干個(gè)點(diǎn),取這些點(diǎn)的平均值作為基線值。
3.1.3 堆積判棄
核脈沖信號(hào)的觸發(fā)具有隨機(jī)性且核脈沖信號(hào)在時(shí)域上具有一定的時(shí)間寬度,當(dāng)核脈沖信號(hào)速率足夠快時(shí),堆積脈沖將會(huì)越來(lái)越多[11]。當(dāng)脈沖堆積發(fā)生時(shí),信號(hào)的幅值發(fā)生變化,幅值的變化必然使對(duì)應(yīng)道址計(jì)數(shù)發(fā)生變化,當(dāng)脈沖堆積過(guò)多,能譜圖將發(fā)生明顯改變,導(dǎo)致能譜測(cè)量效果極差,因此需要對(duì)堆積脈沖進(jìn)行判棄。本文采用的堆積脈沖的處理方法是對(duì)梯形成形后的信號(hào)改變na、nb、nc的值調(diào)節(jié)成三角成形,三角形的上頂點(diǎn)即為峰值,對(duì)峰值間的時(shí)間進(jìn)行測(cè)量和判斷,如果小于某個(gè)閾值判定此脈沖發(fā)生堆積,即舍棄這個(gè)脈沖,這樣雖然使脈沖總計(jì)數(shù)值變少,但是由于脈沖發(fā)生堆積是均勻隨機(jī)分布的,能譜峰型特征整體上不會(huì)發(fā)生明顯變化,對(duì)于計(jì)數(shù)值的減少進(jìn)行一定的計(jì)數(shù)補(bǔ)償即可。
3.1.4 幅值提取
由于梯形成形后的信號(hào)平頂?shù)闹挡皇撬降闹本€,而是上下抖動(dòng)的直線與噪聲混合的信號(hào),所以不能隨機(jī)采樣單個(gè)點(diǎn)的值視為該脈沖信號(hào)的幅值。幅值提取方法采用對(duì)每個(gè)梯形平頂依次采樣多個(gè)點(diǎn)的值并取平均值,這個(gè)值就認(rèn)定為成形后的脈沖峰值。由于峰值是疊加了一定的基線,將此峰值減去估計(jì)的基線值即為提取到的脈沖幅值。
3.1.5 譜數(shù)據(jù)存儲(chǔ)
譜數(shù)據(jù)存儲(chǔ)采用sqlite數(shù)據(jù)庫(kù)的方式存儲(chǔ),由于顯示界面是512道,12位ADC共4 096道,所以對(duì)幅值提取的數(shù)據(jù)先進(jìn)行并道處理,再按并道后道址對(duì)應(yīng)計(jì)數(shù)依次存儲(chǔ)在sqlite數(shù)據(jù)庫(kù)中。系統(tǒng)數(shù)據(jù)庫(kù)中的表格以行與列形式存儲(chǔ),表格的對(duì)應(yīng)存儲(chǔ)格式如圖5所示。
圖5 數(shù)據(jù)存儲(chǔ)格式
3.2.1 能譜平滑
由于測(cè)得的能譜帶有噪聲,為了提高信噪比,需要對(duì)能譜平滑處理。采用五點(diǎn)三次平滑法,方法基于最小二乘法的思路[12]。數(shù)學(xué)公式如下:
(14)
式中:m為道址;Ym為光滑處理后m道址計(jì)數(shù);ym為原始道址計(jì)數(shù)。
3.2.2 能譜尋峰
能譜尋峰方法是根據(jù)特定條件選擇最適合的尋峰方法。本文針對(duì)便攜式設(shè)備,尋峰方法一般要求計(jì)算簡(jiǎn)單和速度快,采用二階導(dǎo)數(shù)法尋峰,并加入幅度閾值和斜率閾值對(duì)峰進(jìn)行篩選,以更精準(zhǔn)尋峰。
3.2.3 本底扣除
對(duì)核素進(jìn)行定量分析時(shí),存在天然本底計(jì)數(shù)和宇宙射線等干擾因素,需對(duì)能譜進(jìn)行本底扣除。由于實(shí)驗(yàn)所用探測(cè)器及周?chē)h(huán)境本底很高,扣除本底前難以尋找弱峰,在尋峰之前進(jìn)行本底扣除。考慮便攜式設(shè)備性能及應(yīng)用場(chǎng)合等情況,采用全譜直接本底扣除法,先直接測(cè)量自然環(huán)境下的本底數(shù)據(jù)并保存,測(cè)量含放射性的能譜數(shù)據(jù)時(shí)將測(cè)量數(shù)據(jù)減去本底數(shù)據(jù)[13]。
3.2.4 能量刻度
能量刻度是用函數(shù)關(guān)系式來(lái)擬合峰位能量與所測(cè)道址,為了更精確的能量刻度,采用優(yōu)于線性擬合的二次多項(xiàng)式進(jìn)行擬合:
E=ax2+bx+c
(15)
式中:E為能量;x為道址;a、b、c為系數(shù)。
3.2.5 核素識(shí)別
核素識(shí)別指對(duì)能譜進(jìn)行定性分析,即核素種類(lèi)的分析。核素識(shí)別的方法中,有的方法識(shí)別準(zhǔn)確,有的方法速度快、效率高。由于文中以低功耗、便攜性為原則,采取的方法在保證準(zhǔn)確度的前提下盡可能的簡(jiǎn)單高效,通過(guò)參考大量文獻(xiàn)的核素識(shí)別方法并結(jié)合設(shè)備具體情況,決定采用能窗法作為核素識(shí)別方法。具體步驟如下:
先將峰位的道址轉(zhuǎn)換為能量刻度后對(duì)應(yīng)能量:
EP=ax2+bx+c
(16)
式中EP為峰位能量。
再將每個(gè)峰對(duì)應(yīng)能量依次與核素庫(kù)中的能量Eγ進(jìn)行遍歷對(duì)比,若滿(mǎn)足|EP-Eγ|≤WE,就視為可能存在Eγ對(duì)應(yīng)的核素。WE為能窗寬,能窗寬隨能量值變化,能窗寬設(shè)定公式為
WE=A+BEP
(17)
式中:A、B為系數(shù),根據(jù)實(shí)際探測(cè)器決定,通常A=6.000,B=0.025[14]。
圖6為測(cè)量Eu-152、Cs-137、Co-60混合放射源并進(jìn)行并道處理至512道后所得到的γ射線能譜圖,能譜顯示清晰,界面友好,y軸對(duì)應(yīng)計(jì)數(shù)刻度隨測(cè)量時(shí)間自動(dòng)增長(zhǎng)。
圖6 能譜測(cè)量與顯示
通過(guò)測(cè)量峰位及對(duì)應(yīng)道址并做記錄,如表1所示。
表1 部分峰位能量及道址
采用二次多項(xiàng)式最小二乘法擬合處理表中的數(shù)據(jù),得到能量與道址的函數(shù)關(guān)系式:
E=0.000 874 469X2+5.697 89X-0.025 434 1
(18)
函數(shù)關(guān)系式對(duì)應(yīng)的擬合曲線如圖7所示。
圖7 能量刻度擬合曲線
再通過(guò)計(jì)算刻度偏差對(duì)能量刻度的效果做評(píng)估,刻度偏差計(jì)算公式為
(19)
式中:δ為刻度偏差;EX為X道址對(duì)應(yīng)的能量;E為刻度公式計(jì)算的能量。
通過(guò)已知峰位能量計(jì)算刻度偏差,見(jiàn)表2。由表2可以看出,刻度效果良好。
表2 刻度偏差
在核素識(shí)別過(guò)程中,先測(cè)得空本底數(shù)據(jù)在能譜測(cè)量區(qū)間的分布并保存至RAM中,測(cè)得的Eu-152、Cs-137、Co-60混合放射源數(shù)據(jù)采用全譜本底扣除法逐道減去本底數(shù)據(jù),得到去本底后的能譜,然后進(jìn)行尋峰得到如圖8所示結(jié)果。接著對(duì)尋峰后的能譜圖進(jìn)行能量刻度并以表格的形式在LCD屏上顯示,如圖9所示。然后將刻度能量與核素庫(kù)中的能量進(jìn)行一定窗口大小的匹配,對(duì)匹配結(jié)果以QTableView顯示,得到圖10所示結(jié)果。從圖6~圖8可以看出,38道、58道、60道存在平滑效果局限性和能量刻度誤差及去本底誤差等因素造成的假峰及核素誤識(shí),Cs-137的單強(qiáng)峰和Co-60的雙弱峰均被找出,Eu-152也有峰被找出。
圖8 尋峰效果顯示
圖9 能量刻度結(jié)果
圖10 核素識(shí)別結(jié)果
本文開(kāi)發(fā)了基于imx6ull的智能γ能譜儀,儀器設(shè)計(jì)新穎、使用方便、體積小、功耗低且便于攜帶,可應(yīng)用于野外等惡劣環(huán)境的核輻射探測(cè)。在使用性能上,對(duì)單源、混合源、強(qiáng)峰、弱峰都有很好的識(shí)別效果,且有基于QT開(kāi)發(fā)的友好人機(jī)交互界面,同時(shí)移植了Linux操作系統(tǒng)良好的管理任務(wù)及資源,滿(mǎn)足了便攜式γ能譜儀的要求。