孫 晗,鄒遠(yuǎn)文,羅玉皓,夏 勛
(1.四川大學(xué)材料科學(xué)與工程學(xué)院,四川 成都 610065;2.成都軍區(qū)總醫(yī)院神經(jīng)外科,四川 成都 610083)
瞳孔動態(tài)特性的研究在國內(nèi)外一直是心理科學(xué)和生理科學(xué)研究的重要領(lǐng)域。許多疾病都會影響瞳孔對光的反應(yīng),瞳孔對光刺激的反應(yīng)能夠反映腦力負(fù)荷狀態(tài)和顱腦損傷程度,通過定時動態(tài)測定瞳孔光反應(yīng)情況,分析其在急性顱腦損傷中的變化,可以判斷顱腦損傷的程度[1]。測定瞳孔對光刺激的動態(tài)反應(yīng)可以判斷糖尿病性植物神經(jīng)病變對瞳孔系統(tǒng)的影響[2]。實(shí)時的瞳孔參數(shù)檢測在判斷疲勞駕駛上也具有重要作用[3]。
近年來,有不少學(xué)者進(jìn)行了在動態(tài)瞳孔參數(shù)測量上的研究,通過動態(tài)采集瞳孔圖像,經(jīng)計算機(jī)處理計算得出瞳孔孔徑隨時間變化的曲線,尋找可表征瞳孔相關(guān)疾病的客觀特征參數(shù),并設(shè)計了專用的光刺激器[4];為更準(zhǔn)確地實(shí)時獲得瞳孔參數(shù),也在進(jìn)行相關(guān)算法的研究改進(jìn)[5]?;谝陨媳尘昂脱芯炕A(chǔ),本文為實(shí)現(xiàn)瞳孔動態(tài)變化設(shè)計更為靈活可靠的瞳孔光刺激系統(tǒng),并能及時反饋光強(qiáng)數(shù)據(jù),提供給PC機(jī)用戶界面,預(yù)留詳細(xì)的參數(shù)設(shè)置接口,滿足不同系統(tǒng)和實(shí)驗(yàn)的應(yīng)用需求。
以PWM方式驅(qū)動LED(Light Emitting Diodes,發(fā)光二極管)時,PWM的脈沖周期的占空比決定了LED正向?qū)ǖ臅r間。由于人眼的視覺殘留效應(yīng)[6-7],本系統(tǒng)選擇 PSoC芯片 CY8C5588作為 PWM的輸出與控制芯片,同時利用光強(qiáng)傳感器實(shí)時檢測光照的強(qiáng)度,并設(shè)計PC機(jī)應(yīng)用程序界面,使用戶方便可視地進(jìn)行光照參數(shù)設(shè)置和讀取光強(qiáng)數(shù)據(jù)等。
本系統(tǒng)包括PC端用戶界面、PSoC主控芯片、BH1750光強(qiáng)傳感器、LED驅(qū)動電路和LED燈,系統(tǒng)整體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)整體構(gòu)成圖
圖1中PSoC作為主控芯片,控制輸出PWM,以I2C連接光強(qiáng)傳感器,通過USB總線傳遞數(shù)據(jù),與PC機(jī)約定操作命令,設(shè)計PC端程序。其中光強(qiáng)傳感器采用的是ROHM公司型號為BH1750FVI的光強(qiáng)芯片,此芯片為I2C接口,有著良好的光靈敏度,集成了信號放大和AD轉(zhuǎn)換模塊,經(jīng)過光照后,直接輸出16位高精度的數(shù)字值[8]。
為了提高LED的最高光照強(qiáng)度,傳統(tǒng)方法是串聯(lián)多個或者并聯(lián)多個LED。本系統(tǒng)采用的10 W大功率LED為9個小LED燈3并3串,最大電流可以達(dá)到1 A。而PSoC的工作電壓為3.3 V,輸出電流不足以驅(qū)動,因此利用IRF640的N溝道MOS管搭建一個開關(guān)電路[9],如圖2所示,PSoC輸出的PWM作為輸入控制信號,外接20 V電壓達(dá)到LED的工作電壓。
圖2 大功率LED驅(qū)動電路
在Cypress公司提供的PSoC開發(fā)環(huán)境Creator中,設(shè)計原理圖如圖3所示,包括一個時鐘源、2個PWM模塊并2個中斷源isr模塊、一個I2C模塊、一個USBFS模塊以及相應(yīng)輸出引腳。PWM輸出端所連接的LED_L、LED_R為輸出引腳,應(yīng)連接到LED驅(qū)動電路的信號輸入端。I2C的sda和scl分別與BH1750 的 sda和 scl引腳相連[10]。
圖3 系統(tǒng)的硬件原理圖
2.2.1 PWM 模塊
在原理圖3中放置了2個8位PWM模塊,共用一個時鐘源。PWM可通過時鐘分頻與分辨率共同確定脈沖周期,因此2路PWM可分別控制兩路LED,互不干擾。如需2個PWM脈沖對齊,則可對其發(fā)出清空計數(shù)器的命令,均從0起計數(shù)。
對于8位PWM模塊,其分辨率最大可為255。通過將在PWM模塊中的參數(shù)CMP Value(比較值)設(shè)為N,計數(shù)器將從0到255計數(shù),小于N時輸出高電平,高于N時輸出低電平。通過函數(shù)更改比較值N即改變占空比,實(shí)現(xiàn)動態(tài)設(shè)定LED亮度[11]。
2.2.2 isr 中斷模塊
PWM的脈沖周期一般高于100 Hz,人眼看來沒有閃爍,在實(shí)際需求中,有時需要發(fā)生閃爍的光照刺激源,這種閃爍頻率由PWM的脈沖計數(shù)實(shí)現(xiàn)。方法如下:每個PWM脈沖觸發(fā)一個isr中斷,在中斷子程序中對脈沖個數(shù)記數(shù),根據(jù)脈沖周期計算時間,如圖4所示,在一個脈沖周期中,計數(shù)n1期間,比較值N不變,在接下來的n2次計數(shù)中,比較值N設(shè)為0,熄滅LED。如此周期循環(huán),達(dá)到閃爍目的。
圖4 LED的一個閃爍周期
2.2.3 I2C 模塊
本實(shí)驗(yàn)系統(tǒng)用到的2片BH1750只需占用PSoC的一個I2C模塊即可工作,將其中一片的地址腳ADDR接高電平,其地址為0x23,另一片接低電平,其地址為0x5c。PSoC通過不同地址訪問BH1750,設(shè)置工作模式為高精度連續(xù)測量,之后即可連續(xù)獲得當(dāng)前光強(qiáng)數(shù)據(jù)[12]。
2.2.4 USBFS 模塊
為了方便地調(diào)節(jié)LED的參數(shù)并獲得實(shí)時的光強(qiáng)數(shù)值,在PC端設(shè)計了用戶應(yīng)用界面,與PSoC的數(shù)據(jù)傳遞采用了USB的方式。PSoC具有全速USBFS模塊,通過USB Setup Wizard可設(shè)置好USB的各個端口配置及描述符等[10],免去了開發(fā)USB設(shè)備的繁瑣步驟。作為自定義的USB設(shè)備,還需自行開發(fā)驅(qū)動程序,在Windows的操作系統(tǒng)中采用了WDM的驅(qū)動框架,利用Driver Studio工具包完成了驅(qū)動開發(fā)[13-15]。
在PSoC的Creator開發(fā)環(huán)境中,正確添加各模塊并通過編譯后,會生成各個模塊的頭文件和API函數(shù),在main主函數(shù)中實(shí)現(xiàn)主程序,圖5為PSoC主程序流程圖[16]。(1)首先初始化各模塊 PWM、I2C、USB及isr中斷。(2)然后等待PC端對USB設(shè)備的枚舉和配置,PC端發(fā)出連接命令并連接成功后,程序繼續(xù)。(3)在進(jìn)入主循環(huán)之前,向BH1750發(fā)送啟動信號,并設(shè)置工作模式,在循環(huán)中讀取BH1750數(shù)據(jù)保存在緩存數(shù)組中。(4)如果收到USB端口傳來的LED參數(shù),則以此為依據(jù)設(shè)置PWM,沒有收到則繼續(xù)使用之前的PWM設(shè)置。(5)如果收到USB輸入端口的讀取命令,則將在緩存區(qū)的光強(qiáng)測量數(shù)據(jù)通過端口1發(fā)送到PC端。
圖5 PSoC主程序流程圖
主要的程序設(shè)計工作是在main主函數(shù)中完成,以下省略中斷和模塊設(shè)置代碼,僅給出PSoC與PC機(jī)進(jìn)行數(shù)據(jù)交互部分的主要代碼。
PSoC根據(jù)USB端口得到的參數(shù)命令進(jìn)行設(shè)置,PC端通過這些約定的命令來設(shè)計滿足實(shí)驗(yàn)需求的應(yīng)用程序。
編寫應(yīng)用程序?qū)崿F(xiàn)PC機(jī)與USB設(shè)備間的數(shù)據(jù)傳輸,程序框架用Visual Studio C++2008/MFC實(shí)現(xiàn)。
PSoC的光刺激與測量系統(tǒng)作為自行設(shè)計的USB設(shè)備,提供了USB的驅(qū)動程序以及Windows系統(tǒng)下的讀寫操作碼,并約定了操作命令,調(diào)用Windows的API函數(shù),可通過操作碼對USB設(shè)備發(fā)送操作命令。PC端因此可以通過操作命令靈活地設(shè)計應(yīng)用程序。
圖6 PC機(jī)用戶程序界面
圖6是LED控制界面圖,對PWM模塊進(jìn)行初始化設(shè)置,其中分辨率表示將LED的實(shí)際亮度進(jìn)行數(shù)字化,強(qiáng)度為小于分辨率的整數(shù);脈沖周期為只讀參數(shù),通過時鐘分頻和分辨率設(shè)置。
LED參數(shù)設(shè)置中的頻率可為浮點(diǎn)數(shù),其為閃爍頻率。如果設(shè)置較高,如大于100 Hz,則人眼不能分辨其閃爍。占空比為LED點(diǎn)亮?xí)r間占閃爍周期的百分比。
系統(tǒng)搭建完畢后,PSoC連接到PC機(jī)的USB接口,安裝驅(qū)動程序,打開用戶應(yīng)用程序,連接USB設(shè)備成功后進(jìn)行測試。
距離固定后,LED最大強(qiáng)度確定為N。設(shè)置分辨率為200,即將強(qiáng)度N劃分為200個等級,測量光強(qiáng)值如圖7所示。
圖7 分辨率為200、距離為5 cm時,光強(qiáng)測量值與光強(qiáng)設(shè)定值的關(guān)系
在實(shí)時瞳孔參數(shù)檢測實(shí)驗(yàn)中,固定瞳孔、LED與攝像頭的距離,參數(shù)檢測平臺以5幀/秒的速度采集瞳孔圖像,對每幀圖片進(jìn)行預(yù)處理、瞳孔定位、瞳孔區(qū)域分割和參數(shù)計算等步驟,最后得到瞳孔面積。以其中一組實(shí)驗(yàn)為例,瞳孔在暗環(huán)境下大小穩(wěn)定后給予頻率1 Hz、強(qiáng)度1141 lux的光照刺激,連續(xù)10秒測量計算得到的瞳孔面積變化曲線如圖8所示。
圖8 瞳孔面積在10秒內(nèi)的變化曲線
測試結(jié)果表明,本系統(tǒng)基本滿足瞳孔動態(tài)參數(shù)測量平臺的實(shí)驗(yàn)需求,光照強(qiáng)度在其范圍可基本線性調(diào)節(jié),達(dá)到所需強(qiáng)度,動態(tài)實(shí)時改變LED參數(shù),系統(tǒng)響應(yīng)及時、穩(wěn)定可靠。由于采用了8位的PWM,LED的強(qiáng)度分辨率最高為255,精度不夠高。但瞳孔的分辨能力不高,在本次實(shí)驗(yàn)中只將光強(qiáng)劃分了10個等級,因此系統(tǒng)滿足要求。
本系統(tǒng)已用于光刺激條件下瞳孔面積變化的實(shí)驗(yàn)研究中,設(shè)定光照亮度和閃爍頻率,在一定距離下對瞳孔進(jìn)行光刺激,同時采集瞳孔在光刺激下的動態(tài)反應(yīng)進(jìn)行處理與分析。本系統(tǒng)的LED光照波形為方波,即閃爍中的亮度為固定值,在此基礎(chǔ)上可進(jìn)一步擴(kuò)展功能,例如呈三角波形的亮度動態(tài)變化、紅光LED光源、更高分辨率的PWM、更高的光強(qiáng)設(shè)置精度等,以滿足醫(yī)學(xué)上瞳孔光反應(yīng)研究的需求,提供更全面的支持。
[1]姜超,劉士平,曾凡舉,等.急性中-重型顱腦損傷患者瞳孔曲線變化觀測的臨床應(yīng)用[J].中國臨床神經(jīng)外科雜志,2009,14(12):751-753.
[2]朱治人,陳道瑜,陶圻,等.糖尿病性植物神經(jīng)病變對瞳孔系統(tǒng)的影響——瞳孔對光動態(tài)反應(yīng)的測定[J].眼科新進(jìn)展,1982,2(2):74-77.
[3]熊興良,張琰,陳萌夢,等.利用自發(fā)瞳孔波動下的瞳孔直徑變異性客觀評價駕駛疲勞[J].生物醫(yī)學(xué)工程學(xué)雜志,2013,30(2):239-244.
[4]淮賢,甘平,陳龍聰,等.光刺激下瞳孔圖像動態(tài)采集系統(tǒng)的研發(fā)[J].激光雜志,2011,32(5):22-24.
[5]羅玉皓,鄒遠(yuǎn)文,夏勛.運(yùn)用OpenCV實(shí)現(xiàn)紅外圖像的瞳孔參數(shù)實(shí)時檢測[J].計算機(jī)與現(xiàn)代化,2013(6):71-75.
[6]程安寧,王晉,尚相榮.白光LED的PWM驅(qū)動方式分析[J].電子設(shè)計工程,2010,18(2):109-111.
[7]王聲學(xué),吳廣寧,蔣偉,等.LED原理及其照明應(yīng)用[J].燈與照明,2006,30(4):32-35.
[8]ROHM.BH1750FVI光強(qiáng)度傳感器數(shù)據(jù)手冊[EB/OL].http://www.rohm.com,2012-02-07.
[9]周志敏,周紀(jì)海,紀(jì)愛華.LED驅(qū)動電路設(shè)計與應(yīng)用[M].北京:人民郵電出版社,2006.
[10]Cypress Semiconductor Corporation.PSoC Programmer User Guide[DB/OL].http://www.cypress.com/?rID=47002,2013-01-03.
[11]郭帥,何永義.PSoC的動態(tài)配置能力及其實(shí)現(xiàn)方法[J].單片機(jī)及嵌入式系統(tǒng)應(yīng)用,2003(1):23-26.
[12]王建,毛騰飛,陳英革.基于BH1750芯片的測光系統(tǒng)設(shè)計與實(shí)現(xiàn)[J].常熟理工學(xué)院學(xué)報:自然科學(xué)版,2011,25(2):117-120.
[13]Cypress Semiconductor Corporation.USB Full Speed Device Datasheet[DB/OL].http://www.cypress.com/?docID=44245,2013-05-31.
[14]張克非.Windows環(huán)境下的USB設(shè)備驅(qū)動程序設(shè)計[J].計算機(jī)與現(xiàn)代化,2004(7):5-8,12.
[15]鐘志彬.基于單片機(jī)的USB設(shè)備的研究與設(shè)計[D].合肥:安徽農(nóng)業(yè)大學(xué),2010.
[16]朱明程,李曉濱.PSoC原理與應(yīng)用設(shè)計[M].北京:機(jī)械工業(yè)出版社,2008.