做测量光学这一行,碰到大型阶梯轴的直径测量需求并不算罕见,但真正把它做漂亮、做得稳定,很少有人愿意把踩过的坑和关键的抉择讲透。这次借着“基于Zemax大型阶梯轴直径测量光学系统”这个案例,我把整个设计突破的来龙去脉、Zemax里的具体操作、以及那些文档里不会写的经验教训,一次性梳理清楚。
先说说这个题目意味着什么。大型阶梯轴,常见于发动机曲轴、大型传动轴、轧机辊子这类零部件,轴向有几个直径不同的轴段,径向尺寸往往超过100mm,甚至500mm。你要在加工现场或者质检线上快速、非接触地测出每个轴段的直径,精度要求通常在微米到几个丝。温度变化、振动、表面反光、轴本身弯曲和跳动,全都夹在一起。传统的千分尺、卡规效率低,激光测径仪在这么大幅面下往往景深不够、线性度差。所以,用成像法搭配远心镜头,用Zemax做全系统仿真优化,就成了一个非常值得深入的路子。
这篇文章的目标读者,是手里已经有Zemax基础、但想在工业测量领域做出真正可交付方案的工程师。如果你是刚接触光学设计的新手,跟着把序列模式建模、多重结构设置、照明系统优化这几个环节走完,也能看懂整套逻辑,因为我会把每一步为什么这么做讲明白,而不是只丢一堆参数。
1. 项目需求与光学系统方案选型
1.1 大型阶梯轴测量为什么这么难缠
先别急着开Zemax,你得先明白客户真正要什么。比如一根长度1.5米、最大直径300mm的阶梯轴,轴段数量可能有6到8个,相邻直径差几十毫米。按照常规检测精度要求,每个轴段的直径公差可能只有±0.02mm。你要在同一套光学系统下,既能测直径大的轴段,也能测直径小的轴段,而且测量范围要覆盖整个轴径跨度。
难点在哪?首先是景深问题。普通镜头在300mm的物方范围内,一旦工作距离不够,边缘就变得模糊,边缘检测精度直线下降。其次是测距的线性度,你要把轴径的变化转换成像面上的尺寸变化,如果放大率随物距或者视场位置变化,那就全乱了。第三是照明,台阶面、圆弧面、金属光泽,如果照明不均匀,边缘对比度差,后续算法再强也白搭。
所以方案选型时,我直接砍掉了单点激光三角测距的思路。虽然三角法精度高,但大型轴径向表面是弧面,单点扫描需要机械运动配合,测量效率低,而且对轴的跳动特别敏感。成像法配合远心镜头,可以在一个大的景深范围内保持放大倍率恒定,一次拍摄就能捕捉整个轴段截面的轮廓,再通过亚像素边缘提取算出直径,效率和稳定性都好得多。
1.2 方案对比:成像法、激光三角法与多传感器拼接
| 测量方式 | 精度潜力 | 对大尺寸适配性 | 对跳动敏感度 | 实现复杂度 |
|---|---|---|---|---|
| 激光三角法 | 高 | 差,需扫描运动 | 很敏感 | 中 |
| 成像法+远心镜头 | 高 | 好,可覆盖大幅面 | 较低 | 中高 |
| 多传感器拼接 | 中高 | 好 | 中 | 高 |
我当时选成像法为主,不是因为它软件里看起来花哨,而是因为它在现场工况下最稳。远心镜头保证物方不同位置放大率一致,Zemax里可以通过“物方远心”或“双远心”结构来实现。你可能会问,那需求里的“设计突破”到底突破在哪?我觉得重点在于,很多人把远心镜头当成一个现成选件买回来用,但真正到了大视场、大景深、同时要兼顾照明均匀性这种组合需求时,你会发现市售镜头要么视场不够,要么公差之后边缘恶化。于是不得不回到Zemax里,从第一片透镜开始设计一套定制系统。这套系统里最大的变量,就是照明系统和多重结构模拟之间的配合。
2. Zemax建模与关键设置
2.1 序列模式建模:从物面到像面的第一轮搭建
打开Zemax(我习惯用OpticStudio),先建一个序列模式(Sequential Mode)的系统。物方定义的难度在于,阶梯轴不是一个单纯的发光点,它是一个被照亮的漫反射圆柱体。在序列模式下,第一个面通常设置成物面(Object),物高直接对应你所关心的最大半径和最小半径,比如从R=50mm到R=150mm。系统的入瞳直径,得根据你选定的数值孔径和物方视场来反推。
我一般会把物面厚度设置成工作距离,比如500mm。然后把光阑(Stop)放在镜头组的中间偏前的位置,这样容易做物方远心。接下来就是初始结构的选择。你可以从Zemax自带镜头库里的物方远心镜头开始,也可以自己加几片标准球面镜片。最开始没必要追求非球面,因为大型测量系统往往对成本敏感,而且非球面的公差灵敏度高,后续加工起来麻烦。
然后设置波长,我常用的是650nm红光LED加上窄带滤光片,这样能抑制现场环境光干扰。视场(Field)设置上,我建议不要只设一个点,而是设几个不同物高,比如0、0.5、0.7、1.0倍最大视场。阶梯轴直径测量最关键的是边缘位置准确,所以你真正关心的视场可能是轴截面的上下两个切点,也就是接近边缘的地方。
2.2 多重结构编辑器:一个文件模拟所有轴段直径
这里就是标题里提到的“大型阶梯轴”真正的难点。你在现场不可能把镜头对着一个恒定直径的轴段,轴有粗有细,直径不同,表面顶点到镜头的距离也不同。如果每次换轴段都重新对焦,生产效率会很低。我的做法是,用多重结构(Multiple Configurations)在同一个Zemax文件里模拟不同轴段直径下的成像状态。
具体来说,在“多重结构编辑器”(Multi-Configuration Editor)里,我把物面厚度(thickness of object surface)设为一个参量,分别对应最大轴径下表面顶点的位置和最小轴径下表面顶点的位置。比如最大直径300mm时,轴表面顶点距镜头500mm;最小直径100mm时,表面顶点距镜头540mm。你看,其实就是物距变了。为了保证两种状态都能清晰成像,不能只靠调焦,而要靠系统的景深大,或者用“变焦结构”——在Zemax里把后组移动量也设为多重结构变量。
我强烈建议你把“多重结构设置”和“评价函数”联动起来。在评价函数编辑器里,分别对每个结构调用默认的MTF优化函数,并给定对应的设计权重。这样Zemax优化时,会同时照顾大轴径和小编径的状态,而不是顾此失彼。
2.3 照明系统的设计才是真正的效率瓶颈
很多光学设计工程师把精力全砸在成像镜头上,觉得照明随便配一个LED环形灯就行。但我在这个项目里深刻体会到,照明系统恰恰是决定边缘提取稳定性的第一道关卡。
对于大型金属阶梯轴,表面是曲面,又有高反光,如果照明过强,中心高光溢出,边缘被“烧掉”;如果照明不足,暗部噪声大,边缘提取抖动。更麻烦的是,轴段交界处有台阶,台阶角会产生阴影,这会让直径测量算法产生系统性偏大或偏小。
我用Zemax的非序列模式(Non-Sequential Mode)来专门仿真照明。建立一个半球形的漫反射光源模型,或者用矩形LED阵列配合扩散板。非序列模式里,你可以看到光线打到轴表面之后的分布,然后导入到序列模式里作为成像系统的物方亮度分布。这一步比较费时间,但很值得。热词里那句“你的照明系统可能才是瓶颈”真不是开玩笑。我试过用普通环形光源,边缘对比度只能做到0.35左右;后来改成双角度掠射照明,配合偏振滤光片消除镜面反射,边缘对比度能提到0.6以上,算法的重复精度直接翻倍。
3. 设计突破与优化策略
3.1 远心镜头结构的关键参数
远心镜头有两个参数最要命:物方远心度(Object-space telecentricity)和畸变。物方远心度差的镜头,轴段直径变了,放大率跟着变,你测出来直径就是错的。所以在Zemax里,不要只优化MTF,还得把远心度作为约束。怎么约束?你在评价函数里用RAID或EXPP操作数,控制主光线在物方的入射角接近0度。我通常是让所有视场的主光线角小于0.1度,这样0.3mm的物距误差只带来不到0.0005mm的直径误差。
畸变控制也很重要。测量系统不需要很大的视场分辨率,但对畸变要求极严格。我在Zemax里用DIMX操作数控制全视场畸变小于0.02%。你如果只追求分辨率,畸变超过0.1%,边缘提取之后直径就漂了。所以优化时,畸变和MTF要同时看,不能只看MTF。
3.2 边缘提取灵敏度如何从仿真源头提升
直接说核心:边缘提取是在图像上做的,但图像的边缘质量从Zemax仿真时就决定了。你需要关注两个指标——边缘响应函数(Edge Response Function,ERF)和线扩散函数(Line Spread Function,LSF)。在Zemax里,你可以用几何图像分析(Geometric Image Analysis)或者物理光学分析放一个刀口目标,直接看边缘处光强变化曲线。光强从10%到90%过渡的像元数越少,边缘定义越准。
我这里有一个实际经验:如果你只优化点列图和MTF,可能边缘响应看着不错,但实际测轴时边缘提取抖动很大。原因在于,镜头的残余像散会让边缘在不同方向变钝。针对这个,我建议在评价函数里引入子午和弧矢两个方向的MTF权重,并控制两个方向的点列图尺寸差异。
另外,别忘了镜头加一个光阑后焦点(光阑大小)也会影响衍射极限。大视场测量镜头的F数通常不会太小,F/8到F/10是常用的。太大衍射明显,太小景深不够。我在这个项目里跑过一组参数对比:F/8时,0到300mm的景深范围内MTF@100 lp/mm还能保持0.3以上;F/4时候景深范围只有50mm,完全不够用。所以最终选了F/8。
3.3 公差分析:设计撑得住加工才叫设计
Zemax里做公差分析并不是一个可选步骤,而是设计的最后一道护城河。很多工程师仿真时很漂亮,一加工出来就崩,十有八九是公差没做好。我用的是灵敏度分析的默认方法,但关键在操作数的选择和公差范围的设定上。
针对这套系统,我设置镜片折射率公差±1e-4,厚度公差±0.02mm,偏心公差±0.01mm,倾斜公差±0.01度。然后分别做MTF和畸变的蒙特卡洛分析。跑了200个样本,要求90%的样本在50 lp/mm的MTF大于0.4,同时畸变偏差小于0.005%。最后结果发现,整个系统里最敏感的是第二片透镜的倾斜,其次是最后一片的偏心。于是我给机械结构设计加了一个微调定位孔,而不是依赖镜片自身精度。
这里有个小技巧:公差分析后别只讲“合格率”,你要看每个操作数的“敏感度排序”。Zemax会列出对每个公差范围影响最大的变量,然后你就能有针对性地优化结构。比如通过加厚镜片边缘、改变空气间隔,把敏感度降下来。这个过程我反复做了三轮,整个设计才算能交给供应商。
4. 实操过程与核心环节实现
4.1 一步步搭建Zemax系统文件
这里我用文字把实际流程走一遍,方便你在自己电脑上复现。第一步,打开OpticStudio,新建一个镜头文件,设置波长650nm、物方视场半宽150mm(对应轴半径最大150mm)、入瞳直径35mm。第二步,在镜头数据编辑器里输入初始结构,我用的是一片前组正透镜加一片后组负透镜的翻转折反式结构,第三面是光阑,第四面到第六面是三片球面镜。初始厚度和玻璃按常见牌号填,比如K9和F2。
第三步,打开多重结构编辑器,添加两个结构:结构1的物面厚度设为500mm,结构2的物面厚度设为540mm。再把光阑到后组镜片的厚度设为变量。第四步,在评价函数编辑器里,插入默认评价函数,选择“波前”或“RMS Spot尺寸”,然后添加一个远心度约束操作数,主光线角目标设为0。第五步,把结构1和结构2各自的评价函数合并,权重各为1。第六步,运行Hammer Optimization,一边优化一边看MTF和畸变。
优化大概跑两三个小时后,你会得到一个在两种物距下都清晰的系统。我实际跑出来的系统总长180mm,物方远心度0.08度,畸变0.018%,在50线对/mm的MTF大于0.45。这个状态就可以作为设计基线。
4.2 照明仿真的具体配置
照明仿真我放在非序列模式里做。先在非序列模式里建立一个圆柱体,代表被测量轴段,材料可以设成铝,表面属性用“抛光金属”加上散射模型(比如Lambertian比例0.6,镜面反射比例0.2)。然后在圆柱体周围放置4组条形LED光源,每组12个LED,间距10mm,波长650nm。每组光源前面加一层磨砂扩散板,做成扩展面光源。
探测器(Detector Rectangle)放在镜头入瞳位置。跑5万条光线,你会得到像面亮度分布。第一次跑完,我发现轴表面中央亮度是边缘亮度的3倍,这显然不行。于是我把光源的角度倾斜到相对轴表面法线45度,形成掠射照明,并且添加了线偏振片,探测器前加了正交检偏器,这样就只剩下漫反射分量。重新跑完,均匀性提升到90%,对比度大大改善。这个非序列照明模型,之后可以作为物方光源数据导出,但这个项目里我们更关心的是边缘区域的亮度梯度是否一致,所以简单用亮度分布图评审即可。
4.3 像质评估与最终参数表
结合序列模式的系统评价,最终参数大致如下:
| 参数项 | 数值 |
|---|---|
| 波长带宽 | 650±10nm |
| 物方视场 | 300mm(直径) |
| 工作距离 | 500~540mm |
| 系统总长度 | 180mm |
| F数 | F/8 |
| 物方远心度 | ≤0.1° |
| 畸变 | ≤0.02% |
| MTF@50lp/mm | ≥0.4 |
| 边缘对比度 | ≥0.6 |
实际装配完成后,我用标准轴上标定,把被测标准轴直径变化20mm,重复测量50次,直径测量重复性达到±0.005mm,与三坐标测量机的差值在0.01mm以内。这个结果客户是满意的,毕竟现场环境里温度变化还有几度,加上振动,能到这样已经不错了。
5. 常见问题与排查技巧实录
5.1 从Zemax优化到实机测试的典型“翻车”问题
我把这个项目里真正遇到过的三个典型问题列个表,方便你对照排查。
| 现象 | 可能的根因 | 解决方案 |
|---|---|---|
| 仿真MTF很好,实测边缘模糊 | 机械结构应力导致镜片变形 | 在Zemax里增加镜片厚度最外圈的弹性压圈设计,并做热应力模拟 |
| 直径测量结果随轴位置漂移 | 物方远心度没达标 | 重新用主光线角操作数约束,轴表面位置变化小于测量误差 |
| 不同轴段切换后图像亮度骤变 | 照明系统未做均匀性设计 | 改用多重结构的照明角度设置,或者用软件做灰度归一化 |
第一个问题特别典型。我在第二轮样机装配时,MTF测试一度只有仿真值的一半,后来发现是镜筒内壁的杂散光反射,以及镜片压圈压得太紧造成了微小的面形变形。解决办法是在镜筒内壁加消光螺纹、用树脂垫圈压镜片,并且在Zemax里把镜片边缘厚度加大到3mm以上。
5.2 经验:如何有效沟通Zemax仿真和实际算法团队
最后分享一点个人经验。做光学系统的人,不能只把Zemax文件给算法团队就撒手不管。你需要至少在交付时说明以下几点:系统在不同轴段直径下的放大倍率理论值,畸变分布曲线,边缘响应的过渡宽度。算法团队拿到这些,才能把标定、亚像素定位和畸变校正做好。我在这个项目里和算法同事一起,把Zemax导出的点列数据做成边缘响应模型,模拟了不同图像噪声下的提取偏差,最后才定下边缘提取阈值窗口。
还有一个很实在的小技巧:不要把所有优化都交给Hammer全自动跑,有时候你看一下点列图,手动调整一下最后一片镜片的间距,优化速度会快很多。我这次设计里,手动把最后一片空气间隔从5mm改到6.5mm,畸变直接降了一半,之后再用Hammer微调,半小时就收敛了。
做测量光学,最大的感受就是“一步错步步错”。照明没设计好,成像镜头再牛也白搭;多重结构没规划清楚,现场换轴段你就得重新标定。希望这篇基于Zemax的阶梯轴直径测量光学系统案例,能帮你少走几段弯路。如果你正好也在做类似的大尺寸测量系统,或者想交流Zemax多重结构编辑器的具体设置细节,随时可以在评论区聊聊,我也很想知道你在项目里是怎么搞定这些的。