序列模式下的全新复合表面能使用户能够添加多个表面的矢高轮廓,最终实现具有复杂矢高分布的新光学表面。如果用户想要将不同类型的矢高分布叠加到一个表面,则可以使用新表面对应的复合堆叠功能实现。此功能将启发模拟分析中的无限可能性,涵盖分析、公差等多个环节。
在本文中,我们将解释复合表面的工作原理,然后将其功能应用于在手机摄像头模组中,对复杂非球面透镜进行公差分析。
如图 1 所示,可以使用“表面属性”中的“复合表面:添加矢高至下一表面 (composite surface: add sag to the next surface)”复选框启用复合表面属性:
图 1. 复合表面属性设置界面
复合表面允许将任意数量的表面添加在一起,这些表面称为“复合组件表面 (composite add-on)”,或简称为“组件面”。算法将把组件面的矢高轮廓将添加到下一个组件面上,总矢高最终将添加到镜头数据编辑器(lde)中的下一个表面中,该表面称为“复合基础表面 (composite base)”,或简称为“基面”,紧随组件面之后。然后,基面矢高将是所有附加矢高及其基面矢高的总和。组件表面和基面的矢高总和称为“复合堆叠 (composite stack)”。如图 2 所示,组件面行颜色为浅黄色,基面行显示为亮黄色。
图 2. composite add-on, composite base and composite stack
我们可以发现,不能为组件面设置材料和膜层,因为它仅用于将矢高分布提供给复合基面而不起其他任何作用。组件面的材料和膜层性能将跟随基面的属性。另一个重要的点是无论为复合组件面设置怎样的孔径,当算法计算矢高分布时,复合组件面的孔径都将被认为与基面相同。
在光线追迹中,光线仅考虑在基面所表达的总表面矢高,组件面不直接参与光线追迹。
基面的矢高图将显示包含所有复合组件面的总矢高,而不是仅显示基面的矢高。
复合表面可支持的表面类型如下所示,组件面和基面所支持的表面类型相同:
双锥面(biconic)
双锥 zernike(biconic zernike)
切比雪夫多项式 (chebyshev polynomial)
偶次非球面(even asphere)
扩展非球面(extended asphere)
扩展奇次非球面(extended odd asphere)
扩展多项式(extended polynomial)
网格矢高面(grid sag)
不规则面(irregular)
奇次非球面(odd asphere)
奇次余弦面(odd cosine)
离轴圆锥自由曲面(off-axis conic freeform)
周期面(periodic)
多项式面(polynomial)
q型非球面(q-type asphere)
q型自由曲面(q-type freeform)
标准面(standard)
超圆锥面(superconic)
倾斜面(tilted)
环形面(toroidal)
zernike fringe 矢高面(zernike fringe sag)
zernike 标准矢高(zernike standard sag)
zernike 环形标准矢高(zernike annular standard sag)
如果要将不同类型表面的矢高分布添加到一个表面,可以将多个附加表面添加为复合堆叠。
在下面的示例中(图 3 所示),通过将组件面 4 添加到基面 5 形成 roc(曲率半径)= -500mm的抛物面反射镜,另一个组件面 3 为表面矢高增加了 zernike 项的扰动。
图 3. 使用复合表面建模的抛物面反射镜
可以从以下视图中看到,启用组件面(图4 (a))后,布局图将显示复合堆叠的总矢高,而不显示单个组件面矢高。在图4 (b) 中忽略所有附加表面的情况下,布局图中将仅显示基面(因此系统现在明显失焦)。
图4.(a)启用组件面的抛物面反射镜系统 (b)忽略组件面的抛物面反射镜系统
添加复合表面后,有几个用户友好的工具可以使用。
忽略单个组件面
如图 5 所示,选中“忽略此表面”复选框时,该组件面对复合表面的矢高贡献将被忽略,行的颜色将变为深灰色。
图 5. 忽略单个组件面
如果要忽略或启用系统中的所有复合表面,可以在镜头数据编辑器上方的工具栏中用两个按钮来轻松控制。
忽略复合表面/启用复合表面
图 6. 忽略所有复合表面
图 7. 启用所有复合表面
隐藏/取消隐藏/删除所有复合表面
在右键单击菜单中,有三个选项可帮您根据需要轻松处理复合表面。
图 8. 隐藏/取消隐藏/删除所有复合表面
我们可以使用 分析…偏振与表面物理…表面 (analyze…polarization and surface physics…surface) 中的矢高图功能来查看表面的矢高分布,以下是关于复合表面矢高图的一些分析:
选择“不移除”:矢高图将显示所选表面之前的所有组件面的总和。
选择“移除复合矢高”:单独绘制选定基面的矢高。
选择“移除基底矢高”:仅显示应用于此表面的所有组件面矢高的总和。
在下面的示例中,如图 9 (a) 所示,表面 3 和 4 是组件面,表面 5 是基面。复合表面矢高图,图9 (b)~(g) 解释了上述与复合表面的矢高关系。
图 9(a). 用于解释复合表面矢高图的手机镜头系统示例
如图9 (b)~(d) 所示,当使用“不移除”时,矢高会逐行加起来:
图 9(b)
图 9(c)
图 9(d)
如果要单独显示某组件面的矢高,可以使用“移除复合矢高”或“移除基本矢高”,如图9 (e)~(g) 所示:
图 9(e)
图 9(f)
图 9(g)
复合表面也可以应用于离轴系统的建模。
图 10. 离轴反射式系统
如果单击组件面的 “composite” 选项卡中的“设置倾斜/偏心用于追随基面孔径 (set tilt/decenter to follow base surface aperture)”按钮,则组件面将自动在基面的离轴孔径上居中。点击按钮后 opticstudio 会自动填充复合选项卡中的倾斜和偏心,以便组件面的矢高堆叠处于基面离轴孔径的中心。其中,偏心与顶点位置匹配,而倾斜与离轴孔径中心的基面旋转方向匹配。
图 11. “设置倾斜/偏心用于追随基底表面孔径”和“更新倾斜”按钮
对于复合堆叠,“设置倾斜/偏心用于追随基底表面孔径光圈” 按钮将用于基底之前的最后一个组件面,并且复合堆叠中的所有组件面将具有相同的倾斜/偏心属性,即复合堆叠将具有相同的坐标系。请注意,复合堆叠的倾斜/偏心只能在最靠近基面的组件面上看到,其中“设置倾斜/偏心用于追随基底表面孔径光圈”按钮可以使用,对于所有其他组件面,这个按钮将显示为灰色。
如果用户手动更改偏心值,则可以使用“更新倾斜 (update tilt)”按钮(如图 11 所示)自动填充更新后倾斜值,以便组件面的旋转方向与指定偏心处的基面相匹配。
在公差分析方面而言,上面的讨论中我们知道可以使用复合表面的 composite 属性设置手动添加不规则度和公差。
此外,复合表面扩展了现有 tirr、texi 和 tezi 操作数的功能,以前这三个操作数只能用于对以下表面进行公差分析:
图 12. 之前tirr、texi和tezi仅用于有限的表面类型
现在得益于复合表面,任何可以成为复合基面的表面类型都可以使用这三个操作数来执行公差分析请注意,tirr、texi 和 tezi 的扩展功能不包括对离轴孔径的支持)。
对于符合条件的表面类型,tirr 操作数将使用不规则面作为复合表面对这些表面进行公差分析;texi 操作数将使用 zernike fringe 矢高面作为复合表面对这些表面进行公差分析;tezi 操作数将使用 zernike 标准矢高面作为复合表面对这些表面的公差进行分析。
我们以图 13 所示的手机镜头设计为例。
图 13. 手机镜头系统示例
公差数据编辑器(tde)填充了手机镜头表面 3 和 4 的 tezi 操作数。之前 tezi 不能直接与 q 型非球面一起使用,但现在您可以直接在 tde 中进行设置并使用以下公差功能,如图 14 所示。
图 14.在q型非球面上使用 tezi 操作数进行公差分析
当我们运行公差分析并保存蒙特卡罗文件时,您可以轻松检查公差结果。
图 15. 蒙特卡罗分析设置
我们还可以打开一个蒙特卡罗随机文件来验证并更好地了解操作数如何向表面添加不规则度。如图 16 所示,q 型非球面上增加了一个复合组件面,该表面带有 tde 中指定的 zernike 标准矢高扰动项。
图 16. tezi 操作数使用 zernike 标准矢高复合表面对 q 型非球面表面进行公差分析
后续我们将继续更新文章来解释上面使用的手机镜头系统设计,请持续关注[武汉宇熠]。
为复合表面添加了,iscompositesurface 和 setoffaxistiltanddecenter() 两个新的 api 命令。
iscompositesurface 用于此参数的 sets 和 get 值。setoffaxistiltanddecenter() 根据离轴表面孔径中心的复合表面基面法线矢量计算得出所需填充的恰当属性值。
下面提供一个 python 代码的示例片段供参考:
thesystem = theapplication.primarysystem;
thelde = thesystem.lde
# get surface j information
compositetest = thelde.getsurfaceat(j)
# check “composite surface:add sag to the next surface”
compositetest.compositedata.iscompositesurface=1
# press “set tilt/decenter to follow base surface aperture” button
compositetest.compositedata.setoffaxistiltanddecenter()
# extract composite surface tilt/decenter value
compositetiltx=compositetest.tiltdecenterdata.beforesurfacetiltx
compositetilty=compositetest.tiltdecenterdata.beforesurfacetilty
compositetiltz=compositetest.tiltdecenterdata.beforesurfacetiltz
compositdecenterx=compositetest.tiltdecenterdata.beforesurfacedecenterx
compositdecentery=compositetest.tiltdecenterdata.beforesurfacedecentery
# change the tilt/decenter values manually
compositetest.tiltdecenterdata.beforesurfacetiltx = 0
compositetest.tiltdecenterdata.beforesurfacedecentery = 0
还有用于复合表面的新 zpl 宏命令。
compositeon(surface number) – 关键字
compositeoff( surface number ) – 关键字
compositeoffaxisapertureon ( surface number ) – 关键字
iscs(surface number) ->returns 1|0 – 数值函数
iscs() 当表面不是复合表面时将返回 0,如果表面是复合表面则返回 1。
有关这些命令的详细信息,请参阅帮助文件。提供了一些示例代码供参考:
! uncheck the composite surface checkbox
print “turn off composite surface j”
compositeoff j
a = iscs(j)
! iscs () return 0 if it’s not composite surf., return 1 if it’s composite
surf.
if (a < 0.5)
print ” ==> composite surface flag is off”
else
print ” ==> composite surface flag is on”
endif
! check the composite surface checkbox
print “turn on composite surface j”
compositeon j
a = iscs(j)
if (a > 0.5)
print ” ==> composite surface flag is on”
else
print ” ==> composite surface flag is off”
endif
! press the “set tilt/decenter to follow base surface aperture” button
print “set tilt/decenter to follow base surface aperture”
compositeoffaxisapertureon j
print ” ==> click tilt/decenter to follow base surface aperture
button”
本文介绍了 zemax opticstudio 22.3 和 ansys zemax opticstudio 2022 r2.02 中的复合表面功能。它扩展了 opticstudio 中的许多新功能和可能性,希望它能帮助您更加高效工作,期待您的反馈!