空间光调制器(SLM)作为一种光波空间参数调制的光学器件,在信息光学领域有着广泛的应用。大部分的SLM其工作方式类似于SLM是计算机的第二屏幕。用户能把信息显示在计算机的第二个屏幕上,也就能把这些信息显示在SLM上。针对这个方式,在实际使用过程中,有以下几种控制方法:
使用产品配套软件控制。不同的厂商开发的软件各有不同,功能上也有较大差异,但基本思路还是利用灰度图去映射电压进行寻址改变振幅或相位,达到调制光束的目的。一般是加载用户自行计算好的图像,或软件自带算法实时生成控制灰度图。比如UPOLabs集成非常多的有用功能模块,但其他家的产品就非常不尽人意了,需要用户自行计算。
使用MATLAB编程控制。MATLAB作为常用的学术编程语言,简单强大,大家基本都会用,所以用MATLAB控制SLM可能也是很多科研人员习惯用的方法,很多人第一反应就是希望能用MATLAB来控制的,算好灰度图就实现SLM控制。方法比较简单,请参考:
首先得下载安装一个工具箱Psychtoolbox,具体安装及使用方法可以参考这个网页:http://wavefrontshaping.net/index.php/groups-in-the-world/57-community/tutorials/spatial-lights-modulators-slms/52-how-to-control-a-slm
用MATLAB控制SLM方法的优点是简单,在现有编程基础上不需要学新的东西,并且可以通过编程进行精确控制,也可以编程读取大量二维信号文件,缺点是只能控制SLM,不能和其他实验器件组成反馈系统。
用LabVIEW控制。LabVIEW作为专门的仪器编程软件,在控制测量方面,这种语言有着天生的优势。并且可以让计算机把SLM和其他仪器组成一个系统,实现他们的同步,这对于高速采样测量的情况有着重要的意义。而且,UPOLabs新产品直接兼容了Labview的控制操作。
对于LabVIEW来说,有多种方法对图片(相位图)进行控制,根据实际的操作经验,个人认为使用LabVIEW的NI VISION来做SLM的控制软件最优。
下图中的程序是由IMAQ Readfile组成,主要功能是导入图片的功能。在导入图片之后,由IMAQ WIND用来控制载有图片的窗体。(这里为了更好的图片加载效果,需要将Toolbar配置为False。)
然后通过IMAQ WindowMove的VI可以对加载相位图的窗体位置进行配置,这样可以做到以像素点的精度来调节相位图。
如果使用8位灰度数据来作为图片,则需要用到IMAQ的Array to Image。它能够非常容易将由算法生成的8位数据矩阵转换为图片。
通过MATLAB强大算法功能,可以生成自定义大小的矩阵,再由矩阵生成的相位图可以直接结合在MATLAB和LabVIEW的混合编程中。这里需要通过LabVIEW中的MATLAB Script功能,此处以生成涡旋光所用的螺旋相位板的相位图为例,可以直接复制MATLAB的代码,再配置输入端和输出端。
这里输入端设定为拓扑荷L,使用中可以切换拓扑荷大小来更改相位图。输出端则是生成的矩阵,再通过ArraytoImage就可以直接将Matlab的代码完整的复制到LabVIEW程序中。
注意:此种编程方法在生成exe时,目标电脑的环境需要安装有MATLAB,并在运行时保持MATLAB的Command Window处于打开状态。
控制面板中的功能包括:导入灰度图(相位图),导入矩阵,定位SLM和微调相位图位置。图中显示的相位图会实时加载在扩展屏(SLM屏)上。
