资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,ZEMAX光学软件培训课程,ZEMAX是一个使用光线追迹的方法来模拟折射、反射、衍射、偏振的各种序列和非序列光学系统的光学设计和仿真软件。,ZEMAX的光学设计功能体现在使用序列模式设计传统的光学成像系统,优化成像系统的像差,分析和评价成像的质量,给光学系统分配合适的公差等方面。,ZEMAX的仿真功能体现在使用非序列模式、物理光学传播、热分析等功能模拟和仿真实际的光学系统方面。,ZEMAX有三种版本:ZEMAX-SE(标准版)、ZEMAX-XE(扩展版)、ZEMAX-EE(工程版)。只有ZEMAX-EE的功能最为全面。,ZEMAX简介,ZEMAX应用,ZEMAX可以用于相机镜头、望远镜、显微镜、,照明系统、显示系统、干涉仪、光通讯器件等,各种光学系统的设计和仿真,ZEMAX软件和使用手册都不会教您如何设计镜头和光学系统。ZEMAX功能是很强大,但是把握光学系统的设计、引导优化函数的优化方向,判断系统性能只能靠你自己。如果你对光学设计感兴趣,推荐书单:,ZEMAX不能做什么?,作者,书名,袁旭沧/张以谟,光学设计/应用光学,Joseph M. Geary,Introduction to lens design: with practical ZEMAX example,Gregory Hallock,Practical Computer-Aided Lens Design,R. E. Fischer,Optical system design,Smith,Warren,Modern Lens Design,Laikin,Lens Design,*,这次的ZEMAX软件培训目的是尽我的能力,给大家展示ZEMAX的强大功能,跟大家一起学习如何使用这些功能。,使用ZEMAX的三种模式,Completely sequential:,*应用于传统的镜头设计和大多数的成像系统设计,*应用这种模式时不能进行散射和鬼象分析,Hybrid sequential/non-sequential,*应用于有很多序列元件,又有一些非序列元件(比如棱镜或光管)的系统,*必须使用“ports”作为光线进出非序列元件组的依据,Completely non-sequential,*应用于照明、散射和杂光分析。光线可以在任何物理上有效的路径传输,*这种模式下非序列元件不使用“ports”,Completely sequential,以光学面(surface)为对象来构建光学系统模型;,光线从物面开始(常为surface 0),按光学面的顺序进行光线追迹计算(surface 0,1,2),对每个光学面只计算一次;,每个面都有物空间和像空间;,需要计算的光线少,计算速度快;,可进行analysis,Optimization,及,Tolerancing,Hybrid sequential/non-sequential,所有对象都是3维的;,每个对象都在一个空间坐标系中定义了其特性;,光线从input port进入non-sequential group;从exit port离开NS group;,光线在NSC中一直追迹,直到它遇到下列情况才终止:,Nothing,Exit port,能量低于定义的阈值。,忽略NS 元件内的光源和探测器;,进入NS 元件组的光线的特性,由序列的系统数据,如视场位置和入瞳的大小等决定。,Completely non-sequential,所有对象都是3维的;,每个,对象,都在一个空间坐标系中定义了其特性;,需要定义光源的发光特性和位置,定义探测器用来收集光线;,光线一直追迹,直到它遇到下列情况才终止:,Nothing,,能量低于定义的阈值。,计算时光学元件的相对位置由空间坐标确定;对同一元件,可同时进行透射、反射、吸收及散射的计算;,无法进行优化,要进行公差分析必须实用macro;(低版本的软件不可以优化),这种模式下,可以对光线进行分光,散射,衍射,反射,折射的分析。,序列模式和非序列模式的比较,序列模式,以surface为对象建模,指定光线与面相交的顺序,光线与每个面只相交一次,光线不会分光,镜面反射,光线不能超过临界角入射,通过孔径外的光线必须渐晕,Surface的位置由前一个面的参数确定,每个面都有物空间和像空间,计算的光线少,计算速度快,可进行优化和公差分析,非序列模式,以object为对象建模,不限制光线与面相交的顺序,光线与同一个面可相交多次,光线可以分裂,镜面反射和漫反射,可以全反射,在object外的光线也可进行光线追迹,object的位置由全局坐标确定,所有空间都是等价的,计算的光线多,计算速度慢,不能使用优化和默认的公差分析(可用Macros分析公差),ZEMAX的用户界面,ZEMAX的用户界面有四种允许输入和分析系统数据的窗口:,Editors,定义、编辑光学表面和其他数据,Graphic windows,显示图形数据,Text windows,显示文本数据,Dialog boxes,编辑和回顾其他窗口或系统的数据,或者用来报告错误信息,Editors,ZEMAX中的editors本质上是为满足透镜设计程序而专门设计的电子数据表:,Lens Data Editor,输入基本的镜头数据,包括表面编号、注释、表面类型、表面曲率半径、厚度、玻璃、口径半径、二次常数、热膨胀系数和膜层数据,Merit Function Editor,在这里定义和编辑优化函数,Multi-Configuration Editor,给变焦距透镜和其它的多结构系统定义参数变化表,Tolerance Data Editor,定义和编辑公差,Extra Data Editor,一个扩展的透镜数据编辑器,为那些需要很多参数才能定义的表面所准备的,比如表面类型Binary 2,Non-Sequential Components Editor,在这里定义光源、光学对象、探测器,Graphic and Text windows,ZEMAX的图形和文本窗口是分析和评价光学系统性能的有力工具。,ZEMAX的有些功能只支持图形窗口(比如layout,3D layout),,有些功能只支持文本窗口(如System Data,Prescription Data,Ray Trace,Seidel Coefficients),有些功能既有图形窗口也有文本窗口(如Ray Fan,OPD Fan,Spot Diagram),对于后者,除了图形窗口,如果你要查看文本窗口的内容,点击菜单栏中的“Text”,用来编辑其他窗口或系统的数据,比如General,Field Data,Wavelength Data,Glass Catalog,Lens Catalogs,Dialog boxes,序列模式,这种模式下的光学设计和仿真可按照下列步骤进行:,1.输入系统数据,2.输入透镜数据/修改透镜数据,3.检查设计图、分析模型,考虑是否修改透镜数据或者考虑优化方向,4.优化、评价模型性能,5.公差分析,6.出报告、画工程图,设计过程中,第3步的结果不好的话,你可能需要返回到第2步重复设计;第4步完成后达不到期望的性能,也需要返回到第2步重复设计,直到设计结果能满足需求;但是即便如此,你也只得到了一个停留在纸上的设计方案,只有在进行了公差分析,证实这个设计是可以加工和装配的,设计才算基本完成,否则还是要回到第2步重复整个过程。,数据编辑器,系统数据,需要设置,三个Dialog boxes:,G,eneral (Gen),-通常需要设置孔径类型、孔径大小、透镜长度单位、选用的玻璃库等,Field Data (Fie),-选定视场的类型,设置视场的大小,Wavelength Data (Wav),-定义需要用到的波长,以及权重,设定哪个波长是参考波长,Gen,Aperture决定了系统的入光量的多少。,EPD-入瞳直径;Image space F/#-无限物距时,象空间的近轴F数;Object space NA-有限物距时,物空间数值孔径;Float By Stop Size-根据孔径光阑的大小变化;Paraxial Working F/#-无限远或有限远物距时,象空间的近轴工作F数;Object Cone Angle有限物距时,物空间边缘光线与光轴的夹角,容易混淆的概念:Image Space F/#;Paraxial Working F/#; Working F/#,Paraxial Working F/#:,Working F/#:,Paraxial Working F/#计算公式中的,是近轴边缘光线与光轴的夹角;,Working F/#,计算公式中的,是实际边缘光线与光轴的夹角,下面看一个例子:,example for F-number.zmx,Working F/#=1/2sin(5.76436)=4.97822391,Paraxial Working F/#=1/2tan(arccos(0.9950372)=5.00000496,切趾分布,General对话框中有一项设置apodization type-切趾分布,它实际是定义了入瞳处的光照分布。,Apodization type可以选择none,表示均匀照明;可以选择gaussion,表示高斯照明;最后一种,用来模拟点光源照明平面时照度向外衰减的特性,建立一个近轴的光学系统,更改切趾的类型,观察FFT点传递函数的图像。例子:,apodization.zmx,均匀切趾,圆形平顶函数的傅立叶变换是贝塞尔函数,高斯切趾,切趾因子3。高斯函数的傅立叶变换还是高斯函数,Fie,ZEMAX支持4种不同视场形式:,Field angle: XZ和YZ平面上主光线与Z轴的夹角。常用于无限共轭系统。,Object height: 物面上X,Y高度。常用于有限共轭系统。,Paraxial Image height: 像面上的近轴像高。用于需要固定像的大小的设计中(只用于近轴光学系统中),Real image height: 像面上实际像高。用于需要固定像幅的设计中(如camera lenses)。,VDX,VDY,VCX,VCY,VAN是用来设置渐晕因子的,设置渐晕偏心、缩放、角度,Wav,ZEMAX最多允许定义12个波长,必须指定参考波长,可以根据不同波长的重要性,设定不同的权重。,波长的单位为微米。,Select-功能可以选择多种默认的波长,Lens Data Editor,一定存在的3个表面:OBJ、STO和IMA,可以随意插入更多的表面,每个表面都包括的数据有:表面类型、注释、曲率半径、厚度、玻璃牌号、表面的半口径、二次常数、保留的参数0-12、热膨胀系数和膜层参数,表面数据的符号规则:曲面左凸为正,右凸为负;高度向上为正,向下为负;角度从光线向光轴,顺时针锐角为正,逆时针为负;厚度向右为正,向左为负,表面数据的符号规则,+z,+y,球透镜的例子,在ZEMAX中输入一个直径5mm的球透镜,玻璃材料K9,Layout如下:,例子:,ball lens.zmx,需要设定孔径类型、透镜长度单位、视场类型、使用的波长,需要在Lens Data Editor中插入表面,根据符号规则输入适当的参数,使用M-solve找到近轴焦平面,练习:在ZEMAX中输入一个入瞳直径33.33mm的双高斯镜头。视场角设定0度、10度、14度,采用波长0.486,0.587,0.656,参考光为0.587,Layout如下:,表面的曲率半径依次为54.15,152.52,35.95,infinity,22.27,infinity,-25.68,infinity,-36.98,196.42,-67.148;玻璃和空气间隙的厚度依次为:8.75,0,14,3.78,14.25,12.42,3.78,10.83,0,6.85,57,例子:,Double Gauss.zmx,Surface Type,双击透镜数据编辑器的standard栏可以打开表面属性对话框,可以定义表面类型,1.ZEMAX提供了近60种的光学曲面面形,主要类型有:,平面、球面、标准二次曲面、非球面、光锥面、轮胎面、折射率渐变面、二元光学面、光栅(固定周期和变周期)、全息衍射元件、Fresnel透镜、波带片等。,2.还提供了User Defined Surface。,用户只需要按照它的语法规定,用C+语言编写DLL文件与ZEMAX相连接就可以建立自己需要的面形。,Toroidal surface,环形表面是YZ平面的曲面绕平行于Y且过Z的轴线转动形成的。我们可以利用Toroidal面来模拟柱透镜。,我们来模拟一个YZ平面曲率半径为5mm,厚度为2mm,K9玻璃的柱面镜,它在XY面的投影为矩形,长6mm,宽4mm。,例子:,Toroidal-y.zmx,*注意Radius与Radius of Rotat的区别;注意Surface properties对话框中Aperture的设置,还是刚才的那个柱面镜,我们让它绕z轴转90度放置,使其在x方向有光焦度,y方向没有光焦度,这用Toroidal如何模拟?例子:,Toroidal-x.zmx,只要参数设置对了,就可以模拟各种柱面镜,也可以模拟棒镜(例子:,cylinder-tor.zmx,),甚至是非球面的柱面镜。,Toroidal面来模拟柱面仅仅是它应用的特例,更广泛的,它用来模拟环形表面,双圆锥表面,与环形表面类似,可以直接输入表面的X、Y方向的曲率半径和二次常数。把X或者Y方向的曲率半径和二次常数设为零,也是柱面。,用Biconic surface来模拟前面举例过的棒镜,例子:,cylinder-Bic.zmx,Biconic surface,Toroidal Grating surface,环形光栅表面与环形表面类似,除此之外,有线条平行于x轴的光栅结构,需要定义光栅周期和衍射级数。例子:,Toroidal grating.zmx,Coordinate Break surface,坐标断点表面用来定义一个新的坐标系统,对于光线追迹的应用来说,它只是一个虚拟的表面。描述这个新的局域坐标需要六个参数:x偏心、y偏心、绕x轴的倾斜、绕y轴的倾斜、绕z轴的倾斜、倾斜和偏心次序的标记。,用坐标断点可以实现一个或一组表面的倾斜。,倾斜和偏心次序的标记为0,表示先x偏心、y偏心、然后绕x轴倾斜,这时候y和z轴的方向会被改变,接下来绕新的y轴倾斜,改变x和z轴的方向,最后绕新的z轴倾斜。,倾斜和偏心次序的标记不为0,表示先以z、y、x的顺序倾斜,然后再进行偏心。,牢记:ZEMAX中的输入的每个表面都是由一个本地坐标系定义的,*ZEMAX中的每个表面都有一个本地坐标系,*每个表面都为后面的表面定义了一个新的本地坐标系,例子:,fold mirror.zmx,为加深坐标断点表面、本地坐标、全局坐标的理解,我们来看一个元件倾斜和偏心的例子,例子:,tilt-decenter.zmx,在原来表面4前面插入一个面,表面类型选择坐标断点,y偏心参数设为-5,结果如下:,在原来表面8前面插入一个面,表面类型选择坐标断点,把表面7的厚度设为0,把坐标断点的厚度设为10,y偏心参数设为5,结果如下:,如果我们把两个坐标断点表面的偏心参数恢复为0,把第一个坐标断点x轴倾斜角度设为20,把第二个坐标断点,x,轴倾斜角度设为-20结果如下:,(中间元件的倾斜引入了最后一个元件的偏心),为了消除中间元件的倾斜给最后一个元件引入的偏心,把,变为:,Diffraction Grating surface,衍射光栅表面用来模拟直线型的光栅,光栅的线条与本地坐标的x轴平行。衍射光栅表面的重要参数:lines/micron,diffract/order。,例子:,diffraction grating. zmx,衍射光栅表面光栅的线条与本地坐标的x轴平行,那么你要模拟光栅线条朝其他方向的光栅,你需要借助坐标断点表面。假设我们要使光栅线条的方向与全局坐标的y方向平行,例子:,diffraction grating-y. zmx,Gradient 1 surface,折射率渐变表面1可以用来模拟采用折射率渐变材料加工的光学元件。折射率渐变表面1的重要参数:Delta T,n0,Nr2。例子:,gradient .zmx,折射率渐变表面1的折射率公式:,初始结构的设计图:,初始结构的透镜数据:,把表面1的厚度作为变量,用默认的RMS spot优化函数 ,优化,结果:,Binary optic 2 surface,二元光学表面2能够以下面的公式在表面上连续改变波前的相位。,二元光学表面2面形的公式:,定义二元光学表面2需要的参数:,利用二元光学表面来设计一个折射-衍射光学元件,校正轴向色差。例子:,binary diffraction .zmx,选择透镜单位为mm,入瞳直径设置为30mm,波长选择F,d,C,视场角0,初始数据:,表面3的厚度设为变量,采用默认RMS优化函数,优化,表面3的厚度变为51.608:,把二元光学表面的Diffraction order参数设为1,打开Extra Data Editor,按下图输入:,重新优化,结果:,纵坐标:入瞳高度,横坐标:不同环带的光线与光轴的交点到参考波长的近轴焦点的距离,向右为正,向左为负,Jones Matrix surface,琼斯矩阵被用来定义任意偏振的元件。我们以模拟一个x方向的四分之一波片为例:jones matrix.zmx,Birefringent in and out surface,双折射表面in和out一定是成对儿出现,用来模拟双折射晶体,这两个表面之间只能有坐标断点表面存在或者没有其他表面类型存在。,双折射表面的重要参数:Draw axis-晶轴的长度;Mode光线追迹针对o光还是e光的标志;X、Y、Zcosine定义晶轴的方向余弦。例子:,birefringence. zmx,常用的分析诊断工具,Ray fan plot,光线扇面图是分析几何像差的有力工具,值得好好学习和分析。,光线扇面图的坐标轴是如何定义的?有什么意义呢?,归一化的物、入瞳坐标。通过入瞳某一坐标【PX,PY】的光线在像面上有唯一的位置【EX、EY】,以PX、PY为横坐标,EX、EY为纵坐标,分别建立坐标系,把通过入瞳的光线都在坐标系里描点就得到了光线扇面图,离焦、球差、彗差、象散的ray fan plot,纯离焦的光线扇面图。例子:,defocus. zmx,只存在离焦时的光线扇面图中曲线是两条方向一致的倾斜直线,直线的斜率可正可负,取决于是正离焦还是负离焦,纯球差的光线扇面图。例子:,spherical. zmx,从光线扇面图看到坐标原点附近的曲线斜率为0,表明像面正好是近轴像面,没有离焦。曲线整体上来说斜率为负,表示球差欠校正。,把上面这个例子的表面3的二次常数设置为-5,表示为双曲线表面,更新设计图和光线扇面图,从光线扇面图看到坐标原点附近的曲线斜率为0,表明像面正好是近轴像面,没有离焦。曲线整体上来说斜率为正,表示球差过校正。,球差和离焦的光线扇面图。例子:,spherical-defocus. zmx,从光线扇面图看到坐标原点附近的曲线斜率不为零,表明像面不在近轴像面,存在离焦。经过一个拐点向下的一段曲线说明还有欠校正 的球差存在。但是跟前面的ray fan相比,纵坐标范围从+-500um减小到了+-100um。说明离焦平衡了球差。,三阶球差的控制,我们用偶次多项式非球面来控制三阶球差。例子:,a-spherical. zmx,三阶球差可以用偶次多项式非球面的4次项控制,注意看原点附近的曲线,没有离焦,三阶球差被控制,剩下校正过的高阶球差。此时纵坐标范围为+-0.5um。,偶次多项式非球面的4次项控制可以控制3阶的球差,6次项可以控制5阶的球差,你可以试试控制更高阶的球差,也可以试试同时用离焦来平衡球差,看看,Ray fan的曲线如何变化?,偶次多项式非球面的公式:,例子:,a-spherical. zmx,继续控制,5阶的球差,ray fan应该是这个,样子,彗差的光线扇面图如图所示。为了显示出彗差的ray fan曲线,我们设计了一个有偶次非球面的透镜,消除球差,移动透镜前光拦的位置,消除象散,使存在的彗差是像差的主要贡献,例子:,coma. zmx,三阶彗差的曲线是归一化入瞳坐标的二次函数。,象散的光线扇面图如图所示。为了显示出象散的ray fan曲线,我们还用那个有偶次非球面的透镜,消除球差,光栏的位置在透镜表面,使用弯曲透镜,使彗差为零,使象散成为像差的主要贡献,例子:,astigmatism. zmx,这里不完全是象散的曲线,应该是像散加上离焦,导致象散的子午曲线和弧矢曲线的斜率不同。轴外视场的光线有离焦。事实上,子午像散和弧矢像散的中间像面的象散曲线是斜率大小相同,方向不同的。,而离焦的子午曲线和弧矢曲线的斜率一定相同。,常见的ray fan曲线,OPD fan,光程差图看上去跟ray fan很类似,横坐标也是归一化的入瞳坐标,只是纵坐标不是由光线在像面上的位置决定,它的纵坐标是出瞳处光线的光程与主光线的光程的差值,OPD fan的设置:,Plot scale:设置纵坐标最大范围;number of ray:光线追迹时光线的数量;Wavelength、field:用来确定正在计算时选用的波长和视场;Tangential、Sagittal:这里只能选择OPD;use dashes:画图时,是采用颜色表示不同波长还是用虚线来表示;check aperture:检查光线是否能从表面的孔径通过,选择此项,使不能通过表面孔径的光线不被画出;vignetted pupil:选择此项,得到的数据将反映出渐晕的存在。,重新打开前面讲ray fan时的各个例子,看看各个基本像差的OPD曲线的特征。你会发现,OPD曲线与ray fan曲线很不一样,事实上他们有一定的联系,比如ray fan里的离焦曲线是入瞳坐标的一次函数,而离焦的OPD曲线是入瞳坐标的二次函数,其他像差也是如此,他们的OPD曲线都比他们的ray fan曲线高一阶。,像差常有两种表示方法,一种是像面上的横向光线像差,ray fan表示;一种是出瞳面上的光程差,用OPD fan表示。初级横向光线像差一般被称为三阶的像差,而在出瞳面上,他们对应的OPD是四阶的像差,Field Curv/Dist plot,Field Curv/Dist可以用来分析场曲和畸变。左边的是场曲,右边的是畸变。,场曲图的纵坐标是视场角,横坐标是像点偏离近轴像面的距离,T表示子午场曲,S表示弧矢场曲。,畸变图的纵坐标是视场角,横坐标是畸变百分比,我们来看子午场曲,例子:,astigmatism-TC.zmx,从设计图中可以看到像面是弯曲的表面,而场曲图中的T曲线基本与y轴重合,表示子午场曲与像面重合,说明现在的像面就是子午场曲面,这个面上,轴外光线的像是弧矢方向的直线。,我们来看弧矢场曲,例子:,astigmatism-SC.zmx,这次场曲图中的S曲线基本与y轴重合,表示弧矢场曲与像面重合,说明现在的像面是弧矢场曲面,这个面上,轴外光线的像是子午方向的直线。,畸变的示意图:,真实主光线在像面上的高度设为H,近轴主光线在像面上的高度设为h,畸变图中纵坐标计算公式:,【(H-h)/h】100%,分析畸变的另一个工具:栅格畸变,Text文本窗口提供了十分详细的数据信息,非序列模式,非序列模式介绍,序列模式下光线是一个面一个面按顺序追迹的,这样的模型简明,计算上快速高效,非常实用和完善的解决需要重要的光学成像问题。然而,非序列的光线追迹也经常需要。因为按照实际物理规律,光线在追迹过程中会遇到很多的对象和表面,没有顺序,甚至是反复在一个对象中来回反射,而完全碰不到其他对象。这种模式下,光线通过,对象,的顺序,取决于入射光线的角度和位置、对象的初始位置和形状。,非序列模式的光线追迹有两种方式:有端口的非序列和无端口的非序列模式。最明显的区别是无端口的非序列模式必须设置光源和探测器,而有端口的非序列不要光源和探测器。,ZEMAX中的非序列模式支持的功能:多光源、对象和探测器的定义和放置;定义光源的能量;光线与物体的相交顺序自动确定;支持反射、折射和全反射、衍射;支持散射统计,环形多面反射器,我们先来看一个环形多面反射器的例子,,toroidal faceted reflector.zmx,。这是一个序列和非序列混合模式的例子,既有非序列的元件又有序列的表面。,如果在settings里钩选fletch rays,ZEMAX会用箭头表示出光线传播的方向。我们可以看到光线从点光源由左向右传播,在非序列元件小面反射器上反射,向左传播,通过标准透镜。右边的图显示了透镜左边的像面上独特和复杂的光线分布。,光源分布,现在来看一个完全非序列的光线追迹例子。这个例子有三个射灯和三个探测器。放大3D设计图,可以看到螺旋状结构的灯丝,光线从螺旋灯丝上的随机点出射,经过灯丝周围的反射面反射,向右传播。,要查看探测器上的光分布,通过Detector control surface对话框Trace,然后打开Detector viewer,在settings里选择你想查看的哪一个探测器。下图是探测器1上的光分布,也就是底面的光分布。,通过NSC shaded model layout的settings中的Detectors选项,可以让shanded layout显示出光线追迹后的结果。,棱镜常用多边形对象-Poly object来模拟,下面一个例子是棱镜的模拟,我们将使用三个poly对象,两个是half-penta棱镜,一个是amici-roof棱镜。为了观察它对偏振光的影响,我们使用序列和非序列的混合模式。例子:,prims.zmx。,3D设计图如图所示:,棱镜,左边是输入的线偏振光,右边是输出的椭圆偏振光,分束器,我们在非序列模式下用两个45度的直角棱镜斜面相接触,模拟正方体的分束器。例子:,beamsplitting.zmx,,非序列元件编辑器如下:,因为要分光,所以45度直角棱镜的斜面要镀上50%透射50%反射的理想分光膜。,3D设计图如下:,入射光线在棱镜的第一个表面就产生4%的反射,同时入射到直角棱镜的斜面,分成两束光。透射光在第二个直角棱镜的直角面反射,同时在这个面上折射后出射。反射的光向上,在第一个直角棱镜的上表面反射后折射出射,散射,在非序列模式下同时运用散射和镀膜功能,可以模拟部分反射部分散射的表面。现在我们模拟一个表面,60%反射,反射的光中80%是伯朗分布的散射,20%是镜面反射。例子:,scatter.zmx,不采用散射和镀膜功能时,长方体反射镜100%反射,探测器上光功率总量还是1W,在object 2 properties里给front face镀上60%的反射膜,使用偏振光追迹,结果探测器上收集到的光功率是0.6W:,接下来我们设置反射表面的散射特性,设置如下:,3D设计图的变化:,从辐射强度看,镜面反射的最好,干涉仪,建立一个如图所示的干涉仪,例子:,interferometer.zmx,。,左上角和右下角的元件是50%反射50%透射的多边体对象,左下角和右上角的元件是反射镜。要使多边体对象50%反射50%透射要给其一个面镀上理想的分光膜,两个探测器上的干涉条纹:,优化,ZEMAX优化功能的介绍,ZEMAX提供的优化功能,可以改善那些给定了一个初始结构、拥有一些参数变量的镜头的性能,当然,前提是在合理构建的评价函数指导之下。参数变量可以是表面曲率、厚度、玻璃、二次常数等。ZEMAX的评价函数由一些操作数组成,这些操作数都有它的当前值、目标值和权重。ZEMAX采用阻尼最小二乘法算法能优化这个评价函数,使其最小。,所以,优化需要三个必要条件:1.通过透镜数据编辑器构建一个可进行光线追迹的系统。2.在透镜数据编辑器中设定合适的变量。3.构建合理的评价函数,包括指定操作数、操作数的目标值、权重以及其他数据。,ZEMAX提供了一些很有用的默认的评价函数。它的构建我们后面具体分析。,ZEMAX还提供了全局优化的工具-全局搜索和锤形优化。他们的区别和用法,后面具体说明。,优化函数编辑器,优化函数编辑器里编辑你选择的操作数,一般有八个数据域需要定义,Int1,Int2,Hx,Hy,Px,Py,Target,Weight。,不同的操作数Int1,Int2的含义不一样,Hx,Hy,Px,Py是规一化的视场和入瞳坐标,不所有的操作数都需要定义这四个数据域。Value是操作数的当前值,Target是操作数的目标值,Weight是权重,Contrib是操作数在评价函数中的贡献,如果优化后这个值偏大,可以考虑把这个操作数的权重增加,优化函数的定义和默认的优化函数,优化函数的定义为:,MF表示优化函数的值,Wi是操作数的权重,Vi是操作数的当前值,Ti是操作数的目标值。,通过优化类型,数据类型和参考的不同组合可以构建不同的默认优化函数。优化类型有RMS和PVT,数据类型有wavefront、spot radius等,参考与质心、主光线、mean三种。,Mean只能在选择数据类型为Wavefront时才可以使用,局部最小和全局最小,采用阻尼最小二乘法的优化算法是一个很有效的方法。但是,在多维参数空间中,一个复杂的透镜设计几乎包括了无限多个解决方案。阻尼最小二乘法从你的初始结构出发,可能很快就陷进一个局部的评价函数最小的方案,而找不到无限多个解决方案中评价函数最小的那个方案。如果这种情况发生,你所要做的就是进行干预,这些干预小到权重的变化,大到重新的定义初始结构。,为了说明存在无限多个解的情况下,从不同的初始结构出发,同样的优化函数进行优化的时候会得到不一样的局部最小,我们回过去看前面的一个例子:,gradient .zmx,,把第一个面的厚度改为3,其他不变,文件保存为:,gradient1o1b .zmx,设计图:,优化后:,ZEMAX的全局优化工具,ZEMAX提供两种独立的全局优化工具,global search和hammer optimization。它们的用途不同。全局搜索工具的使用是在给出评价函数和初始结构的情况用它来寻找一个新的可能达到全局最小的初始结构。它不能产生最终的设计方案。而锤型优化是在发现了一个好的、合理的结构后,用来寻找最终的设计方案。,全局搜索是用来搜索一个新的、有前途的初始结构的。它会产生10个结构的文件,当搜索到新的结构时,它会和已经保留的10个结构比较,更好则保留。最终会保留10个最好的结构。,锤形优化使用的时候除了保留结构变量时,通常还使用玻璃替换,这样更容易找到比较好的解决方案。,优化实例-cooke镜头设计,技术指标:35mm照相机的标准焦距5052mm,这里我们取52mm。35mm照相机的底片感光区是24mm*36mm,对角线43.3mm,所以最大半视场角=arctan(43.3/2/52)=22.6度。视场角选择0,9,15.8,22.6。镜头的最大F/#设定为3.5。为了提高光圈减小时镜头的性能,透镜优化的时候保证像面在近轴像面上。因为底片对波长0.4微米到0.7微米之间的光最敏感,所以优化的时候采用5种波长,0.45,0.5,0.55,0.6,0.65。,自由度分析:有8个有效的独立变量,6个表面曲率半径和透镜之间的两个空气间隔。透镜的厚度在这个例子中是弱变量,选择的依据是保证透镜容易加工。透镜的玻璃材料也是有效的变量,实际上,玻璃的选择很大程度上决定了最后的性能。光阑移动这里不作为变量,cooke镜头基本是关于中间的负透镜对称的,这样的结构使像差控制容易些。考虑到镜头中实际要加可变光圈,把光阑放在负透镜后面,这里取2mm。,玻璃选择的考虑:镜头肯定要消色差,所以正透镜使用低色散的冕玻璃,负透镜使用高色散的火石玻璃。下面的设计中,为了方便,两个正透镜将使用同一种玻璃材料。为了减少匹兹万和,得到较平的场曲,冕玻璃应选折射率高的,负透镜的火石玻璃应该选折射率低的。高折射率的冕玻璃还有一个好处是可以产生比较小的表面曲率,相应的减少高阶的像差。因为高折射率的冕玻璃比较少,所以一般先选冕玻璃,再挑选合适的火石玻璃与之匹配。因为不考虑消除二级光谱,所以不打算采用反常色散的玻璃材料。首选的玻璃材料我们暂定为LaFN21和SF15,机械渐晕的考虑:这个镜头因为结构简单,F/#比较小,视场角相对来说较大,所以像质不可能非常好,为了改善像质,考虑引入机械渐晕,遮挡一些像差很大很难控制的光线。允许机械渐晕的好处除了提高镜头的性能外,还能减小透镜的尺寸,减少重量和价格。一般来讲,最大视场角50%的渐晕,底片和一般像监视器都察觉不出来,是可以允许的。,初始结构和前期优化,初始结构的思路:1.猜出系统参数的初始值,包括曲率半径、空气和玻璃厚度。2.采用Pick up约束让后面三个表面的曲率半径与前三个表面的曲率半径大小相等,符号相反,让光阑到后元件的空气间隔pick up前半部分的空气间隔。这使系统更对称,对称的结构可以减小横向色差、彗差和畸变。3.玻璃厚度保证方便制造就可以。4.像面选取近轴像面。5.刚开始不用考虑渐晕。,前期优化的思路:1. 前期优化时只设四个独立的变量,前三个表面的曲率半径和前空气间隔。2.使用专门的操作数控制镜头的焦距;控制空气间隔的大小;校正轴向色差。3.添加默认的优化函数,寻找整个视场多个波长情况下RMS点半径最小的解决方案。4.视场权重设置为1,0,1,1。波长的权重设置为1,0,1,0,1。,参考例子:,cooke1o1b.zmx,。优化后的文件,cooke1o1a.zmx,前期优化的优化函数:,中期优化,中期优化的思路:1. 把所有曲率半径、空气厚度都设置为变量,像平面依然选择近轴平面。2. 引入渐晕因子。3.使用5个操作数,校正焦距;0.8入瞳环带的轴像色差;边缘视场的横向色差;0.9入瞳环带的球差;边缘视场的畸变。除此外,还要添加默认的优化函数。4.因为主要是消除单色波长的像差和极端波长的色差,波长权重设置为0,0,1,0,0,视场权重设置为0,1,1,1。,优化过程中,每次优化后,系统参数会变化,会影响渐晕的尺寸和形状,所以每次优化后都要重建默认的优化函数,再优化。,参考文件,cooke2o1b.zmx,,优化后的文件,cooke2o1a.zmx,中期优化的优化函数:,把SF15玻璃设成可替换,hammer优化,找到最合适匹配LaFN21的火石玻璃。参考文件:,cooke2o1a-sf53.zmx,最后的优化,最后的优,化的思路:分两个阶段,第一个阶段优化像面上的多色光最小RMS点半径,第二个阶段优化出瞳处多色光的最小OPD。最后比较这两个阶段的结果,选取好的一个。,第一阶段1.先修改透镜的厚度。2. 去掉渐晕因子,使用硬光阑渐晕。3.使用4个操作数,校正焦距;0.8入瞳环带的轴像色差;0.9入瞳环带的球差;边缘视场的畸变。除此外,还要添加默认的优化函数。4.因为主要是消除单色波长的像差和极端波长的色差,波长权重设置为1,1,1,1,1,视场权重设置为0,5,5,1。5.加入光线瞄准6.构建默认优化函数时,采用Rectangular ray arrays算法。,参考文件,cooke3o1b-sf53.zmx,,优化后的文件,cooke3o1a-sf53.zmx,最后优化第一阶段的优化函数:,第二阶段1.先修改透镜的厚度。2. 去掉渐晕因子,使用硬光阑渐晕。3.使用1个操作数,控制边缘视场的畸变。除此外,还要添加默认的优化函数。4.因为主要是消除单色波长的像差和极端波长的色差,波长权重设置为1,1,1,1,1,视场权重设置为4,3,2,1。5.构建默认优化函数时,采用Rectangular ray arrays算法。,参考文件,cooke4o1b-sf53.zmx,,优化后的文件,cooke4o1a-sf53.zmx,F/#3.5时的MTF,F/#8时的MTF,最后优化第二阶段的优化函数:,公差分析,简单介绍,公差分析是完成光学系统设计之后非常重要的一个步骤。因为没有一个光学零件是完美加工或者一个系统是能完美装配的,公差分析的意义在于保证设计的性能在可接受的前提下,给零件和组装分配可加工可装配的公差,使得纸上的设计可以真实的实现。ZEMAX提供了使用简单,但灵活强大的公差分配和分析能力。ZEMAX提供单个零件的结构参数的公差,包括曲率、厚度、位置、倾斜、偏心、折射率、阿贝数、其他参数的公差;也支持表面或镜头组的偏心、倾斜等的分析,ZEMAX分配公差时,有很多可选择的评价标准,包括RMS点半径、RMS波前差、MTF曲线、标准误差、用户自定义评价函数等等,ZEMAX提供三种分析方式来分析公差,包括灵敏度分析、反灵敏度分析和monte carlo分析。,基本流程,1.先给镜头定义一批适当的公差。默认的公差工具是好的起始点。然后在公差编辑器中定义你需要的其他公差操作数或是修改已有的公差操作数。,2.添加补偿操作数,默认的补偿是后焦距,控制像面的位置。也可以定义其他的补偿操作数,3.选择合适的评价标准,比如RMS点大小、MTF等,4.选择分析模式,灵敏度分析或反灵敏度分析,执行公差分析,5.根据分析结果放松或收紧公差,6.返回执行第4步,直到公差合适,而且评价标准的变化在你接受的范围内。,默认的公差分配工具,左边部分是单个表面的公差分配,右边是元件的公差,表面倾斜公差的分析,表面的偏心和倾斜都会让透镜变得有楔角,使得元件的光轴与机械轴不同心。所以一般不用同时给表面设定偏心和倾斜。而且一个元件是不是需要给两个表面同时指定倾斜公差这个跟元件的基准轴选择有关。而装配时,应该保证元件的基准轴与镜筒的基轴轴重合,它们的不重合度就是单个元件组装时的偏心和倾斜。,灵敏度分析,灵敏度分析常用来查看哪些公差需要被放松,哪些公差需要收紧。进行灵敏度分析时,会把每个公差的最大值或最小值单独的带入系统,其他的参数保持不变,这时计算出这个参量变化后你所选定的评价标准的变化。然后把每个参数变化时,评价标准的变化给出来。让你看到哪些参数的公差对评价标准的影响更严重,指导你有意的收紧那些参数的公差。,完成所有参数单独的公差计算后,ZEMAX还会给出计算的统计变化,给出评价标准可估计的变化和相应的可估计结果。这个可估计的变化的计算,采用的是RSS算法。先把某个参数使用正公差时的评价标准的变化量平方,然后加上这个参数使用负公差时评价标准的变化量的平方,然后求平均值。然后把所有设定了公差的参数的这个平均值加起来求和,开方。,反灵敏度分析,反灵敏度分析有两种:limit和increment。第一种是根据你限定的评价标准所允许的最大值来计算每个参数的公差范围,比如你的评价标准是优化函数,它现在的值是0.5,考虑公差时,你希望它的最差结果是0.7,那么反灵敏分析会计算每个参数的公差范围,保证优化函数不会大于0.7,第二种是根据你限定的评价标准所允许的最大增量来计算每个参数的公差范围,比如你的评价标准还是优化函数,它现在的值是0.5,考虑公差时,你允许它的最大增量为0.2,那么反灵敏分析同样会计算每个参数的公差范围,保证优化函数不会大于0.7,Monte carlo分析,蒙特卡罗分析是考虑所有公差同时存在时,评估系统性能的一种方法。每一次计算时,所有参数的公差同时随机的扰动,在这种状态下计算出性能的变化。这种计算会重复很多次(每次都是独立的),也就是说每次计算时,参数都有不同的一系列随机误差,这样就能模拟大批量生产时,你的设计的性能变化。,蒙特卡罗分析的计算次数肯定是越多越准确,但是越多就越慢。,蒙特卡罗分析时,有四种统计方式来统计评价标准的变化。这四种统计方式是:正态分布、均匀分布、抛物线分布和用户自定义分布。手册里有这几种统计方式的详细说明。,公差分析实例,我们以tessar镜头的公差分析为例,例子:,tessar.zmx,。使用默认的公差分配工具:,删掉红框标出的六个公差操作数,另外删掉表面1和表面9的厚度公差操作数,灵敏度分析:,结果:,反灵敏度分析:,结果:,蒙特卡洛分析:,结果:,物理光学传播,物理光学传播介绍,几何光线追迹并不是光传播的完整描述,严格的说,光的传播是一个相干的过程。ZEMAX的物理光学传播就是模拟波前相干传播的工具。,物理光学传播可应用于光纤耦合、通过任意类型光空间的衍射传播、根据像差计算最佳束腰位置的偏移,以及一个光学面上的光通量和辐射度、分析激光光束通过光学系统后的传播等方面。,物理光学传播的第一个例子:,Anamorphic Beams.zmx,,这个文件演示的是光束通过失真棱镜的情况。设计图和物理光学传播图:,物理光学传播图的设置:,初始的高斯光是对称的,束腰直径4微米,束腰位置在第一个面上,可以使用剖面图对这个失真光束进行更详细的分析。Settings-display-show-cross x,可以使用Text来生成一个文本格式的摘要来显示更详细的数据。,物理光学传播的第二个例子:,fiber coupling.zmx,,这个文件演示的是光纤耦合的计算。耦合效率达到99.995%,从高斯光的定义我们可以看到初始的高斯光束腰是2mm,通过透镜后的新束腰是0.0079578mm。,通过POP窗口的Fiber data对话框我们可以看到接收光纤是如何定义的,这里接收光纤的模式是高斯型的,束腰大小是8微米。十分接近新束腰的大小。,当光束的模式和光纤的模式在振幅和相位上都匹配时,可以获得最大的接收效率T=1.0。模式、相位的任何偏差都会降低接收效率。光学像差通常会引入相位变化,减小接收效率。,另外,渐晕、边界反射和体吸收会减小系统效率。,耦合效率=系统效率*接收效率,当我们改变接收光纤,把束腰大小改成0.004mm时,重新计算耦合效率,结果效率降低了。,物理光学传播的第三个例子:,cibbs phenomenon.zmx,,这个文件演示了均匀光束通过光栏时产生的近场衍射现象。透镜数据编辑器数据如下:,透镜数据编辑器里只有三个面,物面无穷远,系统光阑面的半径0.1mm,是个固定的硬边孔径,表示一个半径0.1mm的圆孔,光只能从孔通过。像面在系统光阑面后面0.2mm处,近场范围内。,物理光学传播的设置里,我们定义一个束腰0.1mm的top hat类型的光源,看看它通过系统后的衍射情况。,我们定义的top hat光源:,显示通过光阑前的top hat光束,需要设置:,通过光阑后的衍射表现:,显示通过光阑后的top hat光束,需要设置:,物理光学传播的第四个例子:,pinhole aperture .zmx,,这个文件演示了高斯光束通过空间滤波器的情况。透镜数据编辑器数据如下:,第五个面上设置了一个针孔,打开它的surface properties,可以看到它设置了一个硬光栏,直径6微米。我们来看高斯光束的变化,初始高斯光,通过针孔前的高斯光,通过针孔后基波,通过针孔后光束的总能量显著减少,原来1瓦,减小到现在的0.18,物理光学传播的第五个例子:,lenslet array.zmx,。物理光学传播并不仅限于光束在简单的镜头上的传播,也可以用于诸如镜头阵列这样的复杂光学元件上。,透镜阵列,物理光学传播,近轴高斯光传输,用一个例子演示近轴高斯光的传输,,paraxial gaussian.zmx。,近轴高斯光的设置:,定义波长,定义M平方因子,定义M2=1.0时的束腰半径,定义束腰到第一个面的距离,束腰在第一个面左边为负,6.7mrad,M2=1.2,w=0.532*1.2/3.1415926/3.35=0.0606594,w0=w/sqrtM2=0.055374215,使用,ZBF文件定义高斯光,Zemax的Physical optics propagation中可以用二进制的User defined table文件来定义高斯光束,这种二进制文件的扩展名为ZBF。,Zemax中ZBF文件的格式如下:(整型变量占4个字节,双精度型变量占8个字节),1 integer:格式版本标志,通常为0。,1 integer:x方向采样点数(nx),1 integer:y方向采样点数(ny),1 integer:是否偏振的标志,0表示非偏振,1表示偏振,1 integer:单位,0表示mm,1表示cm,2表示inch,3表示meters,4个整数:通常没有什么用,保留变量,可以是任意值,1 double:x方向的采样点间隔,1 double:y方向的采样点间隔,1 double:高斯光束束腰的z方向位置,1 double:高斯光束的瑞利距离,1 double:光束的波长,与透镜数据的单位相同,1 double:高斯光束的束腰大小,1 double:接收器的效率。如果不需要计算光纤耦合的话,这个变量的值为0,1 double:系统的效率。如果不需要计算光纤耦合的话,这个变量的值为0,3个 double:通常没什么用,保留变量,可以是任意值,2*nx*ny double:Ex的值,从-x,-y开始,走过每一个x行。每个数列项都存储了实部和虚部的数据。如果光束是偏振的,还有一个2*nx*ny double定义Ey,注意:Ex和Ey的定义使得Ex*Ex+Ey*Ey的单位是watts(瓦特)。如果标志单位的变量表明光束的单位与当前透镜数据的单位不一样,Zemax在读入ZBF文件的时候会自动把光束缩放到透镜数据的单位。,如何生成ZBF文件,在Visual C+6.0里新建一个控制台程序,选择空的工程项目,finish,:,在Visual C+6.0环境下编译sample_zbf_program.cpp的时候要删除第一个头文件#include “stdafx.h”,这是C+的一个头文件。,点击Source Files右键菜单Add Files to Folder,添加zemaxPOPBEAMFILESsample_zbf_program.cpp,编译,生成.ZBF文件,把它拷贝到/ZEMAX/POP/BEAMFILES下面,就可以在POP对话框里选择.zbf文件作为你对高斯光的定义。,ZEMAX的热分析,*光学系统需要热分析,有三个因素:1.玻璃的折射率依赖于温度和波长,相对折射率也随压力的变化而变化。2.玻璃会随温度的变化而膨胀或收缩。3.透镜和透镜之间的间隔会因为材料的热胀冷缩而改变。,*用户可以在general-environment里设定温度和压力。默认是20摄氏度,1个标准大气压。采用默认设置可以加快折射率的计算速度,*ZEMAX中默认进行热分析的时,是把同一温度和压力应用于系统的每个表面,每一部分。然而,ZEMAX也支持在同一
展开阅读全文