72 lines
1.8 KiB
Mathematica
72 lines
1.8 KiB
Mathematica
|
% 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)]);
|