贾仕达,黄 斐,薛 萌,郭汉明
(上海理工大学光电信息与计算机工程学院,上海 200093)
激光共聚焦显微镜(Confocal Laser Scanning Micro⁃scope)是一种应用广泛的高精密光学仪器,集光、机、电、计算机为一体,在生物医学、军事科技,甚至是日常生活中都有非常广泛的应用[1-2]。共聚焦显微镜发展历程最早可以追溯到20 世纪50 年代,但受当时技术条件限制,没有合适的光源,计算机处理能力不够,导致研究止步不前[3-5]。但是近几十年来国外公司在该方向发展迅速,包括莱卡(Leica)、蔡司(Zeiss)、尼康(Nikon)等公司都有了较成熟的产品[6-7]。相比之下,国内对共聚焦显微镜的研究起步较晚,目前处在高速发展阶段,有些较成熟的产品出于商业保密原因也鲜有发表相关文章供人参考[8-10]。
振镜的扫描控制系统是控制振镜运动的关键模块,高校在实验时使用的控制板卡大多为国外进口产品,价格昂贵[11-12],极大提高了实验成本,其控制界面也较复杂,对刚接触的使用者有一定难度。由此,本文提出了功能完善的硬件电路设计和以FPGA(Field Programmable Gate Array)为控制核心的软件程序设计,相比现有的控制板卡和控制软件,FPGA 可无限重新编程,时序控制也更加高速、精准,可以在结束一次扫描后修改程序即时调整扫描行数,使控制更加方便。通过实验证明,这套系统可以稳定运行,系统信号的建立时间低至4μs,具有操作便捷、响应速度快、信号匹配精准、成本低的特点。
扫描振镜是一种高精度、高速矢量扫描器件,它由平面反射镜、驱动电机、控制板卡组成[13]。工作时通过计算机向控制板卡发出振镜扫描所需的工作电压信号,控制板卡经过处理将信号发送给驱动电机,并驱动电机开始工作,使振镜完成预定扫描。单一振镜只能实现一个维度上的直线扫描,为实现二维平面扫描,就需要将两个正交放置的振镜组合在一起,让它们相互配合运动[14-15]。二维振镜扫描是指在X 轴和Y 轴方向上旋转的两个振镜电机配合转动以驱动反射镜转动,然后两个反射镜带动激光束偏转实现平面扫描[16-17]。实验所用二维振镜结构如图1 所示。
Fig.1 Two dimensional galvanometer structure图1 二维振镜结构
二维振镜主要由两片转动轴互相垂直的反射镜组成。在初始位置时,入射光线垂直于反射镜的转动轴,入射光线与反射镜1(X 振镜)的平面夹角为45°,相对偏转角度为ωx,反射镜1 反射给反射镜2(Y 振镜),此时反射光线与反射镜2 的转动轴垂直,与反射镜面2 的夹角是45°,相对偏转角度为ωy,此时光点位置认为是坐标系的原点。两个振镜转动轴之间的距离为e,振镜2 与接收面之间的距离为d,假设X 振镜不动,仅仅改变Y 振镜的偏转角度,则对应的扫描点坐标公式如式(1)所示。
上式表达中,认为光点向上移动角度为正方向取+号,向下移动角度为负方向取-号。假设Y 振镜不动,仅仅改变X 振镜的偏转角度,对应的扫描点坐标公式如式(2)所示。
当X 振镜与Y 振镜都有偏转角度时,扫描点坐标公式如式(3)所示。
从式(3)看,扫描点的位置与X 振镜和Y 振镜的偏转角度有关,而偏转角度则取决于驱动电压大小。X 振镜为快速振镜(共振式振镜),振动频率为7.931KHz,启动条件为恒定电压信号,电压可调范围为0~5V。Y 振镜为慢速振镜(检流计式振镜),每增加或减少一个单位的电压表示扫描变换了一行,要将X 振镜的位置反馈时钟用作Y 振镜的工作时钟。Y 振镜驱动电压是阶梯型三角波电压信号,电压信号为-1V~1V 范围内峰值可调。
本系统采用往复式扫描,可以提高扫描速度。X 振镜为横向扫描,Y 振镜为纵向扫描,X 振镜每往复扫描一次为两行,计一个周期,并给出反馈信号,实验检测频率为7.931KHz 的方波信号。方波的每个上升沿和下降沿代表X 振镜扫描换了一行,Y 振镜需要在边沿变换时改变驱动电压,同时需要匹配X 振镜反馈的方波信号,只有信号匹配正确才能驱动振镜运动。二者关系如图2 所示。
Fig.2 X,Y galvanometer signal relation图2 X、Y 振镜信号关系
振镜控制系统硬件主要由电源模块、X 振镜信号模块、Y 振镜信号模块、信号调理模块这4 个主要模块和其它几个辅助模块组成。系统结构如图3 所示。
Fig.3 System structure图3 系统结构
电源模块是整个硬件电路的供电模块,为电路中的其它模块输出所需电压。因此需要一个性能稳定的芯片和设计合理的电路。TPS5430 是TI 公司推出的一款性能优越的DC/DC 开关电源转换芯片,具有良好的电气特性[18]。它有着峰值高达4A 的高电流输出,5.5~36V 的宽电压输入范围,最高95% 的转换效率,最低1.22V 的宽电压输出范围,500KHz 的转换速率。此外,TPS5430 还有过流保护、热关断、内部软启动等辅助功能[19]。基于设计需要最终选择TPS5430 作为电源模块中的开关电源转换芯片,电源模块硬件电路原理如图4 所示。
Fig.4 Schematic diagram of power supply module图4 电源模块原理
当GND 接6 号脚一端时,经1 号脚出来输出5V 电压,当GND 接1 号脚一端时,经6 号脚出来输出-5V 电压。该电源模块纹波较小,可以稳定输出±5V 电压。
X 振镜信号模块为X 振镜输出驱动电压。其驱动信号为固定电压,要求在0~5V 内可调。本系统选用ADI 公司的16 位D/A 芯片AD5693R,它具有较高的相对精度,内置了2.5V 基准电压,同时支持SPI 和I2C 协议,是可编程电压源,价格便宜,满足系统设计需求。其硬件电路原理如图5 所示。
Fig.5 Principle of X-galvanometer signal module图5 X 振镜信号模块原理
Y 振镜信号模块为Y 振镜输出驱动信号。Y 振镜响应完成时间是250μs,即给定一个电压,Y 从原位置移动到目标位置时间是250μs,Y 振镜要求驱动的响应延迟在2%以内,这样才能有更好的扫描效果。最终确定选用响应时间为1μs 的16 位高精度D/A 芯片AD5541,基准电压为2.5V,其中CS、DIN、SCLK 3 条信号线分别为逻辑输入信号、串行数据输入,时钟输入,决定数据传输。Y 振镜信号模块原理如图6 所示。
由于AD5541 输出信号是固定的0~2.5V 波形,而Y 振镜需要-1~1V 范围内峰值可调的波形,这就需要信号调理模块将AD5541 输出的信号转变为Y 振镜所需信号。信号调理模块共使用3 个ADA4897 芯片,该芯片是一种轨到轨输出放大器,具有低功耗、低失真、低噪声的优点,其输出电压计算公式如式(4)所示。
式(1)中,VOUT为输出信号,VIP为同相输入信号,VIN为反相输入信号,RF为输出端与反相输入端相连电阻,RG为反相输入端电阻。
Fig.6 Principle of Y-galvanometer signal module图6 Y 振镜信号模块原理
对于同相增益,VIN=0,其表达式如式(5)所示。
对于反相增益,VIP=0,其表达式如式(6)所示。
根据式(1)、式(2)、式(3)匹配合适的电阻,分别进行反向、放大、跟随电路[20],最终得到所需的三角波信号。信号调理模块原理如图7 所示。
Fig.7 Principle of signal conditioning module图7 信号调理模块原理
根据以上设计,完成整体硬件原理图设计与PCB 设计,并打板焊接。振镜控制硬件电路实物照片如图8 所示。
Fig.8 Hardware circuit photos图8 硬件电路实物照片
本系统使用的是黑金ALTERA 系列FPGA 开发平台5系列的产品AX515,是CYCLONE IV 系列FPGA,芯片型号为EP4CE15F23C8。X 振镜和Y 振镜的控制程序在Quartμs II 软件上完成,使用verilog HDL 语言编写控制程序,并进行模拟仿真,最后将程序烧录到FPGA 的主芯片内对两个振镜分别进行控制。
X 振镜控制信号为电压范围在0~5V 内的固定电压信号。控制芯片使用AD5693R,使用IIC 协议进行通信。SCL 为串行时钟线,SDA 为串行数据输入/输出,当SDA 线上发生高低转换而SCL 处于高电平时,主机建立起始条件并启动数据传输。数据按9 个时钟脉冲的顺序通过串行总线发送,包括8 个数据位和一个应答位,SDA 线上的数据转换必须发生在SCL 的低电平期间,并且在SCL 高电平期间保持稳定。写入所有数据位后,主器件在第10 个时钟脉冲器件拉高SDA 线,建立停止条件。X 振镜控制主程序流程如图9 所示。
上位机通过串口发送指令,器件接收到指令后先后进行地址判断和写数据命令判断,AD5693R 器件地址为1001_1000,寄存器地址为0011_0000,当器件地址和写数据命令都正确后,开始发送16 位数据,先发送高八位数据再发送低八位数据,数据传输正确后将数字信号转换成模拟信号并输出给X 振镜。传输严格遵守IIC 协议工作方式和时序要求。
Y 振镜所需的阶梯状三角波需要与X 振镜反馈的方波进行匹配,根据图2 可知,方波每个周期的上升沿和下降沿即为X 振镜往复扫描一次(两行),Y 振镜的驱动电压则需要在X 振镜扫描的每一行去设定,扫描次数,也即设定扫描行数决定每个方波周期所给Y 振镜驱动电压的大小。
Y 振镜驱动控制芯片采用16 位D/A 芯片AD5541,输出电压为0~2.5V,对应数据量为0~65 535,假设X 振镜扫描2N 行,即为往复扫描N 次,则扫描一次的数据量变化为65 536/N。扫描开始后,每扫描一次增加65 536/N,到达满数据量65 536 后每扫描一次减少65 536/N,直至0,之后不断重复,并与方波周期相匹配,形成控制Y 振镜运动的三角波。Y 振镜控制程序流程如图10 所示。
Fig.9 X-galvanometer control program flow图9 X 振镜控制程序流程
Fig.10 Y-galvanometer control program flow图10 Y 振镜控制程序流程
AD5541 芯片的时钟信号最大不能超过25M,而FPGA芯片时钟信号为50M,因此在给芯片写数据之前要为芯片时钟分频,时钟信号匹配后,程序首先检测X 振镜运动后反馈回来的方波信号的上升沿与下降沿,每一次临近的上升沿与下降沿为一个周期。AD5541 芯片在数据传输过程中要严格遵守时序逻辑,时序图如图11 所示。
Fig.11 Sequence diagram图11 时序图
时钟信号SCLK 在上下沿检测时以25M 频率运行,CS在数据传输之前处于高位,并持续一到两个时钟周期,检测到上下沿信号后,在下一个时钟信号的下降沿拉低芯片片选信号CS,准备向芯片传输数据,DIN 为数据寄存器,在CS 拉低15ns 后开始接受数据,每一位数据的传输持续30ns,且在时钟信号SCLK 上升沿时完成,每次传输16 位数据,由高位向低位传输,最后一位数据传输结束后在下一个时钟信号SCLK 的下降沿将CS 信号拉高,即说明本次数据传输完成。
仿真正确后进行上机测试,将振镜控制电路板上的X振镜信号输出端和Y 振镜信号输出端分别与转接板上的X 振镜信号输入端和Y 振镜信号输入端相连接,并将FP⁃GA 与振镜控制电路板连接。设定X 振镜驱动电压为1V,Y 振镜为-1~1V,扫描64 行,每次数据量增加或减少2 048个。将示波器横向设置为500μs 每格,纵向设置为2V 每格,测试扫描一帧的波形图,测得信号如图12 所示。
Fig.12 Signal图12 信号
由振镜运动原理可知Y 振镜驱动电压三角波每一次增加或减少电压的过程为扫描一帧图像的过程,根据图13示波器测得波形可得Y 振镜扫描一帧图像经历了方波的32 个周期,也即64 行,方波频率126μs,与设定扫描条件一致。将示波器横向数值放大为100μs 每格,Y 振镜信号纵向数值设为500mv 每格,测出方波信号与三角波信号匹配情况如图13 所示。
Fig.13 Signal matching图13 信号匹配
从图14 显示的波形图看,Y 振镜的电压变化随着X振镜反馈方波的周期而改变,X 振镜每扫描一行,Y 振镜驱动电压就变换一次,未发生匹配错位情况,振镜可以正常工作。将示波器横向数值放大为1μs 每格,测试Y 振镜信号响应时间,观察到本设计Y 振镜驱动信号响应时间是4μs,低于所要求的2%,说明本驱动系统可以使振镜运动更加稳定、精确。测试结果如图14 所示。
Fig.14 Response time图14 响应时间
本文设计了一套基于FPGA 的共聚焦显微镜的振镜扫描控制系统,通过实验证明,系统中X 振镜反馈信号与Y振镜驱动信号匹配正确未错位,可以驱动振镜稳定、准确工作。振镜的驱动信号具有较快的响应时间,可以最大限度地降低因为信号响应时间较长造成的图像质量下降问题。同时,本方案可以应用到同类型共聚焦显微镜上,降低实验成本。但本方案也存在一些不足,由于串口传输速度较慢,当进行多帧采集时传输时间会大幅增加,影响采集效率。后续研究中可使用USB2.0 代替串口通信,最大理论传输速度可达60MB/s,提高采集效率。