ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Zemax序列模式设计牛顿望远镜:5步搞定反射系统与球差优化

Zemax序列模式设计牛顿望远镜:5步搞定反射系统与球差优化 Zemax做牛顿望远镜我估计不少刚接触的人第一反应是去翻透镜设计教程然后在序列模式里对着反射镜发呆。其实牛顿望远镜在Zemax里属于同类系统中最好上手的一类它没有折射材料色散主镜是单反射面光路折叠靠两个反射镜完成理论上比设计一个消色差透镜组简单得多。但正因为结构简单很多问题反而容易暴露在优化阶段——比如球差没消干净、次镜挡光比失衡、坐标断点把光轴搞飘。这篇文章就用一个完整案例走一遍流程从设定入口瞳孔开始到主镜建模、次镜坐标断点、球差优化再到像质评价。5个步骤每一处都给出我能直接落地到Zemax界面里的操作细节和参数。适合刚入门Zemax、想用序列模式做反射式系统或者正在被球差优化困扰的工程师参考。1. 先别急着画光路牛顿望远镜设计的核心思路很多人拿到Zemax第一件事是往上堆面堆完发现光线乱飞。做任何光学设计之前先把系统的“物理骨架”想清楚这一点在做反射式系统时尤其重要。牛顿望远镜的光学结构本质上是无限远目标的光线先打到主镜凹面反射镜反射后汇聚在焦点之前被一个45度倾斜的平面次镜截住再反射到镜筒侧面的目镜或相机焦面。问题在于Zemax序列模式的光线默认是沿着一条“展开后的光轴”直线传播的它不认识你镜筒里那个Z字形的真实光路。所以我们必须用坐标断点Coordinate Break来折叠坐标系把45度次镜的折转告诉软件。这个案例我设计成一台入门级牛顿镜有效通光口径100mm主镜焦距500mm焦比F/5。这个参数非常典型——既有大口径的聚光力焦比又不至于太慢导致镜筒过长。用Zemax做这类设计核心就三件事主镜面型决定球差水平、次镜位置和尺寸决定挡光比、坐标断点决定光路是否能正常追迹。三件都理顺5步完成设计不是空话。还有一点要提前说明牛顿望远镜的主镜严格来说应该用抛物面而不是球面。球面镜会在轴上产生固有球差表现为边缘光线和近轴光线不汇聚在同一点上。很多初学者在Zemax里直接插一个Standard面曲率半径设完就收工结果点列图一出来轴上像点都是糊的追了半天不知道问题出在哪。其实解决办法就在主镜的Conic常数上。标准球面Conic0抛物面Conic-1。这个参数贯穿整个设计过程也是球差优化的核心变量之一后面我会专门展开。2. 第1到2步设定瞳孔、视场与波长把需求翻译成Zemax语言2.1 入口瞳孔直径直接决定系统通光量打开Zemax的System Explorer首先要设置的是系统孔径Aperture。对望远镜这种“看无穷远”的系统最稳妥的孔径定义方式是“Entrance Pupil Diameter”也就是入瞳直径。这里直接填入100mm等于主镜的有效通光口径。这里有个细节很多人习惯用Object Space NA或Image Space F/#来定义孔径但对于望远镜这类物方在无穷远的系统入瞳直径最直观也最不容易把孔径值算错。孔径定义方式的选择直接影响后续优化权重和像差评价。若选了Image Space F/#Zemax会根据系统焦距自动反推入瞳大小一旦主镜焦距在后面做微调F/#和口径的对应关系就会发生变化容易让人误以为系统参数变了。用入瞳直径固定口径主镜焦距变化时F数跟着变逻辑上更干净。2.2 视场设置小视场反射系统的三个采样点望远镜的视场一般很小拍月亮、拍行星时实际视场也就零点几度。在Zemax里视场类型选择Angle以角度为单位。我给这个系统设置了三个视场0度轴上、0.1度、0.2度。0.2度大概相当于在500mm焦距下像高1.75mm覆盖一台常见行星相机的靶面中央区域足够了。对纯目视用途视场可以更小但保留0.2度这个采样点有助于你观察离轴像差的变化趋势。设置视场时有人喜欢用像高Object Height或Paraxial Image Height但望远镜的物方是无穷远用角度更符合直觉。Zemax计算像差时会在设置的视场点上做光线采样视场点越多、越靠边缘越能暴露出彗差、像散这类轴外像差。对于牛顿望远镜彗差是仅次于球差的第二号像差来源所以哪怕不用它做优化目标也一定要在评价阶段把它体现出来。2.3 波长与反射镜材料可见光三色采样就够用波长方面我选F、d、C三根谱线对应486.1nm、587.6nm、656.3nm中心权重设在d光。反射式系统没有色差但不同波长的像差计算结果几乎一致保留多波长是为了后续MTF和点列图能同时显示多色结果更接近实际观测效果。材料这一栏是反射式系统和折射式系统操作上最大的区别所有反射镜面的Glass类型必须设置为MIRROR。在Zemax中普通透射面的Glass栏填的是材料折射率数据而MIRROR字符告诉软件这个面是反射面光线在这里按照反射定律转向。漏了这一步光线会直接穿透“镜子”继续往前跑系统相当于一块空气平板加一个神秘透镜怎么调都不对。我见过太多新手在这里卡住追迹结果看起来一切正常但系统焦距和理论值完全对不上。3. 第3到4步主镜建模与次镜坐标断点搞定Z字形光路3.1 主镜参数曲率半径、Conic常数、半直径主镜是牛顿望远镜的灵魂。在Lens Data Editor里第一个面设为标准面Standard口径类型设定为入瞳直径已由系统孔径统一控制。曲率半径设为-1000mm这里有个容易搞混的点对反射镜曲率半径和焦距的关系是fR/2。我希望主镜焦距为500mm所以曲率半径的绝对值是1000mm。负号代表曲率中心在入射光方向的哪一侧由Zemax的符号约定决定实际建模时经常需要试一次正负号观察光线走向来确认。Conic常数这一栏直接填-1也就是抛物面。如果你希望后面用优化器来找这个值也可以把它设为变量但更好的做法是先手动设成-1跑通光路再考虑是否交给优化器。半直径Semi-Diameter给60mm比入瞳半径50mm留出余量避免边缘光线在面边缘被切掉导致渐晕。主镜的厚度项Thickness尤其关键。反射镜把光线“弹”回去物理上光线方向反转在序列模式里用负厚度表示这个反向传播。这里主镜厚度填-500mm意思是光线反射后沿光轴反向传播500mm正好到达焦点位置。但牛顿望远镜里光线不会直接到达轴上焦点它要先被次镜截住所以后续的厚度安排要配合坐标断点一起做。3.2 坐标断点实现45度次镜折转一次设置三个面次镜是一个平面反射镜放在主镜焦点之前约350mm处从主镜面出发沿光路计算以45度角把光路折向镜筒侧面。在Zemax序列模式里这里必须在次镜前后各插入一个坐标断点面Coordinate Break一个面解决坐标系的倾斜一个面再把坐标系转回来。操作顺序如下在Lens Data Editor里主镜面之后插入第一个Coordinate Break倾角X设为-45度。这个面的作用是让局部坐标系绕X轴旋转45度这样光线在下一个面上反射时法线方向恰好满足45度入射。紧跟着放次镜面用Standard面即可曲率半径Infinity平面Glass设为MIRROR半直径给15mm。次镜之后插入第二个Coordinate Break倾角X设为45度抵消前面的旋转让剩余光路回到原光轴方向。这种“坐标断点-反射面-坐标断点”的三面组合是做折叠反射系统的标准套路。关键逻辑是反射镜本身不具备“折叠”功能折叠是坐标系的事。反射面只负责让光线按反射定律转向而坐标系方向决定了光线入射角和出射角。把坐标系提前偏转好再用第二个坐标断点恢复正常相当于在物理空间里画了一个Z字但在数学空间里光线始终沿着“局部光轴”在走。次镜到像面的距离通过第二个坐标断点的厚度项控制这里填-35mm意思是折转后的光线继续传播35mm到达像面。需要注意的是次镜直径15mm对应直径30mm对100mm口径主镜的挡光比约为9%这在牛顿镜里属于比较健康的范围。次镜太小挡光少但视场边缘光容易切掉次镜太大会让中心遮挡严重影响衍射能量集中度。15mm半直径在这里是我经过简单几何计算的结果——次镜只需截住从主镜反射来的会聚光束即可不需要覆盖整个主镜孔径。这个尺寸留了一些余量适合作为起点后续可以按实际渐晕分析再微调。3.3 光线追迹验证一次就能看出所有建模错误完成上述设置后按下追迹光线的快捷键马上检查2D/3D Layout图。正确的牛顿望远镜光路图应该呈现出明显的Z形光线从左侧平行进入经主镜反射后向右传播在Layout图里实际方向取决于厚度正负号设置在中途被倾斜次镜截住然后转向下方或侧方到达像面。如果你看到光线穿透镜子、光路变成直线、或者光线在某个面处彻底断掉问题肯定出在厚度符号、MIRROR材料或坐标断点角度这三者之中。这个阶段不用急着做任何优化先确保光路“走通”。还有一个实用的验证方法查看系统焦距Effective Focal Length。理论上这套系统的主镜焦距就是系统的有效焦距应为500mm左右。如果显示的值不相干比如1000mm或出现负值说明曲率半径符号或次镜方向设置有问题。用这种物理直觉校验数值仿真的方式能帮你筛掉至少一半的建模错误。4. 第5步球差优化——从手动抛物面到自动优化4.1 球差从哪来为什么标准球面镜必出球差球差是轴上像差里最让人头疼的一个它的本质是球面上不同孔径处的光线反射后并不汇交于同一点。边缘光线聚焦得比近轴光线更靠近镜面导致像点在光轴方向上被拉成一条“光斑带”。对折射透镜如此对球面反射镜同样如此。消除球差有两种路线一种是用非球面面型抛物面、椭球面等直接让所有孔径的光线都汇聚到同一点另一种是组合多个面用正负球差互相抵消。对牛顿望远镜主镜是唯一的有光焦度元件没有第二个面来抵消球差所以只能走第一条路把主镜做成抛物面。数学上抛物面就是二次曲面系数Conic等于-1的特殊情况。也就是说当我们把主镜的Conic从0改成-1时轴上球差从理论上去除了。设计上这就是“解析解”不需要优化器。但考虑到实际加工误差、安装误差、以及后续可能需要调整焦比我们完全可以反过来把这个过程交给Zemax的优化器来做让它通过评价函数自动找回Conic-1这个最优值。这样做最大的好处是同一个优化流程可以复用到焦比不同、口径不同的其他系统上不需要每次都手动查曲面方程。4.2 两种优化路线对比直接设Conic-1还是放变量去跑两种路线我都试过分别说一下适用场景。路线A是直接把Conic填为-1。优点是一步到位、速度快、结果明确而且理论最优解就是-1没有悬念。缺点是你没学到“优化”本身是怎么运作的。如果哪天你要设计一个离轴三反或卡塞格林系统球差和彗差是耦合在一起的手动设Conic几乎没有可能直接得到全局最优那时候你就需要路线B。路线B是把Conic设为变量用评价函数让优化器自己找最优值。操作上在Lens Data Editor里主镜的Conic栏双击把求解类型Solve Type设为Variable然后打开Merit Function Editor选择Optimization Wizard。评价函数类型选RMS Spot Radius即点列图均方根半径最小化。光瞳采样方式用Gaussian Quadrature环数和臂数可以用默认的3环6臂对单一变量的优化已经相当够用。视场权重如果有0.2度视场建议轴上视场权重给高一点比如轴上权重3、轴外权重1这样优化器会优先保证中央视场的像质符合望远镜的使用习惯。点击Optimize运行后注意观察Conic值的变化。理想情况下它会收敛到-1附近。如果结果偏离很多比如优化到-0.7或-0.5八成是评价函数里包含了过多的离轴权重或者默认评价函数把焦距约束也加进去了导致优化器在“消球差”和“保焦距”之间做了妥协。这时可以检查Merit Function里与焦距相关的操作数比如EFFL如果它的权重被设得很大Conic就会被拉住。4.3 用点列图和波前图判断球差是否真的消干净优化结束后打开Spot Diagram和Wavefront Map两个分析窗口。点列图里如果球差还存在你会看到轴上光斑呈现明显的环形弥散——边缘光线落在半径较大的外环上近轴光线聚集在中心两者不重合。球差消除后轴上光斑应该收成一个紧凑的、接近艾里斑尺寸的小点。RMS半径数值也就几个微米量级这对F/5口径100mm的系统来说是完全达得到的。波前图能提供更直接的判断。观察RMS Wavefront Error和PV值。瑞利判据说波前RMS误差小于λ/14时系统成像接近衍射极限。可见光587.6nm下RMS波前误差要小于约42nm。一个Conic优化到位的牛顿望远镜轴上波前RMS应该远低于这个阈值。如果你优化后波前RMS还很大除了检查Conic之外也要重新确认主镜曲率半径是否正确。曲率半径不准会导致系统离焦离焦在波前图上表现为规则的倾斜或幂次分布和球差的不规则环形分布很容易区分。4.4 别忘了轴外像差彗差的工程意义牛顿望远镜优化完球差之后轴上的像质通常已经非常漂亮但一旦视场稍微拉大彗差就会出来捣乱。彗差的特点是在点列图上形成一个“彗星状”的扩散尖头朝内、尾巴朝外。它的来源是偏离光轴的物点经过球面反射镜时不同孔径环带上的放大率不一致。球差是对称轴上像差彗差则是离轴像差两者在抛物面上并不能同时完全消除——抛物面消球差但离轴彗差依然存在。因此在实际设计里不要试图用优化器去消灭所有视场的彗差那会把Conic拉到奇怪的值上去反而牺牲了轴上球差。正确做法是用视场限制保证系统只工作在彗差可接受的范围内。对你正在设计的这台100mm F/5牛顿镜0.2度半视场对应的彗差在点列图上通常会略大于无像差极限但目视和常规行星摄影完全够用。若需要更大的可用视场可以考虑在焦面前加入彗差改正镜但这属于另一套设计了这里不展开。加这一步的目的是提醒你看到一个像差优化好了先别急着庆祝把各个视场的点列图都翻一遍。5. 常见问题与排查技巧实录5.1 光线追迹失败Layout里光线乱飞这是我在论坛和实际工作里被问到最多的问题。光线追迹失败的原因90%出在坐标断点角度和厚度符号的配合上。一个小建议是每加一个坐标断点就追迹一次光线不要一次加完再检查。先建主镜、跑通无次镜的简单系统确认焦点位置正确再插入次镜和坐标断点。这样哪一步出了问题马上就能定位。另外注意Coordinate Break本身也是有厚度的面不要把它理解为“无厚度辅助面”。它的厚度值同样影响光线传播距离很多人在次镜前坐标断点里把厚度填成0结果光路提前折转后续怎么调都不对。正确做法是让第一个坐标断点的厚度承载主镜到次镜的距离次镜本身厚度为-350mm负号表示反射后反向传播第二个坐标断点厚度承载次镜到像面的距离。5.2 系统焦距和理论值对不上主镜焦距500mm系统焦距却显示1000mm或250mm这类问题核心通常是MIRROR材料和曲率半径符号。反射镜的焦距是曲率半径的一半但它对符号极其敏感如果曲率半径符号和厚度传播方向不匹配Zemax会按凹凸相反的方向计算焦点位置。还有一个隐蔽点如果次镜被误设成有曲率的面比如曲率半径不是Infinity它就会贡献额外的光焦度系统焦距自然偏离理论值。确保次镜是平面再检查一次System Explorer里的Effective Focal Length正常情况应该稳定在-500mm到-1000mm之间符号取决于坐标方向约定绝对值才是关键。5.3 优化后Conic不收敛到-1如果你明明做的是牛顿望远镜优化出来的Conic却落在-0.8或-1.2前景可能不是好消息。第一种可能是评价函数里包含了焦距约束而你把主镜曲率半径也设成了变量第二种可能是你用了默认的RMS Wavefront误差评价函数却在视场里给了离轴视场很高的权重优化器在多个像差之间做折中第三种可能是光瞳采样环数太少像差采样不够精细优化器把局部噪声当成目标去优化了。逐个排查。最稳妥的办法把曲率半径固定为-1000mm不要让它动只给Conic一个变量评价函数用RMS Spot Radius视场权重聚焦在轴上这样优化器没有其他出路Conic只能收敛到-1附近。5.4 次镜挡光比失衡的隐患设计阶段很多人只顾优化像质忽略次镜引起的中心遮挡。中心遮挡的后遗症不只是损失一点光能量它会把衍射环的能量打散使MTF在中频段下降影响行星细节反差。假如你发现次镜尺寸过大其实不用回到参数里去盲目缩小直径可以先打开Vignetting Diagram或Footprint Diagram看看实际到达像面的光束在主镜和次镜上的足迹。次镜尺寸只需覆盖从主镜反射来的全部光束即可每边留1-2mm装配余量。你在25mm半直径的次镜基础上如果足迹图显示实际光斑直径只有20mm完全可以缩小次镜半直径到11-12mm挡光比立刻下降好几个百分点。5.5 想进一步验证实际光路非序列模式能帮上什么忙序列模式擅长快速算像差和优化但它的坐标系抽象难以直观表现镜筒内部的光束如何被次镜遮挡、支架如何散射。真想看细节可以用Zemax的非序列模式Non-Sequential Mode把这个系统重新建一遍主镜、次镜、像面都当作物体对象放进去光源设为平行光。非序列模式里有真正的空间坐标你可以把次镜支架做成矩形块看看支架散射光会不会直接打到像面上。这不是牛顿望远镜设计的必需步骤但当你需要做杂散光分析、鬼像分析或者要跟结构设计同事讨论机械安装时这个模型沟通效率高得多。搜索热词里频繁出现“非序列模式分光棱镜”很多人是在做分光系统时学到非序列建模的那套思路完全可以平移到反射镜杂散光分析上。最后分享一个经验实际操作中我最深的体会是反射式系统的Zemax建模难点从来不在数学和优化算法上而在“坐标系管理”上。坐标断点这个东西初学时觉得多一个面就多一分混乱但等你熟练之后会发现自己开始用坐标断点“雕刻”光路——想让光轴在哪里拐弯、拐多少度、下一段往哪个方向走全都清清楚楚。这套本事在牛顿望远镜上是入门到了离轴三反、自由曲面棱镜系统上就是基本功。另外一个小习惯每次调整完坐标断点角度或厚度顺手点开3D Layout看一眼别等到最后统一跑分析Zemax的3D视图比任何数值表格都能更快告诉你光路对不对。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进