LyraZeta

个人站

十年寒窗无人问,一举成名天下知


缩比结构设计

Project_01 缩比结构项目历程

目录

1. Zemax非序列追迹(2025-07-24)

1-1. 在进行0视场追迹的时候,通过路径分析发现到达探测器的光线只有36%,为了解决这个问题,之后又给很多面镀了AR膜,探测器光线确实变多,但是发现这样做没有必要:因为透过率低没有问题,只要不影响成像即可。(没有要求能量随时率低?再查一下) 1-2. 在Zemax非序列模式下删除了所有镜片的镀膜,打开所有椭圆光源进行追迹,通过探测器查看器查看成像质量,找到抑制鬼像的关键面并镀膜,重新使用各个单光源进行杂散该光分析。

2-1. 尝试打开所有光源,考虑镜筒CAD文件进行非序列追迹。发现“能量损耗(错误)”很大,甚至大于“能量损耗(阈值)”,查询Zemax用户手册,发现又多种可能原因: “有时几何误差或舍入误差会导致光线追迹无法继续进行。几何误差通常是由欠定义的实体或不合适的物体嵌套所导致的。当某个表面的迭代失败或者无法计算膜层数据时,有可能造成一些光线的入射点和折射数据计算有误。当光线经过物体的交切点、嵌套层或线段数量达到所设定的最大值时,光线追迹同样会报错并中止。光线追迹控制会将这类错误造成的损耗显示在能量损耗(错误)中。 ”

2-2. 最终暂时放弃解决这个问题,由于:如果我使用加了镜筒的完整模型A与完整缩比模型B来对比的话,我依旧需要SW来设计B的镜筒STEP文件,做到这一步的话,我完全可以通过TracePro来进行杂散光分析,而不是Zemax。 所以简便起见,我暂时搁置加入镜筒导致的追迹错误,决定先用裸镜头组来比较A、B模型,明天缩比序列模型B,随后NSC非序列追迹。

2. Zemax非序列追迹——探测器查看器(2025-08-07)

  • X_IAGT(n,v) :在物体n上绝对强度大于v值的光线。如果光线不交于物体,则该标志为false。
  • X_IALT(n,v) :在物体n上绝对强度小于v值的光线。如果光线不交于物体,则该标志为false。 其中 v 的单位需与光线强度单位匹配。 例如:如下图,若光线强度单位是 “瓦特”,且探测器峰辐照度为 48.89 W/cm²(总功率 7.41 W,探测器面积 124mm×124mm≈153.76 cm²,则平均单光线强度≈7.41 W / 4400 条 ≈ 0.0017 W/条)。

此时若设置 X_IAGT(34, 0.0017),可筛选出单光线强度仅 > 0.0017 W的像素点,即这些像素点至少被两条光线击中。 一点思考:此时设定的X_IAGT(34, 0.001),此阈值下总撞击数刚好为我此次追迹设定的总光线数4400,似乎是刚好过滤掉鬼像等光线。后续尝试(如下图),设定字符串!G0筛选出非鬼像光线,此时撞击数恰好是4400,证明了X_IAGT(34, 0.001)确实过滤掉了鬼像。

3. Zemax探测器查看器概念解释(2025-08-07)

  • 1、非相干照度 :随探测器上空间位置变化的单位面积上的非相干辐射通量。是光线辐照度的叠加,不考虑相位因素。与其对应的是,相干辐照度,是光线复振幅相加,考虑相位因素,得到的是相干辐射通量。也就说后者会考虑相干因素;
  • 2、峰值辐照度:光束中任意点的单位面积的最大功率;
  • 3、总功率:对整个光束辐照度的积分(也就是光束总能量)。这里边辐照度你就可以理解成光功率密度,只是差一个视见函数而已。至于总功率为什么会随之探测器大小变化,我觉得是因为当探测面小时,其实部分光线未被接收所以导致小探测器的功率也小,另外大的探测器面也会接收一些杂散光,只能要把光斑包住,两者应该差距不大;
  • 4、非相干辐照度,即每个像素点对应辐照度值。

4. 像素点功率数据分析遇到问题(2025-08-12)

  • 1、不同强度的杂散光对望远镜成像的影响?(用来划分不同灰度区间的比较权重)

5. 进度(2025-08-14)

  • 1、梳理之前的结果:方案一:以探测器中心为圆心,逐渐增加圆半径,圆域内相同灰度区间像素个数统计、强度加权统计+差集区域分析,仅使用鬼像数据,结论:平均相似度较高。方案二:统计各强度区间像素点数量、加权值,说明功率相似性(Code:sta_scrip.m),同时通过SSIM说明结构相似性(Code: SSIM_UQI.m),总体说明相似度。
  • 2、引入SSIM和UQI指标来比较两系统的相似性和可替换性,具体可参考PSNR、SSIM等图像质量评估指标详解Code:"C:\Users\Lyra Alpha\Documents\MATLAB\tools\SSIM_UQI.m"
  • 3、根据杂散光评价指标来对比:分别根据两个系统得到的逐像素功率数据进行杂散光评估、比较它们的相似性和可替代性。Code:stray_light_evaluation.m 和 stray_light_evaluation2.m

6. 进度(2025-09-06)

总结一下这段时间的进度:

  • 1、之前对灰度的理解有误,之前的想法是将得到的150×150功率密度矩阵作为初始数据进行后续的分析,划分不同的功率密度区间,每个区间作为一个灰度来进行统计分析。这样其实不正确,实际情况下,探测器并没有办法得到像面上每个像素点处具体的功率值,这个功能是光功率计的功能,光功率计可以放到系统前探测具体功率,但是不能封装在光学系统内部,在像面上放置的其实是探测器,而它只能探测灰度值,是纯图像信号。
  • 2、那么后续的所有分析与统计都要基于实际中可以得到的数据(即灰度值),所有只需要将之前的150×150功率密度矩阵(单位是W/cm2)转换为150×150灰度矩阵即可。 转换基于公式:Vana=R×Popt+Vdark。其中 Vana 为输出电压,R 为探测器响应度,V_{dark} 为暗电流电压。随后设定相关参数,量化位数根据区间自动计算(如下设定条件下量化位数 N:16位(灰度范围0~65535)),将电压转换为灰度值。总体路径:功率密度→模拟电压→灰度值。 有一个问题:探测器响应度的计算值不一定能在现实中找到合适的探测器。
  • 3、使用灰度数据重新进行分析,考虑两种方法:SSIM、UQI、MSE、相关系数,在设定半视场内相似性极高;圆域+差集分析,在设定视场内外相似性均很高。
  • 4、在Soildworks中将原机械结构文件转换为零件后可以进行缩放,缩放后直接得到缩比机械模型。原系统和缩比系统的完整光机系统分别在0°视场进行非序列追迹,得到光功率密度矩阵,存于文件compare_systems_01ob_8000l_raw_cone.xlsx,通过上述方案进行分析,结果很好。但是有个问题:Zemax追迹时,由于“错误”而停止追迹的数值很大,需要进一步分析是否为正常现象。

7. 关于Synopsys学习(2025-11-12)

1. 背景

  • 之前构建的系统是一次成像系统,现在发现二次成像系统更好,具体可以参看“光学设计学习”专题,也可以问AI;
  • 已有系统使用的玻璃材料难以生产(加工难度高、有毒、成本高等)。 所以决定重新构建望远系统。通过Synopsys构建中红外望远系统的初始结构(选用522.8mm焦距系统),记录学习软件过程遇到的问题及解决方案。

    2. 学习记录

    1、找了一段DSEARCH.MAC初始结构搜索宏(可见光区的广角目镜)运行,成功跑通初始结构,样例链接:SYNOPSYS 光学设计软件课程三十七:自动查找和更改镜头结构 2、随后查询命令含义,按望远系统需求修改宏,运行报错,红外材料找不到。红外材料与可见光搜索方法有异,需要指定红外材料,找到可行宏语句: GLASS POS ! 指定正透镜玻璃材料 G D-FK61 GLASS NEG ! 指定负透镜玻璃材料 G H-ZF88 3、由2延申到正负透镜的搭配,记录在:镜头设计中透镜材料的选择及搭配 4、接2,更改了材料(选用Synopsys的红外材料库Unusual,用U表示)后运行报错:GLASS-TABLE ERROR OR CONFLICT WITH MULTIPLE CORES(玻璃表错误或与多个核心冲突)。找到原因:增加材料时,U前面不能出现其他字符,空格也不行。 删除之后可以运行,如果此时报错:NO GOOD CASES FOUND,应该是没有找到类似的初始结构,可以尝试更改搜索参数尤其是材料。 正常运行之后,如果搜索得到结构像面在最后一片透镜之前,说明正负透镜材料的设置可能反了,交换POS和NEG的材料后尝试,可以得到正常结构。 5、尝试不同的正负透镜组合,多次搜索,发现模型形状难看,发现它居然像是广角镜头(佩服我自己,这都能看出来),突然想起来用的是广角目镜的搜索宏,只修改了系统参数,并未修改优化参数(约束),后续学习优化参数的使用方法。

8. 系统设计及公差分析(2025-12-07)

  • 重新设计中红外望远系统:采用7片透镜,两个非球面,二次成像系统,光阑置于像面之前。
  • 系统所有材料均可找到供应商(包括成都光明的HWS系列和SILICON等常用材料),随后进行数据标准化(厚度保留两位小数,曲率半径保留三位小数),固定净口径(已保留5%净口径余量)。
  • 效果:除边缘视场外,点列图均小于艾里斑,MTF全视场大于0.55。

  • 进行公差分析以及收缩公差 首先根据现代光学加工等级表(如下图)填写公差分析向导,软件会在公差数据编辑器自动生成函数,随后运行公差分析得到结果。

随后收缩公差,可以参考Zemax教学视频第五弹——公差分析,最终得到公差数据结果如下图。

这个效果应该还可以,但是对公差分析时MTF和RMS光斑半径标准并不是很明确,目前对公差效果的判断来源于网上的信息即一些论文,发了个帖子提问,蹲回答:中红外系统设计的MTF标准

9. NSC转换与非序列模式(2025-12-13)

转换之后自动生成矩形探测器和光源,接下来手动添加颜色探测器,注意为颜色探测器的Z位置设置一个小量,否则会挡住其他视场的矩形探测器。选择光线追迹,在探测器查看器查看。

10. 缩比方式

考虑多种缩比方式:

  • 方案一:将整合后的系统A(透镜厚度、曲率半径保留特定小数位,固定口径)按焦距缩比得到系统B’,此时系统B’的小数位会变得不再符合要求,进行小数整合,重新保留小数,但是不进行优化,最终可以得到符合加工要求的系统B,进行后续的公差分析和NSC追迹。注:可以慢慢调,找到一个平衡点,比如如果某个变量四舍五入会造成像质明显下降:假设增大了凸透镜前一面厚度,那么就增大一点前一面的曲率半径。
  • 方案二:直接对未整合的系统A’进行缩比得到系统B’‘,随后进行小数整合……但是这样的路径,两个系统都不可以在整合系统时进行优化,否则两系统的参数很可能不再具有缩比映射性。

注:系统A'在整合为系统A过程中,使用了局部优化。

本项目目前使用方案一推进,给出公差对比图如下:

左列为点列图公差,右列为MTF公差; 第一行为方案一得到的系统B的公差,第二行为系统A的公差,第三行为方案二得到的未经整合系统B’‘的公差。

11. Solidworks光机结构建模(2025-12-20)

模型导入

在 Zemax 中,点击顶部菜单栏的 File (文件) -> CAD Files (CAD文件)导出STEP文件; 打开Solidworks,点击 打开 (Open),选择刚才导出的 STEP 文件,点击打开对话框(资源管理器)中的 选项 (Options),配置为如下图选项:

随后会打开SW系统界面,并弹出如下界面:

点击确认并保存即可,这样每个透镜会成为装配体中的一个独立零件,方便后续管理。

注:如果前面的弹窗未正确出现,并且最终导入的文件并不是以装配体(.SLDASM)的格式,而是以零件的格式(.SLDPRT),这种情况下SW左边的零件列表栏应该是一系列蓝色的import num图标,而不是黄色的surfaces num图标(如下所示)

这个问题是Zemax未按预期方式导出文件导致的(我觉得是这样),应该与SW的PMI选项有关。解决方案:打开Zemax设置 -> OpticStudio选项 -> 常规,勾选使用Parasolid数据库选项即可:

重新导出STEP再导入SW即可。

插入光阑与像面

光阑和像面未正确导入,删除重新插入模型。 分别插入两个新零件,在对应位置新建基准面,在基准面上绘制光阑(圆环)和像面(旋转45°)。 关于厚度的设置:像面(4096×4096)厚度设置为6mm,因为查找探测器参数指标发现 640×512 探测器一般厚度为1mm;光阑厚度设置为3mm,目前看来只需要保证机械强度即可(控制口径-厚度比)。

镜片组装配

压圈应该拧紧后可以起到固定作用,此时大概无需放置隔圈。

12. TracePro光线追迹

模型导入

Solidworks 导出为 STEP 格式,用 TracePro 打开即可。

设置材料

  • 镜片:设置对应的玻璃材料,可以使用 python 脚本将用到的 Zemax 玻璃库导入 TracePro 再设置,非常方便;
  • 机械结构(镜筒、压圈、隔圈):如果仅进行杂散光分析,可以不设置材料,影响不大,膜层的影响才是主要的。 如果设置材料,目前设置:镜筒、镜室:Metals --> Aluminum ; 压圈:Metals --> Titanium (由于内置钛波长未覆盖所需波长,暂时更换为铝); 隔圈:Metals --> Stainless Steel 304 (304不锈钢)。
  • 冷光阑:使用高导热材料 Metals --> Copper

设置膜层

镜片:需要镀增透膜,目前选择 Default --> MgF2 Single Layer AR 单层膜,如果不能满足要求,也可以考虑成本更高效果更好的三层膜:Default --> 3 Layer AR 机械结构:全镀 Acktar --> Fractal Black #1776 (TP自带的红外消光膜)

重要:注意胶合面不要镀膜!!!

光线追迹

可能会出现光线在胶合面中断(无法穿过),可能是两个镜片的胶合面有重合,本系统尝试将两胶合镜片拉远 0.0005mm,追迹成功,由于 Zemax 中设置的距离精度为小数点后三位,故不影响结果。

追迹进度————原系统追迹

追迹出现问题,光线可以正常追迹,但是会报一行错:警告: 不完整的 Glass 5 有可能被加入到光线追迹之中.更糟糕的是,Glass 7 没有任何偏折作用,从 Glass 6 出射的光线视若无物地通过第七片透镜,遂排查错误。

  • 排查 Glass 7 材料、镀膜、曲率设置均未出错;
  • 忽略除 Glass 7 、像面、格点光源之外的所有元件,即仅对 Glass 7 进行光线追迹,发现 Glass 7 可以正常偏折光线,说明镜片设置没有问题,那么问题一定出在系统的其他地方;
  • 逐步考虑(取消忽略)其他元件,找到使 Glass 7 无法偏折的问题元件。取消忽略 Glass 6 ,光路正常;继续…… 考虑到警告:警告: 不完整的 Glass 5 有可能被加入到光线追迹之中.,大概率 Glass 5 是问题元件。故考虑所有元件,仅忽略 Glass 5 ,重新追迹,光路偏折正常,取消忽略 Glass 5 ,追迹出现异常(光线无法偏折),显然 Glass 5 就是问题元件。
  • 警告显示 Glass 5 不完整,考虑是 Glass 5 和 Glass 6 出现重合部分(两片透镜胶合),忽略 Glass 6 重新追迹,依然出现警告,显然是 Glass 5 本身有问题;
  • 警告原因应为:Glass 5 的几何模型不完整(比如实体未闭合、存在破面 / 缺失面、曲面导入失败等),应该是镜片组从 Zemax 导入 SW 再导入 TracePro 过程出现错误,修复模型较为麻烦,考虑重新导入Glass 5 模型:从Zemax导出STEP格式的 Glass 5 并导入 TracePro 替换原来的 Glass 5 ,设置材料、膜层等,重新追迹,成功,光线在像面处汇聚正常。 问题解决。

感想:为了减少面型错误的发生,在进行光机模型的构建过程中,可以将模型从 Zemax 中导出为STEP文件,并分别导入 SW 和 TracePro (oml)中,在 SW 中构建机械模型并将机械结构部分设置为子装配体(此时 SW 整个模型就是由两个子装配体构成),仅导出机械结构部分装配体为STEP文件,并将此文件用 TracePro 打开并保存为oml文件,这样就有两个oml文件,分别是镜片组和机械机构。用 TracePro 打开镜片组,选择插入零件,插入机械结构oml文件,这样就组装成了完整的光机结构文件。

追迹进度————缩比系统追迹

由于从缩比 Zemax 模型生成缩比 SW 模型需要重新绘制机械结构,无法保证两系统几何结构完全相同,故考虑直接由原系统SW模型缩放生成缩比系统模型。 导入流程:

  • 将整个原系统的 SW 装配体文件夹 SW_SecImag_simp 复制过来,打开后另存为 SW 零件 .SLDPRT,此时可以进行缩放 (只有零件可以缩放,装配体不可以);
  • 随后打开此零件,选择 “插入 -> 特征 -> 缩放比例”,比例缩放点选择原点,缩放0.5倍后保存为 SecImag_simp_Scale.SLDPRT,并另存为 SecImag_simp_Scale.STEP,使用TracePro打开,保存为 SecImag_simp_Scale.oml,由于 Glass 5 追迹是发生重叠错误,按上述方法生成 Glass 5.oml 文件并在 TracePro “插入 -> 插入零件” 选项中替换本透镜,追迹成功。
  • SW 放缩过程可参考:SolidWorks装配体等比例缩放的方法

注:开始的时候使用另一种方式导入出现错误(光线不按预想的方式分布,并未在像面上汇聚成一个点,而是一个很大的弥散斑),原因是多次转换文件出现较大误差。不合理方式:没有直接复制整个原系统的 SW 装配体文件夹 SW_SecImag_simp ,而是导出为 STEP 文件( SW 打开后为 .SLDPRT 零件形式)后,缩放并再次另存为 STEP 文件 SecImag_simp_Scale.STEP,此种方式再导入 TracePro 时会出错。

-->