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