基于PSoC的瞳孔光刺激与测量系统

2014-10-14 09:27邹远文罗玉皓
计算机与现代化 2014年2期
关键词:PC机瞳孔分辨率

孙 晗,邹远文,罗玉皓,夏 勋

(1.四川大学材料科学与工程学院,四川 成都 610065;2.成都军区总医院神经外科,四川 成都 610083)

0 引言

瞳孔动态特性的研究在国内外一直是心理科学和生理科学研究的重要领域。许多疾病都会影响瞳孔对光的反应,瞳孔对光刺激的反应能够反映脑力负荷状态和颅脑损伤程度,通过定时动态测定瞳孔光反应情况,分析其在急性颅脑损伤中的变化,可以判断颅脑损伤的程度[1]。测定瞳孔对光刺激的动态反应可以判断糖尿病性植物神经病变对瞳孔系统的影响[2]。实时的瞳孔参数检测在判断疲劳驾驶上也具有重要作用[3]。

近年来,有不少学者进行了在动态瞳孔参数测量上的研究,通过动态采集瞳孔图像,经计算机处理计算得出瞳孔孔径随时间变化的曲线,寻找可表征瞳孔相关疾病的客观特征参数,并设计了专用的光刺激器[4];为更准确地实时获得瞳孔参数,也在进行相关算法的研究改进[5]。基于以上背景和研究基础,本文为实现瞳孔动态变化设计更为灵活可靠的瞳孔光刺激系统,并能及时反馈光强数据,提供给PC机用户界面,预留详细的参数设置接口,满足不同系统和实验的应用需求。

1 系统总体设计

1.1 设计思路

以PWM方式驱动LED(Light Emitting Diodes,发光二极管)时,PWM的脉冲周期的占空比决定了LED正向导通的时间。由于人眼的视觉残留效应[6-7],本系统选择 PSoC芯片 CY8C5588作为 PWM的输出与控制芯片,同时利用光强传感器实时检测光照的强度,并设计PC机应用程序界面,使用户方便可视地进行光照参数设置和读取光强数据等。

1.2 系统构成

本系统包括PC端用户界面、PSoC主控芯片、BH1750光强传感器、LED驱动电路和LED灯,系统整体结构如图1所示。

图1 系统整体构成图

图1中PSoC作为主控芯片,控制输出PWM,以I2C连接光强传感器,通过USB总线传递数据,与PC机约定操作命令,设计PC端程序。其中光强传感器采用的是ROHM公司型号为BH1750FVI的光强芯片,此芯片为I2C接口,有着良好的光灵敏度,集成了信号放大和AD转换模块,经过光照后,直接输出16位高精度的数字值[8]。

为了提高LED的最高光照强度,传统方法是串联多个或者并联多个LED。本系统采用的10 W大功率LED为9个小LED灯3并3串,最大电流可以达到1 A。而PSoC的工作电压为3.3 V,输出电流不足以驱动,因此利用IRF640的N沟道MOS管搭建一个开关电路[9],如图2所示,PSoC输出的PWM作为输入控制信号,外接20 V电压达到LED的工作电压。

图2 大功率LED驱动电路

2 PSoC系统设计

2.1 硬件原理图

在Cypress公司提供的PSoC开发环境Creator中,设计原理图如图3所示,包括一个时钟源、2个PWM模块并2个中断源isr模块、一个I2C模块、一个USBFS模块以及相应输出引脚。PWM输出端所连接的LED_L、LED_R为输出引脚,应连接到LED驱动电路的信号输入端。I2C的sda和scl分别与BH1750 的 sda和 scl引脚相连[10]。

图3 系统的硬件原理图

2.2 各模块功能和设计

2.2.1 PWM 模块

在原理图3中放置了2个8位PWM模块,共用一个时钟源。PWM可通过时钟分频与分辨率共同确定脉冲周期,因此2路PWM可分别控制两路LED,互不干扰。如需2个PWM脉冲对齐,则可对其发出清空计数器的命令,均从0起计数。

对于8位PWM模块,其分辨率最大可为255。通过将在PWM模块中的参数CMP Value(比较值)设为N,计数器将从0到255计数,小于N时输出高电平,高于N时输出低电平。通过函数更改比较值N即改变占空比,实现动态设定LED亮度[11]。

2.2.2 isr 中断模块

PWM的脉冲周期一般高于100 Hz,人眼看来没有闪烁,在实际需求中,有时需要发生闪烁的光照刺激源,这种闪烁频率由PWM的脉冲计数实现。方法如下:每个PWM脉冲触发一个isr中断,在中断子程序中对脉冲个数记数,根据脉冲周期计算时间,如图4所示,在一个脉冲周期中,计数n1期间,比较值N不变,在接下来的n2次计数中,比较值N设为0,熄灭LED。如此周期循环,达到闪烁目的。

图4 LED的一个闪烁周期

2.2.3 I2C 模块

本实验系统用到的2片BH1750只需占用PSoC的一个I2C模块即可工作,将其中一片的地址脚ADDR接高电平,其地址为0x23,另一片接低电平,其地址为0x5c。PSoC通过不同地址访问BH1750,设置工作模式为高精度连续测量,之后即可连续获得当前光强数据[12]。

2.2.4 USBFS 模块

为了方便地调节LED的参数并获得实时的光强数值,在PC端设计了用户应用界面,与PSoC的数据传递采用了USB的方式。PSoC具有全速USBFS模块,通过USB Setup Wizard可设置好USB的各个端口配置及描述符等[10],免去了开发USB设备的繁琐步骤。作为自定义的USB设备,还需自行开发驱动程序,在Windows的操作系统中采用了WDM的驱动框架,利用Driver Studio工具包完成了驱动开发[13-15]。

2.3 PSoC主程序流程

在PSoC的Creator开发环境中,正确添加各模块并通过编译后,会生成各个模块的头文件和API函数,在main主函数中实现主程序,图5为PSoC主程序流程图[16]。(1)首先初始化各模块 PWM、I2C、USB及isr中断。(2)然后等待PC端对USB设备的枚举和配置,PC端发出连接命令并连接成功后,程序继续。(3)在进入主循环之前,向BH1750发送启动信号,并设置工作模式,在循环中读取BH1750数据保存在缓存数组中。(4)如果收到USB端口传来的LED参数,则以此为依据设置PWM,没有收到则继续使用之前的PWM设置。(5)如果收到USB输入端口的读取命令,则将在缓存区的光强测量数据通过端口1发送到PC端。

图5 PSoC主程序流程图

2.4 关键代码

主要的程序设计工作是在main主函数中完成,以下省略中断和模块设置代码,仅给出PSoC与PC机进行数据交互部分的主要代码。

PSoC根据USB端口得到的参数命令进行设置,PC端通过这些约定的命令来设计满足实验需求的应用程序。

3 PC端用户应用程序

编写应用程序实现PC机与USB设备间的数据传输,程序框架用Visual Studio C++2008/MFC实现。

3.1 PC与PSoC的数据交互

PSoC的光刺激与测量系统作为自行设计的USB设备,提供了USB的驱动程序以及Windows系统下的读写操作码,并约定了操作命令,调用Windows的API函数,可通过操作码对USB设备发送操作命令。PC端因此可以通过操作命令灵活地设计应用程序。

3.2 界面设计

图6 PC机用户程序界面

图6是LED控制界面图,对PWM模块进行初始化设置,其中分辨率表示将LED的实际亮度进行数字化,强度为小于分辨率的整数;脉冲周期为只读参数,通过时钟分频和分辨率设置。

LED参数设置中的频率可为浮点数,其为闪烁频率。如果设置较高,如大于100 Hz,则人眼不能分辨其闪烁。占空比为LED点亮时间占闪烁周期的百分比。

4 测试结果与分析

系统搭建完毕后,PSoC连接到PC机的USB接口,安装驱动程序,打开用户应用程序,连接USB设备成功后进行测试。

距离固定后,LED最大强度确定为N。设置分辨率为200,即将强度N划分为200个等级,测量光强值如图7所示。

图7 分辨率为200、距离为5 cm时,光强测量值与光强设定值的关系

在实时瞳孔参数检测实验中,固定瞳孔、LED与摄像头的距离,参数检测平台以5帧/秒的速度采集瞳孔图像,对每帧图片进行预处理、瞳孔定位、瞳孔区域分割和参数计算等步骤,最后得到瞳孔面积。以其中一组实验为例,瞳孔在暗环境下大小稳定后给予频率1 Hz、强度1141 lux的光照刺激,连续10秒测量计算得到的瞳孔面积变化曲线如图8所示。

图8 瞳孔面积在10秒内的变化曲线

测试结果表明,本系统基本满足瞳孔动态参数测量平台的实验需求,光照强度在其范围可基本线性调节,达到所需强度,动态实时改变LED参数,系统响应及时、稳定可靠。由于采用了8位的PWM,LED的强度分辨率最高为255,精度不够高。但瞳孔的分辨能力不高,在本次实验中只将光强划分了10个等级,因此系统满足要求。

5 结束语

本系统已用于光刺激条件下瞳孔面积变化的实验研究中,设定光照亮度和闪烁频率,在一定距离下对瞳孔进行光刺激,同时采集瞳孔在光刺激下的动态反应进行处理与分析。本系统的LED光照波形为方波,即闪烁中的亮度为固定值,在此基础上可进一步扩展功能,例如呈三角波形的亮度动态变化、红光LED光源、更高分辨率的PWM、更高的光强设置精度等,以满足医学上瞳孔光反应研究的需求,提供更全面的支持。

[1]姜超,刘士平,曾凡举,等.急性中-重型颅脑损伤患者瞳孔曲线变化观测的临床应用[J].中国临床神经外科杂志,2009,14(12):751-753.

[2]朱治人,陈道瑜,陶圻,等.糖尿病性植物神经病变对瞳孔系统的影响——瞳孔对光动态反应的测定[J].眼科新进展,1982,2(2):74-77.

[3]熊兴良,张琰,陈萌梦,等.利用自发瞳孔波动下的瞳孔直径变异性客观评价驾驶疲劳[J].生物医学工程学杂志,2013,30(2):239-244.

[4]淮贤,甘平,陈龙聪,等.光刺激下瞳孔图像动态采集系统的研发[J].激光杂志,2011,32(5):22-24.

[5]罗玉皓,邹远文,夏勋.运用OpenCV实现红外图像的瞳孔参数实时检测[J].计算机与现代化,2013(6):71-75.

[6]程安宁,王晋,尚相荣.白光LED的PWM驱动方式分析[J].电子设计工程,2010,18(2):109-111.

[7]王声学,吴广宁,蒋伟,等.LED原理及其照明应用[J].灯与照明,2006,30(4):32-35.

[8]ROHM.BH1750FVI光强度传感器数据手册[EB/OL].http://www.rohm.com,2012-02-07.

[9]周志敏,周纪海,纪爱华.LED驱动电路设计与应用[M].北京:人民邮电出版社,2006.

[10]Cypress Semiconductor Corporation.PSoC Programmer User Guide[DB/OL].http://www.cypress.com/?rID=47002,2013-01-03.

[11]郭帅,何永义.PSoC的动态配置能力及其实现方法[J].单片机及嵌入式系统应用,2003(1):23-26.

[12]王建,毛腾飞,陈英革.基于BH1750芯片的测光系统设计与实现[J].常熟理工学院学报:自然科学版,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环境下的USB设备驱动程序设计[J].计算机与现代化,2004(7):5-8,12.

[15]钟志彬.基于单片机的USB设备的研究与设计[D].合肥:安徽农业大学,2010.

[16]朱明程,李晓滨.PSoC原理与应用设计[M].北京:机械工业出版社,2008.

猜你喜欢
PC机瞳孔分辨率
EM算法的参数分辨率
原生VS最大那些混淆视听的“分辨率”概念
瞳孔里的太阳
基于PC机与单片机的多机通信技术及抗干扰方法
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
瞳孔
基于深度特征学习的图像超分辨率重建
一种改进的基于边缘加强超分辨率算法
VC.NET下实现dsPIC单片机与PC机的通信
排除OLT设备登录故障