CLEANUP - changes to folder structure
This commit is contained in:
15
projects/Lab_basic_control/awg_test.m
Normal file
15
projects/Lab_basic_control/awg_test.m
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
if 0
|
||||
|
||||
AWG = AwgKeysight("model","M8196A","fdac",92e9,"scaletodac",[1,1,1,1],"skews",[0,0,0,0],"voltages",[0,0,0,0.6]);
|
||||
|
||||
tx_sig = Electricalsignal(clip_out,"fs",92e9);
|
||||
|
||||
tic
|
||||
AWG.upload("signal4",clip_out);
|
||||
toc
|
||||
|
||||
end
|
||||
|
||||
SCP = ScopeKeysight("model","DSAZ634A",'autoscale',1,"fadc",'GSa_160',"channel",[1],"recordLen",2000000);
|
||||
signals = SCP.read();
|
||||
BIN
projects/Lab_basic_control/exfo_control_app.mlapp
Normal file
BIN
projects/Lab_basic_control/exfo_control_app.mlapp
Normal file
Binary file not shown.
15
projects/Lab_basic_control/exfo_laser_example.m
Normal file
15
projects/Lab_basic_control/exfo_laser_example.m
Normal file
@@ -0,0 +1,15 @@
|
||||
%% Laser
|
||||
start_wavelength = 1310;
|
||||
laser = Exfo_laser("mainframe_channel",1,"safety_mode",0,"connection_id",'10','lab_interface','gpib');
|
||||
laser.getLaserInfo();
|
||||
|
||||
laser.setWavelength(start_wavelength)
|
||||
laser.setPower(0);
|
||||
|
||||
laser.enableLaser();
|
||||
% for l = 1550:1560
|
||||
% laser.setWavelength(l);
|
||||
% end
|
||||
|
||||
laser.disableLaser();
|
||||
|
||||
74
projects/Lab_basic_control/olaf_control.m
Normal file
74
projects/Lab_basic_control/olaf_control.m
Normal file
@@ -0,0 +1,74 @@
|
||||
|
||||
clear all
|
||||
|
||||
visastring = "GPIB0::22::INSTR";
|
||||
v_pwrmtr = visadev(visastring);
|
||||
writeline(v_pwrmtr, "*IDN?");
|
||||
answ = readline(v_pwrmtr);
|
||||
disp(['Yay! We can talk to Instrument: ',char(answ)]);
|
||||
|
||||
% laser = Exfo_laser("mainframe_channel",3,"safety_mode",0,"connection_id",'15','lab_interface','gpib');
|
||||
% laser.getLaserInfo();
|
||||
|
||||
L = OptLaserN7714A("GPIB0::20::INSTR");
|
||||
|
||||
% visastring = 'GPIB0::10::INSTR';
|
||||
% v_lsr = visadev(visastring);
|
||||
% writeline(v_lsr, "*IDN?");
|
||||
% answ = readline(v_lsr);
|
||||
% disp(['Yay! We can talk to Instrument: ',char(answ)]);
|
||||
|
||||
steps = 100;
|
||||
wavelength_sweep = linspace(1554,1556,steps);
|
||||
start_wavelength = wavelength_sweep(1);
|
||||
|
||||
% laser.setWavelength(start_wavelength);
|
||||
L.setWavelength(start_wavelength,0);
|
||||
% laser.setPower(0);
|
||||
% laser.enableLaser();
|
||||
L.setPower(0, true,0);
|
||||
|
||||
|
||||
pwr_save = NaN(size(wavelength_sweep));
|
||||
for l = 1:numel(wavelength_sweep)
|
||||
|
||||
% 1)
|
||||
% laser.setWavelength(wavelength_sweep(l));
|
||||
L.setWavelength(wavelength_sweep(l),0);
|
||||
%writeline(v_lsr, ['L=' num2str(wavelength_sweep(l))]);
|
||||
|
||||
% 2) Set Wavelength of Power Meter
|
||||
t = string(['SENS2:POW:WAVE ',num2str(wavelength_sweep(l)),'NM']);
|
||||
writeline(v_pwrmtr, t);
|
||||
% writeline(v, "SENS:POW:WAVE?");
|
||||
% wavel = readline(v);
|
||||
|
||||
% 3) Read Power of
|
||||
writeline(v_pwrmtr, "READ2:POW?");
|
||||
pwr = readline(v_pwrmtr);
|
||||
pwr_save(l) = str2num(pwr);
|
||||
|
||||
figure(2025);clf
|
||||
plot(wavelength_sweep,pwr_save,'Marker','*');
|
||||
xlabel('Wavelength [nm]');
|
||||
ylabel('Insertion Loss [dB]');
|
||||
ylim([min(pwr_save)-1, min(pwr_save)+1]);
|
||||
xlim([wavelength_sweep(1) wavelength_sweep(end)])
|
||||
grid minor
|
||||
|
||||
end
|
||||
|
||||
% laser.disableLaser();
|
||||
L.setPower(0, false,0);
|
||||
L.delete();
|
||||
|
||||
%writeline(v_lsr, 'DISABLE');
|
||||
|
||||
path= "Z:\2025\NFT WDM DFG Olaf\lambda_vs_power";
|
||||
|
||||
dt = datetime('now','Format','yyyyMMdd_HHmmss');
|
||||
filename = fullfile(path, "loop_5_7_"+num2str(wavelength_sweep(1)) +"nm_to_"+ num2str(wavelength_sweep(end))+ "nm_" + string(dt) + ".mat");
|
||||
|
||||
save(filename, "pwr_save","wavelength_sweep");
|
||||
|
||||
disp("Saved to: " + filename);
|
||||
@@ -0,0 +1,61 @@
|
||||
|
||||
clear all
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
start_wavelength = 1554.2; %nm
|
||||
stop_wavelength = 1555.7; %nm
|
||||
steps = 100;
|
||||
power = 0; %dBm
|
||||
name = "south_board_total_loss_ports_21_20";
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
wavelength_sweep = linspace(start_wavelength,stop_wavelength,steps);
|
||||
wavelength_1 = wavelength_sweep(1);
|
||||
|
||||
visastring = "GPIB0::22::INSTR";
|
||||
v_pwrmtr = visadev(visastring);
|
||||
%writeline(v_pwrmtr, "*IDN?");
|
||||
%answ = readline(v_pwrmtr);
|
||||
%disp(['Yay! We can talk to Instrument: ',char(answ)]);
|
||||
|
||||
L = OptLaserN7714A("GPIB0::20::INSTR");
|
||||
L.setWavelength(wavelength_1,0);
|
||||
L.setPower(power, true,0);
|
||||
|
||||
pwr_save = NaN(size(wavelength_sweep));
|
||||
for l = 1:numel(wavelength_sweep)
|
||||
|
||||
% 1)
|
||||
L.setWavelength(wavelength_sweep(l),0);
|
||||
|
||||
% 2) Set Wavelength of Power Meter
|
||||
t = string(['SENS1:POW:WAVE ',num2str(wavelength_sweep(l)),'NM']);
|
||||
writeline(v_pwrmtr, t);
|
||||
|
||||
% 3) Read Power of
|
||||
writeline(v_pwrmtr, "READ1:POW?");
|
||||
pwr = readline(v_pwrmtr);
|
||||
pwr_save(l) = str2num(pwr);
|
||||
|
||||
figure(2026);clf
|
||||
plot(wavelength_sweep,pwr_save,'Marker','*');
|
||||
xlabel('Wavelength [nm]');
|
||||
ylabel('Insertion Loss [dB]');
|
||||
ylim([min(pwr_save)-1, max(pwr_save)+1]);
|
||||
xlim([wavelength_sweep(1) wavelength_sweep(eind)])
|
||||
grid minor
|
||||
end
|
||||
|
||||
L.setPower(0, false,0);
|
||||
L.delete();
|
||||
|
||||
path= "Z:\2025\NFT WDM DFG Olaf\lambda_vs_power";
|
||||
|
||||
dt = datetime('now','Format','yyyyMMdd_HHmmss');
|
||||
filename = fullfile(path, name+"_"+replace(num2str(wavelength_sweep(1)),".","_") +"nm_to_"+ replace(num2str(wavelength_sweep(end)),".","_")+ "nm_" + string(dt) + ".mat");
|
||||
|
||||
save(filename, "pwr_save","wavelength_sweep");
|
||||
|
||||
disp("Saved to: " + filename);
|
||||
21
projects/Lab_basic_control/olaf_laser_control.m
Normal file
21
projects/Lab_basic_control/olaf_laser_control.m
Normal file
@@ -0,0 +1,21 @@
|
||||
clear all
|
||||
|
||||
% L = OptLaserN7714A("TCPIP0::134.245.243.209::inst0::INSTR");
|
||||
% L.setWavelength(1551,1); % nm
|
||||
% L.setPower(5.8, true,1); % dBm, also turns output ON
|
||||
% L.setDither(0,1);
|
||||
% % L.setPower(5.9, false,1);
|
||||
% info = L.getLaserInfo();
|
||||
%
|
||||
% L.delete();
|
||||
|
||||
|
||||
clear all
|
||||
|
||||
L = OptLaserN7714A("GPIB0::20::INSTR");
|
||||
L.setWavelength(1550,0); % nm
|
||||
L.setPower(0, true,0); % dBm, also turns output ON
|
||||
L.setPower(0, false,0);
|
||||
info = L.getLaserInfo();
|
||||
|
||||
L.delete();
|
||||
29
projects/Lab_basic_control/olaf_laser_control_minimal.m
Normal file
29
projects/Lab_basic_control/olaf_laser_control_minimal.m
Normal file
@@ -0,0 +1,29 @@
|
||||
% --- Minimal N7714A example (MATLAB) ---
|
||||
visa_addr = "TCPIP0::134.245.243.209::inst0::INSTR"; % <-- change to your laser's IP
|
||||
port = 1; % 1..4 selects the N7714A output port
|
||||
|
||||
% v = visadev(visa_addr);
|
||||
|
||||
% Identify instrument
|
||||
writeline(v,'*IDN?'); disp(strtrim(readline(v)));
|
||||
|
||||
% Make sure wavelength is settable (Auto mode)
|
||||
writeline(v, sprintf('SOUR%d:WAV:AUTO 1', port)); % Auto Mode ON (wavelength set allowed).
|
||||
|
||||
% Set wavelength and power (units explicit)
|
||||
writeline(v, sprintf('SOUR%d:WAV 1560NM', port)); % set 1550 nm. :contentReference[oaicite:3]{index=3}
|
||||
writeline(v, sprintf('SOUR%d:POW:UNIT DBM', port)); % power unit = dBm. :contentReference[oaicite:4]{index=4}
|
||||
writeline(v, sprintf('SOUR%d:POW:LEV:IMM:AMPL 6 DBM', port)); % set -3 dBm. :contentReference[oaicite:5]{index=5}
|
||||
|
||||
% Enable output (either OUTP or SOUR:POW:STAT works)
|
||||
writeline(v, sprintf('OUTP%d:STAT ON', port)); % laser ON. :contentReference[oaicite:6]{index=6}
|
||||
writeline(v, 'OUTP1 ON');
|
||||
|
||||
% ---- Read back to verify ----
|
||||
writeline(v, sprintf('SOUR%d:WAV?', port)); wav_m = str2double(readline(v));
|
||||
writeline(v, sprintf('SOUR%d:POW:LEV:IMM:AMPL?', port)); pow = str2double(readline(v));
|
||||
writeline(v, sprintf('OUTP%d:ON?', port)); onoff = str2double(readline(v));
|
||||
|
||||
fprintf('Port %d -> %.2f nm, %.2f dBm, Output=%d\n', port, 1e9*wav_m, pow, onoff);
|
||||
|
||||
delete(v);
|
||||
@@ -0,0 +1,2 @@
|
||||
L.setPower(power, false,0);
|
||||
L.delete();
|
||||
@@ -0,0 +1,19 @@
|
||||
clear all
|
||||
|
||||
% 1554.7097
|
||||
% 1554.9032
|
||||
% 1555.0968
|
||||
% 1555.2904
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
wavelength = 1555.0968; %nm
|
||||
power = 6; %dBm
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
L = OptLaserN7714A("GPIB0::20::INSTR");
|
||||
|
||||
L.setWavelength(wavelength,0);
|
||||
L.setPower(power, true,0);
|
||||
45
projects/Lab_basic_control/test_device_control.m
Normal file
45
projects/Lab_basic_control/test_device_control.m
Normal file
@@ -0,0 +1,45 @@
|
||||
|
||||
%% DC Source
|
||||
desired_voltage = 2.8;
|
||||
dcs = DC_supply("active",[1,0],"voltage",[desired_voltage, 0]);
|
||||
dcs.set("voltage",[desired_voltage, 0]);
|
||||
[v,i]=dcs.readVals();
|
||||
|
||||
%% Laser
|
||||
desired_wavelength = 1310;
|
||||
laser = Exfo_laser("mainframe_channel",1,"safety_mode",0,"connection_id",'10','lab_interface','gpib');
|
||||
laser.setWavelength(desired_wavelength);
|
||||
laser.setPower(10);
|
||||
laser.enableLaser();
|
||||
|
||||
%% Optical Attenuator
|
||||
voa = OptAtten("active",[0,0,2,0],"value",[0,0,-5,0],"wavelength",[desired_wavelength,desired_wavelength,desired_wavelength,desired_wavelength]);
|
||||
voa.set('value',[0,0,3,0]);
|
||||
|
||||
%% Construct AWG and Scope Modules %%%%%%
|
||||
fdac = 256e9;
|
||||
fadc = 160e9;
|
||||
Scp = ScopeKeysight("model","DSAZ634A",'autoscale',1,"fadc","GSa_160","channel",[0,0,1,0],"recordLen",4000000,"removeDC",1,"extRef",1);
|
||||
Awg = AwgKeysight("model","M8199A_ILV","fdac",fdac,"scaletodac",[1,1],"skews",[0,0],"voltages",[0,0.8]);
|
||||
A2S = Awg2Scope(Awg,Scp,[0,0,3,0],"waitUntilClick",0); %
|
||||
|
||||
%%%%% Symbol Generation %%%%%%
|
||||
fsym = 56e9;
|
||||
M = 4;
|
||||
rcalpha = 0.2;
|
||||
Pform = Pulseformer("fsym",fsym,"fdac",4*fsym,"pulse","rrc","pulselength",16,"rrcalpha",rcalpha);
|
||||
|
||||
Pamsource = PAMsource(...
|
||||
"fsym",fsym,"M",M,"order",17,"useprbs",1,...
|
||||
"fs_out",fdac,...
|
||||
"applyclipping",0,"clipfactor",4,...
|
||||
"applypulseform",1,"pulseformer",Pform,...
|
||||
"randkey",1,...
|
||||
"db_precode",0,"db_encode",0,...
|
||||
"mrds_code",0,"mrds_blocklength",512);
|
||||
|
||||
tx_signal = Pamsource.process();
|
||||
tx_signal.spectrum("displayname",'Tx Spectrum','fignum',10,'normalizeTo0dB',0);
|
||||
|
||||
[S1,S2,S3,S4] = A2S.process("signal2",tx_signal);
|
||||
S3.spectrum("displayname",'Rx Spectrum','fignum',10,'normalizeTo0dB',0);
|
||||
Reference in New Issue
Block a user