Files
imdd_silas/Functions/Lab_helper/measureMZMtransferfunction.m
2025-04-08 13:29:12 +02:00

55 lines
1.2 KiB
Matlab

% Measure Bias Curve of Modulator
% 1) Loop over bias volate
% 2) measure voltgae, current and input laser power and output laser power
v_bias_range = [0:0.25:8];
v_bias_meas = NaN(size(v_range));
i_bias_meas = NaN(size(v_range));
p_out_meas = NaN(size(v_range));
%% DC Source
dcs = DC_supply("active",[1,0],"voltage",[0, 6]);
%% Optical Attenuator
voa = OptAtten("active",[0,0,2,0],"value",[0,0,0,0],"wavelength",[1550,1550,1550,1550]);
voa.set('value',[0,0,2,0]);
voa.readvals();
for i = 1:numel(v_bias_range)
dcs.set('voltage',[v_bias_range(i),6]);
% pause(1);
[p1,p2,p_out_meas(i),p4]= voa.readPower;
[v_meas,i_meas] = dcs.readVals;
v_bias_meas(i)=v_meas(1);
i_bias_meas(i)= i_meas(1);
figure(1)
clf
subplot(2,1,1)
hold on
plot(v_bias_meas,p_out_meas,'DisplayName','MZM TF in dB');
xlabel('V_{bias} in V');
ylabel('P_{out} in dBm');
grid on
xlim([min(v_bias_range), max(v_bias_range)])
subplot(2,1,2)
hold on
plot(v_bias_meas,db2pow(p_out_meas),'DisplayName','MZM TF in mW');
xlabel('V_{bias} in V');
ylabel('P_{out} in mW');
grid on
xlim([min(v_bias_range), max(v_bias_range)])
end