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]);
|
ax1 = nexttile([2,1]);
|
||||||
hold on;
|
hold on;
|
||||||
plot(f, abs(squeeze(freqresp(G_m1_vc(1,1), f, 'Hz'))), 'color', colors(1,:), ...
|
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,:), ...
|
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,:), ...
|
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 i = 1:5
|
||||||
for j = i+1:6
|
for j = i+1:6
|
||||||
plot(f, abs(squeeze(freqresp(G_m1_vc(i,j), f, 'Hz'))), 'color', [colors(1,:), 0.2], ...
|
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\}}$');
|
'DisplayName', '$R_{z,\{K\}}/F_{x,\{K\}}$');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Kagnitude');
|
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
||||||
ylim([1e-10, 1e-3]);
|
ylim([1e-10, 1e-3]);
|
||||||
leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
|
leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
|
||||||
leg.ItemTokenSize(1) = 18;
|
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, '/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/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/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', [], '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 = linearize(mdl, io);
|
||||||
Gd.InputName = {...
|
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));
|
rms_unit_asd_adc = sqrt(sum((unit_asd.*abs(squeeze(freqresp(Gd('z', 'nad1' ), freqs, 'Hz'))).').^2));
|
||||||
|
|
||||||
% Obtained maximum ASD for different instruments
|
% Obtained maximum ASD for different instruments
|
||||||
max_dac_asd = max_asd_z./rms_unit_asd_dac; % [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_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_adc_asd = max_asd_z./rms_unit_asd_adc % [V/sqrt(Hz)]
|
||||||
|
|
||||||
% Estimation of the equivalent RMS noise
|
% Estimation of the equivalent RMS noise
|
||||||
max_dac_rms = 1e3*max_dac_asd*sqrt(5e3) % [mV RMS]
|
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]);
|
ax1 = nexttile([2,1]);
|
||||||
hold on;
|
hold on;
|
||||||
plot(f, abs(G_dac_adc), 'color', colors(2,:), 'DisplayName', 'Measurement');
|
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'))), 'k--', 'DisplayName', 'Pure Delay');
|
plot(f, abs(squeeze(freqresp(G_delay, f, 'Hz'))), '--', 'color', colors(1,:), 'DisplayName', 'Pure Delay');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Amplitude [V/V]'); set(gca, 'XTickLabel',[]);
|
ylabel('Amplitude [V/V]'); set(gca, 'XTickLabel',[]);
|
||||||
@@ -294,8 +294,8 @@ leg.ItemTokenSize(1) = 15;
|
|||||||
|
|
||||||
ax2 = nexttile();
|
ax2 = nexttile();
|
||||||
hold on;
|
hold on;
|
||||||
plot(f, 180/pi*unwrap(angle(G_dac_adc)), 'color', colors(2,:));
|
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')))), 'k--', 'DisplayName', 'Pure Delay');
|
plot(f, 180/pi*unwrap(angle(squeeze(freqresp(G_delay, f, 'Hz')))), '--', 'color', colors(1,:));
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
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}$]');
|
xlabel('Frequency [Hz]'); ylabel('ASD [$V/\sqrt{Hz}$]');
|
||||||
leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1);
|
leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1);
|
||||||
leg.ItemTokenSize(1) = 15;
|
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])
|
xticks([1e0, 1e1, 1e2, 1e3])
|
||||||
|
|
||||||
%% Load all the measurements
|
%% Load all the measurements
|
||||||
|
@@ -204,10 +204,6 @@ wc = 2*pi*5; % [rad/s]
|
|||||||
% Integrator
|
% Integrator
|
||||||
H_int = wc/s;
|
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
|
% Low Pass filter to increase robustness
|
||||||
H_lpf = 1/(1 + s/2/pi/30);
|
H_lpf = 1/(1 + s/2/pi/30);
|
||||||
|
|
||||||
|
@@ -307,7 +307,7 @@ win = hanning(Nfft);
|
|||||||
Noverlap = floor(Nfft/2);
|
Noverlap = floor(Nfft/2);
|
||||||
|
|
||||||
%% Open-Loop measurement
|
%% 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];
|
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,:);
|
data_ol_Wz180.Dx_int = a(1,:);
|
||||||
|
Reference in New Issue
Block a user