69 lines
2.7 KiB
Matlab
69 lines
2.7 KiB
Matlab
% Initialize a structure to hold parameters
|
|
params = struct;
|
|
|
|
% Define the bias voltage range from 1.2V to 2.8V with 0.01V increments
|
|
params.v_bias = 1.2:0.01:2.8;
|
|
|
|
% Create a DataStorage object with the defined parameters
|
|
wh = DataStorage(params);
|
|
|
|
% Add a storage field for output power measurements
|
|
wh.addStorage("p_out");
|
|
|
|
% Display the total number of measurement loops to be executed
|
|
disp(['Start Measurement of ', num2str(prod(wh.dim)), ' loops...']);
|
|
|
|
% Initialize the Optical Attenuator (VOA) with specified settings
|
|
voa = OptAtten(...
|
|
"active", [1, 0, 0, 0], ... % Activate only the first channel
|
|
"value", [0, 0, 0, 0], ... % Set attenuation values to 0 dB
|
|
"wavelength", [1310, 1310, 1310, 1310]); % Set the wavelength for each channel
|
|
|
|
% Initialize the DC Power Supply with specified settings
|
|
dcs = DC_supply(...
|
|
"active", [1, 1], ... % Activate the first two channels
|
|
"voltage", [v_bias, 9]); % Set initial voltages for channels
|
|
|
|
% Set the VOA active channels and attenuation values
|
|
voa.set('active', [1, 0, 0, 0], 'value', [0, 0, 0, 0]);
|
|
|
|
% Loop over each bias voltage value to perform measurements
|
|
for v_bias = wh.parameter.v_bias.values
|
|
try
|
|
% Try to retrieve existing output power measurement to avoid repetition
|
|
p_out = wh2.getStoValue('p_out', v_bias);
|
|
wh.addValueToStorage(p_out, 'p_out', v_bias);
|
|
catch
|
|
% If no existing measurement, proceed with the measurement
|
|
|
|
%%%%% SET Voltages %%%%%%
|
|
% Update the DC supply voltage for the current bias voltage
|
|
dcs.set("voltage", [v_bias, 9]);
|
|
|
|
%%%%% Measure VOA %%%%%%
|
|
% Read the current values from the VOA
|
|
voa.readvals();
|
|
|
|
% Store the measured output power in the DataStorage object
|
|
wh.addValueToStorage(voa.power_state(1), 'p_out', v_bias);
|
|
end
|
|
|
|
% Retrieve all stored output power measurements up to the current point
|
|
p_out = wh.getStoValue('p_out', wh.parameter.v_bias.values);
|
|
|
|
% Plot the measured output power in dBm versus the negative bias voltage
|
|
figure(90);
|
|
plot(-wh.parameter.v_bias.values(1:numel(p_out)), p_out, 'DisplayName', 'Measured Output Power in dBm');
|
|
xlim([-max(params.v_bias), -min(params.v_bias)]); % Set x-axis limits
|
|
grid on; % Enable grid for better readability
|
|
end
|
|
|
|
% After completing the measurements, retrieve all output power data
|
|
p_out = wh.getStoValue('p_out', wh.parameter.v_bias.values);
|
|
|
|
% Plot the output power converted from dBm to linear scale (Watts)
|
|
figure(91);
|
|
plot(-wh.parameter.v_bias.values(1:numel(p_out)), db2pow(p_out), 'DisplayName', 'Measured Output Power in Watts');
|
|
xlim([-max(params.v_bias), -min(params.v_bias)]); % Set x-axis limits
|
|
grid on; % Enable grid for better readability
|