APP下载

电子内镜系统研究与实现

2018-12-15董子琦

电子设计工程 2018年23期
关键词:开发板摄像头总线

陈 诚,董子琦

(1.重庆大学附属肿瘤医院,重庆400000;2.重庆邮电大学移通学院智能工程学院,重庆400000)

随着电子产业的不断发展,医学技术也在不断更新。而微创治疗技术作为医学技术的前沿科技更是受到社会的极大关注。集临床医学、光学、机电、信息科学、材料科学以及生物工程学等高科技学科于一身的内镜微创治疗,以其手术伤口小,疼痛轻,手术时间短,操作简单、安全,术后恢复快等优势,很受医患双方的喜爱,已成为消化、呼吸、泌尿、耳鼻喉科等系统疾病诊断和治疗必不可少的医疗仪器[1]。目前受困于图像传感器显示技术,电子内镜核心技术一直掌握在国外,导致国内电子内镜价格昂贵。虽然国内一些企业已经开始进行电子内镜的研发,但是与国外的差距仍然比较大。

文中提出一种低成本电子内镜系统研究方案,主要依靠三星mini2240的ARM开发板作为开发平台,然后通过COMS图像传感器将采集到的图像数据进行滤波、存储,然后在通过液晶显示屏进行显示。本电子内镜系统的光源采用高亮LED光源。

1 系统整体结构设计

本论文所研究的电子内镜系统是一种便携式电子内镜仪器系统,其前端的图像采集部分负责向我们提供被观测部位的图像信息,并以标准模拟视频信号(PAL/NTSC制式)输出中央处理设备中,然后根据系统的控制命令要求进行相应的操作,进行简单的图像处理后,如进行静态图像存储、视频存储,图像放大等,再以标准的视频信号(PAL/NTSC制式)输出到显示屏上。其主要信号流程图如图1所示。

图1 系统信号流程图

本电子内镜系统主要包括摄像头、高亮LED灯源、显示屏、电源、系统控制核心、还有其他交互接口等。在本系统中系统电源主要为LED灯源、摄像头与系统控制核心等提供电源,在选择系统电源时需要注意电源纹波,如果纹波大了,将对系统将产生自身干扰,对系统稳定性会造成影响。考虑到电子内镜系统需要将摄像头深入到人胃部进行探测,在图像采集模块主要考虑摄像是否满足本系统尺寸要求与像素要求。本系统中摄像头模块采用OV9650微型摄像头,OV9650是OmniVision公司推出的一款高性价比的CMOS图像传感器,其大小为1/4英寸,像素为130万像素,具有像素高,体积小,价格低等优点,完全满足本系统对尺寸与像素的要求。系统控制核心采用三星mini2240的ARM开发板作为中央处理平台,该开发板集成linux操作系统,方便后期进行图像数据处理。其采用S3C2440芯片作为该平台的处理核心。其工作频率为400 MHz,采用基于ARM架构,具有良好的数据处理能力,广泛应用于医疗设备,通信设备中,同时该ARM处理平台集成了SDRAM与Nand Flash共同构成系统存储器,在存储图片数据时就不需要额外增加存储器。该电子内镜系统首先通过高亮LED光源探照胃部等区域,然后将图像数据传输到ARM平台,最后进行显示,系统整体结构图如图2所示。

图2 系统整体结构图

2 系统硬件设计

2.1 高亮LED灯源设计

在本系统中,需要为摄像头提供灯源照明,然后摄像头开始采集图像数据。考虑到系统灯源需要深入到人体胃部进行探照,本系统采用大功率高亮LED作为系统灯源,LED具有体积小,亮度高等特点。在LED灯源设计中需要对灯源亮度进行调节,本系统采用PWM方式对灯源亮度进行调节,PWM脉冲可以通过系统控制核心mini2240开发板产生,考虑到本系统LED功率较大,通常需要100 mA以上电流,远远超过系统控制核心所能提供的电流,本系统采用PWM大电流驱动芯片BTS7960对LED进行驱动。

BTS7960芯片是一款PWM大电流驱动芯片,其内部通过P型晶体管与N型晶体管相结合方式进行PWM信号大电流驱动。该芯片总共有8个管脚,其中第3管脚用于芯片状态控制,当3管脚为高电平时,PWM驱动开始工作,当3管脚为低电平时PWM驱动停止工作。该芯片5脚和6脚主要用于PWM频率设定与电流反馈判断等。对于PWM信号是通过2管脚输入的,系统控制核心mini2240开发板通过2脚输入PWM信号,然后经过一个二极管,到达芯片的输入管脚,当2脚为高电平时,输出高,反之输出低,这样就实现了PWM信号传输。其中在PWM信号输入中串联一个二极管主要用于反向保护,不允许该芯片倒灌电流到系统控制核心中,以免损坏mini2240开发板。高亮LED驱动电路如图3所示。

图3 LED驱动电路图

2.2 图像传感器SCCB协议

OV9650实现图像传感器主要由SCCB总线、时序发生器、DSP、A/D转换器、相关寄存器等组成。其图像数据传输是通过SCCB总线数据进行传输。SCCB(Serial Camera Control Bus)是和I2C相类似的一个协议,支持的数据传输速率分别是100 kb/s和400 kb/s。它是欧姆尼图像技术公司(OmniVision)开发的一种总线技术,广泛应用于OV系列图像传感器上。标准的SCCB协议是一种3线的总线,由SCCB_E、SIO_C、SIO_D组成,分别为SCCB总线的使能线、时钟线和数据线,可以实现对多个从器件进行控制。但有时为了减少芯片的引脚,将其缩减为2根总线,即SIO_C和SIO_D,时钟线和数据线。2线的SCCB总线只能是一个主器件对一个从器件控制,且需要主器件至少具备一个以下条件:

1)主器件可以使SIO_D处于除了高、低电平之外的第三态—高阻态。

2)主器件能够驱动SIO_D,而且驱动电压可以比正常识别电压更高或更低。

SCCB控制总线功能的实现主要是依靠SIO_C、SIO_D两条总线上电平的状态以及两者之间的相互配合实现的。SCCB总线传输的启动和停止条件如图4所示,SIO_E由高到低的变化变表明3线SCCB总线的数据传输开始,不过为了避免在数据传输开始之前出现不确定的总线状态,在SIO_E有效前和失效之后,主器件都必须驱动SIO_D为1。

图4 三线数据传输时序图

2.3 OV9650摄像头模块

在本系统中,图像采集模块主要用OV9650 CMOS摄像头。OV9650摄像头主要是由一块封装有SXGA摄像传感器和图像处理器构成。OV9650利用先进的传感器技术,降低甚至消除普通的光照设备或者电子干扰造成的图像污染。例如混合模式噪声,拖尾效应等。可以得到一个清晰,十分稳定的彩色图像,极大的提高了图像质量。OV9650可以提供全帧,或者8/10位窗口输出帧。可以通过设置OV9650相关寄存器以控制图像显示时的帧速率,输出格式,数据传输,曝光控制,伽马控制白平衡等。OV9650可以输出SXGA,VGA,QVGAF等格式。

OV6950图像传感器的读写主要是通过SCCB总线进行读写的。其接口支持多字节读/写。主设备必须保证内部地址在写周期中而不是在读周期中。OV6950读内部地址是在写周期之前。在多字节读/写周期中,内部寄存器地址可以在第一个数据字节之后自动增加,以便于连续的放置在一个总线周期上。在一个多字节周期内重写它的原始内部寄存器地址;如果一个读周期紧跟着一个多字节周期的话,在一个单字节写周期内可以将一个新的地址插入其中。OV6950还支持一个单设备ID号,在写周期的时候这个ID被预先设置为0x6C,而在读的时候被预先设置为0x6D。在SCCB中的写周期中,第二个字节是为选择单个芯片上寄存器的内部寄存器地址。第三个字节是这个寄存器要写入的数据。但是写入没有生效的内部地址将会被忽略的。在读周期中,第二个字节是预先存储的内部地址的数据,在无效的内部地址读时,会返回不确知的信息。OV9650摄像头主要电路图如图5所示。

由图5可知,OV9650摄像头外围电路主要有外部晶振与电源,其中外部晶振一般为12MHz用于给摄像头提供时钟信号。时钟信号通过Video Timing Generator(时序发生器)后实现帧信号的产生、帧的相关速率控制等,该时序发生器能产生七中不同的帧。电源模块主要给摄像头提供电源,在开始进行图像采集后,图像数据就通过OV_D0-OV_D8这8位数据端口传输到中央处理器中。

3 系统软件设计

本系统是以是以mini2240开发板作为处理器,该开发板是以linux操作系统为软件平台,在此基础上进行linux内核的裁剪,相关模块底层驱动设计,图像采集模块软件设计,led灯源设计等。

3.1 图像采集模块设计

图像采集主要完成OV9650摄像头的图像采集,将内核采集到的图像信息发送给应用层,应用层在将接受到的数据进行图像压缩及格式转换,将yuyv格式图像信息压缩转换为jpeg格式,在编写图像采集程序时需要编写底层驱动程序。驱动程序主要是围绕file_operations结构体展开的,实现里面的各个函数,主要有 camera_open()、camera_read()和camera_ioctl()等。编写好驱动程序后需要编写应用层图像采集程序。

图5 OV9650电路图

在应用层图像采集程序中主要函数接口如下,打开图像设备open("/dev/video0",O_RDWR|O_NONBLOCK),查询图像设备的功能函数ioctl(camerafd,VIDIOC_QUERYCAP,&cap),设置图像捕获格式函数ioctl(fd,VIDIOC_S_FMT,&fmt),当设置好图像格式后需要向内存申请帧缓冲函数ioctl(fd,VIDIOC_REQBUFS,&req),申请到帧缓冲后需要将采集到的数据从内核复制到应用层,但是这样对系统的开销比较大,使用mmap()函数,直接将内核地址映射到用户空可以减小系统开销。

3.2 LED智能灯源设计

在本系统中,我们采用可控的高亮LED作为本系统的灯源,该灯源采用PWM进行通信。利用CMOS图像传感器获取的图像,将其显示在开发板自带的液晶显示器上。当液晶屏上的图像中有一块80*80个点图像区域的平均亮度数值小于暗阈值value_back(默认为10)时,则说明图像过暗。将需要增加的LED光源的数值增加,然后通过增加PWM占空比从而增加光源亮度。当有一块40*40个点图像区域的平均亮度数值大于亮阈值value_bright(默认为250)时,则说明图像过亮。将需要减少的LED光源的数值,然后通过减小PWM占空比从而减小光源亮度。从而实现光源的智能控制。

4 系统测试

本次实验用3节7号干电池串联作为CMOS摄像头的电源,电压在3.8 V附近,采用计算机显示器来显示CMOS摄像头所采集的图像,显示器色温参数调整为6 500 K。在测试程序中图片采集格式为YUV422,采集速度为15帧每秒,图片分辨率为320*240,采集截图如图6所示。与传统系统相比该系统在视频采集过程中稳定,没有出现抖动现象,画面流畅,图像色彩较好。

图6 测试结果图

5 结束语

文中设计了一种内镜系统的研发,对系统硬件结构,工作原理进行了分析,详细介绍了摄像头的原理,硬件原理图,以及在linux下的驱动设计。最后通过实验证明该系统稳定,图像数据清楚,可以广泛应用于医疗设备中。

猜你喜欢

开发板摄像头总线
浙江首试公路非现场执法新型摄像头
摄像头连接器可提供360°视角图像
基于PCI Express总线的xHC与FPGA的直接通信
机载飞控1553B总线转以太网总线设计
Microchip最新推出两款PIC32 Curiosity开发板
浅析单片机开发板的设计与制作
奔驰360°摄像头系统介绍
多通道ARINC429总线检查仪
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板
Arduino和Atmel发布Arduino Zero开发板