news 2026/9/13 13:50:01

OptiSystem光纤传感器仿真:FBG与WDM系统设计实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OptiSystem光纤传感器仿真:FBG与WDM系统设计实战

简介:面向光通信、光纤传感与物联网方向工程师的Optisystem传感器系统仿真示例包,集中解决利用仿真工具完成传感器建模、参数调试与性能评估的问题。压缩包共6个文件,包含3个.osd仿真工程、2个.dat数据文件和1个MATLAB脚本,整体约388KB,文件类型覆盖工程模型、数据存储与辅助计算,便于对应学习。示例涉及FMCW激光雷达的相干探测与直接探测方案、光纤布拉格光栅(FBG)温度及应变传感系统,并配有TargetModel.m目标模型脚本,可观察完整信号链路和目标响应设置。已有274人学习下载,适合有一定光学基础、希望借助现成工程快速上手Optisystem传感器仿真,或参考LiDAR与FBG典型案例进行二次开发的读者。

1. 传感器系统仿真的首选工具为什么是 OptiSystem

OptiSystem 是光通信系统仿真软件,但它的价值远不止搭 PON 链路。做光纤传感器系统——光纤布拉格光栅(FBG)温度/应变传感、马赫-曾德尔干涉传感、光强调制式液位传感——在买激光器、光电探测器、开模打样之前,先用 OptiSystem 把调制方式、光路损耗和解调方案验证一遍,原型迭代成本会低一个数量级。标题里的两部分正好对应两条主线:Sensor systems 是目标,OptiSystem 是实现手段。这篇会讲清楚仿真链路怎么搭、参数怎么定、光谱数据怎么换算回物理量、多传感器通道怎么复用。适合做传感器与检测技术课程设计的学生,也适合从光通信转向光纤传感的工程师。

2. OptiSystem 传感器建模原理与关键参数选型

传感器在 OptiSystem 里的建模本质,是把温度、应变、压力这些物理量折算成光信号的某个可测量特征。仿真前先把传感机制归类,后面选组件才不会乱。按被测对象对光的影响方式,光纤传感器系统分成三大类,它们在 OptiSystem 里的搭法完全不同,参数侧重点也不一样。

2.1 光强调制、波长调制与相位调制的仿真差异

光强调制最简单,被测物理量改变光功率大小,典型代表是反射式光电传感器、浊度传感器和液位传感器。在 OptiSystem 里用可调衰减器模拟介质遮挡或折射率变化,光电探测器输出的电流随衰减量线性变化,链路只有光源、光纤、衰减器、探测器四件套。它的仿真重点在探测器响应度和暗电流,因为功率检测的下限由噪声电流决定。

波长调制以 FBG 为代表,温度或应变让光栅周期改变,反射谱中心波长发生漂移。这类传感器要用宽带光源或者可调谐激光器加环形器,光谱分析仪(OSA)读峰值位置。仿真重点在 FBG 的中心波长、带宽和反射率,以及 OSA 的分辨率是否足够分辨 1pm 量级的漂移。

相位调制对应干涉型传感器,比如马赫-曾德尔干涉仪,传感臂和参考臂的光程差变化带来相位移动。这类仿真在 OptiSystem 里要保证光源相干性,线宽参数直接决定干涉可见度,计算量也最大。三类机制的传感器响应时间在仿真里统一由光电探测器的带宽参数控制,做振动或声发射传感时,探测器带宽要留出信号最高频率的 3 到 5 倍余量,不然波形会明显迟钝。

2.2 传感器仿真链路的核心器件参数表

以最常用的 FBG 波长调制传感为例,一套最小链路的器件角色和推荐参数如下:

组件链路中的角色关键参数FBG 传感推荐值
CW Laser提供光源中心波长、功率、线宽1550nm,10dBm,线宽 1MHz
环形器分离入射光与反射光插损、隔离度插损 1dB,隔离度 40dB
FBG传感元,反射特定波长中心波长、带宽、反射率1550nm,0.2nm,反射率 0.9
单模光纤传光与链路损耗衰减系数0.2dB/km
光电探测器光电转换响应度、暗电流、带宽0.9A/W,暗电流 1nA,带宽 1GHz
OSA读取反射光谱分辨率、扫描范围0.02nm,扫描范围 10nm

光源线宽 1MHz 对 FBG 反射谱测量已经足够窄,线宽再小对结果没有帮助,只会拖慢仿真。FBG 反射率 0.9 是为了让反射信号强度足够,但反射率过高会加宽等效反射谱,反而不利于峰值定位。OSA 分辨率 0.02nm 是中等精度仪表的水平,仿真里再往小设意义不大,因为实际仪器的分辨率上限就摆在那里。

2.3 用探测极限公式反推传感器分辨率

传感器系统设计里最容易犯的错,是先把灵敏度做得很高,最后发现噪声吃掉了全部信号。分辨率由噪声决定而不是由灵敏度决定,这个关系在仿真阶段就该算一遍。下面这段代码估算探测器层面的噪声等效波长分辨率:

import math # 光电探测器散粒噪声与热噪声合并,单位 A i_shot = math.sqrt(2 * 1.6e-19 * 1e-3 * 1e9) # 1mA 光电流、1GHz 带宽 i_thermal = 1e-9 # PIN 暗电流 1nA i_noise = math.sqrt(i_shot**2 + i_thermal**2) # 波长每漂移 1pm 引起的光电流变化量,单位 A/pm # 这里按反射谱线性区斜率 1uW/pm、响应度 0.9A/W 折算 dI_dlambda = 1e-6 * 0.9 resolution_pm = 3 * i_noise / dI_dlambda print(f"理论波长分辨率: {resolution_pm:.3f} pm")

代码的逻辑是:先算噪声电流,再算波长漂移单位量对应的光电流变化,两者之比乘 3 倍就是可分辨的最小波长变化。散粒噪声那一项里,1e-3 是光电流,1e9 是探测器带宽;两个参数都直接取自 2.2 的参数表。算出来的数值如果大于 FBG 的实际温漂系数(约 10pm/℃),说明链路信噪比不足以支撑 1℃ 的测温需求,需要提高光源功率或降低探测器带宽。注意 FBG 带宽 0.2nm 时,反射谱线性区只有峰值两侧约 ±50pm,超出这个范围的波长漂移会进入谱线平坦区,斜率塌掉,上面公式里的 dI_dlambda 不再成立,解调就失效了。窄带宽 FBG 能提升分辨率,但代价是解调范围变小,这个权衡在选型时就要想清楚。

3. 在 OptiSystem 搭建 FBG 传感器最小仿真链路

原理层面对应清楚了,这一步把它落成可运行的仿真。以 FBG 温度传感为例子,搭一个能跑出反射谱、能看出波长随温度移动的最小链路,整个搭建过程在 OptiSystem 图形界面里点选组件完成,不需要写脚本。

3.1 最小链路组件与布局顺序

布局顺序决定了信号流向,FBG 传感必须用环形器把反射光从入射光里分离出来。链路如下:

CW Laser → 环形器端口1 → 环形器端口2 → FBG → 反射光回环形器端口2 ↓ 环形器端口3 → 1×2 分路器 ↓ OSA(读光谱) 光电探测器(读强度)

环形器端口 2 接 FBG,入射光进入光栅,满足布拉格条件的波长反射回端口 2,从端口 3 输出,这样反射光不会回流到激光器。端口 3 后面接一个 1×2 分路器,一路进 OSA 看光谱,一路进光电探测器看强度,恰好覆盖波长调制和光强调制两种解调方式。很多仿真只接 OSA 不接探测器,但实际解调设备往往是先光电转换再处理电信号,仿真里保留探测器这一路,后面验证解调算法时才有数据可用。

3.2 FBG 参数与光源功率的设定值参考

组件放好后双击编辑参数,关键设置如下表。中心波长和带宽是传感核心,不能随意改。

设置项取值这样设的原因
FBG 中心波长1550nm位于 C 波段,光源与探测器选择面最宽
FBG 带宽0.2nm兼顾 20dB 信噪比与 ±50pm 线性解调范围
FBG 反射率0.9反射光强度够,又不至于过度加宽反射谱
光源功率10dBm经过环形器 1dB 插损和分路器损耗后,探测器仍有足够光电流
OSA 扫描范围1545~1555nm给温漂留出 10nm 余量,避免峰值跑出视场
OSA 采样点数2000扫描范围内的采样间隔 0.005nm,低于 OSA 的 0.02nm 分辨率

光源功率这个参数容易被忽略。FBG 反射率 0.9 意味着只有 10% 的光透射过去,反射回来再经过环形器插损,到达探测器的功率大约是入射的 0.9 倍减去 2dB 损耗,所以 10dBm 输入实际只剩 8dBm 左右。如果光源功率低于 0dBm,探测器光电流掉到微安级,散粒噪声占比上升,第 2 章算的分辨率就守不住。

3.3 用参数扫描模拟应变和温度变化

FBG 在 OptiSystem 里没有直接的"温度"或"应变"输入口,常见做法是把传感量折算成中心波长的偏移,用参数扫描来实现。我一般的步骤是:把 FBG 中心波长设成表达式形式1550e-9 + dlambda,其中 dlambda 是全局变量;然后在 Layout 的 Optimization/Sweep 模块里把 dlambda 作为扫描变量,从 0 扫到 1nm,步长 0.1nm,每轮迭代记录一次 OSA 峰值位置。

这一步的物理含义要先换算清楚。1550nm 波段的 FBG 温度系数约 10pm/℃,应变系数约 1.2pm/με。所以 dlambda 每增加 0.1nm,相当于温度升高 10℃,或者应变增加约 83με。扫描完成后把每轮的峰值波长和对应的 dlambda 画出来,理论上是一条斜率为 1 的直线。如果扫描步长取 0.05nm,光纤光栅的中心波长按 0.05nm 跳变,OSA 读出来却出现跳跃性误差,先查 OSA 采样点数是不是太少,而不是怀疑 FBG 本身。

3.4 运行后的光谱与探针检查

运行仿真后,双击 OSA 查看反射谱,重点检查三件事。第一,峰值功率与噪声底之间的差值是否大于 20dB,不满足就提高光源功率或加大 FBG 反射率。第二,反射谱是否对称,如果出现旁瓣,说明 FBG 参数里的切趾设置没有打开,旁瓣会干扰后面峰值拟合的精度。第三,用 OptiSystem 的光功率计探针放在分路器输出端,把测到的功率和手工估算值对一下。比如入射 10dBm,环形器插损 1dB,FBG 反射回来再经过环形器,理论上功率计读数应该在 8dBm 附近,偏差超过 1dB 就回去查光纤长度和连接损耗设置。

4. 从 OptiSystem 光谱数据解调传感器物理量

仿真跑通后,真正决定传感器系统性能的是解调这一步:把 OSA 读出的光谱转成峰值波长,再换算成温度或应变。OptiSystem 本身不做物理量换算,数据导出后用 Python 处理是最顺手的路径。

4.1 OSA 数据导出格式与列含义

在 OSA 显示界面右键选择 Export Data,导出 CSV 文件,前面两行一般是标题和单位,从第三行开始才是数据。打开后形如:

, wavelength(nm), power(dBm) 0, 1549.50, -35.12 1, 1549.51, -34.98 2, 1549.52, -35.03

第一列是采样点序号,第二列是波长,第三列是对数功率。注意功率单位是 dBm,相对 1mW 的对数值,峰值搜索如果直接在 dBm 域做,谱线边缘的小起伏会被对数压缩掩盖,解调代码里要先转回线性功率。不同版本的 OptiSystem 导出的分隔符可能是逗号也可能是制表符,加载数据前先看文件头几行确认,避免np.loadtxt解析报错。

4.2 Python 峰值提取与高斯拟合代码

峰值提取的常见做法是:线性功率域里找最大值,再用质心法精确定位。直接取功率最大点对应的波长,会引入最多一个采样间隔的量化误差;质心法则利用整段谱线信息,可以把重复性做到远低于采样间隔。

import numpy as np # csv 前两行为表头,跳过 data = np.loadtxt("fbg_spectrum.csv", delimiter=",", skiprows=2) wl = data[:, 0] power_dbm = data[:, 1] # 关键:转线性功率再处理,避免 dBm 域噪声被压缩 lin = 10 ** (power_dbm / 10.0) # 以峰值下降 10dB 为阈值截取窗口,剔除基线噪声 thr = lin.max() * 0.1 mask = lin > thr # 质心法定位峰值波长 wl_peak = (wl[mask] * lin[mask]).sum() / lin[mask].sum() print(f"峰值波长: {wl_peak:.4f} nm")

这段代码里有两个参数需要按实际数据调整。skiprows=2对应 4.1 描述的导出格式,如果版本不同导出了更多注释行,改成实际行数;阈值0.1表示取峰值功率下降 10dB 以内的点做质心。反射谱带旁瓣时,窗口要收窄到下降 6dB(阈值 0.25),把旁瓣排除在质心计算之外,否则旁瓣会拉偏峰值。如果追求更高精度,可在窗口内对wllin做高斯拟合,拟合中心作为峰值波长,抗噪能力比质心法再强一档,代价是每帧多几十微秒计算量,静态传感足够,高速振动传感就得权衡。

4.3 灵敏度、分辨率与温度补偿换算

峰值波长拿到后,换算物理量用标定系数。1550nm 波段 FBG 的典型系数如下:

传感量标定系数换算公式
温度0.01 nm/℃T = (λp − λ0) / 0.01
应变0.0012 nm/μεε = (λp − λ0) / 0.0012

λ0 是零输入时的初始峰值波长,每一轮仿真开始前先记录一次。分辨率方面,把多次独立扫描的峰值波长标准差取 3 倍,除以对应系数就是测温或测应变的分辨率。比如标准差 0.5pm,测温分辨率就是 0.15℃。

这里必须提一个 FBG 传感的系统性难题:温度和应变同时作用在光栅上,峰值波长的移动是两者叠加的结果,单通道解调无法区分各自贡献。这就是交叉敏感问题。解决办法是引入一路只感受温度、不感受应变的参考光栅,用差分的方式把温度分量剥掉,这正是第 5 章要做的双传感器结构。

5. 双传感器差分补偿与多传感器 WDM 复用验证

FBG 传感上到工程层面,单一光栅几乎不够用。一方面需要参考通道解决交叉敏感,另一方面需要在一根光纤上挂多个光栅测不同位置,这就涉及波分复用(WDM)和多传感器融合。

5.1 用 WDM 波长间隔规划多传感器通道

多光栅复用时,每个 FBG 分配一个互不重叠的波长窗口。中心波长间隔不能只看静态带宽,要把最大温漂量算进去。带宽 0.2nm 的光栅,温度测量范围若到 200℃,温漂就有 2nm,相邻通道间隔至少要 5nm 才安全:

通道FBG 中心波长测量用途
通道 11545nm参考光栅,只感受温度
通道 21550nm应变传感
通道 31555nm备用或第二测点

通道间隔 5nm 是经验值,等于 25 倍光栅带宽,既避免光谱重叠,又保证每个通道的峰值解调互不干扰。链路结构和单光栅完全一样,只是把三个 FBG 串接在环形器端口 2 的光纤上,OSA 一次扫出三个反射峰,这就是多传感器融合在一根光纤上的落地方式。

5.2 参考传感器通道的差分解调代码

参考通道和传感通道处于相同温度环境,但参考光栅不受应变。解调时先用参考通道算出温度,再把这个温度引起的波长偏移从传感器通道里减掉:

# 参考通道与传感器通道读数,单位 nm wl_ref = 1545.12 # 参考光栅当前峰值 wl0_ref = 1545.00 # 参考光栅初始峰值 wl_sensor = 1550.38 # 传感光栅当前峰值 wl0_sensor = 1550.00 # 传感光栅初始峰值 # 参考通道换算温度,再折算成传感通道的温度漂移量 t = (wl_ref - wl0_ref) / 0.01 temp_drift = 0.01 * t # 从传感通道总漂移里扣除温度贡献,剩余归应变 strain = (wl_sensor - wl0_sensor - temp_drift) / 0.0012 print(f"温度: {t:.1f} ℃, 应变: {strain:.0f} με")

注意第二行temp_drift的单位要和传感通道的漂移单位一致,这里都是 nm。工程上参考光栅的温漂系数要实测标定,仿真里直接用理论值 0.01nm/℃,误差可以接受。差分之后残留的读数抖动,基本就代表了系统扣除温度影响后的真实应变分辨率。

5.3 仿真可信度检查的三处关键点

多通道仿真的结果能不能当设计依据,落三个检查点。第一,OSA 采样间隔要低于设备分辨率,扫描范围除以采样点数必须小于 0.02nm,否则通道峰值位置本身就不准。第二,把每轮仿真的波长偏移量和扫描步长做一次线性回归,斜率偏离 1 超过 5% 就说明光栅带宽设置过大,反射峰已经进入平坦区。第三,无源插损要能手工复算,三个 FBG 串接后反射光功率会比单光栅低,逐段加起来应该和功率计读数对得上。做一个 0 到 80℃ 的仿真扫描,中心波长每步偏移 0.8nm,OSA 读出的峰位移动应严格等于 0.8nm,偏差超过 0.04nm 就回去查 FBG 带宽和采样点数。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 13:49:38

AD5755工业DAC驱动详解:STM32 SPI配置、寄存器映射与闭环控制

简介:本资源是一套基于STM32微控制器驱动AD5755高精度16位DAC芯片的完整嵌入式开发例程,面向嵌入式软硬件工程师、工业控制开发者及高校电子类专业学生,解决工业自动化、测试设备中高精度模拟电压输出的快速集成与调试问题。压缩包共125个文件…

作者头像 李华
网站建设 2026/9/13 13:48:28

ESLint 配置组合实战:用 `extends` 合并配置对象与配置数组

ESLint 配置组合实战:用 extends 合并配置对象与配置数组 【免费下载链接】eslint Find and fix problems in your JavaScript code. 项目地址: https://gitcode.com/GitHub_Trending/es/eslint 在实际项目中,eslint.config.js 很少完全从零手写&…

作者头像 李华
网站建设 2026/9/13 13:46:29

Abaqus焊接仿真Python接口:热源动态控制与多道次耦合实现

简介:这是一套面向ABAQUS初学者与焊接仿真工程师的专用插件工具包,即3DSwym Abaqus Welding Interface(AWI)6.14小版本全兼容焊接仿真接口,专为简化激光焊、氩弧焊、真空电子束焊及搅拌摩擦焊等多工艺热-力耦合仿真流程…

作者头像 李华
网站建设 2026/9/13 13:44:44

RAP开发实战:CDS + Fiori Elements实现主明细显示

做SAP S/4HANA扩展开发的人应该都碰到过这种需求:业务方拿着一张纸质单据过来,说“我要在这个页面上,上面显示抬头信息,下面能够维护明细行,还能增删改”。以前遇到这种主明细(Master-Detail)场…

作者头像 李华