你有没有过这样的经历:想学点光学设计,打开教材,满眼都是像差理论、赛德尔系数、光线追迹公式,感觉像在看天书?或者,好不容易装上了Zemax、CodeV这类专业软件,面对密密麻麻的按钮和参数,却不知道从何下手,连一个最简单的单透镜都调不出来?
这太正常了。光学设计,尤其是镜头设计,长久以来都被一层厚厚的理论和复杂的软件界面包裹着,给人一种“高深莫测”的错觉。很多人被卡在第一步:理论与实践的断层。理论告诉你什么是球差、彗差、像散,但没告诉你打开软件后,第一件事该点哪里,第一个参数该调什么。
今天,我们不谈那些让人望而生畏的复杂公式和抽象概念。我们就从一个最朴素、最工程化的目标开始:手把手地,让你从零开始,真正“做”出一个能用的镜头设计。哪怕只是一个最简单的单片透镜,我们的目标是让你理解从“需求”到“图纸”的完整闭环,知道每一步鼠标点击背后的逻辑,而不仅仅是记住操作步骤。
这篇文章更像是一份“外科手术式”的实操指南。我们会聚焦于一个具体而微的案例,拆解每一个操作,解释每一个关键参数的意义,并告诉你为什么这里要这样设置,那里要那样调整。当你跟着走完这一遍,你会发现自己获得的不是一堆零散的技巧,而是一个清晰的、可复用的设计框架和问题解决思路。这才是“手把手教学”的真正价值——把抽象的能力,变成具体的、可执行的动作。
1. 起点:忘掉完美设计,先定义一个“可交付”的最小目标
在打开任何软件之前,最重要的一步往往被忽略:明确设计目标。这不是一句空话。很多新手失败,不是因为软件不会用,而是目标太模糊或太宏大,比如“设计一个高清镜头”。这会导致你在软件里无意义地徘徊。
我们需要一个SMART目标:具体的、可测量的、可实现的、相关的、有时限的。对于第一次设计,我强烈建议设定这样一个最小可行目标:
设计一个用于可见光波段(F/d线,587.56nm),焦距f‘=100mm,F数为F/4,全视场角为10°,成像在1/2.3英寸传感器上的单片平凸透镜,并使其在中心视场的RMS光斑半径小于艾里斑半径。
这个目标包含了光学设计的核心输入:
- 焦距 (100mm):决定了透镜的基本光焦度。
- F数 (F/4):决定了透镜的相对孔径(D=f‘/F=25mm)和理论衍射极限。
- 视场角 (10°):决定了成像范围。
- 探测器尺寸 (1/2.3英寸):决定了像面大小,是验证像高是否匹配的关键。
- 波长 (587.56nm):指定了设计优化的主波长。
- 性能指标 (RMS < 艾里斑):一个具体、可量化的像质评价标准。
为什么是单片平凸透镜?因为它结构最简单,变量最少(主要是曲率半径、厚度、材料),能让你集中精力理解像差产生与校正的基本矛盾。用复杂系统起步,你只会被海量变量淹没,看不到核心逻辑。
行动第一步:纸笔计算与概念验证在打开软件前,用薄透镜公式进行估算:
- 像高
h' = f' * tan(ω) ≈ 100 * tan(5°) ≈ 8.75mm。查表可知1/2.3英寸传感器对角线长约7.7mm,因此10°全视场(半角5°)是合理的,不会超出探测器。 - 艾里斑半径
r_airy = 1.22 * λ * F ≈ 1.22 * 0.00058756 * 4 ≈ 0.00287mm。这是我们像质优化的理论极限参考。
有了这个清晰的目标,我们进入软件时才不会迷失。
2. 搭建舞台:在Zemax OpticStudio中建立初始结构
我们以最广泛使用的Zemax OpticStudio为例(其他软件如CodeV、VirtualLab逻辑相通)。请忘记那些花哨的界面,我们只关注几个核心编辑器。
2.1 透镜数据编辑器:定义光学的“骨架”
打开软件,新建一个空白文件。你的主战场是Lens Data Editor。
- 设置孔径:在
System Explorer -> Aperture中,选择“Entrance Pupil Diameter”,输入25mm(因为F/4,焦距100mm,入瞳直径D=100/4=25)。这告诉系统光线从哪里开始进入。 - 设置视场:在
System Explorer -> Fields中,删除默认视场,添加3个视场点:0(轴上的)、0.7(约7°)、1.0(10°)。类型选择“Angle (Deg)”。这定义了我们要追迹光线的角度。 - 设置波长:在
System Explorer -> Wavelengths中,选择F, d, C线(486.1nm, 587.6nm, 656.3nm),并将d线设为主波长。这定义了光的颜色。 - 搭建面型:在Lens Data Editor中,我们通常需要这些面:
- OBJ (0): 物面,无限共轭时,厚度为无限大。
- STO (1): 光阑面。这里就是我们的透镜第一面。将其“玻璃”材料栏填入你选的玻璃,例如常用的BK7。在“曲率半径”列,先输入一个估计值,比如200(单位mm,正值为凸向物方)。
- 2: 透镜第二面。厚度设为透镜中心厚度,先给个5mm。“曲率半径”先设为0(平面)。
- IMA (3): 像面。厚度设为“边缘厚度”加上后截距,可以先给100。我们会通过优化来确定最终位置。
此时,你的LDE看起来应该是一个简单的3面结构(OBJ,STO,IMA),STO面赋予了材料属性。但这还不是一个“透镜”,因为厚度为0。我们需要插入一个面。
- 插入透镜面:在STO行右键,选择“Insert After”,插入一个新面。将STO面的“厚度”改为5(透镜厚度),新插入的面(原IMA面序号+1)的“厚度”设为100(后截距)。现在,STO是透镜前表面(凸面),面2是透镜后表面(平面),面3是像面。
2.2 首次光线追迹与问题诊断
点击分析菜单中的“Ray Fan Diagram”(光线像差图)或“Spot Diagram”(光斑图)。你可能会看到一片混乱,光线无法聚焦,甚至报错。
不要慌,这完全正常。这说明我们的初始结构离解差得太远。我们需要一个关键操作:快速聚焦。
在Optimize菜单下,找到“Quick Focus”工具。这个工具会自动调整像面的位置(即最后一个面的厚度),使得中心视场的光线汇聚得最好。运行它。
再次查看光斑图,你会发现中心视场的光斑变小了,但边缘视场的光斑依然很大,呈彗差或像散状。恭喜,你已经看到了像差的直观表现。现在,我们有了一个可以优化的起点,而不是一堆发散的光线。
3. 核心博弈:像差优化与操作数的艺术
优化是光学设计的核心,其本质是用数学方法调解多个变量(曲率、厚度、空气间隔等),以最小化评价函数(Merit Function)。评价函数是我们所有性能目标的数学表达。
3.1 建立评价函数:告诉软件你想要什么
打开Merit Function Editor。清空默认内容,我们需要手动添加“操作数”来构建我们的目标。
- 控制焦距:添加操作数
EFFL。在“Target”列输入100,“Weight”列输入1。这表示我们要求有效焦距为100mm。 - 控制后截距:添加操作数
CTGT。选择面为最后一个玻璃面到像面的距离(例如面2到面3的厚度)。给一个合理的范围,比如大于10mm,保证机械结构可行。 - 控制中心厚度:添加操作数
CTGT控制透镜中心厚度(面STO到面2的厚度),目标值设为5mm,权重1。防止透镜太薄或太厚。 - 控制像质——这是关键:我们使用“默认评价函数”。在MF编辑器工具栏,点击“Tools -> Default Merit Function”。在弹出的对话框中:
- 优化类型选择“RMS” -> “Spot Radius” -> “Centroid”。
- 参考选择“Centroid”。
- 这组设置会为每个视场、每个波长自动生成一堆
TRAC操作数,目标是使光线追迹点与质心点的偏差最小,即减小光斑尺寸。
现在,你的评价函数包含了焦距约束、结构约束和像质优化目标。
3.2 设置变量与首次优化
回到Lens Data Editor,将需要优化的参数设为变量:
- 透镜前表面的曲率半径(STO面)
- 透镜后表面的曲率半径(面2,目前是平面,可以尝试给一个小的曲率如1000并设为变量,或直接优化为球面)
- 像距(面2到IMA的厚度)
选中这些单元格,按快捷键Ctrl+Z或点击列标题的“V”按钮,将其设为变量。
点击Optimize菜单下的“Optimize!”或按F5开始优化。软件会自动迭代,调整变量,试图降低评价函数值。
第一次优化后:查看光斑图。你会发现中心视场光斑显著减小,但边缘视场可能依然很差,甚至出现“Ray Failure”(光线丢失)。这是因为单片透镜的像差(尤其是球差、彗差、像散)是固有的,无法同时对所有视场完美校正。
3.3 分析像差与引入折衷
打开“Ray Fan Diagram”。这个图是理解像差的“显微镜”。
- X方向扇形图:主要看子午面(Tangential)像差。如果曲线关于原点不对称,且不同视场曲线分离,说明存在彗差和像散。
- Y方向扇形图:主要看弧矢面(Sagittal)像差。
对于单片透镜,球差(所有视场曲线在原点处有共同的偏移)和彗差(曲线倾斜)是主要矛盾。此时,你需要做出工程折衷。
操作策略:
- 调整视场权重:在默认评价函数生成时,系统可能给所有视场相同权重。你可以回到MF编辑器,手动调整不同视场对应的
TRAC操作数的权重。例如,如果边缘视场太差,可以稍微降低其权重(从1调到0.5),让优化器更关注中心和中视场。这不是放弃边缘,而是寻求整体均衡。 - 尝试非球面:这是一个重要的进阶选择。将透镜的某个面(通常是第一面)的面型从“Standard”改为“Even Aspheric”。这会引入高阶项(如圆锥系数、4阶、6阶系数),可以校正球差。将这些高阶系数设为变量,重新优化。你会惊讶地发现,中心性能可能达到衍射极限。但代价是:加工成本飙升。这就是设计中的经典权衡:性能 vs. 成本。
- 查看赛德尔像差系数:打开“Seidel Coefficient”图。这个表格定量地告诉你每种像差(球差、彗差、像散、场曲、畸变)的大小。对于单片透镜,重点关注
SPHA(球差)和COMA(彗差)。优化过程就是与这些数字博弈。
4. 性能评估与设计闭环:判断“好”与“够好”
优化似乎收敛了,评价函数值不再下降。我们如何判断这个设计是否达到了最初的目标?
4.1 关键分析工具解读
- 光斑图:直接看RMS半径值。与之前计算的艾里斑半径(0.00287mm)对比。如果中心视场的RMS半径接近甚至小于艾里斑半径,说明中心视场已达到衍射极限,这是极好的结果。边缘视场的RMS值会大很多,这是单片透镜的极限。
- 调制传递函数图:这是最重要的系统级评价指标。打开“MTF”图。
- 看曲线是否平滑,有无剧烈下跌。
- 对比“衍射极限”曲线(黑色虚线)。你的设计曲线越接近它,说明像质越好。
- 关注特征频率:对于1/2.3英寸传感器(像元尺寸通常在1.5μm左右),奈奎斯特频率约为
1/(2*像素尺寸) ≈ 333 lp/mm。查看你的MTF曲线在333 lp/mm处的值。如果大于0.2(甚至0.3),通常认为该频率下仍有可分辨的对比度。
- 场曲与畸变图:
- 场曲:查看“Field Curvature / Distortion”图。理想的像面应是平的。单片透镜必然有场曲(像面弯曲)。如果场曲太大,会导致边缘模糊。你需要判断这个弯曲量是否在你的传感器景深允许范围内。
- 畸变:查看畸变百分比。对于单片透镜,畸变(尤其是桶形畸变)可能很明显。如果小于3-5%,在许多应用中是可接受的。
4.2 建立你的设计验收清单
根据最初的目标,逐一核对:
- [ ] 焦距是否在100mm±1%以内?
- [ ] F数是否为4(入瞳直径25mm)?
- [ ] 全视场像高是否在探测器对角线内?
- [ ]中心视场RMS光斑半径是否小于艾里斑半径?
- [ ] 边缘视场MTF在特征频率处是否大于可接受阈值(如0.15)?
- [ ] 透镜中心厚度、边缘厚度是否在可加工范围内(如>1mm)?
- [ ] 后截距是否足够安装探测器?
如果大部分项目,尤其是加粗的核心像质项目达标,那么你的这个单片透镜设计就成功了。它不完美,但它是在给定约束下的一个可行解。
5. 从“能做”到“会做”:沉淀你的设计框架与排查心法
通过这个具体案例,我们希望传递的不仅仅是步骤,更是一套可迁移的设计框架和问题排查心法。
5.1 光学设计五步框架
你可以将任何新设计任务套入这个流程:
- 定义与量化:用SMART原则明确所有光学、机械、成本指标。这是最重要的第一步,决定了后续所有工作。
- 初始结构:根据经验、专利或简单计算(如薄透镜公式)搭建一个“大概差不多”的系统。不怕差,只怕没有起点。
- 约束与优化:在评价函数中,先约束(焦距、总长、后截距),再优化(像质)。变量由少到多逐步释放。
- 分析与折衷:利用光斑图、MTF、赛德尔系数等工具,诊断主要像差。在性能、成本、复杂度之间做出明智的工程折衷。
- 验证与迭代:对照验收清单检查。不达标则返回第2或第3步,考虑更换初始结构、引入新面型(非球面)、或拆分透镜。
5.2 常见问题排查清单
当设计卡住时,按此顺序检查:
- 光线丢失:首先检查孔径是否设置过小,或透镜厚度、曲率是否导致全反射。放大孔径或暂时放宽边缘厚度约束。
- 优化停滞:评价函数值不降。检查变量是否真的被释放(显示为“V”),尝试轻微调整初始结构(如给一个很小的曲率),或在优化对话框中切换算法(从阻尼最小二乘法切换到正交法)。
- 像质始终很差:可能初始结构离解太远。尝试使用软件的“镜头向导”或“专利库”找一个相近的起点,而不是从零开始。
- MTF曲线震荡:通常意味着存在高级像差或装配敏感。检查赛德尔系数,或尝试降低优化权重中的高频空间频率部分。
光学设计是一门在多重约束下寻找最优解的艺术与科学。这趟“手把手”的旅程,终点不是你得到了一个f‘=100mm的透镜文件,而是你亲手打通了从“需求”到“模型”的完整路径,并装备了一套结构化的问题解决工具。下一次,当面对一个更复杂的设计要求时,你不会再感到无从下手,因为你知道了第一步该做什么,遇到瓶颈该向哪里寻找答案。这才是真正意义上的“学会”。现在,打开你的软件,从定义第一个清晰的目标开始吧。