简介:这份应用光学上机实验报告面向高校光学课程学生、实验课教师及需要撰写同类实验报告的学习者,聚焦Zemax透镜设计与tfcalc光学薄膜分析两项上机任务,可用于实验预习、过程对照和结果复盘。文档围绕F/4、焦距100mm、BK7玻璃透镜,记录波长486nm、587nm、656nm及25mm孔径等关键参数,并说明曲率半径、厚度调整与优化后光线特性曲线、OPD图、点列图的判读方法;薄膜部分呈现TiO2/SIO2六层膜结构及400—700nm高透射、700—1200nm偏反射的分析结论,有助于理解膜层设置与透射反射曲线的对应关系。压缩包内含1个doc文件,约695KB,体量轻便,便于直接查阅和二次整理。已有596人学习,读者可参考其中的参数配置、优化思路、像差评价和实验结论表述,较快把握上机实验的报告组织方式与分析重点,也可为课程实验检查与后续光学设计练习提供一份可对照的样例。
1. 一份应用光学上机实验报告:F/4 单透镜和六层膜能复现到什么程度
应用光学 上机实验这类资源,最容易变成一份只交作业的截图合集;我拆的这份报告不一样,它把 Zemax 单透镜和 tfcalc 六层膜的操作链留了下来。它解决的是课程上机时“参数知道大概、曲线不会判读、优化一跑就偏”的问题:F/4、焦距 100 mm、BK7、486/587/656 nm 三个波长、25 mm 入瞳,先建四表面单透镜,再用 Ray Fan、OPD、点列图看像差;后半段用 SiO2/TiO2 交替的六层膜看 400–700 nm 透射和 700–1200 nm 反射。适合刚接触光学设计课程、需要照着复现上机步骤的人,也适合已经能点软件、但说不清每个参数为什么这样设的从业者。报告里的数值是初始结构,不是拿来即用的最终答案,真正有价值的是参数之间的约束关系和曲线判读顺序。
2. Zemax 建 F/4 单透镜:波长、孔径和四个面的参数怎么落
2.1 先把系统孔径和波长钉死:25 mm 入瞳与 486/587/656 nm
Zemax 里最容易“看起来建好了、其实 F/# 不对”的地方,是系统孔径类型。报告要的是 F/4、焦距 100 mm,那么入瞳直径 EPD 必须是 25 mm,因为 F/# = EFL / EPD = 100 / 25 = 4。系统孔径类型选 Entrance Pupil Diameter,值填 25,不要用 NA 或 Float by Stop Size 去凑;后两者在光阑位置变化时会让 F/# 跟着漂,后面优化出来的点列图再漂亮也对不上实验目的。视场按报告只做轴上,设 0° 即可;如果后面想看轴外,再加 0.5° 或 1°,但不要把轴外视场混进这组轴上判据里。
波长设置要先把单位看清楚。Zemax 的波长对话框常以 µm 为单位,输入 0.486、0.587、0.656,或者切到 nm 输入 486、587、656;这三个对应可见光谱里的 F、d、C 线,权重都设 1.0,参考波长选 587 nm。权重不是能量比例,而是优化时让三个波长误差一起参与平衡;参考波长会影响 OPD 的相位基准,所以不要随手选 486 或 656。常见翻车是单位没切,把 486 当成 486 µm 输进去,系统直接跑到远红外,Ray Fan 一片乱线。
| 项目 | 设置 | 说明 |
|---|---|---|
| 孔径类型 | Entrance Pupil Diameter | 25 mm,对应 F/4 |
| 视场 | 0° | 轴上视场,和报告一致 |
| 波长 | 0.486 / 0.587 / 0.656 µm | 权重 1.0,参考 587 nm |
| 玻璃 | BK7 | 固定,不参与优化 |
| 表面数 | OBJ、STO、2、IMA | 四表面单透镜 |
2.2 镜头数据编辑器里的四个面:R1=100、R2=-100、厚度 4/100 的初值逻辑
镜头数据编辑器里按报告建四行:第 0 面 OBJ,第 1 面 STO,第 2 面,第 3 面 IMA。第 1 面曲率半径填 100,厚度填 4,玻璃选 BK7,并把它设为光阑面;第 2 面曲率半径填 -100,厚度先填 100,作为到像面的后焦距初值;IMA 面保持默认。这里有两个符号问题必须先说清:Zemax 的曲率半径符号按曲率中心相对表面的位置定,曲率中心在表面右侧为正、左侧为负;厚度沿光轴向右为正。所以双凸单透镜的第一面 R1 取正、第二面 R2 取负,和报告里的 100 / -100 是对应的。把 R2 写成 +100,系统会变成弯月或焦距跑飞,这是血泪经验里最常见的一条。
| 面 | 曲率半径 | 厚度 | 玻璃 | 备注 |
|---|---|---|---|---|
| 0 OBJ | Infinity | Infinity | — | 物在无穷远 |
| 1 STO | 100 | 4 | BK7 | 光阑面,中心厚度 4 mm |
| 2 | -100 | 100 | — | 后焦距初值,后续可放变量 |
| 3 IMA | Infinity | — | — | 像面 |
厚度 4 是镜片中心厚度,不是边缘厚度;厚度 100 是第 2 面到像面的空气间隔,不是镜片总长。半口径先按入瞳 25 mm 给到 12.5 mm 左右,实际镜片要留余量,可以给 13 mm,避免边缘光线被孔径卡掉。初始 R1=100、R2=-100、d=4 的厚透镜焦距并不是精确 100 mm,用 BK7 的 d 光折射率粗算约 97 mm 出头,所以后面必须用 EFFL 操作数把焦距拉回 100。这个差值不大,但足以让 F/# 从 4 偏到 3.9 附近,课程报告里如果直接写“焦距 100”,曲线会对不上。
2.3 用 Python 先算一遍:F/#、薄透镜焦距和艾里斑
在打开优化之前,先用一段小脚本把量级算出来,后面看曲线时心里有数。下面这段只做三件事:按厚透镜公式估初始焦距、按入瞳算 F/#、按 F/# 算艾里斑直径。参数里的折射率是 BK7 在 d 光附近的近似值,真正设计时以 Zemax 玻璃库为准。
import math n_bk7 = 1.5168 # BK7 在 d 光附近的近似折射率 R1, R2, d = 100.0, -100.0, 4.0 # mm EPD = 25.0 # 入瞳直径 mm lam = 0.587e-3 # d 光波长,单位 mm # 厚透镜光焦度,注意 R2 为负 P = (n_bk7 - 1) * (1/R1 - 1/R2 + (n_bk7 - 1) * d / (n_bk7 * R1 * R2)) f = 1 / P Fno = f / EPD airy = 2.44 * lam * Fno print(f"初始焦距约 {f:.2f} mm") print(f"对应 F/# 约 {Fno:.2f}") print(f"艾里斑直径约 {airy*1000:.2f} um")这段代码的输出会告诉你:初始结构焦距约 97 mm,F/# 约 3.9,艾里斑直径约 5.6 µm。艾里斑是衍射极限的量级,后面点列图如果 RMS 半径到了几十微米,说明像差主导,不是“软件没算准”。把这三个数记在报告旁边,优化后先看 EFFL 是否回到 100、F/# 是否回到 4,再看点列图有没有靠近艾里斑。单透镜在可见光下球差和色差都不小,点列图远大于艾里斑是正常的,报告要写清“几何像差主导”,不要硬说达到衍射极限。
3. 从光线特性曲线到点列图:优化前后该盯哪几条曲线
3.1 评价函数不是越复杂越好:EFFL=100 和 RMS 点列图的组合
优化第一步不是把所有曲率半径和厚度都点亮,而是先确定哪些量必须守住。焦距是实验目的,必须用 EFFL 操作数锁在 100,目标值 100,权重给 1.0;默认评价函数选 RMS Spot Radius,环数用 3 环左右,先把几何点列图压下来。变量先放 R1、R2 和第 2 面厚度,第 1 面厚度 4 mm 保持固定,因为它是镜片中心厚度,放开了容易优化出负厚度或薄到不可加工的值。玻璃 BK7 固定,不要为了降像差把玻璃也设成变量,报告的任务是 BK7 单透镜,不是自由材料搜索。
评价函数里不要一上来堆几十个操作数。单透镜只有三个变量,评价函数太多会互相打架,常见结果是点列图 RMS 变小了,EFFL 却掉到 95 以下,F/# 也跟着变。我的习惯是先用默认 RMS 点列图加一个 EFFL,跑一轮;看 Ray Fan 确定主导像差是球差还是离焦;再把后焦距单独放开做离焦纠正。优化后回到 System Data 里核对三件事:EFFL 是否 100±0.1 mm、入瞳是否 25 mm、F/# 是否 4.0 左右。三个数对不上,后面的 OPD 和点列图都不用急着解读。
| 检查项 | 优化前 | 优化后目标 | 看哪里 |
|---|---|---|---|
| 有效焦距 EFL | 约 97 mm | 100 mm | System Data / EFFL 操作数 |
| 入瞳直径 EPD | 25 mm | 25 mm | System Data |
| F/# | 约 3.9 | 4.0 | System Data |
| 后焦距 | 100 mm 初值 | 由离焦纠正决定 | 第 2 面厚度 |
| 点列图 RMS | 较大 | 看是否收敛 | Spot Diagram |
3.2 Ray Fan、OPD 和点列图的判读顺序
Ray Fan 是第一张要看的图,不是点列图。横坐标是归一化光瞳,纵坐标是横向像差,轴上视场下三条波长曲线分开,先看边缘光线的偏差量级,再看曲线形状:整体带斜率、过零点偏,是离焦;边缘翘起、中心平,是球差;三个波长曲线上下分离,是色差。报告里“纠正离焦后”的那张光线特性曲线,判断依据就是曲线在光瞳中心附近是否过零、边缘是否对称,而不是单纯看点列图圆不圆。
OPD 图看的是波前光程差,单位是 waves,比 Ray Fan 更接近“能不能成像”的判据。轴上视场先看 RMS OPD,常见课程判据是 RMS OPD 小于 λ/14 约 0.071λ 算接近衍射极限;单透镜在 F/4、可见光下大概率超这个值,报告里如实写“像差未校正到衍射极限”比硬凑一张漂亮图更可信。点列图放在最后看,它给的是几何光线落点分布,看 RMS 半径、几何半径和艾里斑圆的关系:点列图半径远大于艾里斑,说明几何像差主导;点列图中心密集、边缘拖尾,说明球差或彗差还在。
判读顺序可以固定成:Ray Fan 找主导像差 → OPD 看波前量级 → 点列图确认能量集中度 → 多色光焦点漂移看色差。不要反过来从点列图倒推参数,点列图是结果,不是原因。报告里的图一到图六对应的就是这条链:先看光线特性曲线,再纠正离焦,再看像差图和 OPD,最后看多色光焦点漂移和点列图。把每张图的横纵坐标、单位、视场、波长写进图注,后面复现的人才知道你在看什么。
3.3 离焦纠正和多色光焦点漂移:后焦距变量怎么用
离焦纠正最直接的做法是把第 2 面厚度设为变量,单独跑一轮优化,评价函数只保留 RMS 点列图和 EFFL,或者手动微调后焦距看 Ray Fan 过零点。注意不要把后焦距和曲率半径同时放开去“救”离焦,否则曲率半径会跟着变,焦距虽然回来了,球差可能更差。常见做法是:先固定 R1、R2,只动后焦距,把 Ray Fan 的中心斜率压平;再放开 R1、R2 做一轮球差平衡;最后回到 EFFL 检查焦距。这个顺序比一次性全变量优化稳。
多色光焦点漂移是 BK7 单透镜的硬边界。486 nm、587 nm、656 nm 三个波长的折射率不同,后焦距自然不同,Zemax 的 Chromatic Focal Shift 图会把这条漂移画出来。报告图五就是这类曲线,横轴波长、纵轴焦点偏移。单透镜没法靠优化彻底消色差,要消色差得上双胶合或更复杂的结构;课程报告里把漂移量写出来、说明 BK7 色散导致短波和长波焦点不重合,比强行优化成一个“看起来集中”的点列图更符合光学常识。离焦纠正解决的是像面位置,不解决材料色散,这两件事不要混为一谈。
4. tfcalc 六层 TiO2/SiO2 膜系:层数、材料和反射透射曲线怎么设
4.1 膜系初始结构:Air / (SiO2/TiO2)^3 / Glass 的 QWOT 厚度
报告任务二选六层膜,材料按 SiO2、TiO2 交替。要复现 400–700 nm 透射、700–1200 nm 反射的趋势,初始结构可以按长波通滤光片的思路搭:入射介质 Air,基底 Glass,从入射侧开始低折射率、高折射率交替,即 Air / SiO2 / TiO2 / SiO2 / TiO2 / SiO2 / TiO2 / Glass。每层先按参考波长 700 nm 的四分之一光学厚度(QWOT)给初值,公式是 d = λ_ref / (4n)。SiO2 取 n≈1.46,厚度约 120 nm;TiO2 取 n≈2.30,厚度约 76 nm。六层总厚度约 588 nm,先看曲线趋势,再决定要不要优化厚度。
| 层号 | 材料 | 700 nm 附近近似折射率 | QWOT 厚度 nm | 建议优化范围 nm |
|---|---|---|---|---|
| 1 | SiO2 | 1.46 | 119.9 | 80–160 |
| 2 | TiO2 | 2.30 | 76.1 | 50–110 |
| 3 | SiO2 | 1.46 | 119.9 | 80–160 |
| 4 | TiO2 | 2.30 | 76.1 | 50–110 |
| 5 | SiO2 | 1.46 | 119.9 | 80–160 |
| 6 | TiO2 | 2.30 | 76.1 | 50–110 |
这张表是初值表,不是最终答案。tfcalc 材料库里的 TiO2、SiO2 有各自的色散模型,实际折射率随波长变,厚度也要跟着微调;如果课程只要求看趋势,QWOT 初值已经能把 400–700 nm 透射高、700–1200 nm 反射高的方向做出来。层序不要随手反成 TiO2 打头,低折射率入射侧更有利于短波透射,反了以后过渡带和反射带位置都会变,曲线看起来“怎么调都不对”。
4.2 tfcalc 里的层数、材料、参考波长和优化目标
在 tfcalc 里先建设计:入射介质设为 Air,基底设为 Glass,膜层数填 6,逐层选 SiO2、TiO2、SiO2、TiO2、SiO2、TiO2,厚度单位用 nm 或 QWOT 都行,但参考波长必须统一在 700 nm。波长范围设 400–1200 nm,步长 5 nm 左右,入射角 0°,分析模式先看 Reflectance vs Wavelength,再看 Transmittance vs Wavelength。先不优化,直接跑一遍 QWOT 初值,确认反射带大致落在 700 nm 以上、透射区大致在 400–700 nm,再进优化。
| 参数 | 设置 | 说明 |
|---|---|---|
| 入射介质 | Air | 不要设成 Glass |
| 基底 | Glass | 近似 n≈1.52 |
| 层数 | 6 | SiO2/TiO2 交替 |
| 参考波长 | 700 nm | QWOT 初值和优化基准 |
| 波长范围 | 400–1200 nm | 步长 5 nm |
| 入射角 | 0° | 先做正入射 |
| 分析模式 | Reflectance / Transmittance | 两张曲线都要看 |
优化目标按报告目的拆两段:400–700 nm 透射目标设高,权重 1;700–1200 nm 反射目标设高,权重 1;变量只放六层厚度,材料不要动。六层膜的可调自由度只有 6 个,目标跨度 800 nm,不要指望每个波长都贴着 100%。常见做法是先给透射区平均目标,再给反射区平均目标,跑几轮后看 merit 是否收敛;如果 700 nm 附近过渡带太宽,可以稍微移动参考波长或增加层数,但报告任务限定六层,就在六层框架内说明带宽限制。厚度约束要设下限,避免优化出 5 nm 以下的膜层,实际镀膜不好控制。
4.3 反射率和透射率曲线怎么读:400–700 nm 与 700–1200 nm 的分界
反射曲线和透射曲线是互补的,无吸收时 R+T≈1,所以两张图要对着看。报告图八设置“反射”,图九设置“透射”,判读时先看 400–700 nm 的透射是否在 90%–100% 区间,再看 700–1200 nm 的反射是否抬起来。六层 QWOT 膜系的反射带不是矩形,700 nm 附近有过渡斜率,1200 nm 端也可能往下掉;如果报告写“700–1200 nm 适合反射”,要结合纵坐标看是整段高反射还是只有一部分高反射。课程报告里把平均透射率、平均反射率、过渡带宽度写清楚,比只放两张曲线更有说服力。
判据可以这样定:400–700 nm 取 5 nm 步长算平均透射率,目标 ≥90%;700–1200 nm 算平均反射率,目标 ≥80%;同时看 700 nm 附近的过渡带宽度,不要出现 550 nm 就掉到 80% 以下的情况。六层膜在长波端的反射率受高低温折射率比限制,TiO2/SiO2 的折射率比不算特别高,反射带宽度有限,这是材料决定的边界,不是软件设置错。报告里如果曲线看起来“透射区很高、反射区也高”,先检查纵轴是不是 0–100%、入射介质是不是 Air、基底是不是 Glass,这三项错一个,曲线就会变成黑匣子。
5. 避坑与排查:单透镜和六层膜最容易翻车的五个点
5.1 曲率半径符号写反,焦距直接跑飞
现象:系统建完,Ray Fan 一片发散,点列图散得很大,System Data 里 EFFL 变成负值或几百毫米。原因:Zemax 曲率半径符号按曲率中心在表面右侧为正、左侧为负,双凸单透镜第一面 R1 应为正、第二面 R2 应为负;有人把 R2 也写成 +100,或者把 STO 面放到第 2 面,光路方向就反了。解决:回到镜头数据编辑器,按 OBJ、STO、2、IMA 的顺序检查,R1=100、R2=-100、第 1 面厚度 4、第 2 面厚度 100;再看 3D Layout 光线是不是从左向右汇聚。符号错的时候不要急着优化,优化会把错误结构越拉越偏。
5.2 孔径类型选错,F/4 只停留在口头上
现象:焦距优化到 100 mm 了,但 System Data 里 F/# 不是 4,点列图和报告对不上。原因:系统孔径类型用了 NA、Float by Stop Size 或 Object Space NA,入瞳直径并没有锁在 25 mm;也有人把光阑面设在第 2 面,实际入瞳和镜片口径不是同一个位置。解决:孔径类型改成 Entrance Pupil Diameter,值填 25;光阑面确认在第 1 面;System Data 里同时核对 EPD、EFL、F/# 三个数。F/# 是 EFL/EPD,焦距变了入瞳不变,F/# 也会变,所以每次优化后都要回看这一组,不要只看点列图。
5.3 评价函数缺 EFFL,点列图好看了焦距却不对
现象:优化后点列图 RMS 明显变小,但 EFFL 从 100 掉到 95 或涨到 105,F/# 跟着偏。原因:默认评价函数只压点列图,没有约束焦距;曲率半径和厚度一放变量,优化器会优先把像差压小,焦距变成牺牲品。解决:在 Merit Function Editor 里加 EFFL,目标 100,权重 1.0;变量先只放 R1、R2 和后焦距,第 1 面厚度固定;跑完看 EFFL 是否在 100±0.1 mm。如果 EFFL 和点列图打架,先保焦距,再在焦距附近微调曲率半径,不要为了点列图漂亮把实验目的丢了。
5.4 波长权重和参考波长设错,色差曲线越看越乱
现象:486 nm 和 656 nm 的 Ray Fan 曲线一边倒,OPD 图相位差很大,多色光焦点漂移图和预期相反。原因:波长单位没切,486 被当成 µm;或者参考波长选了 486 而不是 587;权重三个都设 1.0 但有一个波长被误删。解决:波长表里确认 0.486、0.587、0.656 µm 三行都在,权重 1.0,参考波长 587 nm;OPD 图纵轴单位看 waves;多色光焦点漂移范围设 0.486–0.656 µm。单透镜色差是材料决定的,参考波长换到短波端会让 OPD 基准变,曲线看起来“优化坏了”,其实是基准换了。
5.5 tfcalc 层序或参考波长设错,透射反射全反着来
现象:400–700 nm 透射很低,700–1200 nm 反射也不高,或者曲线整体平移了几百纳米。原因:QWOT 参考波长填成 500 nm 或 1000 nm;层序从 TiO2 打头;入射介质设成 Glass、基底设成 Air;波长范围单位和软件当前单位不一致。解决:先确认入射介质 Air、基底 Glass、六层从 SiO2 开始交替、参考波长 700 nm;再跑单层 SiO2 和单层 TiO2 看 R/T 是否合理,最后叠六层。层序反了不要靠优化硬拉,先把结构改对,再看厚度优化。曲线纵轴也要确认 0–100%,有人把纵轴截到 80–100%,看起来“全透”,实际平均透射没达标。
6. 把这份报告变成可复现模板:参数快照、曲线交叉验证和一次回看
6.1 参数快照表:每次改完只对比这 8 个数
这份报告最值得留下的不是某一张漂亮曲线,而是一张参数快照表。每次改完 Zemax 或 tfcalc,先把下面 8 个数抄下来,再跑曲线;否则改了三轮以后,自己都说不清哪一版是“纠正离焦后”的版本。Zemax 侧看 EPD、EFL、F/#、R1、R2、后焦距;tfcalc 侧看参考波长、六层总厚度。表不用复杂,能对比就行。
| 检查项 | Zemax 侧 | tfcalc 侧 | 判据 |
|---|---|---|---|
| 孔径/入射介质 | EPD 25 mm | Air | F/4 的前提 |
| 焦距/参考波长 | EFFL 100 mm | 700 nm | 实验目的 |
| 光圈/基底 | F/#≈4.0 | Glass | 系统数据一致 |
| 曲率半径 | R1=100、R2=-100 起 | — | 符号别反 |
| 厚度 | 中心 4 mm、后焦距变量 | 6 层 QWOT 初值 | 不要负厚度 |
| 波长 | 486/587/656 nm | 400–1200 nm | 单位一致 |
| 评价指标 | RMS 点列图、OPD | 平均 T、平均 R | 分区统计 |
| 曲线版本 | 优化前/后各一份 | 优化前/后各一份 | 文件命名带日期 |
6.2 交叉验证:Zemax 的焦距和 tfcalc 的参考波长要对上实验目的
两个任务看起来独立,其实有一条共同的验证习惯:先确认“目标量”有没有被守住。Zemax 的目标量是 100 mm 焦距和 F/4,tfcalc 的目标量是 400–700 nm 高透、700–1200 nm 高反;每次优化后先看目标量,再看曲线细节。我一般会把 Zemax 的 EFFL 和 tfcalc 的平均透射/反射算成两个数,写在报告开头,曲线放后面;这样别人翻报告时先看到“焦距 100.0 mm、F/# 4.00、400–700 nm 平均透射 9x%、700–1200 nm 平均反射 8x%”,再去看图,不会被一张局部好看的曲线带偏。
从那以后我每次做这类上机实验,都先拍一张参数快照,再跑曲线,最后把优化前和优化后的图并排放;翻车最多的不是软件不会点,而是改到第三版时忘了第一版的 R2 符号和参考波长。希望帮到你。
本文还有配套的精品资源,点击获取