去年接了一个便携式水质检测光谱仪的项目,需求是覆盖400-700nm可见光波段,半高宽分辨率优于1nm,整机体积限制在巴掌大小。刚开始我天真地以为,所谓光谱仪设计无非就是把狭缝、光栅、反射镜、探测器按顺序摆一摆,拿到Ansys Zemax里跑个光路就行。真正动手才发现,光谱仪跟普通成像系统设计的逻辑完全不同,你优化的不是“拍得清不清楚”,而是“不同波长的光能不能在探测器上精确展开、且每个波长都聚焦得好”。前后在Zemax里迭代了三版结构,踩了不少坑,也攒下一些可以抄作业的步骤。这篇文章就把这套流程完整梳理一遍,从指标分解到光栅参数计算,从模型搭建到像质评价,再到样机装配后容易翻车的细节,适合正准备用Zemax做光谱仪或分光系统仿真的光学工程师参考。
1. 指标分解与架构选型:光谱仪设计的第一步不是打开Zemax
1.1 把用户需求翻译成光学参数
很多人一上来就开软件,这是光谱仪设计最大的坑。用户只告诉你“我要测水质”“分辨率要好”,但这些话没法直接变成Zemax里的一个数。我习惯先把需求拆成四个硬指标:工作波段、光谱分辨率、探测器规格、体积/重量限制,然后再决定整个光学方案。
工作波段决定了光栅刻线密度和探测器类型。比如400-700nm属于可见光,硅基CCD/CMOS响应很好,光栅效率也容易做高;如果是近红外到2.5μm,就得换InGaAs探测器,光栅的闪耀波长也跟着变。光谱分辨率是核心,它直接牵动狭缝宽度、光栅尺寸和焦距三个参数。探测器规格决定了像元尺寸、阵列长度和像素数,这是计算线色散率的依据。最后体积限制会反过来约束焦距和反射镜口径。
拿我这个项目举例,分解出来大概是:波段400-700nm,分辨率Δλ≤1nm(FWHM),探测器用1/2英寸CCD线阵,像元尺寸约4.65μm,阵列长度6.4mm。体积要求是长宽高不超过10cm×6cm×4cm。有了这组数,才能进入下一步:算光学系统需要多大焦距、多少刻线密度的光栅。
1.2 光栅光谱仪四种结构怎么选
光谱仪的分光方案很多,但工程上常见的主要是四种:Czerny-Turner(C-T)、Littrow、Ebert-Fastie、透射光栅直耦式。它们的核心区别在于用反射镜还是透镜、光栅是平面还是体相位、光路折叠方式不同。
| 结构 | 色散元件 | 典型特点 | 适用场景 |
|---|---|---|---|
| Czerny-Turner | 平面反射光栅 | 结构对称、像差较小、两镜独立可调 | 中高端光谱仪,分辨率要求高的场景 |
| Littrow | 平面反射光栅或棱镜 | 单镜兼做准直和聚焦,结构紧凑 | 小型/低成本单色仪 |
| Ebert-Fastie | 大凹面光栅或平面光栅+单凹面镜 | 一个凹面镜同时完成准直聚焦 | 大通光孔径、紫外-可见波段 |
| 透射光栅直耦 | 透射光栅 | 光路开放、效率高、无反射损失 | 低分辨率、低成本光谱模块 |
Czerny-Turner是我个人最推荐的起步方案,也是实际项目里最常见的。它用两个分离的球面/非球面反射镜分别做准直和聚焦,光栅放在两镜中间。相比于Littrow的自准直结构,C-T的入射光和衍射光不在同一光轴上,回射杂散光少,装配调试也直观很多。缺点是体积偏大、元件数量多,但对一般工业级光谱仪来说完全能接受。
1.3 Czerny-Turner结构的优缺点与适用区间
C-T结构之所以是默认选择,核心原因是它的优化自由度够高。准直镜和聚焦镜的离轴角可以独立调整,当系统出现像散时,这两个角度存在一个最佳匹配区间,能把像散压低到可接受范围。同时,光栅平面与入射/衍射光束的夹角控制也方便,可以通过旋转光栅切换中心波长,这是阵列探测器光谱仪做宽谱段扫描的基础。
不过C-T也有明显的软肋:两片离轴球面镜必然引入大离轴像差,尤其是像散和彗差。在Zemax里你能直观看到,点列图在子午方向和弧矢方向的聚焦位置往往不重合,这就是离轴反射系统的“天然宿怨”。想要好结果,要么把反射镜从球面升级成环曲面(Toric)或自由曲面,要么在聚焦镜后面加一片弱柱面校正镜。这些方案我在第4节会详细讲。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 从光栅方程到初始结构:手算这一步不能被软件替代
2.1 光栅角色散与线色散
无论软件多强大,光栅方程始终是光谱仪设计的底层逻辑:
mλ = d(sinθi + sinθd)
其中m是衍射级次,d是光栅常数(相邻刻线间距),θi和θd分别是入射角和衍射角。光谱仪通常取m=1的一级衍射,因为这一级效率最高、应用最广。角色散率由方程两边对λ求导得到:
dθd/dλ = m/(d·cosθd)
这个公式说明:刻线密度越高(d越小),角色散越大;衍射角越接近90°,角色散也越大。但角色散大不意味着探测器上的光谱就拉得开,还要乘上聚焦镜的焦距。聚焦镜的线色散能力用倒线色散率表示:
D = dλ/dx = d·cosθd/(m·f)
这里的D单位是nm/mm,意思是探测器上每毫米对应多少纳米波长范围。D越小,光谱拉得越开,分辨率潜力越大,但同样探测器长度能覆盖的波段就越窄。这是设计中最核心的权衡:谱段覆盖宽度和分辨率永远在打架。
2.2 狭缝宽度、像元尺寸与分辨率的关系
实际光谱仪的极限分辨率并不由光栅的理论分辨本领决定,而由狭缝的几何投影宽度主导。狭缝通过准直镜后,会在探测器上形成一个像,这个像的宽度换算成波长就是:
Δλ_slit = D × W_slit
W_slit是狭缝宽度,D是倒线色散率。如果D=40nm/mm,狭缝宽度20μm,那么狭缝像对应的光谱宽度是0.8nm。再考虑到探测器像元尺寸p本身对应Δλ_pixel = D × p,以及光学像差的贡献Δλ_aberration,系统的实际FWHM近似为三者平方和开根号:
FWHM ≈ sqrt(Δλ_slit² + Δλ_pixel² + Δλ_aberration²)
这里有个工程常识:狭缝越窄分辨率越高,但光通量按面积比例下降。狭缝从50μm改到20μm,能量只剩原来的16%,信噪比会骤降。所以1nm的分辨率指标并不是狭缝越细越好,而是要让狭缝像宽、像元宽度和像差三者匹配,避免某一个因素拖后腿。
2.3 一个完整的初始结构计算例子
我按实际项目的数据走一遍计算过程,方便直接套用。目标是覆盖400-700nm,探测器阵列长度6.4mm,因此平均倒线色散率至少要:
D ≥ 300nm / 6.4mm ≈ 47nm/mm
取D≈45nm/mm留一点余量。聚焦镜焦距先按体积限制选50mm,中心波长550nm处的衍射角取约27°,cosθd≈0.89。由倒线色散率公式反推光栅常数:
d = D × f / cosθd ≈ 45nm/mm × 50mm / 0.89 ≈ 2528nm
对应光栅刻线密度约396线/mm,实际选型取400线/mm。此时系统真实的倒线色散率约为:
D = 2500nm × 0.89 / 50mm ≈ 44.5nm/mm
6.4mm探测器阵列覆盖约285nm,勉强覆盖可见光核心区域,边缘留一点余量。分辨率方面,若要求FWHM≤1nm,狭缝投影宽度应控制在1nm/44.5nm/mm≈22μm以内,加上像差和像素的贡献,实际狭缝取15-20μm比较稳妥。这样P=4.65μm的像元对应Δλ_pixel≈0.21nm,不会成为瓶颈。这一套数算完,你才知道进Zemax应该填什么初始值,而不是进去瞎试。
提示:狭缝宽度和光栅刻线密度是光谱仪设计里最敏感的两个参数。先手算一遍,能避免后续在Zemax里漫无目的地优化。
3. Zemax建模实操:从空白文件到可优化的光谱仪模型
3.1 序列模式还是非序列模式
光谱仪这种带离轴反射镜和光栅的系统,在Zemax里有两条路:序列模式(Sequential)和非序列模式(Non-Sequential)。很多人纠结选哪个,我的经验是:做初始优化和公差分析用序列模式,做最终的杂散光、光路验证用非序列模式。
序列模式下光线按表面顺序追迹,优化向导、RMS Spot评价函数、公差分析这些工具都能直接用,计算速度快。但C-T结构有大量偏心、倾斜的反射镜,必须用坐标断点(Coordinate Break)去表达,搭建过程相对繁琐,稍不注意坐标断点顺序错误,光线就跑飞了。非序列模式直观得多,光源、狭缝、反射镜、光栅、探测器都是独立物体,直接在3D视图中摆放,光线追迹能看到不同波长在探测器上的实际分布,特别适合验证光路是否合理。缺点是非序列模式的优化工具不如序列模式顺手,一般用于最终验证。
我的建议是“序列模式定结构、非序列模式做验证”。先在序列模式里把离轴角、镜间距、光栅参数优化好,再把结构参数搬到非序列模式里做最终仿真。
3.2 非序列模式下搭Czerny-Turner的步骤
如果你有现成的C-T机械结构,非序列模式建模是最直观的。我按在Zemax OpticStudio里的实际操作顺序拆解:
- 在非序列元件编辑器中新建物体。先加一个矩形面光源(Source Rectangle)模拟狭缝照明,位置放在系统入缝处。如果想让模型更接近真实,也可以在光源后面加一个矩形挡板物体开一条缝,这比直接设置光源尺寸更灵活。
- 放准直反射镜。用一个标准球面反射镜(Standard Lens,材料设为Mirror),配合坐标断点(实际上非序列中是直接把物体旋转/平移,不需要坐标断点)调节离轴角。C-T中准直镜的作用是把从狭缝发散的球面波变成平行光射向光栅,所以狭缝必须放在准直镜的焦点上。
- 放衍射光栅。在Zemax非序列库中找到Diffraction Grating物体,关键参数是Lines/µm(每微米刻线数)。400线/mm对应0.4 Lines/µm。同时设置光栅尺寸和衍射级次,取+1级。
- 放聚焦反射镜。同样用标准球面反射镜,但要注意它是把光栅衍射出来的不同角度平行光重新会聚到探测器平面,所以它的焦点要和探测器面重合。
- 放探测器。用Detector Rectangle,按实际像元数和像素尺寸设置。例如2048像素、4.65μm像元、阵列长度约9.5mm的探测器,软件里就设2048×1像素,像元宽度4.65μm。
搭建时最容易出的问题是光栅的入射角和衍射角关系搞反,导致光路不朝向聚焦镜。建议先用单波长追迹,在3D视图中确认光线确实命中每个元件,再切到多波长追迹。
3.3 光栅方向、衍射级次与波长的对应
光栅方向设置直接影响谱线位置。在Zemax非序列中,光栅物体有一个法线方向和刻线方向,入射光与光栅法线的夹角要在光栅方程里和衍射角共同满足约束。我习惯先把光栅法线设成默认Z轴方向,再根据手算的入射角和衍射角关系去旋转物体。
需要特别留意的是m取正还是取负。同样一块光栅,转动180°后看到的谱线分布方向会反。判断方法很简单:在Zemax中追迹3-5条不同波长的光线,看探测器上短波长和长波长分别落在哪一侧,如果和预想的光谱方向相反,就把光栅绕法线转180°或把衍射级次改为-1级。
多波长设置也很关键。光谱仪仿真不能只用单一波长,建议在波长编辑器里添加至少5-7个采样波长,覆盖整个工作波段。比如400-700nm就设400、450、500、550、600、650、700nm,每个波长可以用不同权重来模拟实际光源光谱分布。如果只设一个中心波长,优化出来的系统在波段两端很可能失准,这是新手特别容易忽略的。
3.4 探测器与光源设置的关键细节
探测器设置有两个细节容易踩坑。第一是像素数量:如果只关心光谱线的横向位置,可以把探测器设成一维线阵,比如1024×1或2048×1,Zemax中叫Detector Rectangle,设置Pixel数量即可。但如果要做二维成像光谱或分析谱线弯曲,就得设成二维阵列。第二是探测器尺寸:很多人设的探测器比实际光斑小很多,结果只看到部分谱线。建议先把探测器尺寸设得比理论计算值大1.5倍,看到完整光谱后再裁剪。
光源设置方面,如果只做系统级验证,用矩形面光源就够了;如果想模拟真实狭缝照明,可以加一个扩展光源或朗伯光源,再用挡板开缝。光线条数要设得足够多,非序列追迹时默认几千条光线往往会在探测器上形成很噪的图案,我一般至少追5万条,复杂情况下10万条也会用。光线少时探测器的峰值位置不稳定,后续很难做精确的光束质心分析。
4. 优化与像质评价:别被RMS点列图骗了
4.1 评价函数怎么建
进入优化阶段后,第一件事是明确评价目标。光谱仪不是普通成像镜头,不需要对所有视场都追求完美的MTF,而是关注不同波长在探测器上能否形成窄而锐利的谱线。因此我通常用最小化RMS Spot尺寸作为主目标,参考点选“质心”而不是“主光线”,因为光谱仪实际关心的是能量集中度,而不是严格的几何成像位置。
在序列模式中,优化向导里选RMS Spot Size + Centroid,插入多个波长和多个视场点。光谱仪的“视场”其实是狭缝高度方向上的不同点,视场y值取0(狭缝中心)、±0.5mm(狭缝上下端)就够了。评价函数要同时约束所有波长的RMS,不能只优化中心波长。
操作数方面,常用到RMSW、SPOT操作数,也可以直接定义探测器上的质心坐标作为目标。如果你已经把光栅衍射角、反射镜离轴角、镜间距都设为变量,优化一轮后往往能看到系统从一团乱麻变成一个基本能聚焦的状态。但光谱仪的优化有一个特殊之处:光栅转角改变时,中心波长在探测器上的位置会移动,所以评价函数里最好固定某个参考波长的落点位置,否则优化器可能通过把谱线移出探测器来“作弊”达到极小值。
4.2 像散是Czerny-Turner的天然宿敌
C-T结构的两个离轴球面镜必然带来像散,表现形式是子午和弧矢两个方向的焦点位置不一致。在Zemax里最直观的判断方法:看点列图,如果同一个波长在探测器上形成的是一个椭圆形弥散斑,长轴和短轴方向差异明显,这就是像散。
对线阵探测器光谱仪来说,像散的影响要分方向看。如果色散方向是X,那么X方向的弥散决定光谱分辨率,必须压窄;Y方向弥散主要影响谱线高度,只要不超出探测器高度或下一条谱线重叠,容忍度相对高。但Y方向弥散过大会导致能量分散,中心峰值强度下降,信噪比变差,所以也不能完全放任。
校正像散的常用手段有三种。第一种是把准直镜和聚焦镜设成不同的离轴角,经典C-T结构里准直镜离轴角约6°、聚焦镜离轴角约9°的经验值就是用来平衡像散的,在Zemax里把这两个角设为变量优化,能明显改善。第二种是把聚焦镜从球面改为环曲面(Toric),在两个垂直方向给不同曲率半径,Zemax的Standard Surface可以设置附加非球面项。第三种是在聚焦镜后加一片弱柱面透镜,工程上容易实现,但会增加系统长度和装调难度。我建议先试第一种,成本最低,效果通常够用。
4.3 分辨率和谱线弯曲怎么判断
光谱仪的分辨率在Zemax里不能只看点列图上的几何半径,要把它换算成波长。方法是在探测器位置加一个评价,查看每个波长在X方向的RMS宽度,然后用倒线色散率D换算成nm。比如某波长点X方向RMS宽度是6μm,D=44.5nm/mm,那么光谱贡献约0.27nm。把所有波长都算一遍,取最大值,就是系统在这组参数下的几何分辨率。和1nm指标对比,大概就知道余量有多少。
谱线弯曲是另一个容易被忽略的问题。狭缝是条直线,经过离轴反射和光栅衍射后,它在探测器上的像往往不是一条直线,而是带弧度的弯曲线条,这就是谱线弯曲。对线阵探测器,如果谱线弯曲量在探测器两端达到几十微米,像素对应关系就会失配。判断方法:在狭缝高度方向设多个视场点(如y=-0.5、0、+0.5mm),看同一波长在探测器上的Y坐标是否一致。若不一致,弯曲量大于半个像元就需要处理。轻度的谱线弯曲可以通过软件标定拟合修正,严重的要改光路,比如在聚焦镜后加入校正镜组。
4.4 公差分析:哪些参数最伤分辨率
Zemax的公差分析不能省,光谱仪对机械误差的敏感度远超普通成像镜头。我用公差向导做过一轮灵敏度分析后,发现几个典型“杀手”:
- 光栅转角误差。光栅绕法线转0.01°,中心波长在探测器上的位置就可能偏移好几纳米。这个误差基本决定系统的波长准确度,只能靠机械定位精度和标定软件来兜底。
- 聚焦镜离轴角误差。它直接影响聚焦光斑质量,0.1°的偏差可能把RMS尺寸翻倍。
- 狭缝宽度误差。缝宽变化直接线性改变谱线宽度,加工公差要控制在±2μm以内。
公差分析设置时,可以把偏心、倾斜、曲率半径、间距全部设为实际加工装配的典型公差带,然后用RMS Spot作为判据跑蒙特卡洛模拟。结果出来后重点关注“最坏情况是否仍然满足1nm分辨率”。如果最坏情况不满足,一方面要收紧公差带(意味着加工成本上升),另一方面就是调设计,比如增大焦距、缩小数值孔径来提高容差能力。
5. 从仿真到样机:工程化过程中绕不开的几个坑
5.1 光栅衍射效率的影响
Zemax默认光栅是理想光栅,衍射效率设为100%,但实际光栅的效率随波长、偏振和衍射级次变化非常大。尤其是闪耀光栅,闪耀波长附近的效率能到70%-80%,但偏离闪耀波长后可能掉到30%以下。如果工作波段是400-700nm这种跨度大的范围,单闪耀波长的光栅很难兼顾两端。
我的经验是:在选型阶段就向光栅厂商要效率曲线,把效率曲线导入Zemax或用软件自带的镀膜/效率模型去估算各波长的能量分配。如果400nm和700nm两端的效率差太大,需要考虑双闪耀光栅或体相位全息光栅(VPH),后者的效率曲线平坦得多,适合连续宽谱段。光源能量较弱时这一点更重要,效率暴跌会让信噪比直接崩溃。
5.2 装配偏心与离轴角误差
C-T结构对机械装调的敏感度高得惊人。设计图上准直镜和聚焦镜的离轴角精确到0.01°,但实际装调时用普通机械工装很难控制到这个量级。反射镜位置偏0.1mm,光斑在探测器上就可能偏移几十个像元;离轴角偏0.05°,聚焦点直接散焦。
我踩过一次坑:仿真里分辨率做到0.7nm,样机回来怎么调都是1.5nm,排查两天才发现聚焦镜的俯仰角装偏了0.08°。后来再装配时,我坚持用激光准直仪先把每个镜面的法线方向标定好再锁紧,总算恢复到接近仿真值。如果你想尽量避免这个坑,设计阶段就应该给装配留出调节自由度,比如反射镜底座设计成可调俯仰/偏摆的结构,而不是一装定死。
5.3 杂散光与挡光设计
光谱仪的杂散光主要来自三个地方:光栅的零级光、非期望衍射级次、反射镜和机械结构件的散射光。零级光能量很高,如果不挡住,会在探测器上形成一个非常亮的背景,严重时直接淹没一级光谱信号。
在Zemax非序列里,可以在光路合适位置加入挡板物体,模拟消杂光光阑。关键位置有两个:一是光栅衍射后零级和一级分离的区域,在零级光传播路径上放一个吸光挡板;二是聚焦镜周围,防止非成像光从镜面边缘漏到探测器。挡板材料设置成黑体吸收面,Zemax中可以通过物体属性设置吸收系数。
仿真时可以把探测器上的总能量分布导出来,看一级谱线之外的背景能量占比。如果背景大于信号能量的1%,就要考虑增加挡板或涂黑处理。实际机械零件发黑后反射率约2%-5%,仿真里留足余量比较稳妥。
5.4 波长标定流程
无论仿真多完美,装配后都必须做波长标定,因为机械误差、光栅安装角度误差、探测器像素间距误差都会导致实测波长位置与理论不符。标定流程比较简单但绝不能跳过:用汞灯或氖灯等线光谱光源照射狭缝,记录每条特征谱线对应的像素位置。
汞灯的几条强谱线很有用:404.66nm、435.83nm、546.07nm、576.96nm、579.07nm。如果系统分辨率够好,还能看到365.01nm和253.65nm。把这组波长和像素位置做二次或三次多项式拟合,得到标定方程:
λ_pixel = a0 + a1·pixel + a2·pixel² + a3·pixel³
拟合残差通常能到0.1-0.3nm,这代表了系统标定后的波长准确度。如果拟合残差偏大,说明色散非线性严重,可能是光栅角度偏差或谱线弯曲影响;如果拟合后某个区域的残差特别大,回头去Zemax里对比模拟谱线位置,能很快定位是哪个参数偏了。这是仿真和实测最有效的闭环验证手段。
我个人的体会是,光谱仪设计里90%的问题出在“指标分解不够细”和“装配误差估计不足”这两件事上。Zemax能帮你把光学设计做得很好,但它无法替你决定机械公差和装配工艺。建议在仿真阶段就把最坏情况的公差组合跑一遍,并且预留调节环节,这样样机回来之后你才有方向去排查问题,而不是靠运气一遍遍拆装重试。
