首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
Zemax单透镜设计实战:从理论到优化全流程
📅 2026/10/4 1:46:06
✍️ 爱科研究院
👁 阅读 3,247
单透镜这个东西乍一听根本算不上什么项目但你在Zemax里真把它做扎实了后面做双胶合、三片式、望远物镜、照相物镜都会顺很多。我最早接触Zemax光学设计就是从单透镜开始的当时导师丢给我一句“把焦距做到50mmF数做到4自己玩去吧”我盯着软件界面半天不知道点哪。后来一步步摸清楚评价函数、优化器、像质评估这些概念之后再回头看这个题目才发现单透镜几乎是光学设计里最浓缩的一堂课它不负责解决复杂像差但能让你把所有基础流程走一遍而且能在最短时间内暴露你对“为什么优化会跑飞”这类问题的理解差距。这篇内容不是软件手册里那种平淡无奇的“新建文件→输入参数→点优化”步骤而是把我在单透镜设计过程中踩过的坑、试过的方法、看过的评价函数结果一起写出来。内容适合刚接触Zemax的学生、想从照明转成像的工程师以及任何想系统理解单透镜设计逻辑的人。就算你手头没有Zemax正版只装了学习版或试用版这些操作路径也一样能用。1. 单透镜项目的需求拆解与整体设计思路1.1 单透镜到底能做什么不能做什么单透镜就是一片镜片常见的平凸、双凸、弯月形都算。它的能力边界要先搞清楚一片折射面能提供的像差校正自由度很有限所以它适合用在大口径小视场、准直扩束、单波长激光聚焦或者对像质要求不高的简易成像系统里。我在很多项目里用单透镜做过激光扩束镜的第一片、光纤准直器里的前组、以及可见光光源的会聚镜这些场景的共同点是视场很小通常就只有轴上点或者离轴不到1度而且往往只需要关心焦点位置和光斑大小不要求成像面有特别均匀的分辨率。但你要是指望单透镜同时把球差、彗差、像散、场曲、色差全都压下去那基本不可能。单透镜的结构决定了它能控制的像差类型有限尤其是色差一片镜片无论你怎么换玻璃、改曲率纵向色差都固定在一个方向上。所以做单透镜设计之前一定要先问自己这个系统允许多少像差允许什么类型的像差如果客户拿来的需求是“可见光波段视场做到±10度还要衍射极限”那你该做的不是去硬调单透镜而是劝他改方案换成双胶合或者多片式系统。1.2 为什么单透镜是光学设计的“第一课”很多人会小看这个题目觉得一片镜片还能玩出什么花来。实际上单透镜设计把光学设计里最核心的几个环节全都包含了系统参数设定、面型选择、材料选择、初始结构估算、评价函数的构建、优化变量的设置、像质评价。这几步是任何成像系统都要走的路子只不过在单透镜这里每个环节都简单到你能一眼看穿因果关系。在做平凸透镜的时候你把平面那一侧曲率设成Infinity凸面曲率一改焦距立刻变评价函数马上响应这个过程里你对“曲率半径如何影响焦距”就有了直觉。换了双胶合透镜以后系统变量变多评价函数变得复杂你反而不一定能分清是哪一片镜片在起作用。所以我的建议是基本功一定要在单透镜上练扎实。你在Zemax里做一百个复杂的镜头设计不如把一片单透镜从初始结构到优化再到公差分析完整跑明白一次。1.3 设计前先拆解需求波长、孔径、视场动手开文件之前先把需求写成三件事工作波长、孔径大小、视场大小。这三样直接决定单透镜怎么设计。工作波长会影响材料选择。如果是532nm绿光激光选普通BK7玻璃就没问题材料在可见光波段透过率和折射率都稳定。如果是紫外光比如355nm那BK7就不太合适了透射率下降要用熔石英这类材料。孔径大小决定F数F数越低透镜需要用更大的曲率来产生足够的偏折球差也越严重。视场大小决定你关心不关心离轴像差单透镜在零视场时只需要处理球差但加个5度视场之后彗差和像散会被拉起来。我一般会在需求阶段就把这些固定下来。比如“轴上光斑直径小于30微米波长632.8nm入瞳直径12.5mm后焦面位置留够机械空间”这是非常好的一句话需求。它能直接推导出F数、NA然后决定你用多大孔径的光阑、设几个视场点。2. 理论准备焦距、像差与玻璃选择2.1 利用透镜公式估出初始曲率半径在Zemax里建单透镜第一步通常是从理想透镜或薄透镜公式估算曲率半径。最常用的关系式是透镜制造者公式1/f (n − 1) × [1/R1 − 1/R2 (n − 1) × d / (n × R1 × R2)]这公式看着复杂但在单透镜的薄透镜近似里厚度 d 很小可以简化成1/f ≈ (n − 1) × (1/R1 − 1/R2)如果你打算做双凸对称透镜R1 −R2那公式还能继续简化。举一个我经常用来起步的例子目标焦距 f 50mm材料 N-BK7折射率约 n 1.5168。取 R1 50mmR2 −50mm先用薄透镜公式算一下1/50 ≈ (1.5168 − 1) × (1/50 − 1/(−50)) 0.5168 × 2/50 0.020672算出来焦距约 48.4mm和50mm差得不多。为什么不用这个直接当初始结构因为实际厚度不是零光线在镜片内部的实际路程会影响主面位置后焦距会比薄透镜估算值短一些。所以我的习惯是先用简化公式得到一个量级正确的R值然后交给Zemax优化器去微调。还有一个容易被忽略的问题透镜主面位置。光线不是在一个薄平面上发生折射而是分别在前后两个曲面上偏折等效折射点会落在镜片内部。意味着后焦距不等于有效焦距。你设定像面距离时看到的可能是BFL后焦距而优化目标往往是EFFL有效焦距。这两个概念不区分清楚后面评价函数里很容易设错目标。2.2 单透镜的主要像差来源球差、彗差、场曲与色差单透镜的像差特性很有代表性先说球差。轴上平行光经过透镜边缘和近轴区域时边缘光线的焦点比近轴光线更靠近透镜这就是球差。球差大小和孔径的三次方成正比所以F数越小球差涨得飞快。一个F/4的单透镜如果只做成球面光斑尺寸可能有好几十微米根本达不到衍射极限。彗差和像散则是离轴视场引入的。单透镜如果只做轴上优化彗差不会被激励出来但一旦加了一个水平视场轴外光线经过透镜时上下不对称就会形成彗星状光斑。场曲则表现为中心清晰、边缘离焦单透镜的匹兹伐场曲通常是正的这意味着像面会向内弯曲。色差这个问题在单透镜里是结构性的。因为材料折射率随波长变化不同波长的光会聚在不同位置红光的焦点比蓝光更远一点在正常色散材料中这个量跟阿贝数相关。单透镜你无论怎么改曲率都只能在某个波长上校正球差很难同时消除位置色差。所以单透镜用在单色激光场景最舒服用在白光成像场景就要接受边缘有轻微色边。2.3 玻璃材料选择从N-BK7到熔石英单透镜的玻璃选择看似简单但有不少讲究。可见光波段最常用的是N-BK7也就是肖特的硼硅酸盐冕牌玻璃它折射率适中阿贝数63左右加工性能好价格便宜是教材里的默认选项。在Zemax玻璃库中直接输入N-BK7就能找到。如果项目涉及紫外光或者大功率激光用熔石英Fused Silica更合适。熔石英热稳定性好抗激光损伤阈值高但折射率大约1.46比BK7低意味着要达到同样焦距曲率半径得更小球差响应也会不同。另一个常见的冕牌材料是N-SF5、N-SF6这类重火石玻璃色散很大阿贝数低常用于需要色差控制的系统中但单透镜很少用到高色散材料因为会让色差恶化。我做过一个用熔石英做单透镜的紫外光聚焦项目当时只换了材料其他参数沿用BK7的初始值优化后焦距差了快7%因为折射率变了。后来我把R值重新按材料公式算了一遍才收敛。光换材料不改初始结构是新手经常踩的坑。3. Zemax实操从零搭建单透镜并完成优化3.1 新建系统并设定基础参数打开Zemax OpticStudio之后选择“新建”光学系统会弹出一个默认的序列模式文件里面预设了几个面OBJ面、STO面、IMA面还有两个多余的平面。做单透镜设计我一般会先把多余的镜面删掉只保留OBJ、STO、像面以及两个真实透镜面。然后进入系统选项设置系统孔径。如果做的是平行光入射用“Entrance Pupil Diameter”最方便直接填入瞳直径比如12.5mmF数就是50/12.5 F/4。也可以改Paraxial Working F/#但那个描述的是近轴F数实际大孔径时会有偏差。接下来设波长我偏好从红光656.3nm、绿光587.6nm、蓝光486.1nm三根线开始或者只用0.55μm单波长来跑结构等结构稳定后再加三根波长检查色差。视场方面单透镜我一般设置三个点0度、0.7倍最大视场、最大视场。就算你只需要0度视场放一个轴外点也方便观察是否有意外像差。但如果真是纯轴上激光使用视场就设一个0度防止优化器为了边缘视场牺牲轴上光斑。3.2 输入透镜面型、厚度和玻璃默认的面型是Standard这就是普通球面。在透镜第一面STO面之后设定曲率半径R1厚度设为透镜中心厚度比如5mm。这里有个细节厚度负号表示面在光轴方向的位置透镜两个面之间厚度为正后焦距到像面也是正。不要在一个面后输入负厚度除非你要建模反射镜。我假设双凸透镜所以第一个面曲率半径输入50mm第二个面输入-50mm厚度5mm。玻璃设置为N-BK7。因为STO面光阑面通常放在透镜前面或透镜第一个面上我习惯把光阑面设在透镜第一面这样孔径光阑和折射面重合系统简单光瞳位置一目了然。像面到第二面的距离先预估一个值。用薄透镜近似焦距约49mm中心厚度5mm后焦距大概47mm左右。我输入48mm作为初始像距点一下“Update”查看光线能不能落在一个合理位置。这时候如果光线乱飞别急着优化先把像距按几何光学手动调一次。3.3 评价函数与优化向导的设置优化之前一定要先建立评价函数。Zemax里的默认评价函数向导可以帮我们快速生成一组操作数但你得告诉它你要优化什么。我通常选择RMS Spot Size作为默认优化目标因为单透镜设计中控制光斑大小最直观。如果做的是准直系统则用RMS Wavefront或者同时约束出射光线的平行度。在评价函数编辑器里我会手动添加两个操作数。一个是EFFL有效焦距目标值设为50mm权重给1。另一个是TTHI用来限制总长或者用MXCT/MXEG控制中心厚度和边缘厚度的最小边界。默认评价函数虽然会自动生成很多光线采样点但它不一定包含焦距约束所以手动加点很有必要。权重这里也有讲究。我现在做单透镜一般让光斑尺寸权重为10焦距权重为1这样优化器优先保证像质焦距只要落在能接受的公差范围就行。如果你反过来做焦距严格控制最后得到的很可能是光斑很大、焦距分毫不差的系统这个不一定是你想要的。3.4 优化变量设置与优化器选择变量就是把曲率半径、厚度等参数勾选为“Variable”。在单透镜设计里最常见的变量组合是第二面曲率半径R2和后焦距第一面曲率半径有时我会锁住不动因为第一面往往决定总焦距的初步量级让它乱动容易让系统跑飞。当然你也可以把前后两个曲率、厚度全设成变量让优化器自己找最佳结构但这需要初始值比较接近最优值。Zemax的优化器有很多种默认的Damped Least Squares通常表现稳定适合单透镜这种评价函数比较平滑的问题。Orthogonal Descent第一次用的时候很可能让人摸不着头脑但它在处理一些病态评价函数时比阻尼最小二乘更稳。我会先用Damped Least Squares跑几十次迭代如果看到评价函数值不再下降再切到Orthogonal Descent补一轮往往能再挤出一个零点几百分点的提升。点击Optimize后观察评价函数值变化。单透镜优化收敛很快通常几秒钟内就完成。如果优化后焦距不是50mm回去看EFFL操作数是不是还保持50mm目标有时候变量跑偏会导致有效焦距偏离很大需要重新把权重提高。3.5 像质评估Spot、MTF与波前图优化结束后不要只看评价函数值一定要打开几个分析窗口。我最快的光斑判断工具是Spot Diagram它能直观看到RMS半径和几何半径。做单透镜时如果RMS Spot Radius差不多接近艾里斑半径说明系统已经接近衍射极限。艾里斑半径大约等于1.22 × λ × F/#以F/4和0.55μm计算1.22 × 0.55 × 4 2.684μm也就是说RMS半径如果小于3微米这个F/4单透镜的像质已经相当理想。当然实际情况通常做不到这么小因为球差会把边缘光线拖成大光斑。MTF曲线用于判断整个空间频率范围内的对比度传递。单透镜的MTF通常在中低频段还行高频段掉得厉害这是球差导致的。想用单透镜做成像镜头一般只看低频是否满足比如30 lp/mm时不低于0.2之类。波前图则能告诉你系统的波像差分布。单透镜的波前图通常呈旋转对称的马鞍状中心PV值几个波长表示球差主导。打开Wavefront Map观察峰谷值和RMS值如果RMS波前差小于0.07λ就接近衍射极限。4. 优化过程中的关键参数与调试技巧4.1 曲率半径、厚度与焦距三者的联动做单透镜优化最让人困惑的是曲率半径一变焦距跟着变但像质和焦距并不是一回事。比如你优化后得到R149.5mmR2-52.3mm厚度6mm有效焦距50.1mmRMS光斑13μm看起来挺不错。但你如果把R1改成51mm焦距可能会变成51.8mm同时球差也会变化。单透镜的自由度太少曲率半径同时决定焦距和像差所以很难只优化一个指标。厚度对像差的影响没有曲率那么大但中心厚度太薄会引入加工困难太厚会让色差和场曲恶化。通常单透镜的中心厚度取焦距的1/10到1/8比如50mm焦距厚度取5到6mm比较合适。厚度太薄边缘厚度可能变成负的Zemax会报错这时候就需要用边界操作数MXEA或MNEA来限制边缘厚度大于0.5mm以上。我在优化单透镜时有一个习惯先把后焦距固定在初始值只优化R2观察评价函数怎么变化然后再把后焦距也放开。这样做的好处是能直观看到每一项参数对像质的贡献而不是让优化器浑水摸鱼一次性改一堆参数最后你看结果也不清楚是哪个变量起的作用。4.2 不同F/#和视场下单透镜的取舍单透镜的适用边界一定要心里有数。F/8以上的单透镜光斑可以很容易压到衍射极限附近完全够用F/4到F/5之间球差会明显放大需要用高折射率材料或非球面才能把光斑压下去F/2.8以下单透镜基本就是看个玩光斑尺寸会以几十微米起步这种情况下我会直接考虑双片设计。视场方面零视场的单透镜像质最好一旦视场加大单透镜的彗差、像散就开始抬头。我试过一个F/5的单透镜0度视场RMS光斑5μm加到±2度视场直接变成32μm。这个结果其实很正常单透镜没有足够的自由度去同时校正轴上和轴外像差所以如果你设计的是广角系统单透镜只能作为其中一片不能独挑大梁。实际项目中我常常用单透镜配合光阑位置来改变像差分布。把光阑放在透镜前面彗差方向和一个状态把光阑放在透镜后面彗差方向会反过来。通过选择合适的光阑位置可以在一定程度上让某个视场范围内的像斑更均匀但代价是轴上像质略微下降。4.3 工作波长组合与材料色散的影响如果你是做单波长系统优化时只用一根波长线就够了简单直接。但很多实际系统要用多波长比如白光照明或RGB成像这时候单透镜的色差就会成为主要瓶颈。优化时我在评价函数里加上中心波长的焦距约束同时用AXCL轴向色差操作数检查G线到C线的焦点偏移如果值太大只能通过改用低色散材料或者缩小工作带宽来妥协。这里有个实操细节同一块BK7在不同波长下的折射率差异约为0.01左右导致红蓝焦点偏移按焦距比例放大。50mm焦距的BK7单透镜轴向色差通常在0.8到1.2mm之间。假如你的探测器景深只有0.5mm那红光和蓝光就会同时失焦只能选其中一个波长对准。所以做单透镜多波长系统时对色差要有心理预期。我会优先保证中心波长的像质让红蓝焦点的偏移在景深范围内。如果客户硬要你没有色差那只能升级成双胶合这个锅单透镜背不了。4.4 利用非球面与扩展多项式扩展单透镜性能单透镜还有一个延展玩法就是把球面改成非球面。在Zemax里面型从Standard改成Extended Polynomial或Even Asphere开启第4阶、第6阶非球面系数优化变量一下子多出来几个。非球面可以在不增加镜片数量的情况下校正球差让单透镜的光斑从几十微米压到几个微米。我做一个激光准直单透镜的时候球面结构RMS光斑28μm改成偶次非球面后只把2阶和4阶系数打开做优化RMS光斑降到5μm以内。虽然非球面加工成本比球面高但系统里少了一片镜片总体成本可能反而降下来了。这就是为什么很多激光准直器、光纤耦合器里用的是一片非球面塑料透镜而不是三片球面。需要提醒的是非球面面型在优化时容易产生剧烈扭曲尤其是高次项系数突然变得很大这样虽然评价函数值很低但实际加工很难实现。我在优化时会加一些约束比如让非球面矢高、斜率在合理范围内或者用最大非球面系数绝对值来控制。5. 常见问题与排错实录5.1 优化不收敛或评价函数反而变大这个问题大多出在初始结构太差。Zemax优化器没有全局视野它是在当前结构附近搜索最优解如果初始点落在某个“悬崖”附近优化可能会越过物理可行区导致评价函数爆炸。单透镜初始结构尽量用薄透镜公式先算一遍让光线能正常传播到像面附近再交给优化器。如果评价函数越优化越大先把所有变量取消恢复到初始结构然后重新做一次手动后焦距调整确认光线聚焦位置合理。接着再开优化并且把优化步长缩小一些。Damped Least Squares里的阻尼系数会自动调整但有时候优化器会陷入振荡这时换个优化算法通常能打破僵局。5.2 边缘厚度变成负数或镜片厚度异常优化时只放过了曲率和后焦距厚度没加边界约束很容易跑出来边缘厚度为负的结果。Zemax里检查这个看“Surface Data”的Edge Thickness列一旦出现负值就说明前后表面交叉了这在物理上无法加工。解决办法是在评价函数中添加MNEG最小边缘厚度和MNCA最小中心厚度操作数。我的经验值是中心厚度不小于2mm边缘厚度不小于0.5mm。单透镜比较小的时候这两个值可以适当再压低但低于0.3mm的镜片边缘在光学加工里很容易崩边不建议做到那么极限。5.3 后焦面位置和机械结构对不上做实际项目时Zemax里的像面位置是理想面但装到机械结构里时镜片有固定框、压圈、垫片后焦距会被占用掉一部分。我遇到过客户要求后焦距大于25mm而优化结果只有20mm。这种情况下单靠一片正透镜很难同时满足长后焦和良好像质因为你需要更厚的镜片或者更大曲率这会恶化球差。我会在评价函数里把后焦面最小距离也作为约束用TTHI或自定义的边界操作数把像面位置限制住。或者更简单在透镜组后面加一片平板玻璃来延后焦点但这相当于加了个平行平板色差和像差会有小幅度恶化需要重新优化。5.4 单透镜做多波长时色差过大怎么救有次我做一个单透镜光源聚焦系统要求在405nm、532nm、650nm三个波长下都有接近的焦点位置结果单透镜无论怎么优化都差300μm以上。当时有人建议用非球面但非球面只能校正单色像差对色差无能为力。最后的方案是换上低色散材料比如CaF2或者N-BK7都算低色散材料但依然无法完全消除三波长色差。真正解决的路径是改成两片式双胶合或者采用衍射光学元件。不过作为单透镜设计练习色差大并不是“设计失败”你要做的应该是准确判断色差不满足需求再给出合理的修正建议。这种能力才是光学设计工程师值钱的地方。总的来说单透镜设计在Zemax里算得上是最小的完整闭环。它不复杂但覆盖面广做完之后你对系统孔径设置、材料选择、评价函数构建、优化变量选取、像质评比这一整套流程会有肌肉记忆般的理解。每次有人问我光学设计怎么入门我从来不推荐直接啃双高斯镜头而是建议先认认真真把一片单透镜做到极致再把那些调试技巧带到更复杂的系统中去。
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/4 1:41:06
看傻了!contenteditable 还在边改边变形,5k Star Canvas Editor 把网页文档“画”成了 Word
2026/10/4 1:41:06
Blazor会话管理实战:ProtectedSessionStorage加密原理与多标签页状态同步
2026/10/4 1:41:06
深度拆解PenEcho核心架构:20000×20000无限画布靠稀疏瓦片保持流畅的秘诀
2026/10/4 6:26:20
TranslateBooksWithLLMs命令行完全手册:一行命令批量翻译EPUB、DOCX与TXT
2026/10/4 6:26:20
新手也能上手!2026年最值得体验的专业AI论文软件
2026/10/4 6:26:20
软件测试习题集全解析:从质量模型到面试实战
2026/10/4 6:26:20
26年本科课程论文生成器红黑榜,避雷实用参考
2026/10/4 6:26:20
yomiyasu 的核心机制:把AI日语改自然的7大转换原则详解
2026/10/4 6:21:20
Codex++卡顿怎么办?从版本兼容到UI渲染的根因排查与优化
2026/10/4 0:00:57
Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化
2026/10/4 0:00:57
多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系
2026/10/4 0:00:57
hindsight:面向LLM应用的事后可观测性工程实践
2026/10/4 0:00:57
Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化
2026/10/4 0:00:57
多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系
2026/10/4 0:00:57
hindsight:面向LLM应用的事后可观测性工程实践
2026/10/4 2:41:08
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/3 12:41:10
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/3 15:20:14
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)