1. 微透镜阵列单元透镜的焦距与数值孔径参数计算
任务边界与设计输入
本例要解决的是:在给定 OCS 光路耦合效率与工作距离要求下,反推单个微透镜的曲率半径 R、矢高 h、焦距 f 与数值孔径 NA,并检查这些参数是否与后续阵列排布(周期、厚度、边缘厚度)相容。设计输入取一组明确的教学示例参数:工作波长 λ=1310 nm,透镜材料为熔融石英(n≈1.447 @1310 nm),目标工作距离(透镜顶点到光纤端面)WD=250 μm,OCS 单端口要求耦合效率 η≥85%,对应允许的最大会聚半角约 8°(即 NA≈0.14),透镜通光口径 D=125 μm(与 125 μm 光纤芯/包层匹配的典型值)。
从 NA 与 WD 反推焦距
对近轴薄透镜,数值孔径与焦距、口径的关系为 NA ≈ D/(2f)(空气中,小角度近似)。由 NA 上限 0.14 与 D=125 μm 可得焦距下限:
f ≥ D / (2·NA) = 125 / (2×0.14) ≈ 446 μm
同时,工作距离 WD 与焦距、后焦距的关系为 WD = f − BFL_offset,对平凸透镜(平面朝光纤侧)可近似取 WD ≈ f − h,其中 h 为矢高。若先忽略矢高,f≈WD=250 μm 会给出 NA≈0.25,远超 0.14 上限,说明单靠 WD 定焦距会违反耦合效率约束。因此需要把 WD 与 NA 两个约束联立:取 f=450 μm 时 NA=0.139,满足 η 要求;此时 WD 需通过矢高修正来匹配 250 μm,即要求 h≈200 μm,这已接近口径量级,属于强弯曲透镜,需要进一步核算。
曲率半径与矢高的联立计算
球面矢高公式为 h = R − √(R² − (D/2)²),薄透镜造镜者公式为 1/f = (n−1)·(1/R₁ − 1/R₂)。对平凸透镜(R₂=∞,凸面朝物方),有 f = R/(n−1),即 R = f·(n−1)。取 f=450 μm、n=1.447:
R = 450 × 0.447 ≈ 201 μm
h = 201 − √(201² − 62.5²) ≈ 201 − 191.0 ≈ 10.0 μm
这里出现关键矛盾:按 f=450 μm 算出的矢高仅约 10 μm,对应 WD≈440 μm,远大于 250 μm 的目标。也就是说,在给定材料与口径下,NA≤0.14 与 WD=250 μm 不能同时由单个平凸透镜满足。这正是本例要暴露并判断的核心结论,而不是硬凑一组“看起来都对”的参数。
参数可行性与阵列排布约束判断
把上述计算整理成可判读的参数表,并给出阵列排布侧的约束检查:
| 参数 | 计算值/范围 | 约束来源 | 判断 |
|---|---|---|---|
| 焦距 f | ≥446 μm(NA 约束);WD 约束倾向 250 μm | NA≤0.14;WD=250 μm | 两约束冲突 |
| 曲率半径 R | ≈201 μm(f=450 μm 时) | R=f(n−1) | 可加工 |
| 矢高 h | ≈10 μm | h=R−√(R²−(D/2)²) | 远小于 WD 需求 |
| 数值孔径 NA | ≈0.139(f=450 μm) | NA=D/(2f) | 满足 η 约束 |
| 阵列周期 p | 需 ≥ D=125 μm,建议 127 μm 标准值 | 避免相邻透镜交叠 | 与 D 相容 |
| 基片厚度 t | 需 ≥ h+边缘厚度,建议 ≥ 300 μm | 结构强度与矢高容纳 | 需复核 |
结论是:若坚持 WD=250 μm 且 η≥85%,应放宽材料选择(提高 n 以在相同 R 下获得更短焦距)或改用双凸/非球面结构,或把 WD 目标调整到约 440 μm。下面的 SVG 把“NA 约束线”和“WD 约束线”画在同一张参数关系图上,直观显示两条约束在 (f, h) 平面上的可行域为何不重叠。
可执行的核算脚本与判读
把上述联立关系写成一段可直接运行的 Python 核算脚本,输入材料折射率、口径、目标 WD 与 NA 上限,输出 R、h、f、NA 以及是否满足约束的判定。脚本不依赖外部库,便于在任意环境复算。
import math
def lens_check(n=1.447, D=125.0, WD_target=250.0, NA_max=0.14):
# 由 NA 上限反推焦距下限
f_min = D / (2 * NA_max)
# 在 f_min 附近取候选焦距,计算 R、h、NA、WD
results = []
for f in [f_min, f_min*1.1, f_min*1.5, WD_target]:
R = f * (n - 1)
if R <= D/2:
continue
h = R - math.sqrt(R**2 - (D/2)**2)
NA = D / (2 * f)
WD = f - h
ok_NA = NA <= NA_max
ok_WD = abs(WD - WD_target) <= 0.05 * WD_target
results.append((f, R, h, NA, WD, ok_NA, ok_WD))
return results
for r in lens_check():
f, R, h, NA, WD, ok_NA, ok_WD = r
print(f"f={f:6.1f} R={R:6.1f} h={h:5.1f} NA={NA:.3f} WD={WD:6.1f} "
f"NA约束={'通过' if ok_NA else '不通过'} WD约束={'通过' if ok_WD else '不通过'}")
按示例参数运行,预期输出会显示:f≈446 μm 时 NA 刚好达标、WD 约 436 μm;f=250 μm 时 WD 接近目标但 NA≈0.25 不达标。这与 SVG 中两条约束线不交于实际矢高曲线的结论一致。判读规则是:只有当某候选焦距同时落在 NA 约束线右侧且 WD 偏差在 ±5% 内,才认为该组 (R, h, f, NA) 可用于后续阵列排布;否则应调整材料折射率、口径或 WD 目标,而不是强行取中间值。