尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Zemax显微镜设计实战:从物镜优化到照明与公差分析

Zemax显微镜设计实战:从物镜优化到照明与公差分析 做光学设计十多年经常有人问我“Zemax不是拿来做镜头成像的吗显微镜这种精密仪器也能用它设计”我的回答通常是显微镜拆到底就是一套多组级联成像系统Zemax不仅能做而且从物镜设计到照明分析都能覆盖。这篇文章以Zemax显微镜设计为主线把我平时从需求拆解、物镜优化、系统组合、照明分光到杂散光分析的完整套路讲清楚顺便把那些让人抓狂的报错比如宏里突然出个unknown symbol getthickness也一并整理出来。如果你是刚入行的光学设计学生或者一直在做拍照镜头、望远镜头突然被安排去搞显微镜项目这篇文章应该能帮你节省至少两周的摸索时间。显微镜不是玄学它和普通成像系统的差别只在于前组物镜数值孔径很大、后组管镜要匹配光瞳、中间还要给滤光片和分光棱镜留位置。理顺这套逻辑Zemax里的操作就是水到渠成的事。1. 显微镜设计的本质拆开看就是一套级联成像系统1.1 显微镜类型决定Zemax建模方式很多人拿到显微镜需求就开始找Zemax里的“显微镜模板”其实根本没有这种一步到位的模板正确做法是先判断你做的到底是哪一类显微镜。传统教学显微镜里物镜直接把物体成像到中间像面目镜再对这个实像放大这叫有限远校正系统。这种系统结构简单但物镜和目镜之间只要塞入分光棱镜、滤光片中间像面位置就会漂移像质也会明显下降。所以现在的生物显微、荧光显微、工业检测显微镜几乎都改成无限远校正系统物镜出射的是平行光在物镜后方一定距离放置管镜由管镜会聚成像。Zemax里建无限远系统有个天然优势平行光路中可以轻松插入平面元件拆开优化时各模块之间不会互相“绑架”。系统类型成像特点典型应用有限远校正物镜直接成实像结构紧凑老式教学显微镜、简单工业镜头无限远校正物镜出平行光管镜二次成像研究级生物显微镜、荧光、共聚焦体视显微镜双通道低倍大工作距离正像棱镜解剖、电路板检查Zemax序列模式适合处理无限远系统和有限远系统的成像链路优化速度快MTF和像差分析非常成熟而照明系统、分光棱镜的反射透射、杂散光分析就要切到非序列模式去追迹真实光线。我的习惯是序列模式做镜头指标非序列模式做照明验证一根光路拆成两半各用各的强项。1.2 从关键指标反推系统参数显微镜设计绝对不能上手就填玻璃、输曲率你要先根据用户给的放大倍率、数值孔径NA、视场数FN把系统层面的几何参数算清楚Zemax里的输入才有意义。举一个最常见的例子设计一套10X物镜加管镜的无限远系统。选管镜焦距 f_tube180 mm这是很多显微镜厂商默认的标准管镜焦距。总放大率等于管镜焦距除以物镜焦距所以物镜焦距 f_obj f_tube / M 180 / 10 18 mm。如果换成200 mm管镜同样的10X物镜焦距就是20 mm。很多国产系统采用无限远物镜配200 mm管镜国外部分品牌用180 mm混用的话放大率会变成0.9倍或1.1倍用户拿到手会觉得倍率不准。再看NA和分辨率。显微物镜的物方数值孔径是核心指标决定系统能分辨多小的细节。根据瑞利判据物方能分辨的最小线宽 δ0.61λ/NA。假设绿光波长550 nmNA0.25那么 δ≈1.34 μm如果是NA1.25的油浸物镜δ≈0.27 μm。在Zemax里你可以直接用这个公式反推所需的NA再去设定入瞳直径或者物方孔径角。对于物方NA0.25空气介质物方半孔径角约为arcsin(0.25/1)≈14.5°物镜前方入瞳尺寸和工作距离就这样被约束出来了。除了倍率和NA视场数FN也要尽早定。FN20表示物方视场直径20 mm但这是目镜系统里的叫法放到相机系统里要换成传感器靶面对角线。例如用了1/1.8英寸靶面对角线约8.9 mm加上光学倍率10倍物方实际视场就是0.89 mm。这些参数在Zemax里都会变成视场设定和像面大小的依据所以第一步算清楚后面少走一半弯路。2. 物镜设计决定显微镜性能的核心2.1 初始结构从Zemax数据库到薄透镜起步显微物镜是整个系统里技术含量最高的部分初始结构选错了后面优化再久也白搭。Zemax自带的镜头库里有少量显微物镜例子但覆盖不全我常用的办法是去专利库和公开论文里找经典结构再缩放到目标焦距。常见显微物镜结构按性能分几档低倍4X、10X用小NA双胶合就可以10X配NA0.25以上时需要用到三片式的 Lister 物镜或者“半消色差”结构20X以上通常加一个前片半球透镜来增大NA平场复消色差物镜则会有多组正负透镜组合甚至引入氟化钙等低色散材料。在Zemax里导入初始结构后第一步不是优化而是先缩放焦距。Zemax有一个非常实用的缩放功能在工具菜单里按目标焦距整体缩放所有曲率半径和厚度但注意不要缩放工作距离因为显微物镜的工作距离往往是硬指标需要在约束里单独卡死。初始结构的玻璃选择也要谨慎。常规显微物镜用普通冕牌玻璃和火石玻璃就能满足消色差如果做紫外荧光物镜就需要使用石英材料在Zemax材料库里名称通常是F_SILICA或QUARTZ它的紫外透过率好、热稳定性高。我把zemax quartz这个关键词提出来是想提醒大家在玻璃表里找材料时不要看到QUARTZ名字就直接用还要检查色散系数和阿贝数是否满足波段需求同时确认材料库版本里有该材料的完整色散数据。2.2 像差平衡与优化函数设置初始结构导入后优化变量的选取要克制。我见过很多新手把曲率、厚度、玻璃折射率、阿贝数一股脑全设为变量结果Zemax跑出个非物理的形状甚至玻璃替换到供应链根本没货。正确姿势是先把所有空气间隔设为变量曲率半径先保持变量但不设太离谱的边界玻璃只在最后做替换优化。厚度变量要控制好边界特别是镜片中心厚度和边缘厚度显微镜体积小镜片装夹和胶合非常容易出问题。优化函数的选择上显微镜物镜要同时看RMS Spot Radius和Wavefront。低倍物镜用RMS Spot就够NA超过0.4最好切换到Wavefront或者RMS Spot with Airy Disk因为像差已经接近衍射极限只看几何光斑容易掩盖波前误差。Zemax默认优化函数里选RMS Wavefront加上质心参考再用MTF作为评价标准。约束操作数里我必加的是后焦距大于某个最小值比如3 mm、畸变控制操作数DIMX小于1%、工作距离操作数TTHI或直接限定surface间隔、以及镜片边缘厚度最小值。扩展多项式优化这个热词其实对应的是Zemax里自由曲面和偶次非球面的扩展多项式面型。显微物镜前片偶尔会用到非球面来校正球差尤其是模压玻璃非球面成本越来越低之后Zemax里的Extended Polynomial面型可以把非球面高次项系数设为变量和球面系统混合优化。需要强调的是非球面不是越多越好一片非球面常能替代两片球面镜但加工和检测成本翻倍我一般是设计快收敛时才引入非球面让Zemax去决定高次项是否真的能显著提升MTF如果提升不到5%就果断放弃。2.3 公差分析别让设计只停留在纸上很多工程师把镜头优化到衍射极限就以为万事大吉但一到生产装配就发现良率只有可怜的几个点。显微镜物镜对公差极其敏感尤其是偏心。Zemax里的公差分析操作数你至少要盯住这几个TRAD曲率半径公差、TTHI厚度公差、TEDX/TEDY镜片偏心、TETX/TETY镜片倾斜、TIRR面型不规则度再加上玻璃折射率TIND和阿贝数TABB。做公差分析时先用“灵敏度”模式看每个公差对MTF或RMS Wavefront的贡献找到最敏感的那几个元件。显微镜物镜通常最敏感的是前片偏心前片一个微米级的偏心就可能让轴上点出现明显彗差。遇到这种情况我会把前片的公差收紧到2 μm以内而后组镜片可以放宽到5 μm这样既保证性能又不会让加工成本失控。公差分析还需要设置补偿器显微镜整机装配时最常用的补偿器就是改变管镜到物镜的间距相当于在Zemax里把最后一个面的厚度设为补偿器。这能模拟实际调焦过程不然蒙特卡罗统计出来的良率会过于悲观。跑完公差分析后用Zemax的“良率”统计看90%以上的样品MTF在哪个空间频率处衰减这才是你给用户承诺的“保证分辨率”。3. 管镜、目镜与相机适配把物镜“接”到真实世界3.1 管镜设计匹配物镜像方光束无限远系统的管镜看似简单往往一片双胶合就能应付但它在Zemax里和物镜的“瞳孔匹配”问题经常被忽略。物镜出射的是平行光但平行光也有一个出瞳位置管镜必须让物镜的出瞳和管镜的入瞳重合否则会产生渐晕。实际操作时不要直接把物镜文件和管镜文件简单拼在一起正确做法是把两个子系统放在同一个Zemax文件里用光阑附近的光线追迹检查各个视场的光束在管镜口径上是否完整。管镜焦距的选择前面已经讲过另一个关键是管镜的残余像差要和物镜互补。如果你用Zemax同时优化物镜和管镜可以在评价函数里把物镜单独约束好管镜主要校正场曲和畸变。我通常把物镜设计成轴上球差、色差很小而管子上的场曲和像散成为系统剩余量。平场显微镜要求整个像面平坦那么管镜要多为场曲负补偿这个平衡需要反复调试。在Zemax里设置系统时物方用物面加无穷远物距也可以但更简洁的做法是物面放在物镜前焦面设置物方NA物镜出射平行光后面管镜把平行光聚焦到像面。检查光线的平行度可以用“全局坐标”或查看实光线在各个面的入射角如果管镜之前的光线相对光轴夹角很小说明拼接成功。3.2 目镜和人眼模型如果做双目生物显微镜后端不能只接相机还要设计目镜。目镜本质是一个放大镜把管镜成的中间像再次放大但和普通放大镜不同目镜必须考虑出瞳位置和眼点距离。Zemax里模拟目镜时通常把光阑放在目镜前焦点附近出瞳距离就是光阑到最后一面的距离一般要求10 mm以上才能让戴眼镜的用户看到全视场。人眼模型在Zemax里可以用面序列模拟先设置一个理想透镜代表眼球角膜和晶状体像面放在视网膜位置。但大多数目镜设计只需要保证出射光束的波前质量不需要完整眼球模型。我习惯在目镜像面后加一个“近轴面”作为人眼简化模型去看不同视场出射光线在瞳孔处的会聚情况。如果出瞳距离太短边缘视场会被眼眶遮挡用户会看到圆形的暗区这种问题在Zemax里一眼就能看出来。目镜的视场角和放大倍率对应关系是Γ250/f_eye其中250 mm是明视距离。一个10X目镜的焦距就是25 mm像方视场角根据中间像直径自动确定。设计时只要把中间像面直径例如18 mm视作“物高”目镜对无穷远成像就能得到目镜的基本光学参数。3.3 相机适配器与C接口现在很多显微镜用户早就把眼睛从目镜挪到显示屏上所以相机适配器设计变得越来越重要。工业相机大多采用C接口机械接口的后截距是17.526 mm这个数值指的是相机法兰面到传感器像面的距离。在Zemax里建立模型时一定要在像面前留出这个距离的空气间隙否则教你做的适配器拧到相机上根本无法合焦。像素尺寸和分辨率的匹配也不能忽略。假设相机像素大小是3.45 μm使用20X物镜时物方一个像素对应的尺寸是3.45/20≈0.172 μm。如果物镜NA0.4它的衍射分辨率约0.84 μm550 nm光远大于单像素对应的物方尺寸此时系统受限于衍射像素再小也提升不了细节。反过来如果像素对应的物方尺寸太大就会丢失物镜的分辨能力。Zemax里可以用“探测器”或像面采样来评估这种匹配把艾里斑直径和2倍像素尺寸比较就能判断是否需要改变适配器的倍率。适配器内部通常还会加一片消色差透镜把管镜的中间像再放大或者缩小到传感器靶面上。这片透镜本身不需要很复杂但要注意色差和畸变对显微图像的影响。在Zemax里优化适配器时我会把物镜和管镜设为固定只优化适配器和后截距用MTF在奈奎斯特频率处的数值作为评判指标保证相机能充分发挥物镜分辨率。4. 照明、分光与杂散光用非序列模式看全貌4.1 科勒照明建模显微镜的成像镜头做得再完美照明不给力也白搭。经典照明方式叫科勒照明它的核心思路是让光源的像不能直接落在样品面上而是先把光源成像在聚光镜的孔径光阑处视场光阑被聚光镜成像在样品面上。这样做的结果是视场照明非常均匀而且可以通过收小孔径光阑调节对比度是现在所有高端显微镜照明的标准方案。Zemax序列模式可以模拟科勒照明的“共轭关系”但更好的方式是切到非序列模式用扩展光源加聚光镜实际追光线。具体操作非序列里建立一个面光源代表卤素灯或LED发光面前方放一个聚光镜聚光镜的焦点放在孔径光阑处孔径光阑再通过第二组聚光镜成像到样品面。用探测器记录样品处的辐照度图就能看到照明均匀性。你会很直观地发现如果光源尺寸太大或孔径光阑开得过大边缘照度就会塌陷调整均匀性时需要同时看中心照度和视场边缘的渐晕。这里我用了很多时间去微调光源的发光角度分布。LED光源不是朗伯体那么简单Zemax里可以用“光源文件”导入实测的配光曲线这样照度分析才有意义。没有实测数据时至少也要给一个合适的发光半角别默认全方向发光否则模拟出来的照明范围会大得离谱误导后续分光设计。4.2 分光棱镜与非序列混合模式研究级显微镜里的分光棱镜是典型的非序列元件光进来一部分反射、一部分透射还可能分一部分去目镜、一部分去相机。你在序列模式里可以用坐标断点加理想分光面勉强表示但真实棱镜的透过率、镀膜角度特性、多次反射鬼像根本没法精确模拟。所以要用非序列模式把棱镜实体建出来膜层使用Zemax的镀膜数据或材料吸收参数。非序列模式分光棱镜的操作流程是这样的在非序列元件编辑器里插入一个立方体材料设为K9或H-K9L可以用两个相同长方体拼成分光膜层分光面上设置半透半反膜层可以用Zemax内置的膜层或自定义50/50镀膜。光源用氙灯或LED光谱经过准直透镜后入射到棱镜然后在反射和透射两个方向各放置一个探测器就能评估两路光的能量比例和光斑均匀性。显微镜里还有荧光模块的二向色镜这种镜片对角度非常敏感非序列模式里设置膜层涂层时要输入膜层的不同入射角角度范围才能在探测结果里看到带宽偏移。我吃过一次亏序列模式里用理想分光结果对带通滤光片的波长漂移完全无感知整机搭出来后荧光背景噪声高得吓人。后来把照明和发射光路都放进非序列才发现二向色镜对45度入射角的反射带边缘刚好压到了发射滤光片的通带换了一片膜系设计才解决。4.3 衍射干涉仿真验证分辨率显微镜的“分辨率”不只是几何像差概念本质是衍射和干涉的综合表现。Zemax里仿真衍射干涉最常用的工具是POP物理光学传播。POP可以逐面传播高斯光束或任意光场考虑衍射效应适合分析焦点附近的光强分布和干涉条纹。举个例子要验证一套NA0.65的物镜能否分辨250 nm的荧光微球可以先在物面上放置两个点光源间隔就是想要验证的距离例如300 nm用POP传播到像面观察像面强度分布。如果两个峰的中间有明显凹陷说明系统可以分辨如果合并成一个峰就说明分辨率不足。这个模拟比只看MTF曲线更直观能直接回答“我到底能不能看清这两个点”。Zemax里做PSF和MTF分析也包含衍射信息。序列模式下分析菜单里选“PSF”就能看到点扩散函数FWHM越接近理论艾里斑系统越接近衍射极限。要模拟干涉可以用“干涉图”功能显示OPD光程差等值线配合Zernike系数分析判断是哪项像差破坏了波前一致性。如果你做干涉显微镜或相衬显微镜POP和OPD图更是必备工具那些网上常搜的“Zemax怎么仿真衍射干涉”基本就是这组操作。5. 常见问题与排查技巧实录5.1 优化不收敛怎么办Zemax用户碰到优化不收敛第一反应是乱调权重其实多半是变量范围或边界条件出了问题。我遇到最常见的情况是同时优化太多非球面高次项导致评价函数地形过于复杂优化器陷在局部极小值。解决方式是分阶段优化先用球面系统优化到合理RMS再引入非球面项并且让高次项系数从零附近开始。还有一种情况是边界条件自相矛盾。比如既要求工作距离20 mm又要求NA0.5同时在镜片边缘厚度约束小于1 mm这几个条件在物理上可能冲突。Zemax不会直接告诉你矛盾只会让评价函数停在一个很高的值。排查时把变量一个个冻结看评价函数是否显著下降很快就能找到“卡住”的那个参数。我习惯用评价函数编辑器里的“梯度”视图看哪些操作数贡献最大如果某个畸变操作数一直压不下去就说明结构形态不适合。5.2 宏语言报错unknown symbol getthickness 这类坑Zemax自带的宏语言ZPL能实现很多自动化操作但报错信息经常让人摸不着头脑。网上热词里的“unknown symbol getthickness”就是一个典型。这个报错的意思是ZPL解释器无法识别“GETTHICKNESS”这个名字常见原因有三类第一函数名拼写或大小写不对ZPL中函数名通常不区分大小写但你必须保证单词本身正确第二版本问题有些旧版本Zemax没有这个函数需要升级或改用其他方式第三你把函数名写进了字符串或者注释区域解释器当然不认识。正确的用法是x GETTHICKNESS(2) PRINT Thickness of surface 2: , x上面这段宏的意思是获取第2个面的厚度并输出到文本窗口。如果还是报unknown symbol先检查你写的到底是GETTHICKNESS还是GETTHICNESS这种少一个字母的错误我见过很多次。宏处理复合表达式时建议把结果存到变量里再PRINT别直接把函数嵌在字符串中间ZPL的语法解析没那么智能。安装和许可问题也常被新用户拿来求助。Zemax的正版安装流程一般是去官网下载安装包安装后用许可管理器激活配置好用户自定义目录和玻璃库路径。玻璃库路径特别重要很多batch运行宏突然找不到材料就是因为当前玻璃库没有加载。我建议把常用材料库合并成一个自定义玻璃库文件并在Zemax默认目录里放一份备份省得换电脑后一堆结构文件打不开。5.3 设计到交付的细节设计文件做完只是第一步交付给加工和装调时还要注意三个细节。第一出图时每一片镜片的曲率半径、中心厚度、边缘厚度、镀膜波段都要标明尤其是非球面镜片要附上面形方程和允许的PV/RMS误差。第二像面和机械法兰之间的距离要单独写清楚比如C接口后截距17.526 mm装配时要用塞规和高度尺逐台验证。第三给装调人员一份“用Zemax生成的MTF测试合格标准”比如在哪个频率处MTF不低于0.2这样产线不用每次来问我。我还会在交付资料里附上Zemax的“软件版本兼容性说明”。不同版本之间打开同一个ZMX文件偶氮玻璃、渐变折射率材料的支持情况可能不一样如果对方用的是老版本打开后显示材料缺失就要提醒他们用玻璃替换功能更新到新库。最后再说一个我自己的习惯每次设计显微镜不管倍率多低我都会先在Zemax里跑一遍POP或PSF模拟把“衍射极限对应的分辨尺寸”和“传感器单像素对应的物方尺寸”换算成一张对照表贴在设计报告第一页。这张表能让用户一眼看明白系统的真实分辨率边界也能避免后续“为什么放大这么多还是看不清细节”的扯皮。这办法我从一个做病理显微的老工程师那里学来往后的项目一直沿用省下了大量沟通成本。
返回列表