☰
Zemax显微镜设计实战:从物镜优化到照明与公差分析
2026/10/4 1:47:25 网站建设 项目流程

做光学设计十多年,经常有人问我:“Zemax不是拿来做镜头成像的吗?显微镜这种精密仪器也能用它设计?”我的回答通常是:显微镜拆到底,就是一套多组级联成像系统,Zemax不仅能做,而且从物镜设计到照明分析都能覆盖。这篇文章以Zemax显微镜设计为主线,把我平时从需求拆解、物镜优化、系统组合、照明分光到杂散光分析的完整套路讲清楚,顺便把那些让人抓狂的报错,比如宏里突然出个unknown symbol getthickness,也一并整理出来。

如果你是刚入行的光学设计学生,或者一直在做拍照镜头、望远镜头,突然被安排去搞显微镜项目,这篇文章应该能帮你节省至少两周的摸索时间。显微镜不是玄学,它和普通成像系统的差别只在于:前组物镜数值孔径很大、后组管镜要匹配光瞳、中间还要给滤光片和分光棱镜留位置。理顺这套逻辑,Zemax里的操作就是水到渠成的事。

1. 显微镜设计的本质:拆开看就是一套级联成像系统

1.1 显微镜类型决定Zemax建模方式

很多人拿到显微镜需求就开始找Zemax里的“显微镜模板”,其实根本没有这种一步到位的模板,正确做法是先判断你做的到底是哪一类显微镜。

传统教学显微镜里,物镜直接把物体成像到中间像面,目镜再对这个实像放大,这叫有限远校正系统。这种系统结构简单,但物镜和目镜之间只要塞入分光棱镜、滤光片,中间像面位置就会漂移,像质也会明显下降。所以现在的生物显微、荧光显微、工业检测显微镜,几乎都改成无限远校正系统:物镜出射的是平行光,在物镜后方一定距离放置管镜,由管镜会聚成像。Zemax里建无限远系统有个天然优势,平行光路中可以轻松插入平面元件,拆开优化时各模块之间不会互相“绑架”。

系统类型成像特点典型应用
有限远校正物镜直接成实像,结构紧凑老式教学显微镜、简单工业镜头
无限远校正物镜出平行光,管镜二次成像研究级生物显微镜、荧光、共聚焦
体视显微镜双通道低倍大工作距离,正像棱镜解剖、电路板检查

Zemax序列模式适合处理无限远系统和有限远系统的成像链路,优化速度快,MTF和像差分析非常成熟;而照明系统、分光棱镜的反射透射、杂散光分析,就要切到非序列模式去追迹真实光线。我的习惯是序列模式做镜头指标,非序列模式做照明验证,一根光路拆成两半,各用各的强项。

1.2 从关键指标反推系统参数

显微镜设计绝对不能上手就填玻璃、输曲率,你要先根据用户给的放大倍率、数值孔径NA、视场数FN,把系统层面的几何参数算清楚,Zemax里的输入才有意义。

举一个最常见的例子:设计一套10X物镜加管镜的无限远系统。选管镜焦距 f_tube=180 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 nm,NA=0.25,那么 δ≈1.34 μm;如果是NA=1.25的油浸物镜,δ≈0.27 μm。在Zemax里,你可以直接用这个公式反推所需的NA,再去设定入瞳直径或者物方孔径角。对于物方NA=0.25,空气介质,物方半孔径角约为arcsin(0.25/1)≈14.5°,物镜前方入瞳尺寸和工作距离就这样被约束出来了。

除了倍率和NA,视场数FN也要尽早定。FN=20表示物方视场直径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。如果物镜NA=0.4,它的衍射分辨率约0.84 μm(550 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可以逐面传播高斯光束或任意光场,考虑衍射效应,适合分析焦点附近的光强分布和干涉条纹。

举个例子:要验证一套NA=0.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模拟,把“衍射极限对应的分辨尺寸”和“传感器单像素对应的物方尺寸”换算成一张对照表,贴在设计报告第一页。这张表能让用户一眼看明白系统的真实分辨率边界,也能避免后续“为什么放大这么多还是看不清细节”的扯皮。这办法我从一个做病理显微的老工程师那里学来,往后的项目一直沿用,省下了大量沟通成本。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询