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