去年接到一个中波红外测温物镜的设计需求,探测器是640×512、15μm像元,焦距要求110mm,工作波段3.7~4.8μm,环境温度要扛住-20℃到60℃。第一版按传统思路做纯折射方案,用了三片锗加一片硒化锌,序列设计软件里MTF看起来还不错,结果一放到宽温域考核里,后截距漂了将近0.18mm,像面直接糊掉。后来把方案推到重来,换成"锗基底+单面衍射结构+一片ZnSe"的折衍混合路线,并且用VirtualLab Unity对衍射面做了严格的物理光学验证,最终镜片数量减到两片,全温域、全视场的MTF反而比原来更高。这篇就把整个设计、仿真、踩坑的过程完整复盘一遍,给同样在红外光学这条道上折腾的人做个参考。
我会先解释为什么红外物镜必须要走上折衍混合这条路,再讲VirtualLab Unity在中间扮演的角色,然后给出完整的建模流程、参数配置、仿真结果分析,最后聊几个实际工程落地时非常容易踩的坑。不管你是刚接触衍射光学的新人,还是已经被纯折射系统折磨到头秃的老手,这篇应该都能给你一些可以直接拿去用的东西。
1. 为什么红外物镜必须考虑"折衍混合"——从色差、热差到体积的三重压力
1.1 红外材料稀缺导致的像差困境
可见光波段做消色差,库里面可以选冕牌玻璃、火石玻璃、低色散玻璃,十几二十种材料相互搭配。到了中波红外就完全不是这么回事了,常规可用的光学材料就锗、硅、硒化锌、硫化锌、氟化镁这么几种,而且它们的光学常数分布很极端。锗的折射率高达4.0左右,色散系数又低,单片锗透镜在中波红外区间的二级光谱非常吓人。
我第一版纯折射方案用了三片锗,就是为了把剩余色差和二级光谱硬压下去。镜片多了,界面多了,透过率损失不说,光机结构也复杂。最关键的是,锗的折射率温度系数dn/dT大约是390×10⁻⁶/K,比可见光玻璃大近两个数量级。温度一变,整个系统的焦移非常明显,前面说的-20℃到60℃工况下后截距漂移0.18mm就是这么来的。
衍射元件在这里提供了一条完全不同的路子。衍射面的光焦度与波长近似成反比,产生的色差和折射透镜正好反号。把衍射面做在锗透镜的球面上,就相当于在同一个元件里同时存在正色差的折射贡献和负色差的衍射贡献,两者一抵消,色差问题立刻缓解。
1.2 温度漂移:衍射面带来的被动消热差能力
热差问题在红外系统里比色差更致命。温度变化时,材料的折射率变了,镜片曲率半径和厚度也变了,镜筒的间隔也跟着变,这些效应叠加起来就是严重的离焦。纯折射系统要消热差,通常得引入机械被动补偿结构,或者加一片在折射率和热膨胀系数上做文章的"热差校正透镜"。
衍射面有个很有意思的特性:它的光焦度温度系数与基底材料的热膨胀系数直接相关,而且符号与折射面相反。也就是说,当温度升高导致锗透镜的折射光焦度变弱、焦点往后跑的时候,衍射面的光焦度变化趋势是相反的,可以在一定程度上把焦点往回拉。合理分配折射面和衍射面的光焦度权重,就能在同一个光学元件上实现被动消热差,不需要额外的机械运动结构。
这个特性在宽温域红外系统中太值钱了。我最终方案里,衍射面设计在锗透镜的平面侧,配合一片低色散的ZnSe正透镜,从-20℃到60℃全温域内后截距漂移控制在了0.03mm以内。
1.3 镜片数量、重量与透过率的工程收益
折衍混合带来的收益不是某一项指标的提升,而是连锁反应。镜片数量从四片减到两片,重量降了接近一半,空气-玻璃界面少了四个,单面透过率按96%算,总共能省下大约1.2%的能量损失。对于红外热像仪这类对噪声等效温差非常敏感的系统,哪怕多透一个百分点也是实打实的收益。
从加工成本角度看,衍射面在锗基底上直接用单点金刚石车削就可以加工出来,不需要额外增加镀膜工艺,算是以加工精度换系统复杂度的一种思路。但这里面也有代价,就是衍射效率不会100%,会有其他衍射级次的杂散光进来,这会直接影响PSF的能量集中度。这个问题后面讲仿真的时候会重点展开。
2. VirtualLab Unity和序列设计软件的分工:为什么要单独把衍射面拿到这一步验证
2.1 序列光线追迹在衍射元件面前的局限性
很多做光学设计的人习惯了一上来就打开序列设计软件,设置视场、波长、厚度,然后怼优化函数。这套流程在纯折射系统里非常成熟,但在折衍混合系统里会踩一个看不见的坑:序列光线追迹对衍射面的处理,本质上是把一个理想化的相位函数叠加在表面上,它假设这个相位函数100%生效、只产生设计级次的光线,完全忽略衍射效率、多级次杂散光、偏振效应和微结构的实际散射行为。
换句话说,序列设计软件里看到的是"理想衍射面",而实际加工出来的衍射面是一个有台阶近似、有加工误差、有入射角相关的效率分布的微结构。这两者之间的差距,就是项目后期出问题的根源。我做第一版的时候在序列设计软件里看衍射面效率还算乐观,但真正分析多级次杂散光对像面的影响时,发现3~5级次的能量虽然分散,但累计起来会形成一个很低的背景杂光基底,在红外大动态范围测温场景下会引入不可忽略的辐射测量误差。
VirtualLab Unity这类物理光学仿真工具的核心价值就在这里:它按照电磁场传播的思路,用严格耦合波分析和分束传播等算法,把衍射微结构真正"算"进去,而不是用理想相位函数去替代。这样你看到的PSF、MTF、衍射效率、杂散光分布,才是接近实际物理过程的结果。
2.2 场追迹到底追的是什么
VirtualLab Unity的底层逻辑是"场追迹"(Field Tracing),和传统光线追迹的区别可以这样理解:光线追迹把光当成一根根没有粗细的线,用斯涅尔定律算方向;场追迹把光当成一个在空间里传播的电磁场分布,每一步都保留振幅、相位、偏振信息。
这个差异在遇到衍射微结构时是决定性的。衍射面的特征尺寸在微米到几十微米量级,和波长可比,这时光的衍射、干涉、偏振效应不能忽略。场追迹可以在任意平面输出完整的复振幅分布,从而计算出真实的衍射效率、波前误差、PSF和MTF,这些数据才是光学设计最终要交付的"证据"。
不过也得说实话,VirtualLab Unity不是用来做全局优化的工具。它的计算速度相比序列光线追迹慢得多,不适合在优化循环里反复跑上千次。实际工程流程应该是:先用序列设计软件做初始结构搜索和像差平衡,得到一个合理的折衍混合初始解;然后把光学系统导入VirtualLab Unity,对衍射面做严格仿真,检查衍射效率、多级次杂散光、偏振敏感性;最后根据仿真结果反过来微调相位系数或台阶数,再回到序列软件里确认整体性能。这套"粗优化+细验证"的组合拳,是我目前认为效率最高的路径。
2.3 老版本VirtualLab Unity与新版本Fusion的迭代
顺带提一句,标题里写的VirtualLab Unity其实是个沿用了很久的旧称,现在官方产品叫VirtualLab Fusion。界面布局、模块命名这些年变化不少,但核心思想一脉相承:谐波场组设置波长和偏振、光学函数定义元件、传播算法选择、探测器提取结果。下面讲的流程在两个版本里都能走通,只是菜单名称可能略有出入,遇到找不到的地方按功能模块去对就行。
3. 一步一步搭建仿真:光源、材料、衍射面定义与探测器设置
3.1 先定参数卡,再动手建模
建模前花十分钟把参数卡列清楚,能省下后面大量的返工时间。我这次中波红外折衍混合物镜的关键参数如下,先给大家一个参照:
| 参数 | 数值 | 说明 |
|---|---|---|
| 工作波段 | 3.7~4.8μm | 覆盖中波红外大气窗口 |
| 中心波长 | 4.25μm | 用于单波长快速验证 |
| 焦距 | 110mm | 有效焦距 |
| F数 | 2.5 | 入瞳直径44mm |
| 全视场角 | ±1.5° | 对应15μm像元探测器 |
| 探测器像元 | 15μm | 640×512 |
| 光学材料 | 锗、ZnSe | 折射元件 |
| 衍射面位置 | 锗透镜后表面 | 平面基底上的kinoform结构 |
| 衍射面台阶数 | 8台阶 | 理论衍射效率约95% |
| 环境温度范围 | -20℃~60℃ | 考核宽温域焦移 |
材料和面型参数先用序列设计软件优化过一轮。锗透镜是一块弯月形正透镜,后表面为平面,衍射微结构就做在这个平面上;ZnSe透镜承担部分正光焦度和色差校正。这种"一片衍射面做在平面基底上"的构型加工最简单,单点金刚石车床直接车平面上的浮雕结构比球面浮雕好做得多,面形检测也容易。
3.2 光源与偏振设置
在VirtualLab Unity里,我是用"谐波场组"来管理多个波长的。每个波长单独建立平面波光源,入射到物面后经过一个理想透镜转换成球面波会聚,或者直接用系统自带的"点光源/有限距离光源"来模拟从物方来的球面波。物面视场通过改变入射角来实现,对应0°、0.75°、1.5°三个半视场。
偏振设置这步特别容易被忽略。中波红外系统中,非偏振或圆偏振光是常见的,但由于衍射微结构的偏振依赖性,建议至少分别计算S偏振和P偏振两种状态,看看两者的MTF差多少。我实测下来,8台阶衍射面在F/2.5孔径下S和P偏振的衍射效率差异在1.5%左右,会反映到焦面光斑的细微不对称上,但对最终MTF的影响不大。如果系统要求特别高,就得把偏振相关的相位延迟也纳入预算。
3.3 折射面材料与透过率模型
锗和ZnSe在VirtualLab Unity的材料库里有完整的折射率色散数据,可以直接调用。需要注意的是一定要把材料折射率模型设置成包含温度依赖的版本,这样后续做温度状态仿真才有意义。红外材料的折射率温度系数非常大,锗在4μm处dn/dT约为396×10⁻⁶/K,这个值不能当成常数,至少要按三个温度点(-20℃、20℃、60℃)分别计算折射率,再更新到仿真模型里。
我在做宽温域分析时,是在序列设计软件里先算出不同温度下的镜面曲率半径、厚度、间隔变化,再把这些几何量带入VirtualLab Unity,更新材料折射率,重新跑一次衍射效率分析。这样既用到了VirtualLab的严格衍射分析能力,又借助序列软件的近轴热差分析结果来设置几何边界条件,两边各取所长。
3.4 衍射面建模的三种方式
VirtualLab Unity里给衍射面建模有三种常见路径,不同场景选不同方式:
第一种:相位多项式定义界面。直接在光学函数里填衍射面的相位分布系数。对于旋转对称的kinoform面,相位可以写成:
φ(r) = A1 * r^2 + A2 * r^4 + A3 * r^6其中r是表面的径向坐标,A1是二次相位系数,与衍射面的光焦度直接相关。这个方式最简单,尤其在初始验证阶段,计算速度快,适合看整个系统的像差平衡情况。但它的局限是相位函数是理想的,不考虑微结构的具体台阶形式和加工限制。
第二种:导入外部相位文件或浮雕高度文件。先用Matlab或Python脚本生成kinoform的浮雕高度分布,微结构的高度h和相位φ之间的关系是h = φ * λ / (2π * (n-1)),其中n为基底材料在中心波长的折射率。生成的文件可以带上台阶量化的信息,即把连续相位离散成8个台阶。VirtualLab Unity可以直接读取这种文件来定义界面,比纯相位多项式更贴近真实加工件。
第三种:严格光栅/周期性微结构分析。针对单个周期单元做严格耦合波分析,得到衍射效率和相位延迟随入射角、波长的变化,再把这些结果代入整个系统中。这是最严格的做法,能捕捉台阶结构带来的偏振效应和阴影效应,但计算量也最大。我在实际项目中,先用第二种方式做全系统MTF评估,再对关键视场和波长用第三种方式做局部严格验证。
| 建模方式 | 优点 | 缺点 | 适用阶段 |
|---|---|---|---|
| 相位多项式 | 快、直观、便于优化 | 理想化,忽略效率损失 | 初始验证 |
| 相位文件/浮雕文件 | 贴近工艺,可含台阶信息 | 需要外部生成文件 | 工程评估 |
| 严格微结构分析 | 最准确,含偏振和阴影效应 | 计算量大 | 关键指标确认 |
这段是我自己摸索出来的分工方式。如果一上来就直接用第三种方式做整个系统的全视场扫描,一个状态跑几个小时很正常,迭代起来非常痛苦。
3.5 探测器和评价函数
在VirtualLab Unity里,我习惯同时放三个探测器:
一是强度探测器,放在焦平面上,直接看光斑分布和能量集中度,确认有没有明显的离焦或者彗差尾巴。二是波前探测器,放在系统出瞳位置,提取波前误差,和设计值对比,看看衍射面的相位实现是否准确。三是PSF/MTF计算器,从焦面光斑计算得到调制传递函数,和探测器像元尺寸对应的截止频率做对比。
这里有个关键技巧:计算MTF时要把衍射效率损失和多级次杂散光的影响包含进去,否则计算结果会比实际系统乐观。具体做法是,在焦面处把光斑图像的所有像素能量求和,与入射总能量做对比,得到效率归一化因子,再把MTF曲线乘上这个因子。这样得到的才是"实际会成像的效果",而不是理想衍射面的效果。
4. 仿真结果评估与实际迭代中踩过的四个坑
4.1 衍射效率与多级次杂散光是折衍混合系统的"隐形杀手"
8台阶kinoform的理论衍射效率大约95%,意思是有5%的能量跑到其他级次去了。这5%在仿真里不会无故消失,它们会以高级次离焦光斑的形式铺在焦平面上,形成一个低强度的背景基底。测温系统里如果目标温度动态范围很大,目标的强辐射就会通过这个背景基底泄漏到邻近像素,形成"光晕效应",影响温度测量精度。
我在VirtualLab Unity里做了个对比实验:理想相位多项式模型里,MTF到30lp/mm时还有0.45;换成8台阶浮雕文件模型后,同样频率点掉到了0.38。这个差距如果不提前仿真,等装出样机去测试才发现,返工成本就太高了。所以折衍混合系统的MTF评估务必要用带台阶信息的模型,不能只看理想相位结果。
多级次杂散光还有一个特点,就是它的分布和视场强相关。不同视场的入射光线打到衍射台阶上,产生的多级次方向不完全一样,所以杂散光背景在像面上不是均匀的,而是有结构的。我后面用一个"暗背景+强信号"的仿真场景模拟了强点光源,在焦面上看到了明显的环状杂散结构,这也验证了衍射多级次确实是杂散光的一个主要来源。
4.2 台阶数不是越多越好,要和工艺与波长匹配
仿真阶段我在4台阶和8台阶之间做过对比。4台阶理论效率约81%,8台阶约95%,看起来8台阶优势明显。但8台阶的最小特征宽度在边缘环带会显著减小,单点金刚石车削时刀具圆弧半径如果接近特征宽度,实际加工出来的台阶形状会和理想矩形差别很大,效率反而下降。
VirtualLab Unity里可以把这个因素建模进去:把理想的矩形台阶轮廓替换成带圆弧过渡的梯形轮廓,重新计算衍射效率分布。我试了几组参数后发现,如果边缘环带特征宽度小于40μm,梯形过渡带来的效率损失就开始抹平8台阶相对4台阶的优势。所以在设计阶段就用仿真工具把工艺约束嵌进去,远比等加工出来再补救要靠谱。
4.3 波前采样与传播算法的选择决定仿真可信度
折衍混合系统的传播仿真有个天然难题:系统整体尺度和衍射微结构尺度差了三个数量级以上。110mm的焦距,微米级的台阶结构,如果在一个传播平面里既要包含整个光束口径又要分辨每个台阶,计算网格规模会非常恐怖。
我的处理策略是分层传播:整个系统用分束传播(SPP,Split Propagation)算法,在靠近衍射面的局部区域启用更细的采样网格;严格分析衍射微结构时,把单个周期单元抽出来用傅里叶模态法(FMM,Fourier Modal Method)单独算效率。这种局部严格、整体高效的策略,计算时间从"几天"级别降到了"几小时"级别。
采样密度也值得提一下。在衍射面附近,我至少保证每个最小台阶特征宽度有4~6个采样点,否则相位量化的高频分量会被丢失,衍射效率结果会失真。判断采样够不够的方式很简单:加密一倍采样点重新算,如果效率和PSF变化在1%以内,说明网格已收敛;如果变化明显,说明之前的采样太粗,结果不能采信。
4.4 公差灵敏度在物理光学仿真里的具体体现
折衍混合系统的公差分析比纯折射系统更麻烦,因为除了曲率半径、厚度、偏心这些常规公差,还有衍射面的相位公差、台阶深度公差和环带位置公差。VirtualLab Unity里可以借助参数化功能,把台阶深度偏差作为变量,比如设定±0.05μm的蚀刻深度误差,观察衍射效率和PSF的变化。
我的实测结论是,台阶深度偏差对一级衍射效率的影响基本按 (sin x / x)^2 的规律走,0.05μm误差在4μm工作波长下对应大约4.5%的效率波动,这个量级可以接受。真正敏感的是环带半径误差,它会导致相位偏差随径向位置累积,产生类似球差的波前误差,对MTF的高频段影响非常大。所以在给加工方写公差单时,我把环带半径公差收紧到±1μm,台阶深度公差放到±0.05μm,这样效率有保障,加工难度也不会太高。
5. 从仿真样机到量产:工程落地时还要盯住这几件事
5.1 衍射面与镀膜的交互影响
折衍混合元件的表面通常需要镀增透膜,但镀膜对微结构有直接的"填平"效应。8台阶的刻蚀深度在中波红外波段大约1μm左右,增透膜的膜层厚度叠加几层后,会改变台阶的实际深度和轮廓,进而影响衍射效率和相位分布。
在VirtualLab Unity里可以把这个效应做一阶近似评估:把镀膜简化为在微结构表面增加一层等效薄膜,重新计算相位延迟。我做下来发现,深度约0.8μm、折射率约1.6的等效膜层会让一级衍射效率再下降2~3个百分点。所以理论上算出来的95%效率,实际加工出来能做到90%就已经很不错了。项目时间规划里要给这部分效率损失留出余量,否则最后整机灵敏度不达标再回头找原因,会浪费大量时间。
5.2 与序列设计软件的协同流程
前面说了VirtualLab Unity不适合做全局优化,那初始结构从哪来?我的建议是先用序列设计软件搭好折衍混合系统的初始结构,把相位系数A1、A2、A3优化到像差平衡的状态,然后再把数据导入VirtualLab Unity验证。
具体操作上,我会在序列设计软件和VirtualLab Unity之间维护一份共用的设计参数表。任何一方调整了相位系数或材料参数,立刻同步到另一方,避免两边模型漂移。最后一轮验证通过后,以VirtualLab Unity的结果为准去评审和下发生产,因为只有它才算清楚了衍射物理效应。
5.3 样机装调阶段的检验方法
衍射面的实际加工质量靠什么检验?两个方法推荐:一是用激光干涉仪测波前,通过比较设计相位与实际相位的残差来判断环带加工是否到位;二是用衍射效率测试仪直接测各个级次的能量分布,与VirtualLab Unity仿真结果对照。如果实测-1级和+1级能量和仿真差超过2%,就得检查工艺参数或者图纸公差。
我现在手里这套系统的实测波前残差PV约0.12μm,一级衍射效率偏差约1.5%,与仿真预测一致。系统全温域实测MTF在耐奎斯特频率附近约0.36,和用8台阶浮雕模型算出来的0.38基本对得上,说明仿真建得足够准。
6. 关于这套流程,我最想提醒后来人的几件事
折衍混合红外物镜不是一个"抄个结构就能交差"的设计,它的难点不在理论多高深,而在于设计、仿真、工艺、测试之间的反复迭代与信息同步。VirtualLab Unity在这里的位置不是替代传统光学设计软件,而是补上严格衍射验证这块关键拼图,让你在设计阶段就看到真实物理过程的结果。
如果让我重新做一遍这个项目,我会在第一天就把工艺约束写进仿真模型,而不是等设计定型之后再去验证可行性。台阶数、最小特征宽度、镀膜膜层、加工公差,这些东西越早进入仿真,后期返工风险越低。
最后分享一个实用习惯:每次在VirtualLab Unity里跑完一个关键分析,把边界条件、采样设置、结果截图和结论一起存档。你大概率会在几周后需要回头核对某个参数,或者向工艺方说明某个设计决策的依据。这种"仿真过程留痕"的做法救过我很多次,强烈建议养成习惯。