diff --git a/css/custom.css b/css/custom.css new file mode 100644 index 0000000..00e7250 --- /dev/null +++ b/css/custom.css @@ -0,0 +1,14 @@ +.figure p{ + text-align: center; +} + +.figure img{ + max-width:100%; + display: block; + margin: auto; +} + +table { + margin-left: auto; + margin-right: auto; +} diff --git a/css/readtheorg.css b/css/readtheorg.css index 1690bd0..423a707 100644 --- a/css/readtheorg.css +++ b/css/readtheorg.css @@ -513,7 +513,7 @@ legend{ padding:0; white-space:normal} -.fa:before,#content .admonition-title:before,#content h1 .headerlink:before,#content h2 .headerlink:before,#content h3 .headerlink:before,#content h4 .headerlink:before,#content h5 .headerlink:before,#content h6 .headerlink:before,#content dl dt .headerlink:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .hint,#content .important,#content .tip,#content .warning,#content .seealso,#content .admonitiontodo,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,#table-of-contents li.on a,#table-of-contents li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{ +.fa:before,#content .admonition-title:before,#content h1 .headerlink:before,#content h2 .headerlink:before,#content h3 .headerlink:before,#content h4 .headerlink:before,#content h5 .headerlink:before,#content h6 .headerlink:before,#content dl dt .headerlink:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .summary,#content .hint,#content .important,#content .tip,#content .warning,#content .question,#content .seealso,#content .admonitiontodo,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,#table-of-contents li.on a,#table-of-contents li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{ -webkit-font-smoothing:antialiased} /*! @@ -576,7 +576,7 @@ a .fa,a #content .admonition-title,#content a .admonition-title{ .nav #content .admonition-title,#content .nav .admonition-title,.nav .icon{ display:inline} -.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .hint,#content .important,#content .tip,#content .warning,#content .seealso,#content .admonitiontodo{ +.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .summary,#content .hint,#content .important,#content .tip,#content .warning,#content .question,#content .seealso,#content .admonitiontodo{ padding:12px; line-height:24px; margin-bottom:24px; @@ -596,32 +596,45 @@ a .fa,a #content .admonition-title,#content a .admonition-title{ #content .danger,#content .error{ background:#fdf3f2} -.wy-alert.wy-alert-warning,#content .wy-alert-warning.note,#content .attention,#content .caution,#content .wy-alert-warning.danger,#content .wy-alert-warning.error,#content .wy-alert-warning.hint,#content .wy-alert-warning.important,#content .wy-alert-warning.tip,#content .warning,#content .wy-alert-warning.seealso,#content .admonitiontodo{ +.wy-alert.wy-alert-warning,#content .wy-alert-warning.note,#content .attention,#content .caution,#content .wy-alert-warning.danger,#content .wy-alert-warning.error,#content .wy-alert-warning.summary,#content .wy-alert-warning.hint,#content .wy-alert-warning.important,#content .wy-alert-warning.tip,#content .warning,#content .wy-alert-warning.seealso,#content .admonitiontodo{ background:#ffedcc} -#content .admonition-title.note:before, #content .admonition-title.seealso:before, -#content .admonition-title.warning:before, #content .admonition-title.caution:before, +#content .admonition-title.warning:before, +#content .admonition-title.caution:before, #content .admonition-title.attention:before, -#content .admonition-title.tip:before, #content .admonition-title.hint:before, #content .admonition-title.important:before, -#content .admonition-title.error:before, #content .admonition-title.danger:before{ +#content .admonition-title.error:before, +#content .admonition-title.danger:before{ font-family:FontAwesome; content: "";} -#content .note,#content .seealso{ +#content .admonition-title.question:before{ + font-family:FontAwesome; + content: "";} + +#content .admonition-title.note:before, +#content .admonition-title.seealso:before, +#content .admonition-title.tip:before, +#content .admonition-title.summary:before, +#content .admonition-title.hint:before{ + font-family:FontAwesome; + content: "";} + + +#content .note,#content .question,#content .seealso{ background:#e7f2fa} -.wy-alert p:last-child,#content .note p:last-child,#content .attention p:last-child,#content .caution p:last-child,#content .danger p:last-child,#content .error p:last-child,#content .hint p:last-child,#content .important p:last-child,#content .tip p:last-child,#content .warning p:last-child,#content .seealso p:last-child,#content .admonitiontodo p:last-child{ +.wy-alert p:last-child,#content .note p:last-child,#content .attention p:last-child,#content .caution p:last-child,#content .danger p:last-child,#content .error p:last-child,#content .summary p:last-child,#content .hint p:last-child,#content .important p:last-child,#content .tip p:last-child,#content .warning p:last-child,#content .question p:last-child,#content .seealso p:last-child,#content .admonitiontodo p:last-child{ margin-bottom:0} -#content .admonition-title.tip,#content .admonition-title.important,#content .admonition-title.hint{ +#content .admonition-title.tip,#content .admonition-title.important,#content .admonition-title.summary,#content .admonition-title.hint{ line-height: 1; background:#1abc9c} -#content .important,#content .tip,#content .hint{ +#content .important,#content .tip,#content .summary,#content .hint{ background:#dbfaf4} -#content .admonition-title.note,#content .admonition-title.seealso{ +#content .admonition-title.note,#content .admonition-title.question,#content .admonition-title.seealso{ line-height: 1; background:#6ab0de} @@ -938,7 +951,7 @@ footer p{ font-style:italic; } -#content .note .last,#content .attention .last,#content .caution .last,#content .danger .last,#content .error .last,#content .hint .last,#content .important .last,#content .tip .last,#content .warning .last,#content .seealso .last,#content .admonitiontodo .last{ +#content .note .last,#content .attention .last,#content .caution .last,#content .danger .last,#content .error .last,#content .hint .summary,#content .hint .last,#content .important .last,#content .tip .last,#content .warning .last,#content .question .last,#content .seealso .last,#content .admonitiontodo .last{ margin-bottom:0} #content .admonition-title:before{ diff --git a/figs/exp_setup_schematic.pdf b/figs/exp_setup_schematic.pdf new file mode 100644 index 0000000..12828c6 Binary files /dev/null and b/figs/exp_setup_schematic.pdf differ diff --git a/figs/exp_setup_schematic.png b/figs/exp_setup_schematic.png new file mode 100644 index 0000000..f43a013 Binary files /dev/null and b/figs/exp_setup_schematic.png differ diff --git a/figs/exp_setup_schematic.svg b/figs/exp_setup_schematic.svg new file mode 100644 index 0000000..aec6114 --- /dev/null +++ b/figs/exp_setup_schematic.svg @@ -0,0 +1,3663 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Attocube + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/int_enc_error_mean_position.pdf b/figs/int_enc_error_mean_position.pdf new file mode 100644 index 0000000..60634e2 Binary files /dev/null and b/figs/int_enc_error_mean_position.pdf differ diff --git a/figs/int_enc_error_mean_position.png b/figs/int_enc_error_mean_position.png new file mode 100644 index 0000000..241d5fe Binary files /dev/null and b/figs/int_enc_error_mean_position.png differ diff --git a/figs/int_enc_error_mean_time.png b/figs/int_enc_error_mean_time.png new file mode 100644 index 0000000..b78c5ec Binary files /dev/null and b/figs/int_enc_error_mean_time.png differ diff --git a/figs/int_enc_one_cycle.pdf b/figs/int_enc_one_cycle.pdf new file mode 100644 index 0000000..67ef09c Binary files /dev/null and b/figs/int_enc_one_cycle.pdf differ diff --git a/figs/int_enc_one_cycle.png b/figs/int_enc_one_cycle.png new file mode 100644 index 0000000..472478a Binary files /dev/null and b/figs/int_enc_one_cycle.png differ diff --git a/figs/int_enc_one_cycle_error.pdf b/figs/int_enc_one_cycle_error.pdf new file mode 100644 index 0000000..d8be1e4 Binary files /dev/null and b/figs/int_enc_one_cycle_error.pdf differ diff --git a/figs/int_enc_one_cycle_error.png b/figs/int_enc_one_cycle_error.png new file mode 100644 index 0000000..121d895 Binary files /dev/null and b/figs/int_enc_one_cycle_error.png differ diff --git a/figs/int_non_linearity_period_wavelength.pdf b/figs/int_non_linearity_period_wavelength.pdf new file mode 100644 index 0000000..bb90034 Binary files /dev/null and b/figs/int_non_linearity_period_wavelength.pdf differ diff --git a/figs/int_non_linearity_period_wavelength.png b/figs/int_non_linearity_period_wavelength.png new file mode 100644 index 0000000..1f532ea Binary files /dev/null and b/figs/int_non_linearity_period_wavelength.png differ diff --git a/figs/test-bench-schematic.pdf b/figs/test-bench-schematic.pdf new file mode 100644 index 0000000..84bed85 Binary files /dev/null and b/figs/test-bench-schematic.pdf differ diff --git a/figs/test-bench-shematic.png b/figs/test-bench-schematic.png similarity index 100% rename from figs/test-bench-shematic.png rename to figs/test-bench-schematic.png diff --git a/figs/test-bench-shematic.svg b/figs/test-bench-schematic.svg similarity index 100% rename from figs/test-bench-shematic.svg rename to figs/test-bench-schematic.svg diff --git a/index.html b/index.html index 47c7508..609d8a9 100644 --- a/index.html +++ b/index.html @@ -3,14 +3,14 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Attocube - Test Bench - + @@ -35,45 +35,53 @@

Table of Contents

-
-

1 Estimation of the Spectral Density of the Attocube Noise

+
+

1 Estimation of the Spectral Density of the Attocube Noise

-
-

test-bench-shematic.png +

+

test-bench-schematic.png

Figure 1: Test Bench Schematic

-
+

IMG-7865.JPG

Figure 2: Picture of the test bench. The Attocube and mirror are covered by a “bubble sheet”

-
-

1.1 Long and Slow measurement

+
+

1.1 Long and Slow measurement

The first measurement was made during ~17 hours with a sampling time of \(T_s = 0.1\,s\). @@ -86,14 +94,14 @@ Ts = 0.1; % [s]

-
+

long_meas_time_domain_full.png

Figure 3: Long measurement time domain data

-Let’s fit the data with a step response to a first order low pass filter (Figure 4). +Let’s fit the data with a step response to a first order low pass filter (Figure 4).

@@ -117,17 +125,17 @@ The corresponding time constant is (in [h]): -
+

long_meas_time_domain_fit.png

Figure 4: Fit of the measurement data with a step response of a first order low pass filter

-We can see in Figure 3 that there is a transient period where the measured displacement experiences some drifts. +We can see in Figure 3 that there is a transient period where the measured displacement experiences some drifts. This is probably due to thermal effects. We only select the data between t1 and t2. -The obtained displacement is shown in Figure 5. +The obtained displacement is shown in Figure 5.

@@ -141,7 +149,7 @@ t = t - t(1);
-
+

long_meas_time_domain_zoom.png

Figure 5: Kept data (removed slow drifts during the first hours)

@@ -176,8 +184,8 @@ f_1 = f_1(f_1 < 2);
-
-

1.2 Short and Fast measurement

+
+

1.2 Short and Fast measurement

An second measurement is done in order to estimate the high frequency noise of the interferometer. @@ -196,11 +204,11 @@ Ts = 1e-4; % [s]

-The time domain measurement is shown in Figure 6. +The time domain measurement is shown in Figure 6.

-
+

short_meas_time_domain.png

Figure 6: Time domain measurement with the high sampling rate

@@ -217,15 +225,15 @@ The Power Spectral Density of the measured displacement is computed
-
-

1.3 Obtained Amplitude Spectral Density of the measured displacement

+
+

1.3 Obtained Amplitude Spectral Density of the measured displacement

-The computed ASD of the two measurements are combined in Figure 7. +The computed ASD of the two measurements are combined in Figure 7.

-
+

psd_combined.png

Figure 7: Obtained Amplitude Spectral Density of the measured displacement

@@ -234,19 +242,19 @@ The computed ASD of the two measurements are combined in Figure -

2 Effect of the “bubble sheet” and Aluminium tube

+
+

2 Effect of the “bubble sheet” and “Aluminium tube”

-
+

IMG-7864.JPG

Figure 8: Aluminium tube used to protect the beam path from disturbances

-
-

2.1 Aluminium Tube and Bubble Sheet

+
+

2.1 Aluminium Tube and Bubble Sheet

load('./mat/short_test_plastic.mat');
@@ -267,8 +275,8 @@ Ts = 1e-4; % [s]
 
-
-

2.2 Only Aluminium Tube

+
+

2.2 Only Aluminium Tube

-
-

2.3 Nothing

+
+

2.3 Nothing

load('./mat/short_test_without_material.mat');
@@ -307,7 +315,7 @@ Ts = 1e-4; % [s]
 

-The time domain measurement is shown in Figure 6. +The time domain measurement is shown in Figure 6.

win = hann(ceil(length(x)/10));
@@ -317,11 +325,11 @@ The time domain measurement is shown in Figure 6.
 
-
-

2.4 Comparison

+
+

2.4 Comparison

-
+

asd_noise_comp_bubble_aluminium.png

Figure 9: Comparison of the noise ASD with and without bubble sheet

@@ -329,10 +337,183 @@ The time domain measurement is shown in Figure 6.
+ +
+

3 Measurement of the Attocube’s non-linearity

+
+

+The measurement setup is shown in Figure 10. +

+ + +
+

exp_setup_schematic.png +

+

Figure 10: Schematic of the Experiment

+
+ +

+A DAC and voltage amplified are used to move the mass with the Amplified Piezoelectric Actuator (APA95ML). +The encoder and the attocube are measure ring the same motion. +

+ +

+As will be shown shortly, this measurement permitted to measure the period non-linearity of the Attocube. +

+
+ +
+

3.1 Load Data

+
+

+The measurement data are loaded and the offset are removed using the detrend command. +

+ +
+
load('mat/int_enc_comp.mat', 'interferometer', 'encoder', 'u', 't');
+Ts = 1e-4; % Sampling Time [s]
+
+
+ +
+
interferometer = detrend(interferometer, 0);
+encoder = detrend(encoder, 0);
+u = detrend(u, 0);
+
+
+
+
+ +
+

3.2 Time Domain Results

+
+

+One period of the displacement of the mass as measured by the encoder and interferometer are shown in Figure 11. +It consist of the sinusoidal motion at 0.5Hz with an amplitude of approximately \(70\mu m\). +

+ +

+The frequency of the motion is chosen such that no resonance in the system is excited. +This should improve the coherence between the measurements made by the encoder and interferometer. +

+ + +
+

int_enc_one_cycle.png +

+

Figure 11: One cycle measurement

+
+ +

+The difference between the two measurements during the same period is shown in Figure 12. +

+ + +
+

int_enc_one_cycle_error.png +

+

Figure 12: Difference between the Encoder and the interferometer during one cycle

+
+
+
+ +
+

3.3 Difference between Encoder and Interferometer as a function of time

+
+

+The data is filtered using a second order low pass filter with a cut-off frequency \(\omega_0\) as defined below. +

+ +
+
w0 = 2*pi*5; % [rad/s]
+xi = 0.7;
+
+G_lpf = 1/(1 + 2*xi/w0*s + s^2/w0^2);
+
+
+ +

+After filtering, the data is “re-shaped” such that we can superimpose all the measured periods as shown in Figure 13. +This gives an idea of the measurement error as given by the Attocube during a \(70 \mu m\) motion. +

+
+
d_err_mean = reshape(lsim(G_lpf, encoder - interferometer, t), [2/Ts floor(Ts/2*length(encoder))]);
+d_err_mean = d_err_mean - mean(d_err_mean);
+
+
+ + +
+

int_enc_error_mean_time.png +

+

Figure 13: Difference between the two measurement in the time domain, averaged for all the cycles

+
+
+
+ +
+

3.4 Difference between Encoder and Interferometer as a function of position

+
+

+Figure 13 gives the measurement error as a function of time. +We here wish the compute this measurement error as a function of the position (as measured by the encoer). +

+ +

+To do so, all the attocube measurements corresponding to each position measured by the Encoder (resolution of \(1nm\)) are averaged. +Figure 14 is obtained where we clearly see an error with a period comparable to the motion range and a much smaller period corresponding to the non-linear period errors that we wish the estimate. +

+
+
[e_sorted, ~, e_ind] = unique(encoder);
+
+i_mean = zeros(length(e_sorted), 1);
+for i = 1:length(e_sorted)
+  i_mean(i) = mean(interferometer(e_ind == i));
+end
+
+i_mean_error = (i_mean - e_sorted);
+
+
+ + +
+

int_enc_error_mean_position.png +

+

Figure 14: Difference between the two measurement as a function of the measured position by the encoder, averaged for all the cycles

+
+ +

+The period of the non-linearity seems to be equal to \(765 nm\) which corresponds to half the wavelength of the Laser (\(1.53 \mu m\)). +For the motion range done here, the non-linearity is measured over ~18 periods which permits to do some averaging. +

+ +
+
win_length = 1530/2; % length of the windows (corresponds to 765 nm)
+num_avg = floor(length(e_sorted)/win_length); % number of averaging
+
+i_init = ceil((length(e_sorted) - win_length*num_avg)/2); % does not start at the extremity
+
+e_sorted_mean_over_period = mean(reshape(i_mean_error(i_init:i_init+win_length*num_avg-1), [win_length num_avg]), 2);
+
+
+ +

+The obtained periodic non-linearity is shown in Figure 15. +

+ + +
+

int_non_linearity_period_wavelength.png +

+

Figure 15: Non-Linearity of the Interferometer over the period of the wavelength

+
+
+
+

Author: Dehaeze Thomas

-

Created: 2020-11-03 mar. 11:21

+

Created: 2020-11-10 mar. 09:53

diff --git a/index.org b/index.org index 9d57cdd..e819021 100644 --- a/index.org +++ b/index.org @@ -9,7 +9,7 @@ #+HTML_HEAD: #+HTML_HEAD: -#+HTML_HEAD: +#+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: @@ -29,9 +29,9 @@ * Estimation of the Spectral Density of the Attocube Noise ** Introduction :ignore: -#+name: fig:test-bench-shematic +#+name: fig:test-bench-schematic #+caption: Test Bench Schematic -[[file:figs/test-bench-shematic.png]] +[[file:figs/test-bench-schematic.png]] #+name: fig:test-bench-picture #+caption: Picture of the test bench. The Attocube and mirror are covered by a "bubble sheet" @@ -217,7 +217,7 @@ The computed ASD of the two measurements are combined in Figure [[fig:psd_combin #+RESULTS: [[file:figs/psd_combined.png]] -* Effect of the "bubble sheet" and *Aluminium tube* +* Effect of the "bubble sheet" and "Aluminium tube" ** Introduction :ignore: #+name: fig:picture-test-bench-aluminium-tube @@ -324,3 +324,190 @@ The time domain measurement is shown in Figure [[fig:short_meas_time_domain]]. #+caption: Comparison of the noise ASD with and without bubble sheet #+RESULTS: [[file:figs/asd_noise_comp_bubble_aluminium.png]] + +* Measurement of the Attocube's non-linearity +** Introduction :ignore: +The measurement setup is shown in Figure [[fig:exp_setup_schematic]]. + +#+name: fig:exp_setup_schematic +#+caption: Schematic of the Experiment +[[file:figs/exp_setup_schematic.png]] + +A DAC and voltage amplified are used to move the mass with the Amplified Piezoelectric Actuator (APA95ML). +The encoder and the attocube are measure ring the same motion. + +As will be shown shortly, this measurement permitted to measure the period non-linearity of the Attocube. + +** Matlab Init :noexport:ignore: +#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) + <> +#+end_src + +#+begin_src matlab :exports none :results silent :noweb yes + <> +#+end_src + +** Load Data +The measurement data are loaded and the offset are removed using the =detrend= command. + +#+begin_src matlab + load('mat/int_enc_comp.mat', 'interferometer', 'encoder', 'u', 't'); + Ts = 1e-4; % Sampling Time [s] +#+end_src + +#+begin_src matlab + interferometer = detrend(interferometer, 0); + encoder = detrend(encoder, 0); + u = detrend(u, 0); +#+end_src + +** Time Domain Results +One period of the displacement of the mass as measured by the encoder and interferometer are shown in Figure [[fig:int_enc_one_cycle]]. +It consist of the sinusoidal motion at 0.5Hz with an amplitude of approximately $70\mu m$. + +The frequency of the motion is chosen such that no resonance in the system is excited. +This should improve the coherence between the measurements made by the encoder and interferometer. + +#+begin_src matlab :exports none + figure; + hold on; + plot(t, encoder, '-', 'DisplayName', 'Encoder') + plot(t, interferometer, '--', 'DisplayName', 'Interferometer') + hold off; + xlabel('Time [s]'); ylabel('Displacement [m]'); + legend('location', 'southeast'); + xlim([50, 52]) +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace + exportFig('figs/int_enc_one_cycle.pdf', 'width', 'wide', 'height', 'normal'); +#+end_src + +#+name: fig:int_enc_one_cycle +#+caption: One cycle measurement +#+RESULTS: +[[file:figs/int_enc_one_cycle.png]] + +The difference between the two measurements during the same period is shown in Figure [[fig:int_enc_one_cycle_error]]. + +#+begin_src matlab :exports none + figure; + hold on; + plot(t, encoder - interferometer, 'DisplayName', 'Difference') + hold off; + xlabel('Time [s]'); ylabel('Displacement [m]'); + legend('location', 'northeast'); + xlim([50, 52]) +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace + exportFig('figs/int_enc_one_cycle_error.pdf', 'width', 'wide', 'height', 'normal'); +#+end_src + +#+name: fig:int_enc_one_cycle_error +#+caption: Difference between the Encoder and the interferometer during one cycle +#+RESULTS: +[[file:figs/int_enc_one_cycle_error.png]] + +** Difference between Encoder and Interferometer as a function of time +The data is filtered using a second order low pass filter with a cut-off frequency $\omega_0$ as defined below. + +#+begin_src matlab + w0 = 2*pi*5; % [rad/s] + xi = 0.7; + + G_lpf = 1/(1 + 2*xi/w0*s + s^2/w0^2); +#+end_src + +After filtering, the data is "re-shaped" such that we can superimpose all the measured periods as shown in Figure [[fig:int_enc_error_mean_time]]. +This gives an idea of the measurement error as given by the Attocube during a $70 \mu m$ motion. +#+begin_src matlab + d_err_mean = reshape(lsim(G_lpf, encoder - interferometer, t), [2/Ts floor(Ts/2*length(encoder))]); + d_err_mean = d_err_mean - mean(d_err_mean); +#+end_src + +#+begin_src matlab :exports none + figure; + hold on; + for i_i = 1:size(d_err_mean, 2) + plot(t(1:size(d_err_mean, 1)), d_err_mean(:, i_i), 'k-') + end + plot(t(1:size(d_err_mean, 1)), mean(d_err_mean, 2), 'r-') + hold off; + xlabel('Time [s]'); ylabel('Displacement [m]'); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace + exportFig('figs/int_enc_error_mean_time.pdf', 'width', 'wide', 'height', 'normal', 'pdf', false); +#+end_src + +#+name: fig:int_enc_error_mean_time +#+caption: Difference between the two measurement in the time domain, averaged for all the cycles +#+RESULTS: +[[file:figs/int_enc_error_mean_time.png]] + +** Difference between Encoder and Interferometer as a function of position +Figure [[fig:int_enc_error_mean_time]] gives the measurement error as a function of time. +We here wish the compute this measurement error as a function of the position (as measured by the encoer). + +To do so, all the attocube measurements corresponding to each position measured by the Encoder (resolution of $1nm$) are averaged. +Figure [[fig:int_enc_error_mean_position]] is obtained where we clearly see an error with a period comparable to the motion range and a much smaller period corresponding to the non-linear period errors that we wish the estimate. +#+begin_src matlab + [e_sorted, ~, e_ind] = unique(encoder); + + i_mean = zeros(length(e_sorted), 1); + for i = 1:length(e_sorted) + i_mean(i) = mean(interferometer(e_ind == i)); + end + + i_mean_error = (i_mean - e_sorted); +#+end_src + +#+begin_src matlab :exports none + figure; + hold on; + % plot(encoder, interferometer - encoder, 'k.', 'DisplayName', 'Difference') + plot(1e6*(e_sorted), 1e9*(i_mean_error)) + hold off; + xlabel('Encoder Measurement [$\mu m$]'); ylabel('Measrement Error [nm]'); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace + exportFig('figs/int_enc_error_mean_position.pdf', 'width', 'wide', 'height', 'normal'); +#+end_src + +#+name: fig:int_enc_error_mean_position +#+caption: Difference between the two measurement as a function of the measured position by the encoder, averaged for all the cycles +#+RESULTS: +[[file:figs/int_enc_error_mean_position.png]] + +The period of the non-linearity seems to be equal to $765 nm$ which corresponds to half the wavelength of the Laser ($1.53 \mu m$). +For the motion range done here, the non-linearity is measured over ~18 periods which permits to do some averaging. + +#+begin_src matlab + win_length = 1530/2; % length of the windows (corresponds to 765 nm) + num_avg = floor(length(e_sorted)/win_length); % number of averaging + + i_init = ceil((length(e_sorted) - win_length*num_avg)/2); % does not start at the extremity + + e_sorted_mean_over_period = mean(reshape(i_mean_error(i_init:i_init+win_length*num_avg-1), [win_length num_avg]), 2); +#+end_src + +The obtained periodic non-linearity is shown in Figure [[fig:int_non_linearity_period_wavelength]]. + +#+begin_src matlab :exports none + figure; + hold on; + plot(1e-3*(0:win_length-1), 1e9*(e_sorted_mean_over_period)) + hold off; + xlabel('Displacement [$\mu m$]'); ylabel('Measurement Non-Linearity [nm]'); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace + exportFig('figs/int_non_linearity_period_wavelength.pdf', 'width', 'wide', 'height', 'tall'); +#+end_src + +#+name: fig:int_non_linearity_period_wavelength +#+caption: Non-Linearity of the Interferometer over the period of the wavelength +#+RESULTS: +[[file:figs/int_non_linearity_period_wavelength.png]] diff --git a/js/readtheorg.js b/js/readtheorg.js index 0f8439a..14b23d4 100644 --- a/js/readtheorg.js +++ b/js/readtheorg.js @@ -9,6 +9,8 @@ $(function() { $('.hint').before("

Hint

"); $('.error').before("

Error

"); $('.danger').before("

Danger

"); + $('.question').before("

Question

"); + $('.summary').before("

Summary

"); }); $( document ).ready(function() { diff --git a/mat/int_enc_comp.mat b/mat/int_enc_comp.mat new file mode 100644 index 0000000..692a457 Binary files /dev/null and b/mat/int_enc_comp.mat differ