首先介绍Zemax用户界面的序列模式 (Sequential mode) ,然后重点介绍如何使用系统选项 (System Explorer) 和镜头数据编辑器 (Lens Data Editor) 正确设置单透镜,还解释了如何使用求解 (Solves) 来强制设计约束。
在第2部分中,将讨论一些可用于系统性能的分析;第3部分中,将讨论如何优化单透镜,使其在设计约束下获得更好的性能。
接下来我们将设计和优化一个玻璃材料为N-BK7, F数为4的单透镜。最终设计方案应满足以下规格和约束条件:
规格 | 约束 |
---|---|
焦距 | 100mm |
半视场角(SFOV) | 5° |
波长 | 632.8 nm (HeNe) |
单透镜中心厚度 | 在 2 mm – 12 mm 之间 |
单透镜边缘厚度 | 大于 2 mm |
优化标准 | 全视场 RMS 均方根半径平均值 |
物体位置 | 无穷远 |
镜头数据编辑器里边主要由这些类型的参数,其含义如下:
列名称 | 描述 |
---|---|
表面类型 (Surface Type) | 表面类型(标准面 (Standard) 、偶次非球面 (Even Aslphere) 、衍射光栅 (Diffraction Grating) 等) |
标注 (Comment) | 用于输入特定表面注释的可选区域 |
曲率半径 (Radius) | 镜头单位定义的表面曲率半径(曲率的倒数) |
厚度 (Thickness) | 镜头单位定义的厚度,区分当前和其后表面顶点 |
材料 (Material) | 材料类型(玻璃、空气等),区分当前面与其后的面 |
净口径 (clear Semi-Diameter) | 镜头单位定义的表面孔径的半尺寸 |
镜头数据编辑器中的每一行表示一个表面。在Zemax序列模式中,每个光学系统从物面 (OBJ) 开始,到像面 (IMA) 结束。除了物面和像面外,剩余表面中的一个表面必须定义为光阑 (STOP) 。
通过在高亮单元格中键入所需的值,可以将数据输入到镜头数据编辑器中。光标键或鼠标可以将高亮栏移动到所需的任何一栏。
大多数情况下,系统孔径是开始新设计时定义的第一个参数。系统孔径不仅决定了Zemax将通过光学系统光线追迹的光束的大小,还决定了物面上每个视场点发出光线的初始方向余弦。系统孔径可由多种类型定义,包括入瞳直径 (EPD) 、像方空间F/#、物方空间NA、光阑尺寸浮动 (Float By Stop Size) 等。
每种类型都在Zemax帮助文件对应部分有更详细的定义:“设置选项卡 (The Setup Tab) >系统组 (System Group) >系统选项 (System Explorer) >系统孔径 (Aperture) ”。
入瞳直径可能是最常用的系统孔径类型,也是最方便的定义。在Zemax中,入瞳直径被定义为从物空间看到的光瞳直径,以镜头单位为单位。
我们可以很容易地确定单透镜所需的入瞳直径。如前所述,单透镜的F/#必须等于4,有效焦距为100mm。由于F/#为无限共轭的近轴有效焦距与近轴入瞳直径之比,因此入瞳直径为25mm:
F/#=efl / EPD
F/#=EFL/EPD (EFL:有效焦距,EPD:入射瞳孔径)
作用:用来决定镜头之明暗。 备注:在保证同样通光孔径的前提下,焦距越短相对孔径应越小。
在系统选项的系统孔径 (Aperture) 选项卡下,选择入瞳直径 (Entrance Pupil Diameter) 作为孔径类型 (Aperture Type) ,输入孔径值 (Aperture Value) : 25.0.
在系统选项 (System Explorer) >单位 (Units) ,选择镜头单位 (Lens Units) :毫米。
OpticStudio 支持五种不同的模型来定义视场:
视场类型 | 说明 |
---|---|
角度( Angle )(以度为单位 | 主光线相对于物方空间Z轴的角度。根据定义,主光线穿过入瞳中心,因此测量了入瞳中心的视场角。正的视场角是指该方向光线为正斜率,因此指向远处的物体坐标为负。这个选项在无限共轭时最有用。 |
物高( Object Height ) | X和Y高度直接作用于物面 (OBJ) 的位置。高度单位为镜头单位。此选项不能在无限共轭情况下使用。 |
近轴像高( Paraxial Image Height ) | 像面上的近轴像高位置。这个选项对于固定框架尺寸的设计非常有用,例如照相机系统中的胶卷。这个选项只适用于可用近轴光学很好描述的系统。 |
实际像高( Real Image Height ) | 像面上的实际像高。这个选项对于固定框架尺寸的设计也很有用。但是,由于OpticStudio必须使用迭代方法来确定像平面上主光线的真实光线坐标,因此使用此选项的光线追迹稍微慢一些。 |
经纬角( Theodolite Angle ) | 极坐标角表示的水平角 θ 和 竖直角 φ ,以度为单位。这些角度通常用于测量和天文学。 |
在系统选项中的视场数据 (Field Data) 对话框中定义。要访问视场数据对话框,请在系统选项中选择视场 (Fields) ,打开视场数据编辑器 (Open Field Data Editor) :
为了实现单透镜设计的目的,我们将用角度定义视场。与使用单个视场表示水平视场角 (HFOV) 不同,三个视场将在5°范围内定义:(0,0)、(0,3.5)和(0,5)。
Zemax标准版的视场数据编辑器最多可以输入12个视场。每个视场中都可以设置一个权重,这在优化中非常有用。但是,出于本设计的目的,所有视场权重都保留为1。在视场数据对话框的前三项中输入三个视场,如下所示。要插入其它视场,可以使用键盘上的键,或者<右键单击>并选择插入视场 (Insert Field) 。
这个实例设计的是单色光,选择系统选项 (System Explorer) 访问波长 (Wavelength) ,再双击设置 (Settings) 。从下拉菜单中选择HeNe (.6328) ,然后按下“选为当前 (Select Preset) ” 选择当前设计波长。Zemax中的波长总是以微米为单位输入的,而不考虑系统的镜头单位。保持权重为1。
一旦确定了系统设置,就可以将每个表面的特定信息输入镜头数据编辑器 (Lens Data Editor) 。重申一下,镜头数据编辑器中的每一行表示一个表面。因此,由玻璃分隔的两个表面组成一个单独的元件。因此,对于单透镜,总共需要4个表面:
①物面 (OBJ) :光线发出的位置。
②透镜的前表面:光线进入透镜的地方。对于这个设计,这里也是光阑 (STO) 。
③透镜的后表面:光线从后表面射入空气。
④像面 (IMA) :光线追迹停止的位置(始终是最后一个表面)。
默认情况下,镜头数据编辑器中只包含三个表面。可以通过按键盘上的 ,或通过在表面上<右键单击>并选择插入表面 (Insert surface) ,将表面添加到镜头数据编辑器中。使用此方法,将在高亮光标当前所在的行之前添加一个表面。要在当前表面之后添加另一个表面,按下键盘上的
由于光阑位于单透镜的前表面,所以在表面1之后插入另一个表面(表示透镜的后表面)。
镜头数据编辑器中的标注 (Comment) 列对于跟踪每个表面表示的内容非常有用。要为一个表面输入注释,请高亮该单元格,并键入所需的文本。完成后,点击或使用箭头键将光标移动到另一个单元格。在设计进程中编写注释是一个很好的习惯。对于单透镜,通过在镜头数据编辑器中的每个适当单元格中键入以下文本来标识每个表面。
单透镜由N-BK7玻璃制成。在Zemax中,材料用于区分透镜前后表面。想通过输入材料类型来区分两个表面,只需在透镜数据编辑器中的适当单元格中键入材料名称(本例中为N-BK7)。
一旦将玻璃类型输入到透镜数据编辑器中,单片透镜的透镜厚度就可以输入到表面1 (Surface 1) 的厚度栏中。由于厚度是沿光轴到下一个表面的距离,这就称为透镜元件的中心厚度。作为起始点,可以使用4 mm的厚度,因为它是孔径为25 mm透镜的合理中心厚度。在表面1的厚度列中键入值:4。注意,这个参数稍后将被设置为优化变量。
同样,第一个表面的曲率半径和透镜后表面与像面之间的厚度不需要预先确定,因为它们将被设置为优化变量。目前,我们将保持表面1的曲率半径为无穷大,并将表面2的厚度更改为100mm。将值100输入到表面2的厚度列中。
当光学设计存在约束时,保持这些约束的方法有两种:
①将影响这些约束的参数设置为变量,并将边界约束添加到评价函数编辑器 (Merit Function Editor) 中;
②使用内置的求解功能来执行约束,消除不必要的变量。
后一种选择要好得多。虽然这两种方法都可以调整透镜参数以保持特定的约束,但边界约束会减慢评价函数的执行速度。
Zemax中有许多不同的求解类型,每个求解类型都有特定的用途。然而,该设计的性能指标只要求使用其中一个求解类型:设置系统F/#以保持所需的焦距。要打开求解对话框,可以单击所需单元格右侧的较小单元格。基于所选择的参数,可以使用不同的求解类型。
为了保证系统F/#,可以在表面2的曲率半径上放置F数求解 (F Number solve) 。F数求解调节最后一个光学表面的曲率以保证系统焦距。单击表面2的曲率半径单元格右侧的框,打开曲率求解 (Curvature solve dialog) 对话框。选择求解类型 (Solve Type) :F数 (F Number) 并输入F/#: 4,并按Enter。
一旦设置了F数求解,Zemax将自动调整半径,以保持所需的F/#。换句话说,只要改变透镜参数,系统就会自动重新计算一个解。曲率半径旁边的字母“F”表示F数求解设置已完成。
每输入一个值,都可以Enter确保这个值输入完成。