ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Zemax公差分析入门:从误差地图到蒙特卡洛,一文理清操作数与流程

Zemax公差分析入门:从误差地图到蒙特卡洛,一文理清操作数与流程 做了40期的Zemax操作系列终于写到整个光学设计流程里最“扎心”的一环——公差分析。前几期我们聊过优化、像质评价、MTF那些都是在理想条件下看系统能有多好。但真正落到加工装配镜片有厚度误差、曲率半径有加工偏差、镜片装进去会有偏心倾斜这些误差叠在一起系统还剩下多少性能才是设计能不能量产的关键。公差分析Tolerance Analysis就是把这种“从图纸到实物”的性能损耗量化出来。很多新手在软件里把系统优化到衍射极限满心欢喜以为设计完了结果一跑公差衍射极限直接变成衍射“极限拉胯”良率低到没法看。这篇文章就是帮你系统搞定Zemax公差分析的第一阶段搞懂原理、选对操作数、搭好分析框架。1. 公差分析到底在做什么从设计到制造的最后一公里1.1 设计得再漂亮装不出来等于零先说个我经常打比方的例子。你把镜头设计图发给加工厂图纸上写着“曲率半径R25.436 mm”工厂师傅拿数控机床加工实际做出来的可能是25.441 mm差了0.005 mm。镜片厚度图纸标2.0 mm磨出来可能2.012 mm。装配师傅把镜片压进镜筒镜片光轴相对理想光轴偏了0.02 mm。单片看这些误差都很小但一套系统往往有5到10个镜片每个镜片都有偏心、倾斜、厚度偏差光路在这些误差的“叠加干扰”下焦点位置偏移、像散变大、MTF下降。公差分析要回答的问题就一句话在可预期的加工和装配误差范围内这个系统最终能保证什么样的成像质量良率有多少。所以公差分析不是优化完成之后的“附加作业”它应该是光学设计迭代的一部分。我在实际项目里的流程是先把系统优化到满足指标且留出20%至30%的余量然后跑公差分析如果结果不让良率达标要么收紧关键公差要么回炉调整设计敏感度。这通常需要反复拉锯好几轮。1.2 一颗镜头里到底哪些地方会“跑偏”在做公差分析之前你脑子里得有一张“误差地图”。Zemax里的公差操作数虽然多但归纳起来就四大类曲率与面形类曲率半径偏差、表面不规则度光圈局部误差。这类公差影响焦距和波前是系统敏感度的主要来源之一。厚度类镜片中心厚度、空气间隔。它们直接影响后焦距和各组镜片之间的光路长度。偏心与倾斜类包括单个表面相对于光轴的偏心倾斜也包括整组镜片元件绕参考点的偏心倾斜。这类误差是装配过程中最常出现的也是最容易让像质崩掉的。材料类折射率偏差、阿贝数偏差。塑料非球面或玻璃批次不同折射率会有差异这类公差对色差系统尤其致命。每一类里Zemax又提供了“表面级”和“元件级”两种维度。表面级针对单一光学面的放置误差元件级则把整个镜片当作刚体模拟它作为一个整体发生偏心倾斜。实际装配中镜片往往是整体装进镜筒所以元件级偏心倾斜更接近真实工艺。但在某些精密光机结构中单个面或多个面单独调整也很常见所以两者都要会用。2. 公差分析前的必修课基准像质与坐标准备2.1 先定评价标准RMS波前还是RMS光斑这是很多新手容易忽略的第一步。打开Zemax公差分析设置之前你得先想清楚到底用什么指标来衡量公差影响。在Zemax的Tolerancing设置里Criterion评价标准下拉菜单有大量选项。最常用的是以下几种RMS Wavefront均方根波前误差适合衍射受限系统比如摄影物镜、显微物镜、激光聚焦镜头。它以波长为单位一般要求小于λ/14马雷夏尔判据或者按项目需求给。RMS Spot Radius均方根几何光斑半径适合大像差系统或红外非球面系统。几何光斑大小直接对应探测器像元尺寸设计上只要把光斑压进一个像元就行。MTF at Spatial Frequency直接用特定空间频率下的MTF值作为评价指标。这个最贴近成像镜头使用场景——客户看的永远是某个频率下的MTF能不能达标。Geometric Radius / Angular Radius用于一些特殊系统比如光通信准直器。评价标准没有绝对的“最好”只有“最适合”。我个人的经验是如果系统接近衍射极限优先选RMS Wavefront如果系统本身就存在较大残余像差选RMS Spot Radius更贴近工程实际如果是纯成像系统且客户指标卡在MTF那就直接看MTF但是MTF采样和频率设置要跟客户的对上否则没什么参考价值。2.2 坐标系与表面编号的坑公差分析的结果直接绑定到表面的编号和坐标系方向。Zemax里表面的偏心倾斜有两种参考方式一种是相对前一个表面Local Vertex一种是相对全局坐标Global。初学者经常在这里踩坑。默认情况下公差分析使用表面局部坐标。也就是说当你对一个表面施加偏心量时这个偏心的方向是相对于该表面自身的局部坐标系的。如果系统的坐标间断Coordinate Break很多镜片已经做了复杂的偏心和倾斜那你在公差操作数里填写的偏心方向可能和你脑子里想的“竖直方向”完全不同。我的建议是在做公差分析之前先把系统在三维光路图里转一圈确认坐标间断的布置方式。对带有非共轴折转的系统一定要逐个检查表面坐标方向否则公差方向填反了分析结果毫无意义。如果是常规共轴球面系统默认局部坐标基本没问题。2.3 给公差分析设定一个“参考状态”公差分析不是从零开始算它是把公差量叠加到当前系统上。所以跑公差之前当前系统的性能必须是你满意的最终设计状态。别拿一个还没优化完的中间版本去跑公差那样跑出来的结果毫无意义浪费时间。另外要确认系统里没有遗留的“脏东西”。比如有些新手在优化过程中加了几个操作数、变量优化完了没清理这些不会直接影响公差分析但可能会干扰你对结果的判断。更关键的是优化过程中可能把某些面的曲率半径设成了变量却忘了更新或者更离谱的是系统里还留着多重结构里多余的配置。我的习惯是在跑公差之前把文件另存为一份“Tolerance_Base.ZMX”然后在此副本上检查系统、清理变量、确认所有表面参数已经收敛再进入公差设置。3. 公差操作数怎么选核心细节与实操要点3.1 常用操作数一览一张表看懂Zemax里公差操作数非常多没必要全背。我整理了一份最常用的清单第一次做公差分析照着选就够了。操作数含义适用范围典型量级TFRC后焦距通常用作补偿器补偿像面离焦不填公差作为补偿TTHI表面厚度公差空气间隔、镜片厚度0.02~0.05 mmTSDX / TSDY表面X/Y方向偏心单个光学面偏心0.005~0.02 mmTSTX / TSTY表面X/Y方向倾斜单个光学面倾斜0.005~0.02 mm弧度TEDX / TEDY元件X/Y方向偏心整组镜片偏心0.01~0.05 mmTETX / TETY元件X/Y方向倾斜整组镜片倾斜0.5~3角分TIRR表面不规则度光圈面形PV误差0.5~2 个光圈λ/2~2λTIND折射率公差玻璃批次差异0.0001~0.001TABB阿贝数公差色散批次差异0.1%~1%这里有个容易搞混的点TIRR的单位是“光圈”fringe在Zemax里默认是“surface irregularity, peak-to-valley”输入1表示1个光圈即λ/2的PV面形误差。如果你习惯用λ作为单位记住换算关系1 fringe 0.5 λPV。很多新人在这里填错导致公差分析结果突然变得极为恶劣排查半天才发现是单位搞错了。3.2 谁来补偿离焦不用TFRC你大概会后悔公差分析里有个很重要的概念叫“补偿器”Compensator。实际装调镜头时师傅不会把镜片都装死而是会通过调整像面位置后焦、或者调整某个间隔垫片厚度来抵消一部分误差带来的焦点漂移。这个“可调整环节”就是补偿器。Zemax里最常用的补偿器是TFRC后焦距补偿它模拟的是装调时通过微调像面位置找到最佳像面把离焦补偿掉。如果不设置补偿器公差分析会把所有误差的焦点偏移都算成直接像质损失结果会异常悲观而且不符合实际装调过程。在Tolerancing设置界面的Compensator标签页里你把TFRC拖到左侧的补偿器列表中然后设置一个合理的变化范围。比如后焦补偿范围±0.5 mm表示装调时最多只能在这个范围内移动像面。补偿范围设太小结果偏悲观设太大结果又过于乐观好像什么误差都能被补偿回来。实际项目中补偿范围要根据机械结构来确定比如有调焦机构就给±0.5 mm没有调焦机构就设0。3.3 公差量级参考第一次做就按这个表来很多新手第一次做公差分析最苦恼的就是不知道该填多少数值。填太小工厂做不出来填太大良率惨不忍睹。这里给你一套我常用的“工程经验值”以常规高精度光学加工为基准厚度公差空气间隔±0.03 mm镜片厚度±0.02 mm。如果是胶合透镜胶合层厚度可以按±0.05 mm算。表面偏心Surface Decenter球面镜片一般±0.01 mm可以做到批量生产常见±0.02 mm。非球面高精度装调可到±0.005 mm但成本高。元件偏心Element Decenter常规镜筒装配±0.03~0.05 mm带精密定位结构的可以做到±0.01~0.02 mm。元件倾斜Element Tilt普通螺纹压圈装配约1~3精密调心装配0.3~0.5。面形不规则度TIRR常规抛光1~2个光圈PV高精度0.5个光圈更高要求λ/10。折射率公差常规玻璃批次±0.001优质批次±0.0005特殊定制可达±0.0001。阿贝数公差常规±0.5%特殊±0.2%。这组数据不是绝对的。塑料注塑镜片、玻璃模压非球面、胶合镜组等不同工艺公差体系完全不一样。确定公差量级之前最好先和加工厂确认他们的工艺能力然后给一个他们能稳定量产、不用额外挑选的“常规值”。这样算出来的良率才有意义。4. 完整跑一遍公差实操流程与关键步骤4.1 建立公差数据在Tolerance Data Editor里逐行添加Zemax中打开Tolerance菜单选择Tolerance Data Editor公差数据编辑器。左边是编辑器右边是操作数快捷面板。你可以直接在操作数面板里双击添加行也可以右键选择“Insert Tolerance”来插入新的公差操作数。以我常用的一个4片式摄影物镜为例添加步骤是这样的对每个空气间隔添加TTHIMin和Max设为-0.03和0.03。对每个镜片厚度添加TTHIMin和Max设为-0.02和0.02。对每个折射面添加TSDX、TSDY、TSTX、TSTY量级按前面的经验值填。对每个镜片作为一个元件添加TEDX、TEDY、TETX、TETY量级按装配精度填。对每个光学面添加TIRRPV量级填1即1个光圈。对每个玻璃材料添加TIND和TABB。每一行公差操作数里都会有一个“Min”和“Max”列分别表示负方向和正方向的极限偏差。如果你设置的工艺能力是正负对称的就填对称值。但有些工艺并非对称比如空气间隔只能往大了垫、不能往小了磨那就可以填不对称范围。这里要提醒一句不要一个表面一个表面手动点到天荒地老。Zemax支持在公差数据编辑器里右键“Insert Perturbation”批量添加比如添加“所有表面偏心”或“所有厚度”直接选中范围一次性生成。有ZPL宏基础的话也可以写个小脚本批量填入效率高很多。热词里提到的“zemax宏unknown symbol getthickness”就是写ZPL宏时遇到函数名不识别的问题这种批量操作做多了难免碰到后面我会单独写一篇宏脚本踩坑记。4.2 设置评价标准、补偿器与采样公差数据添加完毕后打开Tolerancing菜单下的Tolerancing…设置界面。第一个页面是一般设置General关键选项如下Criterion评价标准选RMS Wavefront或RMS Spot Radius按你2.1节的判断来。Sampling采样设置光瞳采样一般选择3 rings x 6 arms即可如果系统像质波动剧烈可以提高到6 rings x 12 arms但计算时间会成倍增加。Use Paraxial Focus使用近轴焦面有些系统选这个可以辅助补偿离焦判断默认可以不勾。Mode模式先跑Sensitivity灵敏度如果整体不大再跑Monte Carlo。灵敏度模式会告诉你每个公差单独作用的贡献蒙特卡洛模式模拟所有公差同时随机叠加后的分布。在Compensator标签页左侧是候选补偿器右侧是已选补偿器。把TFRC添加到右侧并设置范围。在Statistics标签页设置蒙特卡洛运行次数。我一般先跑100次看分布趋势如果结果临界可以再加到200次或500次确认。次数越多统计越稳但计算时间也越长建议先小后大。4.3 跑灵敏度分析和蒙特卡洛看哪些地方最“伤”先点Sensitivity按钮跑灵敏度分析。计算完成后Zemax会生成一份文本报告核心内容是Worst offenders最坏贡献项所有公差项按对像质的破坏程度从大到小排序排在前面的就是最需要关注的敏感环节。Estimated Change估计变化量系统性能的估计变化量通常基于RSSRoot Sum Square均方根和方式计算。RSS的含义是把每个公差项的独立变化量平方后求和再开方因为实际加工中各项误差方向随机同时出现“最坏相加”的概率很低RSS比简单线性相加更符合统计规律。Estimated RMS估计RMS值估算的最终性能指标。灵敏度的价值就是定位“猪队友”。假设你发现TEDX元件X偏心排在Worst Offenders第一位贡献了系统大部分性能损失那就说明这个系统的偏心敏感度偏高。你可以回去检查该元件附近的光路是不是光束偏折太剧烈或者试着调整光焦度分配把敏感度降下来。看完灵敏度后再点Monte Carlo跑随机模拟。蒙特卡洛会生成一份统计表列出不同累积百分比下的性能值。比如“90%的样本MTF50lp/mm大于0.35”这句话直接对应你预期的量产良率。如果90%样本都不达标说明公差方案过于乐观或系统敏感度过高需要回到设计端优化或者收紧公差并承担更高制造成本。4.4 RSS统计到底怎么读再展开讲讲RSS。很多新手看到灵敏度报告里的“Estimated Change”是0.021 λ然后看最坏单项贡献才0.008 λ会困惑这数字怎么来的。其实很简单Zemax是把所有公差单项的最坏变化量取了平方和再开根号公式大致是$Change_{RSS} \sqrt{\sum_{i1}^{n} (\Delta_i)^2}$其中Δi是第i个公差项在灵敏度模式下导致的像质变化量。这个值比把所有最坏值直接相加要小因为真实系统中各项误差不可能都踩在最坏方向上。不过要注意RSS估计成立的前提是各项误差统计独立如果某些误差来源互相相关比如同一个装配工序同时造成多个面偏心那RSS会低估问题这时就得以蒙特卡洛结果为准。5. 常见问题与结果误读排查5.1 结果表里那一堆百分比到底什么意思蒙特卡洛结果表是很多新手的噩梦。拿一张典型的报告来拆解Nominal标称值不加任何公差时的系统性能就是你优化出的结果。90% 90%的蒙特卡洛样本性能优于这个值。这个数是良率评估的关键一般而言90%都达标量产才有底气。50% 中位数性能。10% 只有10%的样本性能低于这个值即最差的10%样本。Estimated Change综合变化量的RSS估计。我通常会盯三个数核心是90%样本对应的性能其次是10%样本对应的性能有没有烂到完全不可接受最后看Nominal和90%之间的差距差距越小说明系统越健壮。如果Nominal数值完美但90%性能一塌糊涂那就是系统对公差极度敏感设计本身有大问题。5.2 报错和常见坑速查表现象原因解决办法跑出来的结果比预期差一个量级TIRR单位填错确认填的是光圈数还是λ数1 fringe 0.5λ PV所有公差项贡献都很小但总变化很大坐标间断方向不一致检查系统坐标间断设置确认公差方向参考系蒙特卡洛报错“无法求解”补偿器范围过窄或评价标准选择不当扩大补偿范围或切换评价标准灵敏度分析结果与蒙特卡洛结果矛盾公差项之间存在强相关性以蒙特卡洛为准检查生产工序中是否多个公差同源跑一次要几个小时采样点设太高或视场过多将光瞳采样降到3 rings x 6 arms视场评估点减少还有一个高频坑有些用户在公差数据编辑器里直接添加了TFRC还以为它是公差项结果看到后焦公差0.1 mm把像质毁得稀烂。记住TFRC在公差分析里的角色是“补偿器”不是误差源。它模拟的是装调过程中通过调后焦来挽救其他误差造成的离焦所以它是被放到补偿器列表里的不是当公差加进去的。5.3 实测经验公差分析结果不好看的三个典型原因踩过足够多的坑之后我发现公差结果差无非三种情况第一设计本身敏感。系统工作在接近衍射极限的极限状态比如F数很小、视场很大、镜片光焦度分配很极端。这类系统对任何偏心倾斜都如履薄冰再严的公差也救不回来。解决思路是回炉优化考虑引入非球面来分担敏感度或者通过放宽视场角、增大F数来换取冗余。第二公差量级脱离实际。设计师坐在电脑前填公差填了个0.001 mm的表面偏心加工厂看了直接摇头。公差收紧到一定程度后良率的提升幅度远小于加工成本的上升幅度性价比极低。正确的做法是先跑一遍“宽公差”看哪些项是主要矛盾只对主犯项精确定义公差其他项尽量放宽松。第三分析设置不合理。最常见的是没设置补偿器、用错了评价标准、采样太低导致结果不稳定。这些问题不是光路本身的问题纯粹是操作层面的坑。所以当你看到结果差到离谱时先别急着怀疑设计回头检查一遍公差分析和评价设置很多时候问题只是出在某个下拉菜单上。关于非序列系统多说一句。热词里有“zemax非序列模式分光棱镜”如果你做的是非序列模式下的分光棱镜公差分析那套路跟序列模式完全不同。非序列系统里光线追迹基于实际物体和探测器公差分析通常得靠参数公差操作数配合脚本遍历来完成Zemax自带的序列公差分析工具在这一块支持有限。这类内容比较复杂后续我会单独开一篇来讲非序列系统的公差怎么搞。5.4 公差分析自己的一套“心得流程”最后分享一套我在项目里沉淀下来的操作流程算是给你画一条可以直接照做的路径优化完成后另存副本移除多余变量和操作数。建立一套“基准视场和波长”的设置确保评价标准与客户验收口径一致。按加工工艺填写厚度、曲率、偏心、倾斜、材料公差先用宽松量级。跑灵敏度分析查看Worst Offenders找出贡献最大的前3项。针对前3项检查设计敏感来源回到优化界面尝试改善。设置补偿器通常是后焦TFRC确认补偿范围与机械接口一致。跑蒙特卡洛200次查看90%样本性能。如果90%良率不足收紧特定公差项再次迭代直到性能与成本达到平衡。这套流程我现在做新项目基本闭着眼就能走完。它不一定适用于所有类型的系统但作为第一轮公差分析的标准动作能帮你少走至少一半弯路。做公差分析这件事最考验人的不是软件操作而是对“制造误差”的理解。你在屏幕上看到的每一个公差操作数背后都对应着一道加工工序、一次装配动作、一笔成本开支。把Zemax当成一个翻译器——它把工艺能力翻译成成像质量的概率分布。真正做决策的还是你设计师本人。公差分析一就把这些基础框架讲透下一篇我会重点拆解灵敏度分析与蒙特卡洛结果的高级解读、多重组态下的公差处理方法以及自动优化公差分配的思路到时候继续聊。
返回列表