文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2017.06.023
中文引用格式: 趙碩峰,張娟. 基于LabVIEW平臺(tái)的嵌入式光譜強(qiáng)度檢測(cè)系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2017,43(6):90-93.
英文引用格式: Zhao Shuofeng,Zhang Juan. Design of embedded spectral density measurement system based on LabVIEW[J].Application of Electronic Technique,2017,43(6):90-93.
0 引言
光譜分析作為一種鑒別物質(zhì)以及確定其化學(xué)組成的有效手段,已經(jīng)被廣泛應(yīng)用在食品、醫(yī)藥、環(huán)境檢測(cè)、石油等領(lǐng)域。其原理就在于,每一種物質(zhì)在一定條件下都存在物質(zhì)本身的特征光譜,通過(guò)對(duì)這些光譜的研究,就可以獲得物質(zhì)的結(jié)構(gòu)和成分,以及內(nèi)部的能級(jí)結(jié)構(gòu)和相互作用等信息。正因如此,國(guó)內(nèi)外工作者投入了大量的研究和實(shí)驗(yàn)工作。
近年來(lái)以CCD(Charge Coupled Devices,電荷耦合器件)芯片和光纖為基礎(chǔ)的光譜儀與拉曼光譜、LIBS(Laser-Induced Breakdown Spectroscopy)光譜、熒光光譜等技術(shù)結(jié)合,日益成為成分快速分析和生產(chǎn)過(guò)程實(shí)際測(cè)量手段。究其原因在于CCD靈敏度高,價(jià)格便宜,且基于CCD芯片的光譜儀不需要任何運(yùn)動(dòng)部件,可直接獲得完整的光譜譜圖,使得光譜儀器更為簡(jiǎn)單。
但使用CCD作為光探測(cè)元件,有一個(gè)關(guān)鍵的問(wèn)題需要解決,即CCD器件包含眾多像素,其工作需要嚴(yán)格的外部驅(qū)動(dòng)。目前傳統(tǒng)的驅(qū)動(dòng)方式是以微控制器為核心、通過(guò)軟件編寫的方式產(chǎn)生驅(qū)動(dòng)時(shí)序。此種驅(qū)動(dòng)方式的局限為微控制器是基于順序執(zhí)行代碼的工作方式,如果設(shè)計(jì)復(fù)雜,中斷等模塊較多,應(yīng)用容易被速度和抖動(dòng)所限制。FPGA最大的優(yōu)點(diǎn)是使用非常靈活,在不改變外圍電路的情況下,設(shè)計(jì)不同的片內(nèi)邏輯就能實(shí)現(xiàn)不同的電路功能,從而縮短了系統(tǒng)的開(kāi)發(fā)周期,節(jié)約成本。不僅如此,F(xiàn)PGA可以通過(guò)設(shè)計(jì)專用硬件邏輯,并發(fā)執(zhí)行,速度快,時(shí)序準(zhǔn)確。這種架構(gòu)特別適合于大容量數(shù)據(jù)的實(shí)時(shí)傳輸、處理,可以很好地解決上述問(wèn)題。
本文系統(tǒng)采用FPGA為CCD提供驅(qū)動(dòng)時(shí)序脈沖和A/D采樣電路的時(shí)序控制電路,同時(shí)采用ARM芯片為數(shù)據(jù)采集系統(tǒng)和上位機(jī)建立數(shù)據(jù)傳輸通道,并通過(guò)LabVIEW構(gòu)建的圖形化接口實(shí)時(shí)地顯示測(cè)量數(shù)據(jù)。實(shí)驗(yàn)表明,系統(tǒng)可應(yīng)用于光譜的快速實(shí)時(shí)精確測(cè)量。
1 光譜強(qiáng)度檢測(cè)系統(tǒng)整體設(shè)計(jì)
整個(gè)系統(tǒng)結(jié)構(gòu)框圖如圖1所示。采用FPGA作為控制核心,包括線陣CCD時(shí)序驅(qū)動(dòng)電路、A/D采樣電路的時(shí)序控制電路、Delay-M電路。外部硬件電路包括A/D采樣電路、精密延時(shí)電路、微處理器、電源、邏輯轉(zhuǎn)換及相關(guān)電路。通過(guò)FPGA控制外部電路,啟動(dòng)并采集光信號(hào),然后存儲(chǔ)到FPGA內(nèi)部的RAM中。采集結(jié)束后,通過(guò)串口模塊自動(dòng)尋址把數(shù)據(jù)傳送到電腦中。FPGA模塊通過(guò)SPI(Serial Peripheral Interface)與STM32微處理器實(shí)現(xiàn)數(shù)據(jù)交換。LabVIEW上位機(jī)可以通過(guò)USB接口實(shí)現(xiàn)數(shù)據(jù)同步通信,還可以通過(guò)FPGA串口或STM32串口接收數(shù)據(jù)并顯示。
2 系統(tǒng)各模塊設(shè)計(jì)介紹
2.1 CCD模塊電路
系統(tǒng)采用TSL1401作為感光元件,它是一款高靈敏度、低噪聲和寬動(dòng)態(tài)范圍的線陣CCD器件。根據(jù)TSL1401的數(shù)據(jù)手冊(cè),CCD工作的電壓為3~5 V,驅(qū)動(dòng)頻率為5~8 000 kHz,系統(tǒng)設(shè)計(jì)為4 V供電模式和250 kHz的時(shí)鐘主頻。
TSL1401共有128個(gè)像素點(diǎn),在采集過(guò)程中,CCD采集的值與采集階段的光強(qiáng)度和曝光時(shí)間是成正比的,當(dāng)前第19個(gè)時(shí)鐘到下一個(gè)SI開(kāi)始的這段時(shí)間,就是下次信號(hào)采集需要的曝光時(shí)間,前18個(gè)時(shí)鐘周期為積分器復(fù)位時(shí)間,第19個(gè)時(shí)鐘開(kāi)始,像素點(diǎn)開(kāi)始隨著時(shí)鐘輸出,數(shù)據(jù)率就是時(shí)鐘的頻率。值得注意的是,本周期采集的像素值是上個(gè)周期曝光時(shí)間產(chǎn)生的像素值。所以在設(shè)計(jì)中,第一個(gè)周期采集的像素值要舍棄,從第二個(gè)周期開(kāi)始可以采集并保留值。在連續(xù)采集時(shí),如果時(shí)鐘速度比較快,曝光時(shí)間可以近似地認(rèn)為是兩個(gè)信號(hào)之間的時(shí)間,而忽略前19個(gè)時(shí)鐘的影響。根據(jù)手冊(cè),TSL1401的最大曝光時(shí)間是100 ms,所以曝光時(shí)間不宜超過(guò)100 ms,因?yàn)榧词钩^(guò)100 ms,曝光效果和100 ms是一樣的,而且在強(qiáng)光下長(zhǎng)時(shí)間曝光可能造成CCD的永久損壞。所以系統(tǒng)測(cè)試時(shí)采用的曝光時(shí)間為25 ms,曝光時(shí)間要根據(jù)外界光強(qiáng)度來(lái)調(diào)節(jié),避免曝光不足和過(guò)曝光的情況。
時(shí)序設(shè)計(jì)的設(shè)計(jì)方式為:對(duì)主時(shí)鐘進(jìn)行計(jì)數(shù),以計(jì)數(shù)器的值作為參考,通過(guò)對(duì)計(jì)數(shù)器值的判定來(lái)決定信號(hào)脈沖的時(shí)刻與寬度,因?yàn)闀r(shí)鐘參考是同步時(shí)鐘,而且是并行的硬件電路,所以信號(hào)的時(shí)序很準(zhǔn)確。同時(shí)利用計(jì)數(shù)器對(duì)主時(shí)鐘進(jìn)行計(jì)數(shù),系統(tǒng)外接晶振為50 MHz,所以每200個(gè)周期翻轉(zhuǎn)一次信號(hào)的值就是250 kHz的主時(shí)鐘。通過(guò)調(diào)節(jié)兩個(gè)信號(hào)間的時(shí)間間隔來(lái)調(diào)整第一次的曝光時(shí)間。
2.2 A/D采樣電路
本模塊為整個(gè)系統(tǒng)核心部分之一。采樣的真實(shí)穩(wěn)定決定系統(tǒng)的精度,CCD的時(shí)鐘如果是250 kHz,系統(tǒng)設(shè)計(jì)數(shù)據(jù)率就應(yīng)該是250 kS/s。故本設(shè)計(jì)中選取的AD7988-5就是最大500 kS/s的16位AD芯片。
外部A/D與微控制器內(nèi)部集成的A/D相比,外部A/D芯片位數(shù)可以很多,速度可選,精度很高,而微控制器內(nèi)部集成的A/D模塊主要針對(duì)通用目的,位數(shù)很少有超過(guò)16位的,速度依系統(tǒng)時(shí)鐘而定,但是數(shù)據(jù)率能到500 kHz的也不多見(jiàn),且通用目的設(shè)計(jì)A/D在積分和微分非線性誤差上表現(xiàn)不如專用的外部A/D芯片。
參考電壓穩(wěn)定度直接影響A/D轉(zhuǎn)換精度,故為了避免電源波動(dòng)給轉(zhuǎn)換精度帶來(lái)的影響,系統(tǒng)選取ADRA4540作為基準(zhǔn)電壓源。
對(duì)于A/D采集芯片AD7988-5,外部的時(shí)序驅(qū)動(dòng)決定了數(shù)據(jù)采樣的質(zhì)量,在設(shè)計(jì)時(shí)應(yīng)該注意在時(shí)序圖的基礎(chǔ)上保留一定的設(shè)計(jì)余量來(lái)應(yīng)對(duì)實(shí)際問(wèn)題的考驗(yàn),包括傳輸延時(shí)、輸入等效電容等實(shí)際分布參數(shù)。所以在500 kHz采樣率的芯片,可以保證500 kHz以下的應(yīng)用。但是如果到達(dá)最高使用速度,就需要外部時(shí)序和誤差盡量小,故如果選擇250 kHz的采樣率,就為設(shè)計(jì)留下了很大的空間。
由AD7988-5數(shù)據(jù)手冊(cè)可知最小采樣時(shí)間和最大轉(zhuǎn)換時(shí)間,這兩個(gè)參數(shù)決定了采樣的周期和CNV信號(hào)(轉(zhuǎn)換使能信號(hào))的高電平時(shí)間,而其他參數(shù)主要是為了讓選取的時(shí)鐘和CNV的時(shí)序滿足傳輸延時(shí)和分布參數(shù)給系統(tǒng)帶來(lái)的不確定性,本系統(tǒng)選取250 kHz的采樣率,CNV采樣時(shí)間設(shè)為2 μs,這樣就滿足了最大轉(zhuǎn)換時(shí)間為1.6 μs的要求,而后采用10 MHz的時(shí)鐘進(jìn)行移位輸出數(shù)據(jù)。
系統(tǒng)外接時(shí)鐘為50 MHz,對(duì)于時(shí)鐘的奇分頻不能像偶分頻一樣,記數(shù)后翻轉(zhuǎn)就行。對(duì)于奇分頻的實(shí)質(zhì)就是對(duì)一個(gè)要分頻的周期時(shí)間進(jìn)行平分。
AD7988-5三線制工作模式,決定了當(dāng)前周期采集的數(shù)據(jù)是上一個(gè)周期的實(shí)際數(shù)據(jù),因?yàn)樵贑NV為高電平時(shí),先進(jìn)行的是轉(zhuǎn)換階段,而后就自動(dòng)進(jìn)入采集模式,所以當(dāng)前周期采集的就是下個(gè)周期需要的數(shù)據(jù)。這點(diǎn)需要注意,特別在精準(zhǔn)數(shù)據(jù)操作的系統(tǒng)中需要格外注意。
2.3 存儲(chǔ)時(shí)序與RAM模塊
前端CCD工作頻率和ADC的工作頻率很高,每個(gè)像素點(diǎn)為16 bit,數(shù)據(jù)率為250 kHz,這樣的數(shù)據(jù)量和速度,電腦串口根本沒(méi)有辦法滿足要求。此時(shí)如果再采用FIFO(First Input First Output)更是不可取,因?yàn)閿?shù)據(jù)寫的速度非???,而數(shù)據(jù)讀的速度很慢,很容易就飽和,造成數(shù)據(jù)丟失。
系統(tǒng)選取了雙端口的RAM,引用IP核中的RAM(16 bit,256 B),對(duì)于128個(gè)像素點(diǎn)的數(shù)據(jù)完全夠用。雙口RAM主要的優(yōu)勢(shì)就在于可以同時(shí)讀寫,系統(tǒng)設(shè)計(jì)為直接引用IP核的方式,這樣的設(shè)計(jì)方式保證了設(shè)計(jì)準(zhǔn)確性,同時(shí)也加快了設(shè)計(jì)的進(jìn)程。但要注意寫進(jìn)RAM的時(shí)序要和ADC采樣移位輸出的數(shù)據(jù)時(shí)序相匹配,否則會(huì)造成數(shù)據(jù)大量丟失。
當(dāng)進(jìn)行RAM存儲(chǔ)操作時(shí)需要注意:當(dāng)存儲(chǔ)上升沿到來(lái)之時(shí),寫使能、寫地址和數(shù)據(jù)必須準(zhǔn)備好,只有這樣在寫時(shí)鐘的上升沿到來(lái)之時(shí)才能保證數(shù)據(jù)被寫入相應(yīng)地址的RAM當(dāng)中。所以系統(tǒng)采用A/D采樣信號(hào)同步產(chǎn)生的RAM讀寫的時(shí)序,有CNV信號(hào)下降沿的累積形成地址,設(shè)置16位移位寄存器,保存ADC輸出的數(shù)據(jù),然后CNV上升沿到來(lái)時(shí),上個(gè)信號(hào)的數(shù)據(jù)存入RAM。
2.4 數(shù)據(jù)傳輸模塊設(shè)計(jì)
串口是一種常見(jiàn)的接口方式,常用于低速、小數(shù)據(jù)量的傳送方案中。
為了數(shù)據(jù)傳輸?shù)姆€(wěn)定可靠,故選擇波特率為9 600 b/s(即:接收一個(gè)比特的時(shí)間為1 s/9 600=104 μs,每隔104 μs發(fā)送一個(gè)數(shù)據(jù)),系統(tǒng)主時(shí)鐘為50 MHz,則一個(gè)系統(tǒng)時(shí)鐘周期時(shí)間為20 ns,遠(yuǎn)小于104 μs,所以可以通過(guò)計(jì)數(shù)器對(duì)主時(shí)鐘進(jìn)行計(jì)數(shù),然后根據(jù)計(jì)數(shù)器的值來(lái)打拍發(fā)送數(shù)據(jù)。
串口模塊只會(huì)被動(dòng)地發(fā)送數(shù)據(jù),并不能對(duì)RAM中存儲(chǔ)的數(shù)據(jù)自動(dòng)尋址發(fā)送和做相應(yīng)的控制。由于串口通常只有8個(gè)數(shù)據(jù)位,需要傳輸兩次,所以兩個(gè)傳輸周期的地址是一樣的,用同步時(shí)鐘計(jì)數(shù)器產(chǎn)生兩倍的串口周期用于自動(dòng)累加形成地址。
這種設(shè)計(jì)在理論上沒(méi)有問(wèn)題,但結(jié)合實(shí)際應(yīng)用電路就會(huì)出現(xiàn)問(wèn)題。在應(yīng)用的IP核RAM中,輸入端口會(huì)有一個(gè)寄存器,這在開(kāi)始就會(huì)造成一個(gè)時(shí)鐘周期的延時(shí),才能使地址和數(shù)據(jù)存進(jìn)RAM。雖然存放數(shù)據(jù)只是延時(shí)一個(gè)時(shí)鐘周期,但用串口模塊自動(dòng)讀取數(shù)據(jù)時(shí)就會(huì)產(chǎn)生時(shí)序的錯(cuò)亂。
所以在具體設(shè)計(jì)時(shí),輸出口的寄存器可以選擇去掉,但輸入口的寄存器必須存在。在讀取時(shí)鐘上升沿到來(lái)之時(shí),讀使能、讀地址必須提前就位。只有這樣,當(dāng)讀時(shí)鐘的上升沿到來(lái)時(shí)才會(huì)讀出相應(yīng)地址存儲(chǔ)的值,因?yàn)閿?shù)據(jù)和地址的輸入必須要維持一個(gè)穩(wěn)定的時(shí)間,這個(gè)時(shí)間就是時(shí)鐘周期。所以一個(gè)讀取周期應(yīng)該是3個(gè)串口周期,這樣第一個(gè)串口周期什么都不做,只是把使能信號(hào)和地址送進(jìn)RAM,后兩個(gè)周期的上升沿到來(lái)時(shí)把數(shù)據(jù)分2個(gè)8位輸出。
2.5 LabVIEW上位機(jī)模塊
主要用到的節(jié)點(diǎn)是串口配置節(jié)點(diǎn),即VISA功能塊中提供的相關(guān)節(jié)點(diǎn)。由于LabVIEW串口接收的都是字符串的格式,而且串口一般接收8位數(shù),所以接收時(shí)需要數(shù)據(jù)的重組,選取了字符串平化的數(shù)據(jù)節(jié)點(diǎn),可以選取字符串平化至相關(guān)數(shù)據(jù)類型,在輸出類型中選擇16 bit無(wú)符號(hào)數(shù),這樣就可以直接輸出到數(shù)據(jù)圖中直觀地看到接收到的數(shù)據(jù)。
LabVIEW上位機(jī)程序設(shè)計(jì)流程為:先建立串口模塊即引用VISA模塊,之后設(shè)立緩存區(qū)的大小,設(shè)立等待時(shí)間,等待時(shí)間為前面板可輸入的控件,設(shè)置的串口等待時(shí)間必須大于串口發(fā)送的時(shí)間,否則會(huì)造成數(shù)據(jù)傳輸不完全,造成數(shù)據(jù)丟失,最后就是數(shù)據(jù)的拼接和轉(zhuǎn)化部分,利用平化節(jié)點(diǎn),使得每?jī)晌粩?shù)據(jù)組成一個(gè)16 bit的無(wú)符號(hào)類型的十進(jìn)制數(shù)并在波形圖中顯示。
3 實(shí)驗(yàn)結(jié)果
在QUARTUS軟件中編程結(jié)束后,可以進(jìn)行語(yǔ)法編譯,檢驗(yàn)語(yǔ)法是否有錯(cuò)誤。此時(shí)的編譯不能確定設(shè)計(jì)是否滿足需求,只有運(yùn)用可綜合的Verilog HDL語(yǔ)句才能進(jìn)行RTL級(jí)設(shè)計(jì),全編譯后生成的就是綜合后的電路,也是系統(tǒng)設(shè)計(jì)的目標(biāo)。接下來(lái),可以進(jìn)行RTL級(jí)的仿真以及門級(jí)仿真來(lái)驗(yàn)證設(shè)計(jì)在時(shí)序上是否滿足要求。門級(jí)仿真已經(jīng)很接近實(shí)際情況,如果門級(jí)仿真滿足要求,就可以將編譯過(guò)后的程序下載到FPGA中,進(jìn)行最后的實(shí)際系統(tǒng)的調(diào)試。
圖2所示為掃描物體和掃描數(shù)據(jù)上下對(duì)比圖,當(dāng)掃描視野中全為白色時(shí),CCD的值在2 000~35 000之間,呈現(xiàn)的是中間高兩頭低的情況。這與理論有出入的原因在于:CCD的鏡頭是通過(guò)透鏡成像,透鏡本身就決定了越是靠近中軸部分光發(fā)生的折射越少,中軸線的光為直射,中間部分的光比兩邊強(qiáng),所以CCD成像的值反應(yīng)出來(lái)就是中間值比較大,很好的對(duì)稱性也證明了這一點(diǎn)。
當(dāng)掃描視野全部是黑的時(shí),CCD掃描的一行圖像的值基本都一樣,在0~5 000之間,這很好地驗(yàn)證了在全白光時(shí)的結(jié)論,同時(shí)有光和無(wú)光有明顯的區(qū)別。
當(dāng)掃描視野中有一條黑線時(shí),掃描的值很明顯地出現(xiàn)一塊凹陷的值,并且是連續(xù)變化的。通過(guò)這3組對(duì)比的結(jié)論可知,系統(tǒng)實(shí)驗(yàn)結(jié)果滿足實(shí)驗(yàn)預(yù)期。
在初步的全白掃描和全黑實(shí)驗(yàn)后,為了進(jìn)一步驗(yàn)證系統(tǒng)的穩(wěn)定性和可靠性,做了如圖3所示的3組實(shí)驗(yàn),分別為1條黑線、2條黑線、3條黑線,掃描對(duì)應(yīng)的值以上下對(duì)照的形式給出。從實(shí)驗(yàn)結(jié)果可以看到,對(duì)于不同的掃描物體,CCD同樣可以明顯區(qū)分不同條紋物體,實(shí)驗(yàn)值符合理論的預(yù)期。
4 結(jié)束語(yǔ)
本文提出了一種低成本易集成的光譜強(qiáng)度測(cè)量系統(tǒng),設(shè)計(jì)并制作了A/D采樣電路。根據(jù)TSL1401采集時(shí)序編寫相應(yīng)的A/D采樣時(shí)序和存儲(chǔ)時(shí)序,對(duì)轉(zhuǎn)化后的數(shù)字信號(hào)按地址存儲(chǔ)到FPGA內(nèi)部RAM中。采集結(jié)束后,串口模塊自動(dòng)尋址發(fā)送RAM中存儲(chǔ)的數(shù)據(jù),LabVIEW上位機(jī)可通過(guò)串口接收數(shù)據(jù)并顯示。實(shí)驗(yàn)結(jié)果表明,實(shí)驗(yàn)數(shù)據(jù)符合理論的預(yù)期,可廣泛應(yīng)用于光譜強(qiáng)度的實(shí)時(shí)快速精確測(cè)量。
參考文獻(xiàn)
[1] 劉勝,張?zhí)m勇,章佳榮,等.LabVIEW 2009程序設(shè)計(jì)[M].北京:電子工業(yè)出版社,2010.
[2] 米本和也.CCD/CMOS圖像傳感器基礎(chǔ)與應(yīng)用[M].北京:科學(xué)出版社,2006.
[3] 陳樹(shù)學(xué),劉萱.LabVIEW寶典[M].北京:電子工業(yè)出版社,2011.
[4] 姚遠(yuǎn),李辰.FPGA應(yīng)用開(kāi)發(fā)入門與典型實(shí)例[M].北京:人民郵電出版社,2010.
[5] 湯琦.Xilinx FPGA高級(jí)設(shè)計(jì)及應(yīng)用[M].北京:電子工業(yè)出版社,2012.
[6] 翟晶晶.基于電子快門自動(dòng)增益的CCD驅(qū)動(dòng)電路研究[J].現(xiàn)代電子技術(shù),2010,33(19):188-190.
[7] 王慶有.光電傳感器應(yīng)用技術(shù)[M].北京:機(jī)械工業(yè)出版社,2014.
[8] 馬克斯菲爾德.FPGA設(shè)計(jì)指南:器件、工具和流程[M].北京:人民郵電出版社,2007.
[9] 朱仁盛,曲波.光電傳感器及其應(yīng)用[M].北京:化學(xué)工業(yè)出版社,2004.
作者信息:
趙碩峰1,張 娟2
(1.溫州醫(yī)科大學(xué) 仁濟(jì)學(xué)院,浙江 溫州325035;2.溫州醫(yī)科大學(xué) 生物醫(yī)學(xué)工程學(xué)院,浙江 溫州325035)