Add non-repeatability plots

This commit is contained in:
Thomas Dehaeze 2019-09-20 11:35:58 +02:00
parent 3e77b37759
commit 016098b327
8 changed files with 465 additions and 483 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

BIN
figs/repeat_plot_raw.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

File diff suppressed because it is too large Load Diff

223
index.org
View File

@ -2022,7 +2022,7 @@ Multiple measurements are done with different experimental configuration as foll
hold off;
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
xlabel('Frequency [Hz]');
ylabel('ASD $\left[\frac{m}{\sqrt{Hz}}\right]$');
ylabel('ASD $\left[\frac{1}{\sqrt{Hz}}\right]$');
legend('location', 'northeast');
xlim([1, 1000]);
#+end_src
@ -3011,7 +3011,9 @@ The controllers can be downloaded [[./mat/K_newport.mat][here]].
* Measurement of the non-repeatability
<<sec:non_rep_meas>>
** Introduction :ignore:
- Explanation of the procedure
The goal here is the measure the non-repeatability of the setup.
All sources of error (detailed in the budget error in Section [[sec:budget_error]]) will contribute to the non-repeatability of the system.
** Matlab Init :noexport:ignore:
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
@ -3026,7 +3028,7 @@ The controllers can be downloaded [[./mat/K_newport.mat][here]].
fs = 1e4;
#+end_src
** Data Load
** Data Load and pre-processing
#+begin_src matlab
uh = load('mat/data_rep_h.mat', ...
't', 'Uch', 'Ucv', ...
@ -3083,6 +3085,53 @@ The controllers can be downloaded [[./mat/K_newport.mat][here]].
uv.t = uv.t - uv.t(1);
#+end_src
** Some Time domain plots
#+begin_src matlab :exports none
tend = 5; % [s]
figure;
ax1 = subplot(2, 2, 1);
hold on;
plot(uh.t(1:tend*fs), uh.Unh(1:tend*fs));
hold off;
xlabel('Time [s]'); ylabel('Voltage [V]');
title('Newport Tilt - Horizontal Direction');
ax3 = subplot(2, 2, 3);
hold on;
plot(uh.t(1:tend*fs), 1e9*uh.Va(1:tend*fs));
hold off;
xlabel('Time [s]'); ylabel('Distance [nm]');
title('Attocube - Horizontal Direction');
ax2 = subplot(2, 2, 2);
hold on;
plot(uv.t(1:tend*fs), uv.Unv(1:tend*fs));
hold off;
xlabel('Time [s]'); ylabel('Voltage [V]');
title('Newport Tilt - Vertical Direction');
ax4 = subplot(2, 2, 4);
hold on;
plot(uv.t(1:tend*fs), 1e9*uv.Va(1:tend*fs));
hold off;
xlabel('Time [s]'); ylabel('Distance [nm]');
title('Attocube - Vertical Direction');
linkaxes([ax1,ax2,ax3,ax4],'x');
linkaxes([ax1,ax2],'xy');
linkaxes([ax3,ax4],'xy');
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/repeat_time_signals.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:repeat_time_signals
#+CAPTION: Time domain Signals for the repeatability measurement ([[./figs/repeat_time_signals.png][png]], [[./figs/repeat_time_signals.pdf][pdf]])
[[file:figs/repeat_time_signals.png]]
** Verify Tracking Angle Error
Let's verify that the positioning error of the beam is small and what could be the effect on the distance measured by the intereferometer.
@ -3090,7 +3139,7 @@ Let's verify that the positioning error of the beam is small and what could be t
load('./mat/plant.mat', 'Gd');
#+end_src
#+begin_src matlab
#+begin_src matlab :exports none
figure;
ax1 = subplot(1, 2, 1);
hold on;
@ -3113,6 +3162,15 @@ Let's verify that the positioning error of the beam is small and what could be t
linkaxes([ax1,ax2],'xy');
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/repeat_tracking_errors.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:repeat_tracking_errors
#+CAPTION: Tracking errors during the repeatability measurement ([[./figs/repeat_tracking_errors.png][png]], [[./figs/repeat_tracking_errors.pdf][pdf]])
[[file:figs/repeat_tracking_errors.png]]
Let's compute the PSD of the error to see the frequency content.
#+begin_src matlab
@ -3148,6 +3206,16 @@ Let's compute the PSD of the error to see the frequency content.
xlim([1, 1000]);
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/psd_tracking_error_rad.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:psd_tracking_error_rad
#+CAPTION: Power Spectral Density of the tracking errors ([[./figs/psd_tracking_error_rad.png][png]], [[./figs/psd_tracking_error_rad.pdf][pdf]])
[[file:figs/psd_tracking_error_rad.png]]
Let's convert that to errors in distance
\[ \Delta L = L^\prime - L = \frac{L}{\cos(\alpha)} - L \approx \frac{L \alpha^2}{2} \]
@ -3167,33 +3235,7 @@ with
[psd_UvLv, ~] = pwelch(0.5*L*(uv.Vpv/freqresp(Gd(2,2), 0)).^2, hanning(ceil(1*fs)), [], [], fs);
#+end_src
#+begin_src matlab :exports none
figure;
ax1 = subplot(1, 2, 1);
hold on;
plot(f, sqrt(psd_UhLh), 'DisplayName', '$\Gamma_{L_h}$');
plot(f, sqrt(psd_UhLv), 'DisplayName', '$\Gamma_{L_v}$');
hold off;
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('ASD $\left[\frac{m}{\sqrt{Hz}}\right]$')
legend('Location', 'southwest');
title('Newport Tilt - Horizontal Direction');
ax2 = subplot(1, 2, 2);
hold on;
plot(f, sqrt(psd_UvLh), 'DisplayName', '$\Gamma_{L_h}$');
plot(f, sqrt(psd_UvLv), 'DisplayName', '$\Gamma_{L_v}$');
hold off;
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('ASD $\left[\frac{m}{\sqrt{Hz}}\right]$')
legend('Location', 'southwest');
title('Newport Tilt - Vertical Direction');
linkaxes([ax1,ax2],'xy');
xlim([1, 1000]);
#+end_src
Now, compare that with the PSD of the measured distance by the interferometer.
Now, compare that with the PSD of the measured distance by the interferometer (Fig. [[fig:compare_tracking_error_attocube_meas]]).
#+begin_src matlab
[psd_Lh, f] = pwelch(uh.Va, hanning(ceil(1*fs)), [], [], fs);
[psd_Lv, ~] = pwelch(uv.Va, hanning(ceil(1*fs)), [], [], fs);
@ -3227,6 +3269,19 @@ Now, compare that with the PSD of the measured distance by the interferometer.
xlim([1, 1000]);
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/compare_tracking_error_attocube_meas.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:compare_tracking_error_attocube_meas
#+CAPTION: Comparison of the effect of tracking error on the measured distance and the measured distance by the Attocube ([[./figs/compare_tracking_error_attocube_meas.png][png]], [[./figs/compare_tracking_error_attocube_meas.pdf][pdf]])
[[file:figs/compare_tracking_error_attocube_meas.png]]
#+begin_important
The tracking errors are a limiting factor.
#+end_important
** Processing
First, we get the mean value as measured by the interferometer for each value of the Newport angle.
#+begin_src matlab
@ -3252,8 +3307,20 @@ First, we get the mean value as measured by the interferometer for each value of
plot(Unvm, Vavm)
hold off;
xlabel('$V_{n,v}$ [V]'); ylabel('$V_a$ [m]');
linkaxes([ax1,ax2],'xy');
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/repeat_plot_raw.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:repeat_plot_raw
#+CAPTION: Repeatability of the measurement ([[./figs/repeat_plot_raw.png][png]], [[./figs/repeat_plot_raw.pdf][pdf]])
[[file:figs/repeat_plot_raw.png]]
#+begin_src matlab :exports none
figure;
ax1 = subplot(1, 2, 1);
@ -3272,93 +3339,11 @@ First, we get the mean value as measured by the interferometer for each value of
ylim([-100 100]);
#+end_src
We then subtract
#+begin_src matlab
figure;
hold on;
plot(uh.Unh, 1e9*(uh.Va - repmat(Vam, length(uh.t)/length(Vam),1)))
hold off;
xlabel('$V_{n,h}$ [V]'); ylabel('$V_a$ [nm]');
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/repeat_plot_subtract_mean.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
** Some Plots
#+begin_src matlab
figure;
hold on;
plot(uh.Unh, uh.Va);
plot(Unhm, Vam)
hold off;
xlabel('$V_{n,h}$ [V]'); ylabel('$V_a$ [m]');
#+end_src
#+begin_src matlab :exports none
figure;
ax1 = subplot(1, 2, 1);
hold on;
plot(uh.Vnh(1:fs/2), uh.Va(1:fs/2));
hold off;
xlabel('$V_{n,h}$ [V]'); ylabel('$V_a$ [m]');
ax2 = subplot(1, 2, 2);
hold on;
plot(uv.Vnv, uv.Va);
hold off;
xlabel('$V_{n,v}$ [V]'); ylabel('$V_a$ [m]');
#+end_src
#+begin_src matlab :exports none
figure;
ax1 = subplot(1, 2, 1);
hold on;
plot(uh.Vnh, uh.Va);
hold off;
xlabel('$V_{n,h}$ [V]'); ylabel('$V_a$ [m]');
ax2 = subplot(1, 2, 2);
hold on;
plot(uv.Vnv, uv.Va);
hold off;
xlabel('$V_{n,v}$ [V]'); ylabel('$V_a$ [m]');
#+end_src
** Repeatability
#+begin_src matlab :exports none
figure;
ax1 = subplot(1, 2, 1);
hold on;
plot(Vnh, Va);
hold off;
xlabel('$V_{n,h}$ [V]'); ylabel('$V_a$ [m]');
ax2 = subplot(1, 2, 2);
hold on;
plot(Vnv, Va);
hold off;
xlabel('$V_{n,v}$ [V]'); ylabel('$V_a$ [m]');
#+end_src
#+begin_src matlab
bh = [ones(size(Vnh)) Vnh]\Vph;
bv = [ones(size(Vnv)) Vnv]\Vpv;
#+end_src
#+begin_src matlab :exports none
figure;
ax1 = subplot(1, 2, 1);
hold on;
plot(2*gn0*uh.Vnh, uh.Vph, 'o', 'DisplayName', 'Exp. data');
plot(2*gn0*[min(uh.Vnh) max(uh.Vnh)], 2*gn0*[min(uh.Vnh) max(uh.Vnh)].*bh(2) + bh(1), 'k--', 'DisplayName', sprintf('%.1e x + %.1e', bh(2), bh(1)))
hold off;
xlabel('$\alpha_{0,h}$ [rad]'); ylabel('$Vp_h$ [V]');
legend();
ax2 = subplot(1, 2, 2);
hold on;
plot(2*gn0*uv.Vnv, uv.Vpv, 'o', 'DisplayName', 'Exp. data');
plot(2*gn0*[min(uv.Vnv) max(uv.Vnv)], 2*gn0*[min(uv.Vnv) max(uv.Vnv)].*bv(2) + bv(1), 'k--', 'DisplayName', sprintf('%.1e x + %.1e', bv(2), bv(1)))
hold off;
xlabel('$\alpha_{0,v}$ [rad]'); ylabel('$Vp_v$ [V]');
legend();
#+end_src
#+NAME: fig:repeat_plot_subtract_mean
#+CAPTION: Repeatability of the measurement after subtracting the mean value ([[./figs/repeat_plot_subtract_mean.png][png]], [[./figs/repeat_plot_subtract_mean.pdf][pdf]])
[[file:figs/repeat_plot_subtract_mean.png]]