
做光学设计这些年我越来越觉得菲涅尔透镜的初始结构设计是最能体现“先算后做”的一个环节。很多人第一次在OCAD里建菲涅尔透镜都是先拉一个面型、设几个环带然后直接把参数甩给优化器。结果往往很尴尬要么焦点虚成一片要么边缘全是杂散光最后只能怪软件不好用、工艺造不出。其实问题多半出在初始结构上——你连每个环带齿面该倾斜多少度都没算清楚凭什么让优化器替你收场OCAD这个软件我断断续续用了几年它最吸引我的地方是对这类规则但非球面的面型支持得比较细菲涅尔面、环带面都有现成选项。但这也带来一个副作用很多人以为选了菲涅尔面型就万事大吉实际上软件只是帮你把那圈“锯齿”建出来齿面角度、齿高、环带数这些真正决定光学性能的参数必须由你根据指标先算出来。这篇文章就围绕菲涅尔透镜初始结构设计展开从一个直径100毫米、焦距200毫米、PMMA材料的聚光透镜算例说起把从指标到OCAD模型的完整链路走一遍。适合正在学光学设计的学生也适合需要快速出方案的结构工程师参考。1. 先搞清楚菲涅尔透镜的参数体系1.1 从普通透镜到环带透镜核心思想想理解菲涅尔透镜的初始结构得先回到普通透镜。一颗平凸透镜平行光经过球面折射后汇聚到焦点光焦度全靠那个凸面。凸面的曲率半径R和焦距f的关系很简单f R / (n - 1)n是材料折射率。这个公式是后面所有计算的基础。问题在于凸面越陡、口径越大透镜中心厚度和边缘厚度的差值就越大整体又重又浪费材料。菲涅尔透镜的思路是把连续曲面“切”成一系列同心环带每一环带保留原始球面在该半径位置上的坡度也就是切线的倾角然后把这些环带压扁到同一块平面基底上。从剖面看它就像一圈一圈的锯齿但每一段斜面的角度正好等于原球面对应半径处的倾斜角。这里有个关键认知菲涅尔透镜的光焦度完全由环带齿面倾角承担基底本身通常是个平面。所以设计初始结构本质上就是算“不同半径处的齿面到底应该倾斜多少度”。1.2 设计指标之间如何权衡菲涅尔透镜的设计输入通常有五个核心参数焦距f、口径D、环带宽度w、材料折射率n、使用场景类型。它们的优先级和取舍逻辑不太一样我列张表方便对照。参数典型范围/取值方式对设计的直接影响焦距 f由系统空间布局决定直接决定齿面角的量级f越短齿面越陡口径 D由通光需求决定决定最大齿面角D越大边缘齿越陡环带宽度 w0.5mm~5mm工艺决定影响齿高和透镜整体厚度也影响离散化误差材料折射率 n塑料1.49~1.59玻璃1.5~1.7影响光焦度分配n越大同等焦距齿面角越小成像/照明成像要求点斑清晰照明只关心能量分布决定环带能否跳变以及评价函数的形式这几个参数不是独立选的。比如F数也就是f/D是最直观的一个综合指标。F数越小意味着同样的口径下焦距更短边缘环带的齿面角会迅速增大。当边缘齿面角超过40度左右齿的效率会明显下降注塑脱模也开始吃力所以F数一般不建议做得太激进除非用更高折射率材料来补偿。环带宽度w的选择也很有意思。w越小每个环带的齿高越低透镜整体越薄但环带数变多、齿尖更密加工和模具抛光难度上升。对成像用途来说环带太细还会引入明显的衍射效应导致光斑透过率下降。对聚光用途通常取1到3毫米比较稳妥。还有一点容易被忽略初始结构设计不只是算一个焦距它还要为后续优化留出余地。后期可以在OCAD里加非球面系数、改基底曲率来校正像差但前提是第一版结构的光线走向大致正确。如果第一版就乱成一团优化器很容易掉进局部极小值怎么调都救不回来。2. 初始结构计算齿面角与齿高的核心推导2.1 等效球面的概念前面提到平凸透镜的焦距f R / (n - 1)。反过来说如果目标焦距是f材料折射率是n那么等效球面半径就是R_eq (n - 1) × f。这个R_eq不是真的要做一个球面而是告诉你菲涅尔透镜每一环的齿面倾角应该与半径为R_eq的球面在该半径处的切线倾角一致。举个例子。目标f 200 mm材料PMMAn取1.491d光。那么R_eq (1.491 - 1) × 200 98.2 mm。这个数很关键后面所有齿面角度都是从它推导出来的。如果你用的是PC材料n约1.585同样焦距下R_eq 117 mm齿面角整体会小一些这就是高折射率材料在设计上的好处。2.2 齿面角计算公式环带齿面倾角θ和半径r的关系源自微棱镜模型。看任意一个环带它相当于一个顶角为θ的微小棱镜。平行光垂直入射平面基底后在齿面折射出射。对工作面上的齿面来说光线偏向角近似为δ ≈ (n - 1) × θ而这条光线要汇聚到焦点在半径r处的偏向角必须满足δ ≈ r / f两式联立θ ≈ r / ((n - 1) × f)把(n - 1) × f换成R_eq就是tan θ r / R_eq这个形式非常优雅它正是半径为R_eq的球面在高度r处的切线斜率。小角度时tan θ和θ近似相等可以直接用弧度算但齿面角超过15度以后建议直接用arctan计算更准确。算例f 200n 1.491R_eq 98.2 mm。边缘半径r 50 mm齿面角θ arctan(50 / 98.2) ≈ 26.9度。这个角度可以接受但如果把焦距缩短到100 mmR_eq变成49.1 mm边缘齿面角会到45.5度已经逼近全反射临界角设计风险就很大了。2.3 齿高与环带数估算有了齿面角就能算每个环带的齿高。假设环带宽度为w该环带中点的齿面角为θ那么环带两侧的轴向高度差为Δh w × tan θ环带数N由口径和环带宽度决定N (D/2) / w。还是用那个算例D 100w 2 mm所以从中心到边缘一共25个环带。下表列出了几个代表位置的齿面角和齿高。环带序号外半径(mm)环带中点r_mid(mm)齿面角θ(度)齿高Δh(mm)1210.580.01051095.220.09110201910.940.19315302916.430.29520403921.630.39725504926.420.498注意齿高是每个环带自身的轴向深度不是累计深度。最大齿高出现在最外环约0.5毫米。如果基底厚度取3毫米整个透镜总厚度大约是3.5到4毫米。而同样参数的普通平凸透镜球面矢高将近14毫米中心厚度要到17毫米左右。也就是说菲涅尔透镜把厚度压到了四分之一以下这就是它的核心价值。这里必须提醒一句环带宽度和齿高是联动关系。w减半齿高也减半但环带数翻倍、齿尖密度增加。我实际做下来对注射成型来说w 1 mm以下时脱模和齿尖填充开始变困难w 0.5 mm以下基本只能靠超精密车削。所以初始结构阶段就要考虑到后面怎么加工别等优化完了发现工艺做不出来。3. 在OCAD中搭建和验证初始结构3.1 面型选择与系统参数设置理论算完终于可以打开OCAD干活了。新建一个系统文件先把系统层面的参数填好。波长可见光系统设置d光587.6 nm或者用实际工作中心波长如550 nm。这里有个小坑如果你在材料折射率里用的是d光对应的1.491但追迹波长也设550 nm两者会有微小偏差焦距会差出零点几个毫米。严谨的做法是查一下PMMA在550 nm下的实际折射率约1.493把材料折射率改成这个值。入瞳直径100 mm对应口径D。视场平行光聚焦系统视场设为0轴上视场设计就足够了。如果后面要考虑到斜入射再补视场点。材料从OCAD材料库中选PMMA或者手动键入n 1.491阿贝数约57。接下来是面型。第一面是平面基底曲率半径设无穷大厚度设为基板厚度3 mm。第二面是关键面型类型选择Fresnel面。OCAD的Fresnel面选项里常见的参数包括基底曲率半径、环带宽度、环带数量。把等效球面半径R_eq 98.2填进去环带宽度2 mm软件会自动算出25个环带。如果面型参数里有“自动按曲率离散”的选项它的内部逻辑其实就是把球面在每个环带处的切线倾角提取出来和我手算的齿面角是一致的。在填表前还是建议先自己把最大齿面角算一遍26.9度心里有数。如果OCAD生成的齿面角和手算对不上说明面型参数的曲率单位或者方向设置有问题这时候手算值就是交叉验证的基准。3.2 追迹光路与焦点判断初始结构建好后先别急着优化先追迹一次看看光路长什么样。在OCAD里打开2D光路图平行光从左往右入射经过菲涅尔面后应该有一个明显会聚的趋势。把像面放在后焦距200 mm处启动光线追迹然后在光斑图里看焦点弥散斑直径。对于理想初始结构弥散斑半径应该在几十微米量级这受限于每个环带内部的离散误差和球差。如果你看到光斑半径明显分成内外两圈或者边缘光线明显没有会聚到焦点大概率是齿面角算错了。一个很容易犯的错误是把齿面角直接取成r/f漏掉1/(n-1)因子。这样算出来的角度偏小了约0.49倍结果就是边缘光线偏折不足焦点跑到200 mm以外很远光斑发虚。这种错误在光路图里非常明显一根根边缘光线像是从透镜边缘“飘”过去一样聚不拢。还有一个方向性检查菲涅尔面的工作齿面必须朝向焦点一侧。如果建反了光线穿过齿面时相当于从光密介质进入空气再进入基底实际偏向角会反号焦点会跑到透镜的另外一侧。OCAD里一般通过面型的方向标志或者正负曲率来定义遇到焦点在负方向的情况先检查是不是方向反了。3.3 初始结构的优化方向初始结构追迹结果基本正常后就到了优化阶段。但这里要强调初始结构和优化是两件事初始结构的任务不是直接达到最终像质而是给优化器一个正确的大方向。我习惯的优化顺序是三步。第一步是固定焦距。把后焦距设为变量以200 mm为目标在评价函数里加入焦距约束。这一步可以把透镜厚度带来的焦距偏移校正掉因为实际折射面不是薄透镜后焦距会比理论焦距短一点。第二步是校正球差。菲涅尔透镜的离散化本身带球差尤其边缘环带。在OCAD里把基底面从平面改成偶次非球面开放conic常数让优化器自己找最佳非球面系数。你会发现仅仅开放一个conic光斑就能收小很多。这是因为conic球面可以在初始结构的等效球面基础上做二次修正补偿大角度光线的偏折误差。第三步才考虑工艺约束。比如把齿高限制在一定范围把边缘齿面角限制在40度以内或者在评价函数里加入齿尖圆角半径的模拟。这一步不是每个软件都有OCAD如果支持齿面边缘工艺参数建议初期就把它设为一个小的固定值而不是完全理想化否则优化出来的结果可能对工艺误差特别敏感。4. 常见问题与排查经验4.1 焦点偏移明显但光线形态正常如果你发现所有光线都朝正确方向会聚只是焦点位置明显偏离预设的f问题多半出在折射率和波长的匹配上。PMMA在不同波段的折射率差值虽然不大但在f 200 mm的系统里0.002的折射率误差会造成大约0.4 mm的焦距偏移。如果叠加温度影响塑料折射率随温度变化比玻璃明显实际焦距偏差还会更大。排查方法是把OCAD里的后焦距读出值和理论值对比。如果偏差方向一致比如始终偏长那就手动修正材料折射率再追迹一次。别小看这个细节很多初版设计做样机实测后焦距对不上根源就在材料数据输入不规范。4.2 边缘环带出射光线“翻转”当口径加大或者焦距变短边缘环带的齿面角会变大。当齿面角接近或超过临界角arcsin(1/n)在PMMA里约42.1度光线在齿面会发生全反射或严重偏折失效表现为边缘部分的光线根本不往焦点走而是射向侧面甚至反向。这种问题不是优化能解决的必须在初始结构阶段就避免。经验值是边缘齿面角最好不要超过38度留出一点工艺余量。如果算出来超过这个值要么增大焦距要么换高折射率材料要么把口径缩小。注意这里的38度并不是光学极限而是从加工效率、透过率、脱模角度综合给出的一个工程经验值。4.3 环带跳变处有规律性的杂散光线在2D光路图里有时能看到每股光线旁边拖着一条亮度较弱的杂散光线通常来自齿尖或齿谷的垂直面。实际加工中齿尖不可能是绝对尖锐的必然有圆角这部分圆弧面会以不可控的方式折射或反射部分光线。OCAD里如果支持“齿面垂直面追迹”在优化后期可以打开来看杂散光占比。抑制手段主要是两个方向一是把环带宽度减小让齿尖圆角的占比降低二是增加一个机械光阑把边缘杂散光挡掉。对聚光系统来说杂散光对光斑能量的影响通常能接受但对成像系统需要专门把它纳入评价函数来控制。4.4 优化器不收敛或结果不稳定菲涅尔面本身是一个离散表面光线在环带边界处会有跳变导致评价函数数值在某些变量组合下变化剧烈。如果你把太多变量一次性放开优化器很容易来回振荡。我的做法是分阶段解锁变量。第一步只优化基底厚度和像面位置焦距先锁死第二步解锁conic常数第三步如果需要的环带数还没定把环带宽度设成变量但上下限范围要窄避免软件为了改善光斑而把环带调得非常密最后工艺上根本做不出来。另外OCAD的评价函数里尽量选“光斑RMS半径”或“波前差”这类连续型评价指标不要只用“指定视场的光线交点坐标”后者对离散面的微小变化非常敏感数值跳来跳去。5. 个人实操中的一点体会这套流程走完之后我最大的感触是菲涅尔透镜的成功与否在打开软件之前就已经决定了。齿面角公式、等效球面半径、边缘齿高这几项用一张A4纸三分钟就能算完但做和不做差别巨大。手算一遍之后你在OCAD里输入R_eq、环带宽度和环带数时心里是有底的追迹结果稍有异常你立刻知道是哪个参数出了问题而不是对着一个黑盒反复乱试。最后分享一个小技巧。我习惯在做完一个菲涅尔初始结构后把环带参数表导出成本地的CSV文件保存一份模板。下次做一个新设计时只需要代入新的焦距、口径、折射率重新生成表格然后在OCAD里直接导入十分钟就能得到第一版可追迹结构。这种批量出初始结构的方式在我同时处理好几个不同焦距的聚光透镜需求时帮我省下了大量重复劳动。菲涅尔透镜的初始结构设计说到底就是一句话把连续曲面的光焦度合理离散到每一圈锯齿上而OCAD只是帮你把这个离散过程可视化、追迹化罢了。