简介:面向光学设计与光纤耦合仿真学习者的 Zemax 实操范例文档,聚焦单模光纤光束耦合系统的建模、分析与优化流程。内容以商用光纤耦合器为蓝本,采用 SUSS MicroOptics FC-Q-250 微透镜阵列耦合两根康宁 SMF-28e 光纤,涵盖物面到透镜、透镜到像面的距离设定,用 Pick-up solve 维持空间反演对称,按光阑尺寸浮动来设置孔径,并对旁轴高斯光束计算与单模光纤耦合效率计算做了完整对比,同时给出 GBPS、FICL 优化操作数的用法与优化后的间距结果。文档还提示了数值孔径多种定义间的差异、模式匹配与渐晕对耦合效率的影响等易错点,可对照 Zemax 界面逐步复现关键设置。压缩包内为 1 个 doc 文件,约 504KB,图文混排便于随查随用。已有 3603 人学习,适合具备一定 Zemax 基础、希望掌握光纤耦合效率评估与优化思路的工程师及光学专业师生参考。
1. 一条 0.11 mm 的间距,藏着整套 Zemax 单模光纤耦合的算法分层
Zemax 模拟单模光纤的光束耦合,很多人第一次上手会把全部希望压在光线追迹上:两根单模光纤对着,透镜间隔随手给 2 mm,FICL 报出 0.99,心里一松,觉得方案成了。这份范例的价值恰恰在这儿——它用同一套元件,把旁轴高斯光束、光线耦合、物理光学传播三层算法依次跑了一遍,让你亲眼看见同一结构在透镜拉开到 20 mm 后,效率从 0.99 掉到 0.57。范例给的是 NA 0.14、模场直径 9.2 μm 的单模光纤,配 240 μm 口径、R330 μm 的熔融石英微透镜阵列,附了 four 个阶段的 zmx 文件。适合已经会建面、但对单模耦合的评价函数和 POP 设置心里没底的人。
2. 建模前先钉死三件事:光阑、Pick-up 与 NA 的口径
这套结构看着简单,六七个面就能搭完,真正决定后面所有计算结果对不对的,是三件在建模阶段就必须定死的事:光阑怎么浮动、对称性怎么锁、数值孔径按哪个定义填。这三件事里任何一件含糊,后面优化出来的数字都是假的——优化器不会报错,它只会老老实实给你一个错的最优解,这才是最坑的地方。
2.1 把元件手册翻译成 Zemax 的输入表
厂商手册上的参数是给采购和封装看的,不是给光学软件看的。落到 Zemax 里,需要做一次“翻译”:有些参数要参与计算,有些只是参考,还有些表面上看是同一个量,其实定义完全不同。先把这张对照表列清楚,再动手建面。
| 手册参数 | 数值 | 在 Zemax 里的落点 | 是否参与计算 |
|---|---|---|---|
| 工作波长 | 1.31 μm | System > Wavelengths | 是 |
| 模场直径 @1.31 μm | 9.2±0.4 μm | 束腰 1/e² 半径 4.6 μm | 是,核心 |
| 纤芯直径 | 8.3 μm | 仅作记录 | 否 |
| 光纤 NA(1% 功率点) | 0.14 | 不直接填,需换算成 1/e² | 间接 |
| 透镜基片材料 | 熔融石英 | 玻璃库选对应牌号,1.31 μm 折射率约 1.446 | 是 |
| 基片厚度 | 0.9 mm | 球面后那一面的厚度 | 是 |
| 透镜直径 | 240 μm | 表面半口径 120 μm | 是,决定渐晕 |
| 透镜节距 | 250 μm | 阵列排布用,单元件建模不用 | 否 |
| 曲率半径 | 330 μm | 球面 R 值 | 是 |
| 圆锥常数 | 0 | 标准球面,Conic = 0 | 是 |
| 透镜 NA | 0.17 | 只在判断口径够不够时参考 | 否 |
表里最容易被忽略的是“透镜节距 250 μm 不参与单元件建模”这一条。单模耦合只关心一对光纤、一对透镜,节距是阵列串扰问题,跟耦合效率没关系;但很多人看到阵列参数表就顺手把 250 μm 填进半口径,结果光阑变成 125 μm,渐晕算错,系统效率怎么优化都上不去。半口径取的是透镜直径的一半,120 μm,不是节距的一半。
面序按“球面朝外、平面相对”的平凸排法给一份最小结构,范例文件里的编号跟这份不完全一样,但物理结构等价,照着参数对一遍就能对上:
| 面 | 内容 | 厚度 / 关键参数 |
|---|---|---|
| 0 | 物面(源光纤端面) | — |
| 1 | 空气间隔 | 0.1 mm,后续设为变量 |
| 2 | 第一片透镜前表面,球面 | R = 330 μm,半口径 120 μm,厚度 0.9 mm 玻璃 |
| 3 | 第一片透镜后表面,平面(光阑面) | 半口径 120 μm,厚度 2 mm 空气 |
| 4 | 第二片透镜前表面,平面 | 半口径 120 μm,厚度 0.9 mm 玻璃 |
| 5 | 第二片透镜后表面,球面 | R = -330 μm,厚度用 Pick-up 跟随面 1 |
| 6 | 像面(接收光纤端面) | — |
建面的时候有几个动作要一次做对。表面 2 和表面 5 的曲率半径符号相反,是因为两片透镜背对背放置,球面都朝外;如果符号搞反,系统会变成一片“凹”的怪东西,高斯光束直接发散出去,你还在纳闷为什么光斑越走越大。表面 3 后面那 2 mm 空气间隔,是这个范例里唯一的“实验值”,先照着填,后面再放开优化。
提示:先把所有半口径统一设成 120 μm 再谈优化。Zemax 默认半口径是自动的,自动口径会跟着光束长,渐晕就永远不会发生,系统效率也永远算不出真实的损失。
2.2 光阑浮动与高斯切趾:让透镜口径自己说话
系统孔径类型选“Float by Stop Size”,光阑面指定在表面 3,也就是第一片透镜的后表面。这个组合的含义是:入瞳的大小不由某个 NA 决定,而由光阑面的实际半口径 120 μm 决定。为什么这么设?因为光纤出射的是高斯光束,没有硬边,你没法说“光束半径就是多少”,只能让物理光阑去截。光束在系统里走到哪一面,只要超过那一面的半口径,能量就被渐晕掉,系统效率里自然体现出来。
另一种常见做法是把孔径设成“Object Space NA”,填 0.09 或 0.14。这在小孔径系统里能凑合,但在这套结构里会翻车:入瞳大小会跟着你填的 NA 变,而 NA 本身又是个有歧义的量(下一节细说),两层误差叠在一起,最后优化出来的间距能差出十几个微米。我一般建议这类光纤耦合系统一律用光阑口径定孔径,把不确定性关在一个变量里。
高斯切趾(Gaussian Apodization)在 System > Aperture 里设,类型选 Gaussian,切趾因子要跟模场匹配。它的作用是把光瞳上的入射光强从均匀分布改成高斯分布,逼近光纤出射的真实场。这一步在当前范例里只是近似——因为真正的光纤模式还得靠后面的光纤耦合计算和 POP 来精确处理——但不设切趾,入瞳上的能量分布是平的,算出来的耦合效率会偏高,而且偏得很隐蔽,看结果根本看不出来。
判断切趾因子设得对不对,有个笨办法但很有效:打开 3D 布局图,把光瞳面的光强分布调出来看一眼,确认边缘衰减到接近零、中心附近符合 1/e² 包络。对不上就微调因子,别指望优化器帮你找这个值,它不在评价函数里。
2.3 NA 的三种定义:0.14 和 0.09 差在哪
这是整套范例里最容易埋雷的一节。同一个“数值孔径”,在三个地方有三种算法:
第一种是边缘光线倾角的正弦值,sin θ,几何光学里的全口径 NA,对应透镜的 0.17 就是这一类。
第二种是光强降到 1/e² 处的半角正弦,高斯光束的标准定义,Zemax 的 POP 和光纤耦合计算默认用这个。
第三种是光强降到峰值 1% 处的半角正弦,光纤厂商的产品手册习惯用这个,手册上那个 0.14 就是它。
三者数值差得很远。0.14 是 1% 口径,换算到 1/e² 大约只有 0.09。这个 0.09 不是拍脑袋来的,可以反算验证:高斯光束的远场半角 θ = λ/(π·w₀),把 w₀ = 4.6 μm、λ = 1.31 μm 代进去,θ ≈ 0.0906 rad,小角下 sin θ ≈ 0.0906。跟 0.09 对上了,说明换算没问题。
坑在哪儿?如果你把手册上的 0.14 直接填进光纤耦合计算的 NA 栏,Zemax 会按 1/e² 定义去理解它,于是算出一个偏大的发散角、偏小的束腰,源光纤模式和接收光纤模式从一开始就不匹配,效率虚低;更麻烦的是优化器会拼命拉间距去补偿这个错误,最后给你一个“优化成功”的错解。我见过有人因为这个把光纤到透镜的距离优化到 0.3 mm,结构都撞上了,还在怀疑是不是透镜装反了。
注意:手册 NA 和软件 NA 不是一回事。填之前先确认这个数字对应的是 1%、1/e² 还是全口径,拿不准就用模场直径反算一遍,两边对得上再往下走。
3. 旁轴高斯光束:用 GBPS 把 0.1 mm 推到 0.117 mm
旁轴高斯光束是整个分析链条里最快的一层,它只做两件事:用 ABCD 矩阵把高斯光束的 q 参数从物面传到像面,然后告诉你每个面上的 1/e² 束宽是多少。快,但只能看个大概,渐晕、衍射、像差它一概不管。拿它做初值、定结构、判断口径够不够,是合适的;拿它当最终结论,就要出事。
3.1 束腰 4.6 μm 与 Waist 参考面的选择
打开 Analysis > Physical Optics > Paraxial Gaussian Beam,第一件事是填 Waist。这里有个反复有人踩的坑:Zemax 这个字段要的是 1/e² 束腰半径,不是直径。模场直径 9.2 μm,填进去的应该是 4.6 μm。范例正文里写“束腰直径 4.6 μm”,那是表述习惯问题,实际填的是半径量级的数——你要是按“直径 4.6”再除以二填 2.3,整个系统的光束会细一半,后面所有束宽数据全错。
Waist 的参考面选表面 1,也就是源光纤端面所在的位置。Zemax 里这个 Waist 位置是相对某个表面定义的,选错面等于把束腰挪了地方,等效于给系统加了一段看不见的离焦。范例里束腰就在源光纤端面,所以参考面选 1 最直接。
填完之后先别急着优化,把表面 3、表面 4 和像面的束宽读出来看一眼。范例给的数是:表面 3 上 1/e² 直径 65 μm,表面 4 上 70 μm,而这两面的物理半口径是 120 μm,也就是说光束直径连口径的一半都不到,边缘还留着大量余量。这个结论很重要,它说明在当前 2 mm 间距下,渐晕不是主要矛盾,口径够用。同时它也埋了个伏笔:一旦间距拉长,光束会自己长大,这个余量就不够了。
像面的读数更值得盯:光斑 5.3 μm,比源端的 4.6 μm 大了 15%。按系统的空间反演对称性,输入输出互易,像面束腰应该回到 4.6 μm 才对。现在回不去,说明像面不在最佳聚焦点上,初值 0.1 mm 只是“接近实际”,不是最优。这一步的判断,就是后面优化的全部动机。
3.2 分析窗口设置与 GBPS 评价函数
设置项不多,但每一项都影响读数:
| 设置项 | 取值 | 说明 |
|---|---|---|
| 波长 | 1.31 μm | 与系统波长一致 |
| Waist X / Y | 4.6 μm | 1/e² 半径,不是直径 |
| Waist 参考面 | 表面 1 | 源光纤端面 |
| 采样 | 默认即可 | 旁轴算法不吃采样密度 |
| 评估面 | 3、4、像面 | 重点看像面 |
读完初值,打开评价函数编辑器,加一行 GBPS。这个操作数算的是指定两个面之间的旁轴高斯光束尺寸,用它的目标值把像面束腰拉到 4.6 μm,变量只放一个:表面 1 的厚度。表面 5 的厚度不放开,因为它挂着 Pick-up solve,跟随表面 1,这是锁死系统互易性的关键。
| 操作数 | 起始面 | 评估面 | 目标值 | 权重 |
|---|---|---|---|---|
| GBPS | 1 | 像面 | 4.6 | 1 |
评价函数就这一行,没有别的。为什么敢这么简?因为系统只有一个自由度——光纤端面到透镜的距离,其余全靠对称性约束住了。变量多于约束的优化,在这类小系统里是自找麻烦:优化器会把透镜厚度、曲率、间距一起动,最后给你一个数学上更优、物理上装不出来的结构。
跑几个循环,结果收敛到 0.117 mm。这个数比初值 0.1 mm 长了 17 μm,量级上完全合理——相当于把光纤端面从透镜前焦点往外挪了一点点,让像面的波前曲率刚好落回来。同时表面 5 的厚度被 Pick-up 同步拉到 0.117 mm,系统正着用和反着用是同一套数,互易性成立。
3.3 结果解读:为什么像面光斑是 5.3 μm 而不是 4.6 μm
回到那个 5.3 μm。它不是误差,是离焦的直接证据。高斯光束经过一片薄透镜后,束腰位置和大小由 q 参数变换决定,初值 0.1 mm 让像面稍稍偏离了束腰位置,于是量到的光斑比束腰大。离焦量不大,所以只大了 15%,看起来“差不多”,但在单模耦合里,15% 的模场失配足够让耦合效率掉几个百分点。
这层算法给出的信息就这么多:束腰位置、各面束宽、离焦趋势。它看不到渐晕带来的能量损失,看不到球差引起的波前畸变,也看不到长距离传输后的衍射。范例到这儿就转去用单模光纤耦合计算了,原因也在这——要算效率,得换一把更细的尺子。
提示:GBPS 优化出来的 0.117 mm 不要当成最终答案丢掉。它是后面 FICL 和 POP 优化的起点,起点好,后面收敛快,也不容易掉进局部极小。
4. 单模光纤耦合计算:FICL 和那两笔账
旁轴高斯光束告诉你“光斑多大”,单模光纤耦合计算告诉你“有多少光能进得去”。后者把总效率拆成两笔账:一笔是能量传输,一笔是模式匹配。这两笔账必须分开看,合在一起看只会得到一个数字,出了问题也不知道该动结构还是动间距。
4.1 系统效率 S 与模式匹配 T 各自管什么
系统效率 S 是能量账。分子是通过入瞳、并且在系统里被渐晕、被体吸收、被镀膜反射之后剩下的那部分能量,分母是源光纤辐射出来的全部能量。S 掉了,说明有光被挡在口径外、被材料吃掉、被界面反射掉,跟波前形状没关系。
模式匹配 T 是形状账。它算的是接收光纤的复振幅模式和到达像面的波前复振幅之间的重叠积分,两个都是复数,所以是相干重叠。T 的上限是 1,光纤模式和波前在振幅、位相上都完全吻合时取到。像差、离焦、模场直径不匹配,都会让 T 往下掉。
总耦合效率大致是两者相乘。这个拆分的意义在于定位:S 掉,去查光阑口径、材料吸收、镀膜;T 掉,去查间距、曲率、非球面系数。如果不拆,看到效率 0.86 就只能猜。
4.2 FICL 优化到 0.11 mm 的完整步骤
打开 Analysis > Calculations > Fiber Coupling Efficiency,按下面的顺序设置,每一步都有它的理由:
- 源光纤和接收光纤的模场直径都填 9.2 μm,两边一致,这是互易性的前提。
- NA 栏填 0.09,也就是 1/e² 定义的那个值,不是手册上的 0.14。
- 偏振计算先不勾,第一轮只看几何和模式匹配。
- 读初始结果,把 S、T 和总效率三个数分别记下来。
- 评价函数加一行 FICL,目标值 1.0,权重 1,变量仍然只放表面 1 的厚度。
- 表面 5 的 Pick-up 保持不动,跑优化。
几轮之后,光纤到透镜的距离从 0.117 mm 收到 0.11 mm。这个变化很小,但方向值得注意:FICL 的解和 GBPS 的解不完全一致,因为两者优化的目标不同——前者要的是波前和光纤模式的重叠最大,后者要的是束腰尺寸回到 4.6 μm。在小像差系统里两者接近,但不相等是正常的。
| 指标 | 物理含义 | 优化后的变化 | 原因 |
|---|---|---|---|
| 系统效率 S | 能量传输,受渐晕、吸收、镀膜影响 | 基本不变 | 口径余量充足,轻微离焦不改变落在口径内的能量 |
| 接收效率 T | 模式匹配,受波前位相影响 | 明显上升 | 重新聚焦后波前曲率和接收光纤模式更吻合 |
| 总耦合效率 | S × T 的综合 | 上升,接近该结构上限 | 提升主要来自 T |
这里要说明一句:范例只给了变化趋势,没有把 S 和 T 精确到小数点后三位。看到别人文章里写出很精确的数,先确认那是他自己跑的,还是原文件的截图。趋势比数字重要,因为你手上的光纤和透镜公差跟范例不可能完全一样。
4.3 为什么系统效率不动,只动接收效率
S 不动的原因很直白:它由光阑口径和入射模式尺寸决定。光纤出来的光,1/e² 半径 4.6 μm,透镜半口径 120 μm,两者差了二十多倍,光束在透镜上只占很小一块,边缘根本没碰到光阑。这种条件下,你把光纤端面挪十几微米,落在口径内的能量几乎不变,S 自然是平的。
T 上升的原因也不复杂:初值时像面离焦,波前曲率半径和接收光纤的模式曲率对不上,重叠积分打折;优化把像面推回束腰位置,曲率对上,T 就上去了。这也解释了为什么这层算法优化出来的提升幅度有限——它只能动一个间距,动不了球差,动不了口径,天花板就在那儿。
真正的天花板在哪儿?在透镜口径和透镜间隔的搭配上。当前 2 mm 间距下,光束在透镜之间还没长到撞口径,所以光线法看起来很美。一旦间距拉到 20 mm,光束长到 0.15 mm,超过 0.12 mm 的半口径,光线法还是报 0.99,物理光学法直接掉到 0.57。这个差距,就是下一层算法要处理的事。
5. 避坑与排查:五条踩出来的记录
这套范例的每一个设置项几乎都有一个对应的错误版本,而且大多数错误不会让软件报错,只会让结果安静地偏掉。下面五条是按“现象、原因、解决”整理的,都是我自己或身边人实际踩过的。
5.1 建模阶段的两个坑
现象一:像面束腰怎么优化都回不到 4.6 μm,越优越大。
原因基本只有一个:Waist 字段填了 9.2。Zemax 要的是 1/e² 半径,填成模场直径等于把光源放大了一倍,后面的束宽、光斑、耦合效率全部按双倍尺寸算。优化器再怎么拉间距,也只能把这个错误尺寸往像面搬,回不到真值。
解决:把 Waist 改成 4.6 μm,重新跑一遍 GBPS。改完顺手把表面 3、表面 4 的束宽也对一遍,如果 65 μm 和 70 μm 对不上,说明还有别的地方没对齐,别急着往下走。
现象二:系统效率卡在 0.7 附近,怎么优化都不动。
原因通常是光阑面的半口径没设成 120 μm,而是留在了自动口径或者被误设成 125 μm(节距的一半)。自动口径会跟着光束长大,永远不产生渐晕,S 就虚高;设成 125 μm 则会让边缘多切一点,S 虚低。两种都不对。
解决:把表面 3 的半口径手动锁成 120 μm,孔径类型确认为 Float by Stop Size,光阑面确认为表面 3。改完看 3D 布局图,光瞳边缘应该能看到轻微的能量截止,看不到就说明口径还是太大。
5.2 计算阶段的坑
现象三:勾上偏振之后效率掉到 0.86,以为模型建错了。
不是模型错,是物理。偏振打开后,Zemax 会把每个玻璃表面的菲涅尔反射和材料体吸收都算进系统效率里,熔融石英在 1.31 μm 的折射率约 1.446,一个空气-玻璃界面反射率大约 3.3%,四个界面串起来就是十几个百分点,正好对上 0.86。这时候掉的是 S,不是 T。
解决:先确认这是不是你想要的结果。如果实际系统会镀增透膜,就在 Tools > Coatings 里给所有玻璃表面加一层单层 MgF2,再看效率——会明显回升。如果实际不镀膜,那 0.86 就是真实值,别去改模型凑数。
现象四:改了透镜间隔,FICL 的结果一动不动。
这是光线法本身的局限,不是设置错了。透镜之间是近似准直的光束,光线追迹只关心几何路径,间距变化对光线的落点影响很小,所以 FICL 对这种“准直段长度”不敏感。范例里把间距从 2 mm 拉到 20 mm,FICL 还是 0.99,就是这个道理。
解决:间距超过几毫米、或者光束在中间段明显长大时,换 POP 算。判断标准很简单:看中间面的 1/e² 束宽有没有接近该面半口径的 50%,接近了就必须用 POP。
5.3 优化阶段的坑
现象五:优化出来的系统正着用和反着用的效率不一样。
原因几乎一定是表面 5 的厚度没挂 Pick-up。系统本来应该空间反演对称,两组光纤和透镜在公差内完全一致,那么正反两个方向的耦合效率必须相等。少了这个约束,优化器会为了迁就某一个方向把间距拉偏,另一个方向就废了。
解决:表面 5 的厚度求解类型设为 Pickup,目标面设表面 1,比例因子 1。改完再优化,两个方向的效率应该一致到小数点后三位。这条我吃过亏,当时以为是镀膜不对称,查了半天才发现是求解器没挂。
6. 最后一章:POP 才是分水岭,20 mm 下 0.57 和 2.072 mm 的来历
物理光学传播(POP)是这套范例里唯一能同时处理衍射、任意模式、光阑截断的算法。设置窗口在 Analysis > Physical Optics > Physical Optics Propagation,起始面选 1,终面选像面,X/Y 采样先给 256×256,然后点 Auto 让软件按光束尺寸自动扩矩阵——手动给采样矩阵是新手最容易翻车的地方,给小了光束被窗口切掉,给大了计算慢到怀疑人生,Auto 这一步别省。
6.1 POPD 操作数怎么读,位相图看什么
POP 跑完,真正有用的是评价函数里的 POPD 操作数,它把分析窗口里的所有数据都暴露成可优化的量。范例里那组数值得记一下:
| POPD Data | 含义 | 范例值 |
|---|---|---|
| 0 | 总光纤耦合效率 | 0.994 |
| 1 | 系统效率 | 0.998 |
| 2 | 接收效率 | 0.996 |
| 10 | 导引光束束腰 | 4.57 μm |
| 23 | 有效光束宽度 | 4.84 μm |
| 26 | M² | 1.082 |
M² 1.082 说明出射光束已经很接近理想高斯,光强分布看不出问题。这时候要看的是位相:把显示切到位相,会看到一条抛物线叠着四次曲线,抛物线对应聚焦,四次项对应球差,透镜边缘还能看到位相被口径切出来的折点。位相差在能量低的地方,所以对总效率影响有限,但它告诉你这套结构的余量在哪——想再往上提,得加非球面或者加面,靠调间距已经到顶了。
间距拉到 20 mm,情况就完全变了。FICL 报 0.99,POP 报 0.57,几乎腰斩。原因写在束宽上:高斯模式传输 20 mm 后 1/e² 宽度涨到 0.15 mm,超过透镜 0.12 mm 的半口径,第二片透镜的物理光阑开始衍射,聚焦到接收光纤上的光已经不是高斯形,M² 涨到 2.45。把透镜间隔放开当变量,用 POPD 优化,收敛到 2.072 mm,跟实验用的 2 mm 差 3.6%,这个偏差在装调公差内。从那以后我每次做超过 5 mm 准直段的耦合,都强制先用 POP 扫一遍间距曲线,再决定要不要相信光线法的数。
偏振和镀膜的账在 POP 里也一样算:打开 Use Polarization、在 General > Polarization 里定义 Y 线偏振,效率从 0.99 掉到 0.86;给所有玻璃面加单层 MgF2,再跑一遍,效率回升。这一降一升,才是真实系统该有的样子。希望帮到你。
本文还有配套的精品资源,点击获取