2022-01-25 10:53:23
點擊查看相關文章 分布式光纖測溫系統DTS
分布式光纖振動傳感系統( Distributed Optical Fiber Vibration Sensing System, DVS)是以光纖作為傳感器進行振動感知的光學儀器,該系統利用單根光纖同時實現振動的監測和信號的傳輸; 分布式光纖傳感技術是一種新興的傳感技術,將探測光纜沿管道同溝或者并行敷設,可實時獲得管道沿線任一點的溫度、應變、振動(聲音)信息,實現管道沿線泄漏、打孔盜油、地質災害等異常狀況實時監測,具有測量距離遠、連續分布式測量、可精確定位、安裝簡單、安全可靠、擴展性強等優點。
系統所需器件
RIO激光器(5kHz): http://www.eves-apples.com/?a=cpinfo&id=4492
可調光衰減器: http://www.eves-apples.com/?a=cpinfo&id=854
SOA光放大器: http://www.eves-apples.com/?a=cpinfo&id=1680
光環形器: http://www.eves-apples.com/?a=cpinfo&id=259
20km單模光纖(傳感器件)
索雷博光電探測器(內置放大模塊)
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效果視頻
LD-PD效果視頻
2022/07/13
2022/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