拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

用Zemax设计牛顿望远镜:从球差优化到抛物面主镜的完整流程

用Zemax设计牛顿望远镜:从球差优化到抛物面主镜的完整流程

玩望远镜的朋友应该都听过牛顿望远镜——一片主镜加一片斜置的平面副镜,光路折叠后从镜筒侧面出来。用Zemax做牛顿望远镜的光学设计,说实话难度不高,但很多新手一上来就卡在坐标断点上,要么光线乱飞,要么优化了半天球差纹丝不动。这篇我就从实际建模的角度,把牛顿望远镜光学设计完整拆成5个步骤,从参数设定、光路搭建、球差优化到像质评价,全程走一遍,顺便把几个容易踩坑的细节说清楚。不管你是光学专业的学生、天文爱好者,还是刚转行做光学设计的新人,只要有Zemax的基础界面操作经验,跟着这套流程就能做出一个可以实际加工参考的牛顿望远镜模型。

1. 设计之前先想清楚:牛顿式结构的原理与参数选择

1.1 牛顿望远镜的结构与光路特点

牛顿望远镜是反射式望远镜里最经典的一种,主镜是一块凹面镜,副镜是一块45度倾斜的平面镜。平行光从镜筒口进来,先打到主镜上反射并会聚,在焦点还没到之前被副镜截住,折转90度从镜筒侧面引出,最后在目镜或相机传感器上成像。这个设计的好处是结构简单、没有色差,而且副镜只承担折转光路的作用,不会给系统引入额外的像差。

很多人一开始对“副镜不引入像差”有疑问,其实从理想光路的角度看,一块理想的平面反射镜只是把整段光路做了空间上的搬移和方向改变,对波前的形状没有本质影响。只要副镜本身面形足够平、装调足够准,它基本不影响主镜决定的像差状态。这也是为什么我们可以在Zemax里先不建副镜,把主镜的像差优化好,最后再补折转光路。

1.2 第一次设计,口径焦距怎么定

设计指标是决定后面所有步骤的前提。我建议第一次做牛顿镜设计,直接采用一个经典且好加工的参数组合:口径D=200mm,焦距f=800mm,焦比F/4。

焦比在这里是关键。F/4算比较快的系统,镜筒短、结构紧凑,但像差也更敏感,适合用来展示球差优化的威力;F/8虽然更容易加工和装配,但镜筒太长,优化起来反而不够“刺激”。取F/4,主镜焦距800mm,镜筒长度控制在900mm左右,是一个很典型的目视/摄影两用配置。

副镜直径也要提前估算。副镜的作用是把光路折到镜筒外,直径取得过小会挡不住全视场的光,过大会增加中心遮挡,降低分辨率。一般按线遮挡比15%到25%来选,200mm口径配50mm左右的副镜比较常见,遮挡比约0.25,对MTF的影响还在可接受范围内。波长方面先用0.55μm单色光做设计,把核心光路跑通后再加多色波长验证;视场取0°、0.5°、1°三个点,方便后面观察轴外彗差。

1.3 球差为什么是牛顿镜绕不开的坎

球面主镜成本低、加工容易,但球面反射镜对轴上点也有球差:边缘光线比近轴光线会聚得更早,导致焦点不是一个点而是一个弥散斑。焦比越小,球差越严重。抛物面主镜则能让所有轴上光线精确会聚到同一个焦点,这就是设计目标。

但抛物面不是“拿来就能用”的,它相对球面的偏离量是多少、非球面度好不好加工,都需要计算。Zemax里直接把主镜的Conic设为-1就能得到理想抛物面,但更有意思的玩法是:从球面出发,让优化器自己去找到-1这个值。这既验证了设计思路,也能让你真正理解球差优化在Zemax里是怎么运作的。

2. 第1步:搭建Zemax系统框架(孔径、波长、视场)

2.1 系统孔径、波长和视场设置

打开Zemax后先把默认透镜组删掉,从空白系统开始搭。在系统选项里,Aperture Type选择Entrance Pupil Diameter,数值填200,表示系统入瞳直径200mm,也就是主镜口径。为什么不选Object Height或Image Height?因为望远镜接收的是无穷远物体的平行光,入瞳口径最直观,也直接对应主镜口径。

波长一般习惯先用单色0.55μm,把设计和优化思路跑通,再在后面加多色波长看实际表现。虽然反射镜没有色差,但如果你后面要给系统加分光棱镜、滤镜转接或者做衍射评价,多色评估还是有必要的。视场方面,先设定三个视场:0°、0.5°、1°,方便后面看轴外彗差。

2.2 主镜面型:如何用Standard面表示凹面反射镜

主镜直接放在第1面,面型选Standard。这里有个关键点很容易踩坑:曲率半径填-1600mm。Zemax里光线从左向右传播,凹面镜的球心在入射光一侧的反方向,也就是系统坐标的负方向,所以曲率半径取负值。焦距和曲率半径的关系是f=R/2,R=-1600mm,焦距就是800mm,和设计值对上了。

厚度这里也要用负值。主镜的厚度填-800mm,表示光线经主镜反射后向左返回800mm到达焦点。很多人第一次建模时习惯所有厚度都取正,结果光线路径一团乱。在Zemax序列模式里,负厚度代表光路折返,这是反射系统的正常表示方法。另外记得在面属性里把Mirror勾上,或者在新版本里把Surface Type设为Standard并设置反射膜层,这样软件才会按反射而不是折射处理。

2.3 先别急着加副镜:轴上模型的搭建思路

我通常建议先不加副镜,把主镜和像面直接搭成轴上系统:主镜在第1面,厚度-800mm,像面放在主镜后面800mm处。对轴上视场来说,这个模型已经能完整反映主镜的像差状态,优化球差时也不会被坐标断点干扰。

等球差优化到接近零以后,再在焦点前约100mm的位置插入坐标断点和一个平面反射镜,模拟副镜的90度折转。具体做法是:一个坐标断点负责把局部坐标系倾斜45度,平面镜负责反射,再补一个方向相反的坐标断点把坐标系恢复,像面就落到镜筒侧面了。注意,两个坐标断点的具体正负号要结合你的全局坐标习惯去试,不同Zemax版本会有差异。原则是“两个坐标断点方向相反、量值相同,中间夹一个平面镜”,用三维布局图一边看一边调,比死记参数靠谱得多。

3. 第2步:分析球差、制定优化策略

3.1 打开光斑图和波前图看球差

现在系统是球面主镜,打开Spot Diagram,你会看到轴上视场的光斑虽然左右对称,但有一个明显的径向弥散,这就是球差的典型形态。再看Wavefront Map,波前误差从中心到边缘的变化是平滑的、近球对称的。这些图形是“球差长什么样”的直接答案,也方便你优化前后做对比。

如果你有经验,还能从光斑的分布判断球差的符号:边缘光线焦点比近轴光线焦点更靠近主镜时,光斑外圈比内圈更发散,说明正球差。对反射系统,符号和折射系统不完全一样,所以建议不要死记,直接看光斑半径和波前PV值的变化更稳妥。

3.2 用操作数把球差写成可优化的目标

只靠眼睛看图没法做自动优化,要把球差翻译成操作数。Zemax里常用三个操作数来控制球差:

  • LONA:轴向像差,单位mm,表示指定孔径光线与近轴光线的焦点位置差。
  • SPHA:初级球差系数,对应Seidel像差中的球差项。
  • OPDC:光程差在某种归一化口径下的分布。

实际项目里我优先用LONA,物理意义直观:设为0就是让边缘光线和近轴光线会聚到同一个轴向位置。打开评价函数编辑器,插入一行LONA,操作数窗口对应近轴光线,波长选1,目标值0,权重1。为了不让系统跑焦,再插入一个EFFL操作数,目标值800mm,权重1。这样优化器就知道“焦距不能跑偏,球差必须压掉”。

3.3 优化函数的权重怎么设置

权重决定了优化器先满足谁。如果把LONA权重设得很大,优化器会优先把球差压到零,但可能牺牲焦距精度;反过来焦距权重太大,球差又会压不下去。我一般先用默认的RMS Spot Size生成一组基础优化函数,把光斑半径作为整体约束,再单独把LONA的权重调到1以上,EFFL权重给1,让系统在“不跑焦”和“消球差”之间取得平衡。

对于纯牛顿主镜这个场景,理论上只有一个变量conic,约束也不多,权重只要不过分极端,结果都收敛到同一个解——conic=-1。权重问题在复杂系统中才会显得重要,但养成好习惯总没错。

4. 第3-4步:执行优化,让球面镜变成抛物面

4.1 优化前的最后准备

把主镜的Conic设为变量。在面属性里找到Conic这一项,点右键选择Variable。如果想让曲率半径也参与优化,也可以设为变量,但我的建议是锁定曲率半径,只优化Conic。原因很简单:曲率半径直接决定焦距,锁定它等于锁定了F数,只让非球面度去消除球差,物理意义更清楚。

另外,确认孔径、波长、视场设置都在预期状态。如果刚才测试过坐标断点或其它面,先把它们暂时删除或设为跳过,保持一个清爽的轴上系统去优化。这一步看似多余,但能有效避免“优化完了发现变量太多,不知道是谁起的作用”这种尴尬。

4.2 执行优化并解读结果

运行优化后,看两个东西:一是主镜的Conic值,二是LONA操作数。Conic会从0逐渐逼近-1,LONA从初始的几十毫米量级掉到零附近。如果用轴上单色光,Spot Diagram会变成一个理想的小点,Wavefront Map变成一片平坦。这说明球面主镜已经被优化成了抛物面主镜。

有一点要提醒:Zemax的优化器不一定一次就停在完美的-1。很多时候它会在-1.00001或-0.99998这种值上停下,这完全正常。加工图纸上你也不会真的写-1.000000,而是写-1±0.001这种公差形式。所以不用追求小数点后五位完全等于-1,够用就行。

4.3 conic=-1背后的二次曲面与高阶非球面

可能有人会问:为什么主镜非球面度正好是-1?这要从二次曲面方程说起。Zemax的Standard面矢高公式里有一个Conic常数,当Conic=-1时,面形正好退化为抛物面。抛物面的几何定义是“到焦点和到准线距离相等”,这正好保证平行于光轴的入射线反射后都经过焦点。球面对应Conic=0,椭球面对应-1<Conic<0,双曲面则Conic<-1。

对牛顿主镜来说,-1就是最优解,不需要用到高阶非球面项。如果某些系统需要更好的轴外像差平衡,才可能用Extended Polynomial或Zernike Fringe面型加入高阶项。我见过有人一上来就上扩展多项式,结果不仅变量多、收敛慢,加工也困难。能用简单二次面解决的问题,就不要引入高阶项,这是光学设计的通用原则。

5. 第5步:像质检验与实战注意事项

5.1 光斑、MTF、波前三项指标怎么判定

等Conic优化到-1,就不只是看球差消没消,还要看整体成像质量。常规三个指标:Spot Diagram的RMS半径、MTF曲线、Wavefront的RMS和PV值。轴上视场在理想抛物面下,衍射极限是天花板;MTF曲线贴着衍射极限走就很正常。但如果加了副镜遮挡,MTF会整体下降一些,这是遮挡比带来的必然结果。

轴外视场就更有意思了:牛顿镜在轴外会有明显的彗差,0.5度和1度视场的光斑已经不是圆点,而是呈现出彗星状的拖尾。这不是模型错了,而是牛顿式结构的固有特征。所以很多实际望远镜在摄影时会加彗差修正镜,或者把视场控制在很小的范围内。你在MTF上会看到轴外MTF比轴上差不少,这就是彗差在做主导。

5.2 副镜遮挡、支架衍射与装配细节

加入副镜折转后,还要考虑副镜的遮挡比。副镜直径和支架会挡住一部分入瞳光线,导致光能损失和MTF下降。在Zemax里可以用中心遮挡的孔径(比如环形孔径)来近似模拟副镜遮挡的效果,观察它对MTF的影响。副镜遮挡比控制在0.2到0.3之间比较常见,再大就会明显损失高频细节反差。

装配层面上,副镜支架的衍射会产生星芒,这在真实天文照片中很常见。这种效果用序列模式很难直观表达,需要到非序列模式里建模,把副镜、支架、镜筒内壁的散射和反射都加进去做杂散光分析。如果系统里还要放分光棱镜之类的分光元件,同样建议拿到非序列模式里验证。对初学者来说,先不用做那么重,先把轴上、轴外的像差和遮挡比搞清楚,已经很接近实战设计了。

5.3 常见问题速查与排查技巧

我把实际工程和教学里遇到的问题列成了一张表,贴在下面:

问题常见原因解决办法
光线乱飞、穿越镜面不反射厚度符号错误或没设Mirror属性检查主镜厚度是否为负,确认面属性已设为反射
优化后Conic不收敛到-1Conic没设为变量,或权重被焦距约束压死确认变量状态,调整EFFL权重,先用轴上模型优化
LONA始终很大波长权重、操作数窗口或边缘孔径设置不正确核对LONA参数,确认取的是近轴和边缘光线的焦点差
加坐标断点后光斑散乱坐标断点方向或量值不对先去掉副镜,轴上验证后再分段加坐标断点,用三维布局图观察
MTF明显异常视场设置过大或副镜遮挡模型不对检查视场值,合理设置中心遮挡比
ZPL宏报unknown symbol getthickness当前版本没有该关键字或拼写不一致查帮助文档确认函数名,或用OPTR等优化操作数间接获取面参数

坐标断点是最容易出现问题的环节。我的经验是每加一个坐标断点就保存一个版本,并且一次只改一个参数,看光线是否还正常,这样一旦崩了能快速定位。另外ZPL宏报错那条,很多刚接触宏的人会卡在unknown symbol上,其实你需要的参数往往可以用优化操作数间接读取,不一定非要写很复杂的自定义函数。

6. 写在最后:我的几点体会

做这个设计案例给我最深的体会是:刚开始别急着把副镜、遮挡、支架全部建出来,先把主镜和球差搞定,再加折转,最后做工程化分析。设计上Conic=-1很容易,但要真正磨出一个合格的抛物面,还需要刀口仪、星点测试和反复的修改。Zemax给你的不是一张“已经做好”的图纸,而是一条“知道该往哪走”的路。

最后再分享一个小技巧:保存设计文件时,把初始球面模型和优化后的抛物面模型分成两个文件保存,方便做对比。调试中每一次操作都备注一下,遇到问题靠版本回溯,比靠记忆靠谱得多。做光学设计,软件只是工具,真正值钱的是你对“物理上发生了什么”的理解。球差优化做完之后,再回头看星点测试、看望远镜实拍图,你会有完全不一样的感觉。

返回列表