dcm-simscape-model/matlab/dcm_noise_budget.m

72 lines
1.8 KiB
Matlab

% Matlab Init :noexport:ignore:
%% dcm_noise_budget.m
% Basic uniaxial noise budgeting
%% Clear Workspace and Close figures
clear; close all; clc;
%% Intialize Laplace variable
s = zpk('s');
%% Path for functions, data and scripts
addpath('./mat/'); % Path for data
%% Simscape Model - Nano Hexapod
addpath('./STEPS/')
%% Colors for the figures
colors = colororder;
%% Frequency Vector
freqs = logspace(1, 3, 1000);
%% Frequency vector for noise budget [Hz]
f = logspace(-1, 3, 1000);
% Power Spectral Density of signals
% Interferometer noise:
Wn = 6e-11*(1 + s/2/pi/200)/(1 + s/2/pi/60); % m/sqrt(Hz)
% #+RESULTS:
% : Measurement noise: 0.79 [nm,rms]
% DAC noise (amplified by the PI voltage amplifier, and converted to newtons):
Wdac = tf(3e-8); % V/sqrt(Hz)
Wu = Wdac*22.5*10; % N/sqrt(Hz)
% #+RESULTS:
% : DAC noise: 0.95 [uV,rms]
% Disturbances:
Wd = 5e-7/(1 + s/2/pi); % m/sqrt(Hz)
%% Save ASD of noise and disturbances
save('mat/asd_noises_disturbances.mat', 'Wn', 'Wu', 'Wd');
% Open Loop disturbance and measurement noise
% The comparison of the amplitude spectral density of the measurement noise and of the jack parasitic motion is performed in Figure [[fig:open_loop_noise_budget_fast_jack]].
% It confirms that the sensor noise is low enough to measure the motion errors of the crystal.
%% Bode plot for the plant (strain gauge output)
figure;
hold on;
plot(f, abs(squeeze(freqresp(Wn, f, 'Hz'))), ...
'DisplayName', 'n');
plot(f, abs(squeeze(freqresp(Wd, f, 'Hz'))), ...
'DisplayName', 'd');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('ASD [$m/\sqrt{Hz}$]');
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 2);
xlim([f(1), f(end)]);