简介:面向光学设计、光纤通信与耦合建模学习者的 Zemax 实操范例文档,适合已具备软件基础、希望深入理解单模光纤耦合系统建模与优化流程的读者。内容以 SUSS MicroOptics FC-Q-250 微透镜阵列耦合两根康宁 SMF-28e 光纤为案例,围绕 1.31μm 波长下 9.2±0.4μm 模场直径展开,涉及系统对称性与孔径光阑设置、旁轴高斯光束分析、GBPS 操作数优化,以及能量传输和模式耦合两类效率计算,并讨论像差、渐晕、偏振传输等因素对耦合性能的影响。文档还提示数值孔径的不同定义、切趾设置与透镜实际孔径对模式传输的限制,有助于理解理论计算和优化结果的差异。资源包共 1 个 doc 文件,大小约 504KB,内容集中,便于对照软件界面查阅与练习。已有 3603 人学习,可作为光纤耦合专题的入门案例与建模参考。
1. 同一套结构两套算法差一倍:单模光纤耦合模型到底卡在哪
在 ZEMAX 里搭单模光纤耦合,多数人第一步就是打开单模光纤耦合计算,挂上 FICL 优化,效率跑到 0.99,觉得齐活。可一旦把两组透镜的间距从 2mm 拉到 20mm,FICL 还是报 0.99,换成物理光学传播再算,只剩 0.57,同一套结构、同一个波长、同一根光纤,两套算法给出差一倍的答案,很多人到这一步就卡住了。这套范例要解决的就是这件事:在 1.31μm 波段用微透镜阵列耦合两根 SMF-28e 单模光纤,从建模准备、三种算法的适用边界,到优化操作数怎么选、结果怎么读,一条线走完。适合正在做光通信器件课设、光纤耦合毕设,或者要给一份耦合方案做交付评审的人。
2. 设计前准备:把对称性、光阑位置和数值孔径定义先钉死
搭模型之前有三件事必须先在纸面上定下来,否则后面优化跑得再顺也是错的:系统是不是对称的、光阑放在哪个面、数值孔径按哪种定义取。这三件事在范例里全踩过,也全是后面效率对不上的根源。
2.1 几何拓扑与 Pick-up solve 的对称性约束
整套系统的几何非常朴素:源光纤端面、第一个微透镜的前后表面、第二个微透镜的前后表面、接收光纤端面。范例把物面到第一个透镜的距离和第二个透镜到像面的距离都设成 0.1mm,理由是这两个尺寸贴近实际装配时的对准间隙;两组透镜之间的距离设成 2mm,因为这是实测采用的数值。
真正关键的不是这几个数字,是那个 Pick-up solve。表面 5(第二个透镜后表面)的厚度不独立设置,而是用 Pick-up 绑定到表面 1(物面到第一个透镜的距离),比例为 1。原因很直白:两端的透镜和光纤在制造公差内是完全一致的,那么整个系统就应当满足空间反演对称,正着装和倒着装应该给出同样的耦合结果。这个约束一旦成立,系统里真正自由的变量就只剩一个——光纤到透镜的距离。优化维度从 2 降到 1,收敛快,而且不会出现“两边厚度各自跑飞、看起来效率很高但实物装不出来”的情况。
面编号不同版本的范例文件可能略有出入,建模时以自己文件里的实际编号为准。贴一份典型的面表供对照:
| 面 | 角色 | 厚度设置 | 半口径 |
|---|---|---|---|
| 1 | 源光纤端面 / 物面 | 0.1mm,设为变量 | 由模场决定 |
| 2 | 第一个透镜前表面 | 透镜中心厚 | 120μm |
| 3 | 第一个透镜后表面(光阑面) | 透镜间隔 2mm | 120μm |
| 4 | 第二个透镜前表面 | 透镜中心厚 | 120μm |
| 5 | 第二个透镜后表面 | Pick-up 表面 1,比例 1.0 | 120μm |
| 6 | 接收光纤端面 / 像面 | — | 由模场决定 |
微透镜本身的参数在这份范例里是给定的:熔融石英基片、厚度 0.9mm、内部透过率大于 0.99、透镜直径 240μm、节距 250μm、曲率半径 330μm、圆锥常数 0、数值孔径 0.17。这些数直接决定后面光束会不会被透镜口径切掉,建模时一个都不能省。
2.2 三种数值孔径定义的口径换算
这是整套方案里最容易翻车、又最不显眼的一处。同一个“数值孔径”,在这份范例涉及的资料里至少出现了三种口径:
| 定义 | 数学含义 | SMF-28e 对应值 | 用在哪 |
|---|---|---|---|
| 边缘光线倾角正弦 | sinθ,几何边缘 | 约 0.14 量级 | 几何光学粗算 |
| 强度降到 1/e² 处 | 高斯光束半角正弦 | 约 0.09 | Zemax 耦合计算、POP |
| 功率降到 1% 峰值处 | 厂商数据表口径 | 0.14 | 产品手册标称 |
厂商数据表给的 0.14 用的是第三种口径,而 Zemax 的单模光纤耦合计算和 POP 里的接收端模式,默认走的是 1/e² 口径。直接把 0.14 填进设置窗口,接收端的高斯模式会比真实模式胖一圈,模式重叠积分被系统性低估,你会在一个其实没问题的系统上反复加非球面。
换算本身不难。模场直径 9.2μm 对应束腰半径 w₀=4.6μm,波长 1.31μm,高斯光束远场 1/e² 半角近似为
θ ≈ λ / (π·w₀) = 1.31 / (π × 4.6) ≈ 0.091 rad
sinθ 与 θ 在这个量级几乎相等,所以 1/e² 口径的 NA 就是 0.09 左右,和厂商的 0.14 差着 50% 以上。这个 0.09 就是后面单模耦合计算窗口里该填的数。我的习惯是把这个换算写成注释挂在设置窗口旁边,谁接手都能看懂为什么不是 0.14。
2.3 浮动光阑与高斯切趾的建模取舍
系统孔径光阑设成“按光阑尺寸浮动”(float by stop size),光阑面放在第一个透镜的后表面。这意味着系统的入瞳大小不是人为指定的,而是由透镜的实际物理口径决定——范例里是半径 120μm。改成固定入瞳直径,你就看不到渐晕了,系统效率会一直显示 1.0,把最该关注的损耗藏了起来。
孔径上还定义了高斯切趾(Gaussian apodization),用来让入射光束呈现高斯分布。这里要说清楚:切趾只是对光纤出射模式的一种近似,它把振幅按高斯型衰减,但并没有真正把光纤的模式场搬进模型。近轴、短距离的场景下这个近似够用;一旦光束在两片透镜之间跑得远、衍射开始起作用,切趾的偏差就会暴露。这也是为什么后面必须补一档物理光学传播。
到这一步,模型里应该有的东西是:一张面表、一个独立变量、一个浮动光阑、一组高斯切趾,以及一个写清楚了的 NA 口径注释。四样齐了再往下走。
3. 两级快速估算:GBPS 定距离、FICL 定效率的接力顺序
范例给出的分析路径是有梯度的:先用最便宜的旁轴高斯光束拿到量级,再用单模光纤耦合计算拿到可交付的效率,最后才上物理光学传播做严格校核。跳过前两级直接上 POP,你会发现变量多、收敛慢,还不知道结果靠不靠谱。
3.1 旁轴高斯的束腰跟踪与 1/e² 光斑判读
旁轴高斯光束计算(Analysis > Physical Optics > Paraxial Gaussian Beam)是最省事的一档。范例里光束束腰始终相对表面 1 计算,表面 1 和物面同位,所以束腰半径 4.6μm 就落在源光纤端面上,正好对应模场直径 9.2μm。
跑完之后要盯两个数。第一是各面上的 1/e² 光束直径:范例里表面 3 上是 65μm,表面 4 上是 70μm,而这两个面的物理半口径是 120μm,也就是全口径 240μm。光斑占口径不到三分之一,说明透镜口径不是主要瓶颈,但也意味着还有余量可以拿来换别的指标。第二是像面光斑:范例给出 5.3μm,而按系统对称性,理想情况下像面束腰应该回到 4.6μm。这 0.7μm 的差距就是离焦,说明 0.1mm 这个初始距离还没调到最佳。
这一步的价值在于给你一个“应该长什么样”的基准。后面不管用哪种算法,像面束腰偏离 4.6μm 太多,先怀疑设置而不是怀疑系统。
3.2 一条 GBPS 优化函数,把 0.1mm 推到 0.117mm
既然唯一要动的变量是光纤到透镜的距离,优化函数就简单到只有一行。Zemax 里对应的操作数是 GBPS(旁轴高斯光束尺寸),思路是把某个面上的高斯光束尺寸压到目标值。范例的做法是直接把束腰尺寸的目标定成 4.6μm,让优化器去调表面 1 的厚度。
# 优化函数编辑器(Merit Function Editor)核心条目 # 操作数 作用面 目标 权重 说明 GBPS 1 4.6 μm 1.0 把束腰半径压回模场半径 # 变量设置(Variable Solves) # 表面 1 厚度:变量 V # 表面 5 厚度:Pick-up 于表面 1,比例 1.0(不参与独立优化)参数上要留意的有两点:GBPS 的作用面要指向束腰所在的那个面,本例是表面 1;目标值填的是半径而不是直径,填 9.2 会直接把系统调偏一倍。权重给 1.0 就够,因为只有一个操作数,不存在互相打架的问题。
优化跑完给出的光纤到透镜距离是 0.117mm,比初始的 0.1mm 多了 17μm。这个量级很符合直觉:装配间隙本来就该在零点几毫米以内,优化只是在这个范围内做微调。如果优化器把距离推到 0.5mm 甚至更大,八成是变量设错了或者 Pick-up 没生效。
3.3 单模光纤耦合计算的 S 与 T 两条链路
第二档是单模光纤耦合计算(Analysis > Calculations > Fiber Coupling Efficiency),它比旁轴高斯强的地方在于真的把光纤模式当成一个有形状的场来处理,而且把结果拆成了两个独立的量。
系统效率 S 描述的是能量传输:从源光纤辐射出去的全部能量做分母,穿过入瞳、经过系统振幅传输函数 t(x,y) 之后剩下的能量做分子。它只关心“过去多少”,不关心“过去的形状对不对”。表面反射、材料体吸收、光阑渐晕、镀膜,都算在这一项里。
模式耦合效率 T 描述的是形状匹配:把出瞳处汇聚波前的复振幅 W(x,y) 和接收光纤的复振幅 F_r(x,y) 做相干重叠积分,两者振幅和位相都对上时 T 取最大值 1.0。像差、离焦、模式尺寸不匹配,都体现在这一项上。
Zemax 会同时给出 S、T,以及一个在忽略像差、但考虑渐晕和振幅失配前提下的理论最大耦合效率。这三个数摆在一起看,问题定位就很快:S 掉了查光阑和镀膜,T 掉了查离焦和像差,两个都接近 1 而总效率上不去,那就该考虑系统本身还有没有提升空间。
设置窗口里那个 NA 就填上一章算出来的 0.09。填错这一个数,后面所有结论都歪。
3.4 FICL 优化后为什么只有接收端效率在涨
效率优化用 FICL 操作数,同样只有一行。范例跑几个循环之后,光纤到透镜的距离从 0.117mm 变成 0.11mm。注意这个值和旁轴高斯给的 0.117mm 并不完全一致,差 7μm,原因是两种算法对“最佳”的定义不同:旁轴高斯只看束腰尺寸,FICL 看的是完整的模式重叠积分。
更有意思的是结果的结构:优化前后系统效率几乎没变,涨的是接收端效率。原因很清楚——系统效率主要由透镜口径和模式尺寸的比例决定,少量离焦改变不了多少能量通过率;而接收端效率对波前位相敏感,重新聚焦让源光纤模式经过系统之后和接收光纤模式对得更齐,这一项才涨得动。看懂这个分工,你就知道该往哪个方向加优化自由度:想提 S 就加大口径或者减镀膜损耗,想提 T 就上非球面、加面、消球差。
范例里 T 的这一轮优化之后,效率基本已经贴到这个构型的极限,再加操作数意义不大。这时候该换算法了。
4. 物理光学传播:POP 怎么把 20mm 间距下的 0.57 算出来
前两档方法都建立在“光束始终是理想高斯”的假设上。系统短、光斑小、口径余量大,这个假设成立;一旦传输距离变长、光束在自由空间里长胖到接近口径,假设就崩了。POP 就是用来处理这个崩塌的。
4.1 POP 设置:采样率、起始矩阵与重叠积分面
物理光学传播(Analysis > Physical Optics > Physical Optics Propagation)的设置窗口里,最要紧的是三件事。
第一是起始场。范例在表面 1 上定义束腰半径 4.6μm 的高斯模式,和源光纤的模场对上。第二是采样。范例用了 256×256 的采样率,并且点了 Auto 按钮让软件自动给出合适的起始矩阵尺寸——这一步不能省,手填一个过大或过小的矩阵,要么采样点稀到束腰只有几个点,要么窗口小到光束被边界截断,两种都会让结果失真。第三是重叠积分面,本例选在像面,并且在像面上用完全相同的模式去算重叠积分。
# POP 设置要点(物理光学传播窗口) # Beam definition : Waist, 半径 4.6 μm,位于表面 1 # Sampling : 256 × 256,起始矩阵点 Auto # Display : Cross-section / Irradiance / Phase # Fiber coupling : 在像面做重叠积分,接收模式同源模式起始矩阵点 Auto 这个动作,实际是在问软件“按你这个束腰和波长,多宽的窗口才能容纳传输过程中的光斑”。省掉它,后面所有关于效率的讨论都没有意义。
4.2 POPD 数据怎么读:从 Pilot Beam Waist 到 M²
优化函数编辑器里的 POPD 操作数能一次性把 POP 的整组数据吐出来,比在窗口里看图方便得多。范例给出的读数大致是这样:
| 序号 | 含义 | 数值 |
|---|---|---|
| 0 | 总光纤耦合效率 | 0.994 |
| 1 | 系统效率 | 0.998 |
| 2 | 接收端效率 | 0.996 |
| 10 | 导引光束束腰 | 4.57μm |
| 23 | 有效光束宽度 | 4.84μm |
| 26 | M² | 1.082 |
这组数里,真正值得花时间的是 M² 和位相。M² 为 1.082,说明出射光束几乎还是理想高斯,振幅分布没问题;那么剩下的失配就只可能来自位相。把 POP 窗口的显示切成位相图,会看到一条抛物线和一点四次曲线成分——抛物线对应聚焦(离焦),四次曲线对应球差。透镜边缘处还能看到位相曲线被生生截断的痕迹,那是口径渐晕留下的印记。
系统效率 0.998 也印证了这一点:透镜口径造成的能量损失不到 1%。既然振幅几乎完美、能量几乎全过,那么想再提效率就只能动位相,而位相差集中出现的区域能量很低,所以再怎么优化提升也有限。这类判断,光看一个总效率数字是做不出来的。
要在同一张图上同时看光强和位相,做法是把 cross-section 形式的辐照度图输出,然后 Window > Clone 克隆一份,把克隆窗口改成显示位相,再用 Window 菜单里的 Overlay 把两条曲线叠上去。这个叠加图是答辩时最有说服力的一张。
4.3 把间距拉到 20mm:衍射如何让效率从 0.99 掉到 0.57
前面所有结论都建立在 2mm 的透镜间距上。把间距改成 20mm,分岔立刻出现。
FICL 算出来还是 0.99,几乎纹丝不动。这符合光线光学的逻辑:光束在两组透镜之间近似准直传输,光线追迹看不到发散,自然算不出损耗。
POP 算出来是 0.57,几乎腰斩。原因就写在光束尺寸里:高斯模式在两片透镜之间传输 20mm 之后,1/e² 宽度涨到 0.15mm,而透镜半径只有 0.12mm。也就是说,光束还没到第二个透镜就已经比透镜口还宽,相当一部分能量在第二个透镜的物理光阑上被衍射掉。此时聚焦到接收光纤上的光已经不是高斯形状,M² 从 1.08 涨到 2.45,模式匹配自然崩掉。
把这个间距当成变量、固定已经优化好的光纤到透镜距离再跑一轮,最优间距回到 2.072mm,和实验用的 2mm 只差 3.6%。这个数字很有价值:它说明模型的物理是对的,实验取值本来就接近最优,偏差在装配公差范围内。
结论不是“POP 更准所以光线法没用”,而是判据要清楚:当传输距离带来的光束展宽还远小于口径时,光线法够用且快;当展宽逼近口径,必须换 POP。用 Universal Plot 把透镜间距扫一遍、同时看耦合效率和 M²,这条边界在图上会非常直观。
4.4 偏振、体吸收与 MgF₂ 增透膜的叠加
前面所有计算都默认光在表面无损耗地通过,这在实际系统里是不成立的。打开偏振计算就能把这块补上:在 POP 和单模光纤耦合计算的设置窗口里勾上 Use Polarization,再到 General > Polarization 里把入射光定义成 y 线偏振。
范例的结果是,两档计算的效率都掉到 86%。这 14 个百分点全部落在系统效率上,接收端效率基本不动——原因在于菲涅尔反射损耗跟入射角相关,而系统里角度变化平缓,反射主要削减能量,对模式形状的改变很慢。分不清这个归属,你就会误以为是模式失配,跑去加镜片。
接着用 Tools > Coatings > Add Coatings to All Surfaces 给所有玻璃表面加一层单层 MgF₂ 增透膜,效率明显回升。这里不需要背具体数字,正确的动作是:加膜前后各跑一次,把系统效率的差值记下来,作为镀膜方案的一个量化依据。如果这层膜带来的提升不足以覆盖成本和工艺难度,方案评审时就有话可说。
到这一步,一份完整的耦合分析才算闭环:几何、模式、衍射、偏振损耗,四个层面都有对应的数据和判据。
5. 避坑排查:五处最容易让耦合效率算错的细节
5.1 效率怎么调都上不去,像面光斑偏大
现象:优化跑了十几轮,接收端效率卡在 0.7 附近不动,像面光斑始终比 4.6μm 大一圈。
原因:耦合计算窗口里的数值孔径填了数据表上的 0.14,而软件用的是 1/e² 口径。接收端模式被撑大,重叠积分天然偏低,优化器再怎么调距离也补不回来。
解决:按 θ ≈ λ/(π·w₀) 把模场直径换算成 1/e² 口径,本例约 0.09。改完再看,如果效率跳变明显,说明之前一直在跟一个错误的靶子较劲。
5.2 优化后两个厚度不相等,实物装不出来
现象:优化结果里光纤到第一个透镜是 0.11mm,第二个透镜到光纤是 0.16mm,耦合效率还挺好看。
原因:把表面 1 和表面 5 的厚度都设成了独立变量。两组透镜和光纤在公差内一致,系统本应空间反演对称,两个变量各自跑,等于允许一个不对称的解,模型里多出来的自由度换来了虚高的效率。
解决:只留表面 1 为变量,表面 5 用 Pick-up solve 绑定,比例 1.0。宁可牺牲一点优化空间,也要保证解是可制造的。这条在答辩时几乎必被问到。
5.3 系统效率恒为 1.0,看不到渐晕
现象:无论怎么改透镜间距、怎么改波长,系统效率一直显示 1.000,看不出任何能量损失。
原因:系统孔径设成了固定入瞳直径,光阑没有真正参与限光。浮动光阑的作用是让入瞳由透镜实际口径决定,一旦改成固定值,光束被口径切掉的那部分就消失了。
解决:孔径类型改回 float by stop size,光阑面设在第一个透镜后表面。设完再跑,表面 3、表面 4 上的光斑尺寸和口径的比例关系才有意义。
5.4 长间距下光线法报高,换成 POP 就崩
现象:透镜间距 20mm,FICL 报 0.99,POP 报 0.57,两个结果差一倍,不知道该信哪个。
原因:间距拉长后光束在两片透镜之间展宽到 0.15mm,超过 0.12mm 的透镜半径,衍射已经主导。光线追迹不带衍射,看不见这个损耗。
解决:建立一个换算法的判据——光束 1/e² 宽度超过透镜半径的一半左右,就上 POP。同时把 M² 当成健康指标,本例里从 1.08 涨到 2.45,这个跳变本身就说明模型该换了。
5.5 POP 结果随采样数跳变,优化不收敛
现象:采样从 128 改到 256 再改到 512,耦合效率每次都不一样,优化器在几个解之间来回摆。
原因:起始矩阵没有点 Auto,窗口尺寸和束腰不匹配。窗口过窄会截断光束边缘,过宽则束腰处采样点不足,两种都会让重叠积分算不准;采样数变化时误差跟着变,结果自然不稳定。
解决:先点 Auto 定起始矩阵,再用 POPD 读数交叉验证——导引光束束腰 4.57μm 和有效光束宽度 4.84μm 应该接近,M² 应该接近 1。两个条件都满足,再开始优化。
6. 验收与答辩:用一组可复现的数字把方案钉住
到了交付这一步,最怕的不是模型算得不够精,而是别人问你“这个 0.99 凭什么可信”时答不上来。我的做法是把验收判据提前列成一张表,每个数字都能追到某个窗口、某个操作数。
| 验收项 | 判据 | 数据来源 |
|---|---|---|
| 束腰位置与尺寸 | 源面束腰半径 4.6μm,与模场直径 9.2μm 对应 | 旁轴高斯光束窗口 |
| 面内光斑占比 | 表面 3、4 的 1/e² 直径 65μm、70μm,远小于 240μm 全口径 | 旁轴高斯 / POP 剖面 |
| 光纤到透镜距离 | 0.11~0.12mm,且两端厚度严格相等 | 优化后变量表 |
| 透镜间距 | 优化值 2.072mm,与实测 2mm 相差 3.6% 以内 | 间距扫描或 Universal Plot |
| 总耦合效率 | ≥0.99(无偏振),偏振开启后约 0.86 | POPD 序号 0 / 单模耦合窗口 |
| 光束质量 | M² 接近 1(本例 1.082) | POPD 序号 26 |
| 位相残差 | 位相图中抛物线(离焦)与四次项(球差)成分可辨识 | POP 位相叠加图 |
这张表里最容易被追问的是最后一行。位相图不是装饰,它直接告诉你还有没有提升空间:如果位相曲线基本平直,那效率已经到顶,再优化只是自娱自乐;如果抛物线明显,说明还有离焦可调;如果四次项突出,那就该考虑非球面或者增加面数。答辩时被问“还能不能更好”,指着这张图回答,比空口说“理论上还可以优化”有力得多。
另一个常被忽略的动作是保存中间文件。范例里从初始模型、GBPS 优化后、FICL 优化后到 POP 之后,每一档都留了对应的模型文件。这不是洁癖,是为了在评审现场能倒回去演示某一步的中间状态。有人问“你怎么知道是衍射造成的”,当场把 2mm 和 20mm 两个间距的 POP 剖面并排放出来,比讲十分钟原理都管用。
我自己的血泪经验是:任何一次优化之前,先把当前模型的变量表截图存下来。有一次跑完一轮效率很漂亮,回头想复现,发现已经记不清当时是哪几个面被设成了变量、Pick-up 有没有生效,只能从头再搭一遍。从那以后我每次动优化函数之前,都强制走一遍“变量表截图、光阑设置截图、NA 口径注释”三件套,宁可多花两分钟。希望帮到你。
本文还有配套的精品资源,点击获取