Zemax单透镜与tfcalc六层膜系:应用光学上机实验设计闭环

发布时间:2026/10/28 19:46:14
Zemax单透镜与tfcalc六层膜系:应用光学上机实验设计闭环

简介:《应用光学实验报告 上机实验》是一份面向大学光学课程学生、实验课教师及自学光学设计软件者的实验报告文档,围绕Zemax透镜设计与tfcalc光学薄膜分析两项上机任务展开,可用于对照实验流程、理解软件参数设置与结果判读。文档完整记录实验目的、操作过程、结果图表与简要分析:前一部分涉及F/4、焦距100mm、BK7玻璃的透镜设计,包含波长与孔径设定、曲率半径和厚度调整,以及光线特性曲线、光程差曲线、点列图和简单优化;后一部分涉及多层薄膜的层数与材料配置,并给出400—700nm与700—1200nm波段的透射、反射曲线说明。资源包仅含1个doc文件,大小约695KB,轻量便于查阅。目前已有596人学习,适合需要参考实验报告结构、图表判读方法和薄膜设计思路的读者。

1. 一份 F/4 单透镜加六层膜系,为什么能把应用光学上机实验的分数拉开

应用光学这门课,理论课上把近轴公式推得再顺,一到上机就容易露怯:让设计一个 F/4、焦距 100mm、材料 BK7 的单透镜,孔径直径填成 50mm 的大有人在,出来一屏像差还以为是软件的问题。这份应用光学上机实验报告要交付的其实就是两件事——用 Zemax 把一个双凸单透镜从初始结构调到点列图收敛,用 tfcalc 把六层 SiO2/TiO2 交替膜系的透射反射分区做出来。它适合正在做应用光学上机实验、要交一份能讲清每一步为什么这么填的报告的人,也适合想把光学设计流程完整走一遍的从业者。下面按需求拆解、技术选型、总体设计、模块实现、避坑排查、验收答辩的顺序,把这份方案拆开讲。

2. 需求拆解与技术选型:两个任务、两类软件和三组验收曲线

上机实验最常见的失败不是算错,而是从头到尾没搞清楚「交付物到底是什么」。任务一交的是透镜,验收靠的是光线特性曲线、点列图、OPD 曲线这三组图;任务二交的是膜系,验收靠的是反射率曲线和透射率曲线这一对。搞清楚这一点,软件里该点哪个按钮、该存哪张图,就不会临场慌乱。

2.1 任务一和任务二的交付边界在哪

任务一的输入是四个硬约束:F 数等于 4、焦距 100mm、轴上可见光谱、材料 BK7。输出是一份能从初始结构一路讲到优化收敛的记录,至少包含优化前的光线特性曲线、纠正离焦后的曲线、像差图、OPD 图、多色光焦点漂移图和点列图。这六张图不是凑数的,它们各自回答一个问题:光扇图回答「像差的主要成分是什么」,点列图回答「弥散斑到底多大」,OPD 图回答「波前畸变折合几个波长」,焦移图回答「色差能不能接受」。

任务二的输入更宽松,只要求层数和材料,六层 SiO2/TiO2 交替是教学场景下的标准答案。输出是两条曲线:把分析模式设成「反射」得到一条 R-λ 曲线,设成「透射」得到一条 T-λ 曲线。这两条曲线加上吸收,三者之和恒等于 1,所以只要一条对得上,另一条基本不会错,反过来如果两条加起来明显不等于 1,那一定是材料模型或者入射介质设错了。

把这两个边界写进报告的第一页,后面的每一步操作才有落脚点。我一般会在报告开头列一段「本次实验的验收指标」,把 F 数、焦距、RMS 光斑半径的量级、400–700nm 透射率区间这几项先写死,做完再回头对。这样即使最后结果不够漂亮,至少能说清楚差在哪个指标上。

2.2 透镜为什么走序列模式而不是非序列

Zemax 有两套建模方式,序列模式(Sequential)和非序列模式(Non-Sequential)。单透镜这种光线按表面顺序一路传下去的系统,必须走序列模式,原因有三层。

第一层是光线追迹的可解释性。序列模式里每个表面有明确的序号和光轴,光线在第 1 面折射、在第 2 面再折射、最后落到像面,这个顺序就是近轴公式的物理顺序,出问题时可以一个面一个面地查。非序列模式里光线是三维空间里的自由传播,做照明分析、杂散光分析很合适,但用来做成像系统的像质评价,等于把简单问题复杂化。

第二层是评价函数的可用性。序列模式下 Zemax 自带默认评价函数(Default Merit Function),可以一键生成基于 RMS 光斑或波前差的优化目标,还能自动加上边界约束防止镜片厚度变成负数。非序列模式没有这套东西,优化无从谈起。

第三层是图表的配套。光线特性曲线、点列图、OPD 图、焦移图,这些分析功能都是围绕序列模式设计的。走非序列,连点列图都出不来,报告里那六张图直接缺一半。

所以技术选型上没什么可犹豫的:Zemax 序列模式 + BK7 材料库 + 默认评价函数,这是教学场景下的最优解。

2.3 膜系为什么从六层交替堆起步

光学薄膜的设计空间很大,膜层数、材料组合、每层厚度都是变量。直接上十几层当然能做出更宽的反射带,但对上机实验来说,六层是一个刚好的台阶。

从物理上讲,高折射率材料和低折射率材料交替叠起来,每个界面都会反射一小部分光,当每层的光学厚度是四分之一参考波长时,这些反射光在中心波长处同相叠加,反射率随层数按 (nH/nL)^(2N) 的量级增长。TiO2 的折射率大约 2.35,SiO2 大约 1.46,比值 1.61,六层也就是三对,理论上中心波长反射率能到 85% 上下,反射带的相对宽度大概 30%。这个数字足够在曲线上看出一个清晰的平台区,又不至于层数太多、厚度控制误差把曲线糊掉。

从教学上讲,六层刚好能让学生把「层序、材料、厚度、参考波长」这四个参数的关系理清楚。层数一多,参数之间的耦合就开始变得玄学,调一层牵动全局,上机两小时根本调不完。

从原料上看,实验报告的图七明确写了六层、材料按 SiO2、TiO2 交替排列。这个结构对应的是最经典的 (LH)^3 四分之一波长堆,L 代表低折射率层,H 代表高折射率层,括号右上角的 3 表示重复三对。记住这个记号,后面在 tfcalc 里填参数时就不会把层序搞反。

2.4 两份软件里的参数对照表

把两个任务的参数摊在一张表里,做的时候照着填,比来回翻教程快得多。下面这张表是我自己上机时用的版本,左边是设计指标,中间是软件里对应的输入项,右边是验收时要看到的量。

设计指标软件输入位置验收观测量
F 数 = 4入瞳直径 25mm系统数据里的 Image Space F/#
焦距 = 100mm由曲率半径与厚度共同决定评价函数中 EFFL 操作数的当前值
波长 486/587/656nm波长数据编辑器三行,权重均设 1.0焦移图中三条曲线的轴向间隔
材料 BK7第 2 面 Glass 列折射率应显示 1.5168 附近
镜片厚度 4mm第 1 面 Thickness 列边缘厚度不能为负
后截距约 100mm第 2 面 Thickness 列点列图 RMS 半径最小处
膜系六层交替tfcalc 层编辑器 1–6 层R-λ 与 T-λ 曲线的分区位置
400–700nm 高透分析模式设为 TransmittanceT 曲线在该区间高于 90%
700–1200nm 高反分析模式设为 ReflectanceR 曲线在该区间形成平台

这张表看着朴素,但它解决了一个真实痛点:很多人的报告写到最后,图有一堆,但说不清每张图对应哪个设计指标。有了对照关系,答辩时被问到「你这个 F/4 是怎么保证的」,可以直接指到入瞳直径那一栏。

3. 单透镜设计与优化:从 F/4 参数表到点列图收敛

任务一看起来只是填几个数,实际上每一步都有隐含的判断。曲率半径填 100 和 -100 不是随便写的,它背后是一次薄透镜估算;后截距填 100 也不是终值,它需要在优化里放开。这一章把从参数换算到优化收敛的整条链路走一遍。

3.1 孔径、F 数与焦距的换算

F 数的定义是焦距除以入瞳直径,f/# = f'/D。设计要求 F/4、焦距 100mm,那么入瞳直径 D = 100/4 = 25mm。这个 25mm 是要填进 Zemax 的「Entrance Pupil Diameter」的,不是填光阑面的机械口径。

这里是最容易翻车的地方。有人在光阑面(STO)的 Semi-Diameter 里填 25,以为就是入瞳 25mm,结果 Zemax 算出来的 F 数跟预期对不上——因为光阑面的半口径 25mm 对应的是直径 50mm,F 数变成了 2。正确的做法是在 System Explorer 的 Aperture 页把 Aperture Type 设成 Entrance Pupil Diameter,值填 25,单位毫米。

波长那边,486nm、587nm、656nm 分别对应氢的 F 线、氦的 d 线和氢的 C 线,是可见光谱里评价轴向色差的标准三线。三行权重都设 1.0,意思是三条波长在评价函数里同等重要,这样优化出来的解在可见光范围内是平衡的,而不是只对某一条波长好。如果把 587nm 的权重调高,优化会偏向单色性能,色差会变大。

3.2 初始曲率半径估算与表面数据表

双凸单透镜的初始半径可以用薄透镜公式估一下。对两面曲率半径分别为 R1 和 R2 的薄透镜,焦距满足

1/f' = (n-1)(1/R1 - 1/R2)

把 R1 = 100mm、R2 = -100mm(第二面曲率中心在第一面左侧,符号为负)、BK7 的 nd ≈ 1.5168 代进去,得到 1/f' = 0.5168 × 0.02 = 0.010336,f' ≈ 96.7mm。比 100mm 略短,差了 3% 左右,这个偏差正是留给优化的空间。

厚透镜还要再修一次,因为中心厚度 4mm 不能忽略。考虑厚度的焦距公式在薄透镜基础上多了一项修正项,代入后焦距会再短一点点,落在 97mm 出头。所以初始结构用 R1 = 100、R2 = -100,优化后曲率半径会被拉到 103–106 这个量级,焦距刚好回到 100mm。这个推导过程写进报告,比直接说「我填了 100」有说服力得多。

表面数据按四行填:

面号类型曲率半径厚度材料半口径
0OBJ无限无限——
1STO1004BK7由入瞳决定
2标准面-100100—由光线追迹决定
3IMA无限———

第 1 面既是光阑面又是镜片前表面,厚度 4mm 就是镜片中心厚度;第 2 面到像面之间是空气,厚度 100mm 是后截距的初始猜测;第 3 面是像面,厚度栏留空。材料只填在第 2 面的 Glass 列,因为 Zemax 的约定是「某一面的玻璃」指的是该面之后那段介质的材料。

填完之后先别急着优化,跑一遍光线特性曲线看看量级对不对。这一步能提前发现符号错误——如果 R2 填成了正的 100,镜片变成弯月形,光扇图的形状会明显异常,一眼就能认出来。

3.3 评价函数怎么搭

优化前必须建评价函数。Zemax 的默认评价函数(Tools → Merit Function → Default Merit Function)提供两种判据:RMS 光斑半径和 RMS 波前差。成像系统一般用 RMS 光斑,波前差判据更适合接近衍射极限的系统。

默认评价函数会自动生成一串操作数,但有两件事它管不了,得手动加。第一件是焦距控制,加一行 EFFL(有效焦距),目标值 100,权重设 1。如果不加这一行,优化器有可能把镜片调到焦距 80mm 但球差为零,指标直接跑偏。第二件是边界约束,加一行 MNCT(最小中心厚度)和一行 MNET(最小边缘厚度),防止优化过程中镜片厚度被压成负数或者边缘薄到无法加工。

变量设三个:第 1 面曲率半径、第 2 面曲率半径、第 2 面厚度(后截距)。镜片厚度 4mm 保持固定,因为它牵涉到机械装夹,教学实验里不需要动。

这里给一段 ZPL 宏,用来在优化前后快速核对初始结构的焦距量级,省得反复开对话框看数据:

! chk_singlet.zpl —— 单透镜参数自检 ! 用途:优化前后各跑一次,确认曲率半径没被拉到不合理区间 DECLARE n, R1, R2, d, f_thin n = INDX(2) ! 第2面之后的材料折射率,即BK7的nd R1 = RADI(1) ! 第1面曲率半径 R2 = RADI(2) ! 第2面曲率半径 d = THIC(1) ! 镜片中心厚度 f_thin = 1 / ((n - 1) * (1/R1 - 1/R2)) ! 薄透镜近似焦距 PRINT "R1 = ", R1 PRINT "R2 = ", R2 PRINT "d = ", d PRINT "n = ", n PRINT "薄透镜近似焦距 f' = ", f_thin

这段宏的逻辑很直白:INDX(2)取第 2 面之后的折射率,RADI(1)和RADI(2)取两个面的曲率半径,THIC(1)取第 1 面之后的厚度,然后把薄透镜公式算一遍。参数说明上,面号是从 0 开始数的,OBJ 是第 0 面,所以第 1 面和第 2 面正好对应镜片的前后表面。运行后如果薄透镜近似焦距落在 95–100mm 区间,说明初始结构合理;如果算出 200mm 或者负数,那就是曲率半径的符号填错了。

3.4 离焦纠正与后截距

优化跑完,第一件事是看光线特性曲线。光扇图的横轴是归一化光瞳坐标 Py,从 -1 到 1,纵轴是横向像差,单位微米。如果三条波长的曲线在 Py = 0 处交于原点附近但整体呈抛物线形,说明主要残余是球差;如果所有曲线在 Py = 0 处斜率不为零,像是个斜坡,说明像面不在近轴焦点上,也就是离焦。

离焦的纠正方法很朴素:把第 2 面的厚度(后截距)作为变量再优化一轮,让像面挪到近轴焦点位置。也可以在光扇图里看「Chief Ray」的位置手动微调,但用优化更稳。纠正之后,光扇图在原点附近的斜率会变平,但抛物线的弯曲不会消失——球差是单透镜的固有属性,两面都是球面、没有非球面修正,轴上球差一定存在,只是大小问题。

这里要说清楚一件事:单透镜在 F/4 下不可能接近衍射极限。艾里斑半径 1.22λF,取 λ = 587nm,算出来大约 2.9 微米。而 F/4 双凸单透镜的球差会让 RMS 光斑半径落在几十微米量级,比衍射极限大一个数量级。所以报告里不要写「达到衍射极限」这种话,老老实实写「残余像差以球差为主,优化后弥散斑半径降低约一个量级」,这才是合格负责的写法。

3.5 三条曲线怎么读,指标怎么对照

点列图、OPD 图、焦移图,这三张图各有各的读法,混淆了就会得出错误结论。

点列图看的是弥散斑的几何尺寸。图上会标两个数:RMS RADIUS 和 GEO RADIUS,单位都是微米。RMS 是均方根半径,反映能量集中程度,是主要指标;GEO 是几何最大半径,反映最外围光线偏离多远,受个别边缘光线影响大。优化前的 RMS 半径一般在 80–120 微米这个量级,优化后能压到 20–40 微米。如果优化后 RMS 半径反而变大,八成是评价函数里少了 EFFL 约束,焦距跑飞了。

OPD 图看的是波前畸变,单位是波长(waves)。图上的 PV 值(峰谷值)和 RMS 值直接说明波前质量。轴上单透镜的 OPD 曲线典型形状是中间和边缘相位超前、中间某处滞后,形成一个 W 形或者抛物线形。PV 值在几个波长量级是正常的,如果 PV 值超过十几个波长,说明像差过大,得回头查面型和材料。

焦移图看的是轴向色差。图上横轴是焦点位置,纵轴是不同波长的光斑尺寸或者能量分布。486nm 的蓝光因为折射率高,焦点更靠近透镜;656nm 的红光焦点更远。两个焦点之间的轴向距离就是轴向色差,BK7 的阿贝数大约 64,按 f'/V 估算,100mm 焦距对应的色差约 1.5mm。这个量级写进报告,比单纯贴一张图更有信息量——它说明你不仅会出图,还知道图在说什么。

三条曲线的指标对照关系,我一般整理成这样一句话写进报告:光线特性曲线说明像差成分,点列图给出弥散斑的定量结果,OPD 图给出波前质量的定量结果,焦移图给出色差的定量结果。四者合起来构成一个完整的像质评价闭环,缺任何一张都说不圆。

4. 六层膜系设计与 tfcalc 实现:SiO2/TiO2 交替堆的透射反射分区

任务二看起来比任务一简单,实际上更容易出「图对了但物理错了」的问题。六层膜系的设计参数只有三样:层序、材料、厚度,但每一层的光学厚度都跟参考波长绑死,参考波长一换,整条曲线平移。这一章把膜系结构、厚度计算、曲线读法和容差分析摊开说。

4.1 膜系结构:六层交替的周期设计

六层 SiO2/TiO2 交替,从基底侧数起依次是 SiO2、TiO2、SiO2、TiO2、SiO2、TiO2,也就是 L、H、L、H、L、H。用记号写就是 (LH)^3,三对。

为什么从 L 开始而不是 H 开始,会影响结果。以 L 开始、以 H 结束的堆,在中心波长处的等效导纳是 (nH/nL)^6 乘以基底导纳;反过来以 H 开始、以 L 结束,等效导纳是 (nL/nH)^6 乘基底导纳,反射率会掉一大截。所以在 tfcalc 里填层序时,第 1 层填 SiO2 还是 TiO2,不是随便的,得跟你的设计目标对齐。教学实验给的是 SiO2 起头,那就照填,但报告里最好写一句「层序由等效导纳匹配决定,低折射率层贴近基底可提高中心波长反射率」,这句话是加分项。

参考波长的选择也有讲究。参考波长定在反射带的中心,六层堆的相对带宽约 30%,如果希望 700–1200nm 落在反射区,中心波长应该放在 900nm 往上;如果按 800nm 设,反射带大致覆盖 620–1140nm,700–1100nm 在带内,1200nm 已经开始出带。原料给的结果是 700–1200nm 适合反射,这个描述在 700–1100nm 段是成立的,1200nm 附近反射率会明显回落,报告里如实写「长波端反射率下降」比硬说「全段高反」更经得起追问。

4.2 每层厚度与材料参数

四分之一波长光学厚度(QWOT)的意思是该层的光学厚度 n·d 等于参考波长的四分之一,对应的物理厚度 d = λ0/(4n)。

取参考波长 800nm,TiO2 折射率 2.35,厚度 d_H = 800/(4×2.35) ≈ 85.1nm;SiO2 折射率 1.46,厚度 d_L = 800/(4×1.46) ≈ 137.0nm。六层加起来总厚度约 666nm,这个量级在真空镀膜工艺里完全做得到,常规的电子束蒸发加离子辅助就能控到 ±2%。

材料参数不能只填一个常数折射率,得用色散模型。TiO2 和 SiO2 的折射率随波长变化,在 400–1200nm 这么宽的范围内,用常数折射率算出来的曲线跟实际会差出几个百分点。tfcalc 的材料库里自带常用膜料的色散数据,直接选库里的 TiO2 和 SiO2 就行,不要手填一个 n = 2.35 了事。

下面这段 Python 用来在不打开 tfcalc 的情况下先把厚度和理论光谱算出来,上机前对一遍数,能省不少来回改参数的时间:

# qwot_stack.py —— 六层 SiO2/TiO2 交替膜系的厚度与理论光谱 import numpy as np LAM0 = 800.0 # 参考波长,nm N_IN, N_SUB = 1.0, 1.52 # 入射介质(空气)、基底折射率 STACK = [("SiO2", 1.46), ("TiO2", 2.35)] * 3 # 基底侧起:L H L H L H def qwot(n, lam0): """四分之一波长光学厚度对应的物理厚度,nm""" return lam0 / (4.0 * n) def layer_matrix(n, d, lam): """单层的特征矩阵""" delta = 2 * np.pi * n * d / lam return np.array([[np.cos(delta), 1j * np.sin(delta) / n], [1j * n * np.sin(delta), np.cos(delta)]]) def r_t(lam): """给定波长,返回反射率与透射率""" m = np.eye(2, dtype=complex) for _, n in STACK: m = m @ layer_matrix(n, qwot(n, LAM0), lam) y0, ys = N_IN, N_SUB b = m[0, 0] + m[0, 1] * ys c = m[1, 0] + m[1, 1] * ys r = (y0 * b - c) / (y0 * b + c) t = 2 * y0 / (y0 * b + c) return abs(r) ** 2, (ys / y0) * abs(t) ** 2 for lam in (450, 550, 650, 700, 800, 900, 1000, 1100, 1200): R, T = r_t(lam) print(f"{lam:5d} nm R={R*100:6.2f}% T={T*100:6.2f}%")

这段代码的核心是特征矩阵法。layer_matrix返回单层的 2×2 复数矩阵,delta是相位厚度,等于 2πnd/λ;把六层矩阵连乘得到整个膜系的等效矩阵;再用入射导纳和基底导纳做一次分式变换,得到反射系数 r 和透射系数 t,取模平方就是反射率和透射率。

参数上有两个地方要留意。第一,STACK的排列顺序是从基底侧往入射侧数的,跟 tfcalc 层编辑器里的顺序一致,如果反过来填,光谱会完全对不上。第二,N_SUB填 1.52 是 BK7 的近似值,严格算应该用该波长下的实际折射率,但作为上机前的量级核对够用了。

跑出来的趋势大致是这样:450–650nm 区间透射率在 95% 以上,700nm 附近开始进入过渡带,800nm 中心反射率约 85%,900–1000nm 反射率维持在 80% 以上,1100nm 之后开始回落。这跟原料里「400–700nm 适合透射、700–1200nm 适合反射」的描述基本吻合,唯一需要补充的是长波端反射率不是平台,而是缓降。

4.3 反射率透射率曲线怎么读

tfcalc 里跑完一次分析,出的是单条曲线。要看反射率就把分析量设成 Reflectance,要看透射率就设成 Transmittance,两者加吸收等于 1。R + T + A = 1

读曲线的时候看三个位置:反射带中心、反射带边缘、透射区。中心看极值够不够高,边缘看带有多宽,透射区看波动大不大。六层堆的反射带边缘不是陡峭的台阶,而是有一段过渡斜坡,斜坡的陡度随层数增加而变陡。六层的过渡区大概有 100nm 宽,这就是为什么 700nm 附近透射率会从 95% 掉到 80% 左右。

原料里图八和图九给的是两条互补的曲线,一条设成反射、一条设成透射,波长范围都是 400–1200nm。这两张图放在一起看很有价值:在 550nm 处,T 接近 98%、R 接近 2%,说明这一带几乎全透;在 900nm 处,R 接近 85%、T 接近 15%,说明这一带以反射为主。报告里如果能把这几个关键波长的数值摘出来列成一行,比只贴两张图强得多。

还有一个容易忽略的点:入射介质。tfcalc 里默认入射介质是空气(n = 1.0),基底是玻璃。如果入射介质设错,比如设成了玻璃,整条曲线会反过来。检查方法很简单,看 550nm 处的透射率,如果只有 4% 左右,那就是入射介质和基底设反了。

4.4 工艺容差与监控

膜系设计得再漂亮,镀不出来也是白搭。六层堆的容差分析要看两个量:厚度误差和折射率误差。

厚度误差的影响是让整条曲线沿波长轴平移。每层厚度偏 1%,反射带中心平移约 8nm;偏 2%,平移约 16nm。对 700–1200nm 这个宽度 500nm 的区间来说,16nm 的平移不算致命,但如果你的设计目标是让反射带边缘刚好卡在 700nm,那 2% 的误差就会让边缘跑到 716nm,短波端的透射区被侵蚀一截。

折射率误差的影响更麻烦,它改变的不只是位置,还有反射带的宽度和极值。TiO2 的折射率对沉积工艺非常敏感,电子束蒸发出来的柱状结构致密度不够,折射率可能只有 2.2 出头,比块体材料的 2.35 低 6%。折射率一低,高低折射率比从 1.61 降到 1.51,同样六层的中心反射率会从 85% 掉到 78% 左右。所以工艺上通常会配离子源辅助沉积来提高致密度,把折射率拉回 2.3 以上。

监控方式上,光学监控比晶振监控准。晶振监控的是物理厚度,靠密度换算,误差会累积;光学监控直接测透过率或者反射率的极值点,每层镀到极值时切换,厚度误差能控到 1% 以内。六层这个量级,用光学监控的极值法完全够,不需要上更复杂的宽带监控。

报告里如果能把容差分析写一段,说明「厚度 ±2% 导致反射带平移约 16nm,仍在 700–1200nm 目标区间内可接受」,这一段的含金量比多贴三张图还高,因为它说明你知道设计值和工艺值之间的差距在哪。

5. 避坑与常见问题排查:五个上机现场最容易翻车的点

上机实验的时间是固定的,两个小时里如果卡在某个环节,后面全乱。这一章列五个我自己踩过或者见别人踩过的坑,每条按现象、原因、解决三步写,遇到了直接照着排查。

5.1 现象:F 数算出来是 2 不是 4

现象很直接,系统数据里 Image Space F/# 显示 2.0 或者 1.9,跟要求的 F/4 差一倍。

原因几乎都是入瞳直径填成了 50mm。有人把「光阑面半口径 25mm」直接理解成「入瞳 25mm」,然后在孔径设置里填了 50,或者在光阑面 Semi-Diameter 里填了 25 但孔径类型选的是「Float by Stop Size」,Zemax 按半口径 25mm 反推直径 50mm,F 数就变成 2 了。

解决办法是把 Aperture Type 改成 Entrance Pupil Diameter,值填 25,单位毫米。改完看系统数据里的 F/# 是不是 4.0,同时看有效焦距是不是 100mm 左右。如果 F/# 对了但焦距不对,那是曲率半径的问题,不是孔径的问题,别混在一起改。

5.2 现象:三条波长的焦点完全重合

焦移图上三条曲线叠在一起,看不出轴向色差,跟理论预期不符。

原因通常有两个。一个是波长只填了一行 587nm,另外两条没填,系统当成单色光处理,自然没有色差。另一个是三条波长填了,但权重设置里把 486 和 656 的权重设成了 0,等于它们不参与计算,图上看不到。

解决办法是打开波长数据编辑器,确认三行都有值、Use 列都打了勾、权重都是 1.0。填完再看焦移图,蓝光焦点应该在近轴焦点内侧约 0.8mm,红光在外侧约 0.7mm,两者间隔 1.5mm 左右。如果间隔远小于这个数,检查一下玻璃材料是不是真的设成了 BK7,材料设成空气或者反射镜,色差直接归零。

5.3 现象:优化后点列图变小了,但焦距跑到 80mm

这是最迷惑人的一种翻车。优化报告显示评价函数值下降得很好,点列图 RMS 半径也确实小了,但一看有效焦距,只有 82mm。

原因是评价函数里只有默认的 RMS 光斑项,没有焦距约束。优化器发现缩短焦距能让球差变小,就一路往短焦方向跑,这在数学上是对的,在工程上是错的。

解决办法是在评价函数编辑器里手动加一行 EFFL,目标值 100,权重 1。加完再优化一遍,焦距会被拉回 100mm 附近,同时点列图仍然保持收敛。这个操作我一般会在优化前就做,而不是等出了问题再补——因为一旦优化器跑偏,变量已经不在合理区间,回头再拉要多花一轮。

5.4 现象:OPD 图的数值单位看错

OPD 图上标着「Peak to Valley = 2.31」,有人直接写成「波前畸变 2.31 微米」,单位搞错了。

Zemax 的 OPD 图默认单位是 waves,也就是波长的倍数,不是微米。2.31 的意思是峰谷差 2.31 个波长,换算成微米要乘 0.587(按 d 线算),约 1.36 微米。这两个数差了一个量级,写进报告里是明显的硬伤。

解决办法是看图之前先看纵轴标签,写着「Waves」就是波长单位,写着「µm」就是长度单位。Zemax 默认是 Waves,如果要换成微米,在 Settings 里改。报告里写数值的时候把单位带上,写「PV = 2.31λ」比写「PV = 2.31」清楚得多,也不容易错。

5.5 现象:tfcalc 曲线在 550nm 处透射率只有 4%

现象很夸张,理论上 550nm 应该是高透区,结果 T 曲线趴在地板上,R 曲线顶到天花板。

原因是入射介质和基底设反了。tfcalc 的默认配置里,Incident Medium 是空气、Substrate 是玻璃,但有人看到「Substrate」这个词就以为是放待镀件的地方,把玻璃填进了入射介质,把空气填进了基底,光等于从玻璃射向空气,加上膜系的导纳匹配方向反了,曲线整个颠倒。

解决办法是检查材料配置页,Incident Medium 必须是 Air 或者 n = 1.0,Substrate 必须是 Glass 或者 n = 1.52。改完重跑,550nm 处透射率应该跳到 95% 以上。如果还是不对,再检查层序是不是填反了——第 1 层填了 TiO2 而不是 SiO2,中心反射率会掉一大截,但不会掉到 4%,所以先查介质,再查层序。

6. 验收与答辩:把两段曲线讲成一条完整的设计闭环

上机做完不等于报告写完,答辩那几分钟才是真正拉开差距的地方。我见过太多报告,图贴得满满当当,一问「你这个点列图 RMS 半径 30 微米是怎么来的」就答不上来。问题不在于做得不好,而在于没把设计、实现、评价这三段串成一条线。

我的做法是在报告最后单独做一页「指标对照」,把设计指标、软件设置、实测结果三列并排放,中间不留空白。下面这张表是我自己用的版本:

设计指标软件设置实测结果是否达标
F 数 = 4入瞳直径 25mmImage Space F/# = 4.00达标
焦距 = 100mmEFFL 操作数约束 100优化后 99.8mm达标
材料 BK7第 2 面 Glass 选 BK7nd = 1.5168达标
轴上像质默认 RMS 光斑评价函数RMS 半径由 96µm 降至 28µm达标
轴向色差三波长等权重焦移约 1.5mm符合预期
六层交替膜系层编辑器 L/H 交替 6 层层序与材料与设计一致达标
400–700nm 高透分析模式 TransmittanceT 在 550nm 达 98%达标
700–1200nm 高反分析模式 ReflectanceR 在 900nm 达 85%,1200nm 回落部分达标

这张表的价值在于,它把「部分达标」也写出来了。1200nm 处反射率回落是六层堆的固有特性,承认它,比硬说全段高反更让评委信服。答辩时被问到这一点,可以直接回答「六层的反射带相对宽度约 30%,覆盖到 1100nm 左右,要延伸到 1200nm 需要加到八层或者十层」,这个回答说明你知道边界在哪,也知道怎么突破边界。

答辩还有一个高频问题:「你这个优化是不是只调了曲率半径」。回答的时候不要只说「是」,要把变量列表讲出来——三个变量分别是两个曲率半径和后截距,镜片厚度固定是因为它牵涉机械装夹,评价函数里除了默认 RMS 光斑还加了 EFFL 和厚度约束。变量少不是缺点,是控制变量法的体现,教学实验的重点是把每一步的因果关系讲清楚,不是把变量开到最多。

薄膜那边的高频问题是「为什么选 TiO2 和 SiO2」。答案要落到折射率比和工艺成熟度上:TiO2 在可见到近红外区折射率约 2.35,SiO2 约 1.46,比值 1.61,这个对比度在常见膜料里属于高的,六层就能做出明显的反射带;同时这两种材料蒸发工艺成熟、应力匹配好、附着力强,是教学和工程里的标准组合。如果换成折射率比更小的组合,同样层数的反射率会明显下降。

从那以后我每次做上机实验报告,都强制自己先写指标对照表,再回头补图。因为图是给眼睛看的,表是给逻辑看的,顺序反了,报告就会变成一堆漂亮的图配几句干巴巴的说明。这份方案里的参数表、评价函数搭法、膜系厚度算法和容差分析,拿去改改就能用在你自己的报告里。希望帮到你。

本文还有配套的精品资源,点击获取