Compare commits
	
		
			5 Commits
		
	
	
		
			72618f3bc6
			...
			5262c4a460
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 5262c4a460 | |||
| e55ca8b01a | |||
| c004fabe7d | |||
| 45b910444f | |||
| 3602c8ab08 | 
@@ -507,11 +507,11 @@ tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
 | 
			
		||||
ax1 = nexttile([2,1]);
 | 
			
		||||
hold on;
 | 
			
		||||
plot(f, abs(squeeze(freqresp(G_m1_vc(1,1), f, 'Hz'))), 'color', colors(1,:), ...
 | 
			
		||||
     'DisplayName', '$f_{ni}/f_i$ - $\Omega_z = 0$')
 | 
			
		||||
     'DisplayName', '$\epsilon_{\mathcal{L}i}/f_i$ - $\Omega_z = 0$')
 | 
			
		||||
plot(f, abs(squeeze(freqresp(G_m1_vc_Rz_slow(1,1), f, 'Hz'))), 'color', colors(2,:), ...
 | 
			
		||||
     'DisplayName', '$f_{ni}/f_i$ - $\Omega_z = 36$ deg/s')
 | 
			
		||||
     'DisplayName', '$\epsilon_{\mathcal{L}i}/f_i$ - $\Omega_z = 36$ deg/s')
 | 
			
		||||
plot(f, abs(squeeze(freqresp(G_m1_vc_Rz_fast(1,1), f, 'Hz'))), 'color', colors(3,:), ...
 | 
			
		||||
     'DisplayName', '$f_{ni}/f_i$ - $\Omega_z = 360$ deg/s')
 | 
			
		||||
     'DisplayName', '$\epsilon_{\mathcal{L}i}/f_i$ - $\Omega_z = 360$ deg/s')
 | 
			
		||||
for i = 1:5
 | 
			
		||||
    for j = i+1:6
 | 
			
		||||
        plot(f, abs(squeeze(freqresp(G_m1_vc(i,j), f, 'Hz'))), 'color', [colors(1,:), 0.2], ...
 | 
			
		||||
 
 | 
			
		||||
@@ -131,7 +131,7 @@ plot(freqs, abs(squeeze(freqresp(G_CoK(3, 1), freqs, 'Hz'))), 'color', [0,0,0,0.
 | 
			
		||||
     'DisplayName', '$R_{z,\{K\}}/F_{x,\{K\}}$');
 | 
			
		||||
hold off;
 | 
			
		||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
xlabel('Frequency [Hz]'); ylabel('Kagnitude');
 | 
			
		||||
xlabel('Frequency [Hz]'); ylabel('Magnitude');
 | 
			
		||||
ylim([1e-10, 1e-3]);
 | 
			
		||||
leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
 | 
			
		||||
leg.ItemTokenSize(1) = 18;
 | 
			
		||||
 
 | 
			
		||||
@@ -68,8 +68,8 @@ io(io_i) = linio([mdl, '/dac_noise'],      1, 'input'); io_i = io_i + 1; % DAC n
 | 
			
		||||
io(io_i) = linio([mdl, '/amp_noise'],      1, 'input'); io_i = io_i + 1; % Voltage Amplifier noise [V]
 | 
			
		||||
io(io_i) = linio([mdl, '/NASS/adc_noise'], 1, 'input'); io_i = io_i + 1; % ADC noise [V]
 | 
			
		||||
io(io_i) = linio([mdl, '/NASS/enc_noise'], 1, 'input'); io_i = io_i + 1; % Encoder noise [m]
 | 
			
		||||
io(io_i) = linio([mdl, '/NASS'],           2, 'output', [], 'z');  io_i = io_i + 1; % Vertical error [m]
 | 
			
		||||
io(io_i) = linio([mdl, '/NASS'],           2, 'output', [], 'y');  io_i = io_i + 1; % Lateral error [m]
 | 
			
		||||
io(io_i) = linio([mdl, '/NASS'],           2, 'output', [], 'z');  io_i = io_i + 1; % Vertical error [m]
 | 
			
		||||
 | 
			
		||||
Gd = linearize(mdl, io);
 | 
			
		||||
Gd.InputName  = {...
 | 
			
		||||
@@ -114,9 +114,9 @@ rms_unit_asd_amp = sqrt(sum((unit_asd.*abs(squeeze(freqresp(Gd('z', 'namp1'), fr
 | 
			
		||||
rms_unit_asd_adc = sqrt(sum((unit_asd.*abs(squeeze(freqresp(Gd('z', 'nad1' ), freqs, 'Hz'))).').^2));
 | 
			
		||||
 | 
			
		||||
% Obtained maximum ASD for different instruments
 | 
			
		||||
max_dac_asd = max_asd_z./rms_unit_asd_dac; % [V/sqrt(Hz)]
 | 
			
		||||
max_amp_asd = max_asd_z./rms_unit_asd_amp; % [V/sqrt(Hz)]
 | 
			
		||||
max_adc_asd = max_asd_z./rms_unit_asd_adc; % [V/sqrt(Hz)]
 | 
			
		||||
max_dac_asd = max_asd_z./rms_unit_asd_dac % [V/sqrt(Hz)]
 | 
			
		||||
max_amp_asd = max_asd_z./rms_unit_asd_amp % [V/sqrt(Hz)]
 | 
			
		||||
max_adc_asd = max_asd_z./rms_unit_asd_adc % [V/sqrt(Hz)]
 | 
			
		||||
 | 
			
		||||
% Estimation of the equivalent RMS noise
 | 
			
		||||
max_dac_rms = 1e3*max_dac_asd*sqrt(5e3) % [mV RMS]
 | 
			
		||||
 
 | 
			
		||||
@@ -283,8 +283,8 @@ tiledlayout(3, 1, 'TileSpacing', 'compact', 'Padding', 'None');
 | 
			
		||||
 | 
			
		||||
ax1 = nexttile([2,1]);
 | 
			
		||||
hold on;
 | 
			
		||||
plot(f, abs(G_dac_adc), 'color', colors(2,:), 'DisplayName', 'Measurement');
 | 
			
		||||
plot(f, abs(squeeze(freqresp(G_delay, f, 'Hz'))), 'k--', 'DisplayName', 'Pure Delay');
 | 
			
		||||
plot(f, abs(G_dac_adc), 'color', [colors(1,:), 0.5], 'linewidth', 2.5, 'DisplayName', 'Measurement');
 | 
			
		||||
plot(f, abs(squeeze(freqresp(G_delay, f, 'Hz'))), '--', 'color', colors(1,:), 'DisplayName', 'Pure Delay');
 | 
			
		||||
hold off;
 | 
			
		||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
ylabel('Amplitude [V/V]'); set(gca, 'XTickLabel',[]);
 | 
			
		||||
@@ -294,8 +294,8 @@ leg.ItemTokenSize(1) = 15;
 | 
			
		||||
 | 
			
		||||
ax2 = nexttile();
 | 
			
		||||
hold on;
 | 
			
		||||
plot(f, 180/pi*unwrap(angle(G_dac_adc)), 'color', colors(2,:));
 | 
			
		||||
plot(f, 180/pi*unwrap(angle(squeeze(freqresp(G_delay, f, 'Hz')))), 'k--', 'DisplayName', 'Pure Delay');
 | 
			
		||||
plot(f, 180/pi*unwrap(angle(G_dac_adc)), 'color', [colors(1,:), 0.5], 'linewidth', 2.5);
 | 
			
		||||
plot(f, 180/pi*unwrap(angle(squeeze(freqresp(G_delay, f, 'Hz')))), '--', 'color', colors(1,:));
 | 
			
		||||
hold off;
 | 
			
		||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
 | 
			
		||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
 | 
			
		||||
@@ -353,7 +353,7 @@ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
xlabel('Frequency [Hz]'); ylabel('ASD [$V/\sqrt{Hz}$]');
 | 
			
		||||
leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1);
 | 
			
		||||
leg.ItemTokenSize(1) = 15;
 | 
			
		||||
ylim([1e-10, 4e-4]); xlim([1, 5e3]);
 | 
			
		||||
ylim([1e-10, 1e-3]); xlim([1, 5e3]);
 | 
			
		||||
xticks([1e0, 1e1, 1e2, 1e3])
 | 
			
		||||
 | 
			
		||||
%% Load all the measurements
 | 
			
		||||
 
 | 
			
		||||
@@ -204,10 +204,6 @@ wc = 2*pi*5; % [rad/s]
 | 
			
		||||
% Integrator
 | 
			
		||||
H_int = wc/s;
 | 
			
		||||
 | 
			
		||||
% Lead to increase phase margin
 | 
			
		||||
a  = 2;  % Amount of phase lead / width of the phase lead / high frequency gain
 | 
			
		||||
H_lead = 1/sqrt(a)*(1 + s/(wc/sqrt(a)))/(1 + s/(wc*sqrt(a)));
 | 
			
		||||
 | 
			
		||||
% Low Pass filter to increase robustness
 | 
			
		||||
H_lpf = 1/(1 + s/2/pi/30);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -307,7 +307,7 @@ win = hanning(Nfft);
 | 
			
		||||
Noverlap = floor(Nfft/2);
 | 
			
		||||
 | 
			
		||||
%% Open-Loop measurement
 | 
			
		||||
data_ol_Wz180 = load('2023-08-11_16-51_m0_lac_off.mat'); % no rotation
 | 
			
		||||
data_ol_Wz180 = load('2023-08-11_17-39_m0_lac_off_30rpm.mat');
 | 
			
		||||
 | 
			
		||||
a = J_int_to_X*[data_ol_Wz180.d1; data_ol_Wz180.d2; data_ol_Wz180.d3; data_ol_Wz180.d4; data_ol_Wz180.d5];
 | 
			
		||||
data_ol_Wz180.Dx_int = a(1,:);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user