点击查看相关文章 分布式光纤测温系统DTS分布式光纤振动传感系统( Distributed Optical Fiber Vibration Sensing System, DVS)是以光纤作为传感器进行振动感知的光学仪器,该系统利用单根光纤同时实现振动的监测和信号的传输; 分布式光纤传感技术是一种新兴的传感技术,将探测光缆沿管道同沟或者并行敷设,可实时获得管道沿线任一点的温度、应变、振动(声音)信息,实现管道沿线泄漏、打孔盗油、地质灾害等异常状况实时监测,具有测量距离远、连续分布式测量、可精确定位、安装简单、安全可靠、扩展性强等优点。系统所需器件RIO激光器(5kHz): https://www.microphotons.cn/?a=cpinfo&id=4492可调光衰减器: http://www.microphotons.cn/?a=cpinfo&id=854SOA光放大器: http://www.microphotons.cn/?a=cpinfo&id=1680光环形器: http://www.microphotons.cn/?a=cpinfo&id=25920km单模光纤(传感器件)索雷博光电探测器(内置放大模块)14pin激光二极管驱动信号发生器(调制SOA做光开关)示波器(数据采集装置)计算机(数据处理装置)由于DVS对光源线宽的要求非常高,目前我们只有在RIO激光器中才能看到比较良好的传感效果,dense light(50kHz)或DFB nl(100kHz)激光器均无法观测到传感振动信号。由于SOA种子光过大后脉冲性能不是很好,所以RIO输出后需要添加一个衰减器控制输入种子光功率在1mW(0dBm)左右,也可以可以稍微大一点,视SOA器件参数而定。我们的SOA调制频率能达到40MHz,脉宽可达10ns,用于DVS是完全足够的。10ns理论上对应的传感精度是1m。环形器可以换成50:50耦合器,只是功率会下降一点。PD探测器选用索雷博的放大可调探测器(PDA10CS2),将内置的放大倍数调节至30dB档,可以看到明显的分布式散射信号了。最后对探测器的电压信号进行实时采集。AFG信号发生器同时分出一路触发信号给采集设备,实现同步采集。我们采用的是rigol示波器加matlab的方式进行采集。2022/08/26我们的DVS系统对比验证第一个是RIO的,第二个是LD-PD,25km光纤长度RIO和LD-PD窄线宽激光器在DVS中的效果比对视频RIO效果视频https://www.bilibili.com/video/BV1Xa411G7EQ/?spm_id_from=333.1350.jump_directly&vd_source=4846f0450f593afc032ac3565df67137 LD-PD效果视频 https://www.bilibili.com/video/BV1tV4y1W7it/?spm_id_from=333.1350.jump_directly&vd_source=4846f0450f593afc032ac3565df67137 2022/07/132022/02/15添加了时间域单点振动判断的降噪DVS采集算法(matlab) clear
clc
delete(instrfind)%清空连接端口
len = 100000;
ave = 20;%单次判定 时间域采样次数
tt=0.001;
yu = 2;
bil=1.1;
offset=200;
send = ':wav:data? CHANnel1';%发送指令读取通道1数据
E = visa('ni','USB0::0x1AB1::0x0588::DS1ET184552667::INSTR');
E.InputBufferSize = len;
fopen(E);
for j = 1:ave%两次采样正好隔ave次平均后相减,
fprintf(E,send);
pause(tt)
[data,len]=fread(E,len);
wavepre(:,j) = offset-data(12:len-1);
end
subplot(2,1,1)
p1=plot(wavepre(:,ave));
axis([0 len 0 220])
meanwav = bil*mean(wavepre,2)+yu;
for j = 1:(ave - 1)
errorpre(:,j) = F( ( wavepre(:,j) - meanwav).* ( wavepre(:,j+1) - meanwav));
end
error = sum(errorpre,2);
subplot(2,1,2)
p2=plot(error);
axis([0 len 0 ave])
%for i = 1:100000 %采集次数
i=1;
while true
% fprintf(E,':run');
% fprintf(E,':stop');
% yu = mod(i-1,ave);%余数
fprintf(E,send);
[data,len]=fread(E,len);
wave = offset-data(12:len-1);
set(p1,'YData',wave);
error1 = F((wave -meanwav).*( wavepre(:,ave) - meanwav));%求差后归一化
errorpre = [ errorpre error1];
error = sum(errorpre,2);
% error = (wave - wavepre(:,yu+1));
set(p2,'YData',error);
title(i)
drawnow
i=1+i;
pause(tt)
errorpre(:,1) = [];
wavepre(:,1) =[]; %迭代数据
wavepre=[wavepre wave];
meanwav = bil*mean(wavepre,2)+yu;
end
fclose(E);
function y = F(x)
x(x>0) =0;
x(x<0)=1;
y = x;
end