拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

FBG与LPFG互补设计:光纤光栅温度、应变与折射率传感方案

FBG与LPFG互补设计:光纤光栅温度、应变与折射率传感方案

简介:一套基于Matlab的光纤光栅仿真源码包,围绕布拉格光栅(FBG)与长周期光纤光栅(LPFG)的光谱特性计算展开,面向光纤通信、光学传感及光纤激光器领域的研究者和高校学生,可直接用于计算并绘制两类光栅的反射谱或传输谱。资源共包含9个m脚本,压缩包大小仅7KB,覆盖均匀、切趾、啁啾等布拉格光栅以及温度变化下的光谱响应等典型模型,每个文件对应独立功能,便于按需调用和参数修改。已有294人学习下载。通过运行源码,读者可结合耦合模理论观察周期、长度、折射率调制深度等参数对光谱峰值、带宽和漂移的影响,深入理解布拉格反射条件与长周期模式耦合机制;也可作为科研预研或课程实验的起点,快速上手光纤光栅的Matlab建模仿真。特别适合光学工程专业的学生用于课程设计或毕业设计中的光栅特性分析。

1. 拿着FBG去测液体折射率纹丝不动,换上LPFG才偏移:光纤光栅的互补逻辑

FBG光纤光栅和LPFG长周期光纤光栅,很多人一开始以为只是周期长短不同,实际用起来才发现是完全不同的两类传感器。刚接触光纤光栅的人最常见的翻车场景是:把布拉格光纤光栅贴到待测液体上,期待反射峰跟着折射率移动,结果光谱纹丝不动;换上LPFG之后透射谱确实动了,可温度一变它也东飘西飘。这篇笔记把FBG和LPFG放在一起讲——它们不是竞争关系,而是互补关系:FBG擅长测温度和应变,LPFG擅长测周围介质折射率,串在一根光纤上可以同时把三路物理量分开。下面的内容覆盖选型参数、仿真脚本、串接方案和落地坑,给做光纤传感或准备把光栅写进监测方案的人一份能复现的路径。

2. 设计FBG前先看耦合模:中心波长、带宽和反射率由哪几个数决定

2.1 布拉格光纤光栅为什么对温度和应变敏感

FBG的反射原理可以用一个极其简洁的相位匹配条件描述:λ_B = 2 n_eff Λ,其中λ_B是布拉格波长,n_eff是纤芯导模的有效折射率,Λ是光栅周期。典型通信光纤的n_eff在1550 nm附近约为1.448,那么一个1550 nm的FBG,周期只有535 nm左右,属于亚微米量级。正因为这个周期小,FBG内部发生的是前向导模与反向导模的耦合,反射谱表现为一个尖锐的窄带峰。

温度和应变如何改变布拉格波长?对上面的式子求全微分,能得到工程界常用的简化式:

Δλ_B / λ_B = (1 - p_e) ε + (α + ζ) ΔT

p_e是有效弹光系数,对石英光纤约为0.22;α是热膨胀系数,约0.55×10⁻⁶ /°C;ζ是热光系数,约6.4×10⁻⁶ /°C。代入1550 nm,可得到两个非常好用的经验系数:应变灵敏度约1.2 pm/με,温度灵敏度约10.4 pm/°C。这两个系数是所有FBG传感方案设计的出发点,后面做实验标定的时候,就是用它们来核对实测值是否正常。

这里要特别强调一个新手容易误解的点:FBG对外界折射率几乎不敏感,是因为导模的能量被约束在纤芯内,倏逝波在包层外已经衰减殆尽。哪怕把FBG整个泡进水里,反射峰也不会移动超过几个皮米。所以在一个折射率传感项目里把FBG当作主传感器,从一开始方向就错了——FBG在这个场景的角色应该是温度补偿。

2.2 一个最小可运行的FBG反射谱仿真脚本

选好了中心波长、调制深度和栅区长度之后,先用脚本把反射谱算出来再动手写栅,能省掉大量试错。均匀FBG的反射谱不需要动用复杂的商业软件,用传输矩阵或者解析解就能算。下面这段Python脚本用的是均匀光栅的解析公式,核心是耦合模方程在均匀折射率调制条件下的闭合解。

import numpy as np import cmath import matplotlib.pyplot as plt # 光纤与光栅参数 lambda_B = 1550e-9 # 设计布拉格波长 1550 nm n_eff = 1.448 # 纤芯有效折射率,SMF-28典型值 dn = 1.5e-4 # 折射率调制幅度,紫外写入常见量级 L = 10e-3 # 栅区长度 10 mm # 波长扫描范围 wl = np.linspace(1548.5e-9, 1551.5e-9, 4000) def fbgr(wl, lambda_B, n_eff, dn, L): # 直流耦合系数:描述失谐程度 sigma = 2 * np.pi * n_eff * (1 / wl - 1 / lambda_B) # 交流耦合系数:描述折射率调制强度 kappa = np.pi * dn / wl R = np.zeros_like(wl) for i, (sig, kap) in enumerate(zip(sigma, kappa)): # 复数传播常数,统一处理带内与带外 gamma = cmath.sqrt(kap**2 - sig**2) s = cmath.sinh(gamma * L) c = cmath.cosh(gamma * L) r = -kap * s / (sig * s + 1j * gamma * c) R[i] = abs(r)**2 return R R = fbgr(wl, lambda_B, n_eff, dn, L) # 打印中心反射率与3dB带宽 peak = np.max(R) idx = np.argmax(R) band = wl[abs(R - 0.5 * peak).argmin()] # 简单找3dB左侧边界 print(f"峰值反射率: {peak:.3f}") print(f"峰值波长: {wl[idx]*1e9:.3f} nm")

这段代码的关键在耦合系数的处理上:sigma是失谐项,波长偏离布拉格波长越远,sigma越大;kappa是折射率调制幅度的直接体现,dn越大,纤芯里被反射回来的能量越强。gamma取复数是为了让公式同时覆盖禁带内与禁带外两个区域,避免了分段判断。如果手头没有matplotlib,把R输出成CSV文件导入任何绘图工具也一样用。

用上面这组参数跑出来的结果,中心反射率约0.96,3dB带宽约0.25 nm,这是一个典型的10 mm栅区、中等调制深度的FBG。如果实际写栅后测到的带宽比仿真宽很多,大概率是光栅非均匀或者包层模耦合漏掉了。

2.3 三个必调参数:中心波长、3dB带宽、峰值反射率

FBG设计时真正要拍板的参数就三个:中心波长、3dB带宽、峰值反射率。它们之间存在耦合关系,不能孤立地定。

中心波长直接由相位掩膜板的周期决定,选1550 nm还是1310 nm,取决于解调仪的光源范围和待测对象的谱线干扰。如果用光谱仪加宽带光源,建议让FBG反射峰避开光源的ASE尖峰和熔接点的菲涅尔反射区。

3dB带宽主要受两个因素控制:栅区长度越长,光谱越窄;折射率调制越深,光谱先变窄后展宽。弱调制条件下带宽与栅长近似成反比,所以做高精度应变测量时喜欢用20 mm以上的长栅,但代价是空间分辨率下降。分布式应变测量里空间分辨率由栅长决定,这个trade-off要在方案设计阶段就写清楚。

峰值反射率由dn和L的乘积决定。dn=1e-4、L=5 mm时的反射率只有约0.08,而dn=2e-4、L=10 mm时轻松超过99%。实际工程里不建议追99.9%的极致反射率,因为过强的折射率调制会导致光谱边模振荡,反射峰两侧出现不规则的旁瓣,给多光栅复用带来麻烦。我一般把目标定在70%到95%之间,既能保证信号强度,边模也能控制在可接受范围。

3. LPFG的周期与相位匹配:为什么100μm量级光栅能感知折射率

3.1 LPFG和FBG的本质差异:前向耦合决定了折射率敏感

LPFG的周期通常在100 μm到500 μm之间,比FBG大两个数量级。周期不同,耦合的对象就完全不同:FBG把前向导模耦合到反向导模,LPFG把纤芯基模耦合到同向传输的包层模。包层模不像导模那样被约束在纤芯内,它的倏逝场会一直延伸到包层外表面,因此外界介质的折射率会直接影响包层模的有效折射率。

正是这个机制让LPFG对外界折射率高度敏感。当环境折射率从1.33变化到1.44附近时,LPFG谐振峰的偏移可以达到几十纳米,比FBG对折射率的响应大四到五个数量级。代价是LPFG的透射谱带宽很宽,单峰动辄十几纳米,没法像FBG那样在一根光纤里密集复用。

LPFG的谐振波长满足相位匹配条件:λ_res = (n_core - n_clad,m) Λ,这里的n_clad,m是第m阶包层模的有效折射率,不是包层材料的折射率。工程上说的"阶数"决定谐振峰的个数和位置:同一个LPFG周期,高阶包层模的n_clad,m更小,谐振波长更长。设计时选哪个模式,取决于这个模式对外界折射率的灵敏度曲线。

3.2 手算谐振波长:波长-周期曲线怎么用

设计LPFG的第一步通常是手算一个粗略的谐振波长,再用仿真软件精修。核心公式就一个:

λ_res = (n_core - n_clad,m) Λ

公式看起来简单,难点在n_clad,m的取值。拿SMF-28来说,1550 nm附近的基模有效折射率n_core约1.446,二阶包层模的有效折射率大约在1.444到1.445之间,具体值由波长、模式和外界折射率共同决定。如果手头没有模式求解工具,可以从文献数据或者用Bessel函数特征方程自己算。

举个例子:想要谐振波长落在1550 nm附近,取n_core - n_clad,m = 0.0062,那么周期Λ = 1550 nm / 0.0062 ≈ 250 μm。这是一个非常典型的LPFG设计周期。写栅的时候掩膜板周期稍微偏一点,谐振波长就会大幅漂移——这既是LPFG难写的地方,也是它能做高灵敏度折射率传感的原因。

需要提醒的是,这个式子里的n_core和n_clad,m都随波长变化,所以λ_res和Λ不是严格线性关系。真要精确设计,必须把Sellmeier色散方程代进去做迭代求解。下面给一段可直接运行的波长-周期计算代码。

import numpy as np # Sellmeier 系数,纯石英近似值 B1, C1 = 0.6961663, 0.0684043**2 B2, C2 = 0.4079426, 0.1162414**2 B3, C3 = 0.8974794, 9.896161**2 def n_silica(wl_um): # wl_um 单位是微米 w2 = wl_um**2 return np.sqrt(1 + B1*w2/(w2-C1) + B2*w2/(w2-C2) + B3*w2/(w2-C3)) # 纤芯掺锗,折射率略高于纯石英 def n_core(wl_um): return n_silica(wl_um) + 0.005 # 典型Δn=0.005 # 包层模有效折射率:使用近似表达式,精确值需要模式求解 def n_clad_m_approx(wl_um, m): # 简化近似:包层模有效折射率随波长单调下降 # 这里用基准点 + 线性斜率模拟,实测值需用特征方程求解 return n_silica(wl_um) - 0.0012 - 0.00008 * m # 计算相位匹配曲线 def phase_matching(wl_target_nm, m): wl_um = wl_target_nm / 1000.0 nc = n_core(wl_um) ncm = n_clad_m_approx(wl_um, m) Lambda = wl_target_nm / (nc - ncm) # 单位 nm return Lambda for m in range(2, 7): lam = 1550.0 Lambda = phase_matching(lam, m) print(f"m={m}: 周期 {Lambda:.1f} μm, dn_eff={0.005 + 0.0012 + 0.00008*m:.5f}")

这段脚本没有精确求解包层模的有效折射率,而是用一个线性近似模型演示设计流程。真正做产品时,n_clad_m要用三层波导特征方程去求Bessel函数根,或者直接用COMSOL、OptiGrating这类工具。但即便用近似值,也能把周期估算到正负几十微米内,足够决定该买什么周期的掩膜板了。

3.3 LPFG透射谱的简化仿真

LPFG的透射谱仿真比FBG麻烦得多,完整做法需要求解耦合模方程组,把基模和多个包层模之间的能量交换全算进去。工程上有一个足够用的简化:把每个包层模对应的谐振峰看成独立的洛伦兹型凹陷,透射谱是多个凹陷的乘积。这种近似在弱耦合和低包层模密度条件下误差不大。

import numpy as np def lpfg_transmission(wl, n_core_val, n_clad_eff_list, Lambda, L, kappa_list): """ LPFG透射谱简化模型:每个包层模对应一个洛伦兹型凹陷 适用于弱耦合、谐振峰不重叠的常规设计 """ T = np.ones_like(wl) for n_clad_eff, kappa in zip(n_clad_eff_list, kappa_list): lam_res = (n_core_val - n_clad_eff) * Lambda # 相位失配项 delta = 2 * np.pi * (n_core_val - n_clad_eff) * (1 / wl - 1 / lam_res) gamma = np.sqrt(kappa**2 + delta**2) # 交叉耦合功率 P = (kappa / gamma * np.sin(gamma * L))**2 T *= (1 - P) return T # 参数设置 wl = np.linspace(1400e-9, 1700e-9, 10000) # 扫描 1400-1700 nm n_core = 1.4495 # 纤芯有效折射率 @1550 n_clad_list = [1.4408, 1.4385, 1.4338] # 不同包层模有效折射率,示意值 Lambda = 250e-6 # 周期 250 μm L = 30e-3 # 栅区长度 30 mm kappa_list = [8.0, 6.5, 5.0] # 每个模式的耦合系数,单位 1/m T = lpfg_transmission(wl, n_core, n_clad_list, Lambda, L, kappa_list) print(f"最小透射率: {T.min():.3f}")

这个模型的物理含义很直接:每个包层模对应一个谐振波长,kappa越大,该模式的能量耦合越强,凹陷越深;栅区长度L越长,模式间的能量交换越彻底。工程上写LPFG时,如果发现谐振峰深度不够,最常见的手段就是增加曝光长度或者加大折射率调制。不过耦合过强会导致谐振峰变形甚至分裂,这是LPFG设计和写制中最常踩的坑之一。

4. FBG+LPFG串接:一根光纤上温度和折射率怎么分工测量

4.1 两段光栅串接后光谱怎么读

把FBG和LPFG串在同一根光纤上,可以在一段光纤上同时获得两类传感信息。常见的接法是:宽带光源从一端注入,光先经过LPFG段,再经过FBG段,另一端接光谱仪读透射光谱。光谱仪上会同时出现LPFG宽达十几纳米的谐振凹陷和FBG只有零点几纳米的尖锐凹陷,两者互不干扰。

读谱的方式要根据解调设备区分。如果用的是光谱仪,直接跟踪两个凹陷的中心波长就行。如果用的是FBG解调仪,需要注意大部分解调仪只能识别反射峰,对LPFG这种透射型光栅无解,这时需要在光纤末端加反射镜或者用法布里-珀罗结构把透过光变成反射光。我一般建议在方案验证阶段直接用光谱仪,带宽覆盖1400 nm到1600 nm,一版光谱就能把两个光栅的信号都看清。

FBG的温度灵敏度约10.4 pm/°C,LPFG的温度灵敏度则要看包层模阶数和外界折射率,常见值在10 pm/°C到80 pm/°C之间。两者对温度都敏感,对折射率的响应却差了几百倍。这就带来一个明确的信号分工:FBG的波长变化主要归因于温度和应变,LPFG的波长变化主要归因于折射率和温度。把FBG当作温度参考,在FBG不感受应变的安装方式下,可以从LPFG的读数里扣除温度贡献。

4.2 波长规划:FBG反射峰必须避开LPFG凹陷的三个约束

串接之后不是随便选波长就能用,规划不当光谱会互相污染。第一个约束是FBG的工作波长不能落在LPFG谐振峰的半高宽范围内。LPFG凹陷动辄十几纳米宽,FBG反射峰一旦落进它的底部,光谱叠加后FBG凹陷会被淹没,解调时峰值定位会产生偏移。第二个约束是LPFG谐振波长随折射率变化会大幅度漂移,标定条件下避开的距离不足以应对测量范围,工作波长应设计在LPFG凹陷边缘的延伸区之外。第三个约束是FBG的边模和反射次峰不能用,强调制FBG边模可能延伸到LPFG凹陷里,选型时优先用切趾FBG或者降低折射率调制。

实际项目里常见的波长分配是:LPFG谐振波长放1530 nm附近,FBG反射峰放1555 nm附近,中间留下至少15 nm的净空。测折射率最大偏移超过20 nm的应用,就要把LPFG放到1510 nm以下,或者选择折射率灵敏度更低的包层模来压住偏移量。

4.3 解调方案的成本与精度取舍

串接方案选解调仪有个绕不开的取舍:光谱仪便宜直观但精度受像素间距限制,通用机型横向分辨率约0.2 nm;光纤光栅解调仪精度能做到1 pm,但价格翻几倍且不认透射光谱。一种折中方案是用CCD光谱仪加高斯拟合算法,对FBG凹陷做亚像素插值,可以在不换硬件的条件下把定位精度提到几个皮米量级。

处理LPFG凹陷时,洛伦兹拟合比高斯拟合更可靠,因为LPFG谐振峰偏离理想对称线型时,洛伦兹拟合的残差更小。我的做法是先把光谱做基线扣除,再用三点重心法做粗定位,最后在粗定位波长附近做洛伦兹精拟合。这一套在纯Python里就能实现,不需要专用软件。下面这段代码演示了重心法的核心逻辑。

import numpy as np def peak_center_by_centroid(wl, T, search_range): # 限制搜索范围,避免把噪声包进去 mask = (wl >= search_range[0]) & (wl <= search_range[1]) wl_m = wl[mask] T_m = T[mask] # 凹陷深度权重,反转后做重心 depth = 1 - T_m # 去掉基线偏置,只用凹陷的深度做加权 depth = depth - depth.min() if depth.sum() < 1e-12: return np.nan center = np.sum(wl_m * depth) / np.sum(depth) return center # 示例:搜索 1525-1545 nm 范围内的LPFG凹陷中心 center = peak_center_by_centroid(wl, T, [1525e-9, 1545e-9]) print(f"LPFG凹陷中心: {center*1e9:.2f} nm")

这个重心定位的误差来源主要是基线不平整和凹陷重叠。写LPFG时光谱基线往往带着宽带光源的ASE起伏,必须先做平滑和基线扣除再做重心计算,不然重心会被光源轮廓带偏。

5. 光纤光栅落地避坑:写栅、退火和串接的踩坑记录

5.1 写栅后反射峰消失,光谱上只有平整基线

现象:紫外曝光完成后立刻接光谱仪测,FBG应该出现的反射峰完全不见,整条光谱平坦得像没写过栅。

原因:最常见的是相位掩膜板与光纤贴得太紧或太松,导致写入的条纹对比度极低。掩膜板与光纤接触过紧时,高阶衍射条纹被抹平;距离过远则相干条纹消失。另一个高频原因是光纤的载氢处理失效,光敏性不足,紫外光写不动。

解决:先把掩膜板与光纤的间距控制在50 μm到100 μm之间,重新曝光一段短栅做测试。如果还不行,检查紫外激光器的平均功率和重复频率,功率密度建议保持在200 mW/mm²以上。写完后不要马上测光谱,先做24小时自然老化或者快速退火再看,因为刚写完的栅区有大量不稳定缺陷,光谱会边漂边变。

5.2 反射峰中心波长天天漂,今天1550.2明天1550.8

现象:同一只FBG在相同温度下,中心波长每天漂移幅度超过0.5 nm,完全没法做定量测量。

原因:紫外写入过程中光纤内部产生了应力梯度和未稳定的缺陷中心。没有经过退火的光栅,内部结构在室温下会持续缓慢弛豫,波长随弛豫过程移动。

解决:写栅后必须做退火。常见做法是80°C到120°C下保温4到12小时,然后再测常温波长。退火后的光栅短期稳定性能做到正负几个皮米。这个"后悔药"一定要在标定之前吃,否则后面所有标定数据全部作废。

5.3 LPFG谐振峰太浅,透射谱上只有0.5 dB的凹陷

现象:设计的谐振波长位置有反应,但凹陷深度只有0.5 dB,反射率太低,信噪比不足以支撑测量。

原因:耦合系数偏小,通常是折射率调制幅度不够或者栅长过短。也可能是选用的包层模阶数本身耦合强度就低,能量从基模耦合到该模式的比例很小。

解决:先加曝光时间把折射率调制做大,观察凹陷深度是否同步上升。如果提升不明显,说明模式选择有问题,换成低阶包层模,重新匹配周期。写LPFG比写FBG更依赖试错,每写一版就做一次光谱记录,把周期、曝光剂量和凹陷深度对应起来查。

5.4 串接后两个凹陷互相干扰,FBG凹陷旁边冒出不认识的次峰

现象:FBG与LPFG串接后,FBG反射峰出现在透射谱中时,旁边多出一串不规则的尖峰,严重时主峰定位都受影响。

原因:FBG折射率调制过深产生边模振荡,或者是LPFG的包层模与FBG的包层模之间发生了二次耦合。串接后两个光栅距离太近,耦合还会叠加。

解决:把两个栅区的间距拉开到1米以上,消除近场耦合。FBG写入时降低调制深度,让峰值反射率控制在90%以下,削弱边模。如果项目允许,优先选择切趾FBG,边模能被压到主峰下30 dB以上。

5.5 温度补偿怎么算都不对,FBG和LPFG测出的温度差好几度

现象:同一水浴里,用FBG算出的温度和用LPFG算出的温度不一致,差3°C到5°C。

原因:两个光栅对温度的响应曲线不是同一条。LPFG的温度灵敏度强烈依赖包层模阶数和环境折射率,环境折射率变化时温度灵敏度也跟着变。直接用固定温度系数做补偿,超出标定区间自然对不上。

解决:在目标测量范围内做矩阵标定,把温度、折射率两维的变化同时记录下来,得到交叉灵敏度矩阵而不是单一系数。使用的时候用FBG的温度读数先算温度修正项,再解LPFG的折射率。这个顺序不能反过来,因为FBG对折射率不敏感,它的温度读数是干净的。

6. 验证FBG+LPFG方案能不能用:三个低成本标定实验

6.1 千分尺拉伸台:应变系数实测对照1.2 pm/με

把一个FBG粘在铝梁表面,梁的一端固定,另一端用千分尺推进,每次给10 με的增量,记录中心波长。实测斜率如果落在1.15到1.25 pm/με之间,说明光栅写制和退火工艺正常。偏离这个区间,首要怀疑粘贴胶层蠕变,其次是光栅没有完全粘贴平直。

6.2 蔗糖溶液梯度:LPFG折射率灵敏度测定

配一组10%到50%的蔗糖溶液,折射率从1.3479变到1.4201,把LPFG段浸泡在溶液里,记录谐振波长。逐点拟合出波长-折射率曲线。这条曲线注意不要外推到包层折射率1.444以上,接近包层折射率时灵敏度急剧上升,曲线非线性非常强,标定区间必须覆盖实际测量区间。

6.3 水浴温度实验:交叉验证两个光栅的温漂

把串接好的光栅放入恒温水浴,从25°C加热到60°C,每5°C记录一次两个凹陷的中心波长。用FBG段的数据算出实际温度系数,再把这个系数代入LPFG段的温度修正公式里,检验修正后的LPFG读数是否还能在纯水中回到初始折射率。这个实验能一次性暴露温度补偿矩阵的错误。

三个实验做完,这套FBG+LPFG方案能不能投入现场就有数了。我自己的习惯是每次标定都保留原始光谱文件,随时可以回查当时基线的形状,因为光栅老化后回看标定记录是判断数据是否可信的唯一依据。光纤光栅这东西,很多问题到现场才暴露,但基础扎实的标定能帮你把排查范围缩到最小。希望这些笔记能帮你在写栅和标定路上少走几步,少烧几段宝贵的特种光纤。

本文还有配套的精品资源,点击获取

返回列表