AnsweredAssumed Answered

Noise in Measurement Using TLS 81608A & N7744A

Question asked by SyedZia on Nov 8, 2018
Latest reply on Nov 15, 2018 by mkelly

We are using keysight 8164B laser and N7744A detector for our experiment. We are using continuous wavelength sweep to see high Q modes in our devices. We are unable to see all the resonance modes present in the devices, which are observable in other real time power meter data. As we increase the averaging time for the detector we are getting more noise in transmission data. Also as we decrease the sweep speed we are getting more noise in our transmission data.

We are using Matlab scripts to control the sweep and data logging and viewing. Kindly check the Sweep, Trigger & Logging setup commands given below. The wavelength sweep step size we are using is 0.0001 nm. Any suggestion to reduce the noise in transmission data and to see the other resonance modes?


Here i attach an image of the transmission data.

% trigger frequency
trigfreq = (speed./stepw); % max: 100 kHz
% detector average time
atime=1/trigfreq; % 1 us to 10s

% atime=1e-6;


%% setup 1 - laser
%------------------------- Laser initiation -----------------------
%Turn On the TLS
fprintf(v8164B, sprintf(':SOURce:CHANnel:POWer:STATe %d', 1));
%Set the TLS sweep mode to continuous
fprintf(v8164B, sprintf(':SOURce:CHANnel:WAVelength:SWEep:MODE %s', 'CONTinuous'));
%Set output path High
fprintf(v8164B, sprintf(':OUTPut:CHANnel:PATH %s', 'HIGHpower'));
%Check command execution status
opc = sscanf(query(v8164B, '*OPC?'), '%d');

%------------------------- Trigger setup for laser Source-----------------------
%Ignore input triggers
fprintf(v8164B, sprintf(':TRIGger:CHANnel:INPut %s', 'IGNore'));
%Generate an output trigger when a sweep step finishes
fprintf(v8164B, sprintf(':TRIGger:CHANnel:OUTPut %s', 'STFinished'));
%Set trigger loopback configuration - any trigger at the output
fprintf(v8164B, sprintf(':TRIGger:CONFiguration %d', 3));

%------------------------- sweep parameter updates -----------------------

%Turn On logging of wavlength values
fprintf(v8164B, sprintf(':SOURce:CHANnel:WAVelength:SWEep:LLOGging %d', 1));
%Set the sweep mode to continuous
fprintf(v8164B, sprintf(':SOURce:CHANnel:WAVelength:SWEep:MODE %s', 'CONTinuous'));
%Set source repetition mode one one-way
fprintf(v8164B, sprintf(':SOURce:CHANnel:WAVelength:SWEep:REPeat %s', 'ONEWay'));
%Set the number of sweep cycles to one
fprintf(v8164B, sprintf(':SOURce:CHANnel:WAVelength:SWEep:CYCLes %d', 1));
%Set the dwell time at each wavlength to zero (it's a continuous sweep)
fprintf(v8164B, sprintf(':SOURce:CHANnel:WAVelength:SWEep:DWELl 0.0000 MS'));
%Set the sweep speed (selected previously)
fprintf(v8164B, sprintf(':SOURce:CHANnel:WAVelength:SWEep:SPEed %.5f NM/S', speed));
%Set the sweep start wavelength
fprintf(v8164B, sprintf(':SOURce:CHANnel:WAVelength:SWEep:STARt %.5f NM', startw));
%Set the sweep stop wavelength
fprintf(v8164B, sprintf(':SOURce:CHANnel:WAVelength:SWEep:STOP %.5f NM', stopw));
%Set the sweep wavelength step size
fprintf(v8164B, sprintf(':SOURce:CHANnel:WAVelength:SWEep:STEP:WIDTh %.5f NM', stepw));

%% setup 2 - detector

%------------------------- Trigger setup -----------------------
%Trigger: Disable Detector output triggers
% fprintf(N7744A, sprintf(':TRIGger:CHANnel:OUTPut %s', 'AVGover'));
fprintf(N7744A, sprintf(':TRIGger:CHANnel:OUTPut %s', 'DISabled'));

%Trigger: Perform one detector measurment
fprintf(N7744A, sprintf(':TRIGger:CHANnel:INPut %s', 'SMEasure'));
%Set the default trigger connector configuration
fprintf(N7744A, sprintf(':TRIGger:CONFiguration %d', 3));

%Set trigger software system to continuous measurment mode
fprintf(N7744A, sprintf(':INITiate:CHANnel:CONTinuous %d', 1));

%------------------------- sweep parameter updates -----------------------
%Set the detector wavelength
fprintf(N7744A, sprintf(':SENSe:CHANnel:POWer:WAVelength %.5f NM', startw));
%Set the detector averaging time
fprintf(N7744A, sprintf(':SENSe:CHANnel:POWer:ATIMe %.5e S', atime));
%Setup the detector logging operation with the number of points and averaging time
fprintf(N7744A, sprintf(':SENSe:CHANnel:FUNCtion:PARameter:LOGGing %d, %.5e S', Np, atime));
%Set detector units
fprintf(N7744A, sprintf(':SENSe:CHANnel:POWer:UNIT %s', 'dbm'));
%Turn off the logging function
fprintf(N7744A, sprintf(':SENSe:CHANnel:FUNCtion:STATe %s,%s', 'LOGGing', 'STOP'));

%Turn ON auto-range
fprintf(N7744A, sprintf(':SENSe:CHANnel:POWer:RANGe:AUTO %d', 1));

%Start the detector logging
fprintf(N7744A, sprintf(':SENSe:CHANnel:FUNCtion:STATe %s,%s', 'LOGGing', 'STARt'));

%Turn On logging of wavelength values
fprintf(v8164B, sprintf(':SOURce:CHANnel:WAVelength:SWEep:LLOGging %d', 1));
opc2 = sscanf(query(v8164B, '*OPC?'), '%d');

%Start the wavelength sweep
fprintf(v8164B, sprintf(':SOURce:CHANnel:WAVelength:SWEep:STATe %s', '1'));

%Read the wavelength values
fprintf(v8164B, sprintf(':SOURce:CHANnel:READout:DATA? %s', 'LLOGging'));

%One more read (there's a terminator left in the buffer)...

%Read the power values
fprintf(N7744A, ':SENSe:CHANnel:FUNCtion:RESult?');