2020-10-29 10:07:20 +01:00
<?xml version="1.0" encoding="utf-8"?>
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" lang = "en" xml:lang = "en" >
< head >
2020-11-12 10:17:13 +01:00
<!-- 2020 - 11 - 12 jeu. 10:17 -->
2020-10-29 10:07:20 +01:00
< meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" / >
< title > Attocube - Test Bench< / title >
< meta name = "generator" content = "Org mode" / >
< meta name = "author" content = "Dehaeze Thomas" / >
2020-11-12 10:17:13 +01:00
< link rel = "stylesheet" type = "text/css" href = "https://research.tdehaeze.xyz/css/style.css" / >
< script type = "text/javascript" src = "https://research.tdehaeze.xyz/js/script.js" > < / script >
2020-10-29 10:42:00 +01:00
< script > M a t h J a x = {
tex: {
tags: 'ams',
macros: {bm: ["\\boldsymbol{#1}",1],}
}
};
< / script >
< script type = "text/javascript" src = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js" > < / script >
2020-10-29 10:07:20 +01:00
< / head >
< body >
< div id = "org-div-home-and-up" >
< a accesskey = "h" href = "../index.html" > UP < / a >
|
< a accesskey = "H" href = "../index.html" > HOME < / a >
< / div > < div id = "content" >
< h1 class = "title" > Attocube - Test Bench< / h1 >
< div id = "table-of-contents" >
< h2 > Table of Contents< / h2 >
< div id = "text-table-of-contents" >
< ul >
2020-11-12 10:17:13 +01:00
< li > < a href = "#org91ed2af" > 1. Estimation of the Spectral Density of the Attocube Noise< / a >
2020-10-29 10:07:20 +01:00
< ul >
2020-11-12 10:17:13 +01:00
< li > < a href = "#org7ed0442" > 1.1. Long and Slow measurement< / a > < / li >
< li > < a href = "#org84a3a7f" > 1.2. Short and Fast measurement< / a > < / li >
< li > < a href = "#org8263623" > 1.3. Obtained Amplitude Spectral Density of the measured displacement< / a > < / li >
2020-11-02 16:03:55 +01:00
< / ul >
< / li >
2020-11-12 10:17:13 +01:00
< li > < a href = "#orgfbcdb24" > 2. Effect of the “ bubble sheet” and “ Aluminium tube” < / a >
2020-11-02 16:03:55 +01:00
< ul >
2020-11-12 10:17:13 +01:00
< li > < a href = "#org2c0e0f6" > 2.1. Aluminium Tube and Bubble Sheet< / a > < / li >
< li > < a href = "#orgab2ff04" > 2.2. Only Aluminium Tube< / a > < / li >
< li > < a href = "#org5e0cbb8" > 2.3. Nothing< / a > < / li >
< li > < a href = "#org0161dc2" > 2.4. Comparison< / a > < / li >
2020-11-10 09:53:29 +01:00
< / ul >
< / li >
2020-11-12 10:17:13 +01:00
< li > < a href = "#org45e7337" > 3. Measurement of the Attocube’ s non-linearity< / a >
2020-11-10 09:53:29 +01:00
< ul >
2020-11-12 10:17:13 +01:00
< li > < a href = "#orgf2cd3af" > 3.1. Load Data< / a > < / li >
< li > < a href = "#org9caccde" > 3.2. Time Domain Results< / a > < / li >
< li > < a href = "#orgb15ec0f" > 3.3. Difference between Encoder and Interferometer as a function of time< / a > < / li >
< li > < a href = "#orga0c30bc" > 3.4. Difference between Encoder and Interferometer as a function of position< / a > < / li >
2020-10-29 10:07:20 +01:00
< / ul >
< / li >
< / ul >
< / div >
< / div >
2020-11-10 12:51:54 +01:00
< p >
In this document, few caracteristics of the Attocube Displacement Measuring Interferometer IDS3010 (< a href = "https://www.attocube.com/en/products/laser-displacement-sensor/displacement-measuring-interferometer" > link< / a > ) are studied:
< / p >
< ul class = "org-ul" >
2020-11-12 10:17:13 +01:00
< li > Section < a href = "#org45bc653" > 1< / a > : the ASD noise of the measured displacement is estimated< / li >
< li > Section < a href = "#orgf93a547" > 2< / a > : the effect of two air protections on the stability of the measurement is studied< / li >
< li > Section < a href = "#org421bcba" > 3< / a > : the cyclic non-linearity of the attocube is estimated using a encoder< / li >
2020-11-10 12:51:54 +01:00
< / ul >
2020-11-12 10:17:13 +01:00
< div id = "outline-container-org91ed2af" class = "outline-2" >
< h2 id = "org91ed2af" > < span class = "section-number-2" > 1< / span > Estimation of the Spectral Density of the Attocube Noise< / h2 >
2020-10-29 10:07:20 +01:00
< div class = "outline-text-2" id = "text-1" >
2020-11-10 12:51:54 +01:00
< p >
2020-11-12 10:17:13 +01:00
< a id = "org45bc653" > < / a >
2020-11-10 12:51:54 +01:00
< / p >
2020-10-29 11:20:34 +01:00
2020-11-12 10:17:13 +01:00
< div id = "orgeea45a0" class = "figure" >
2020-11-10 09:53:29 +01:00
< p > < img src = "figs/test-bench-schematic.png" alt = "test-bench-schematic.png" / >
2020-10-29 11:20:34 +01:00
< / p >
< p > < span class = "figure-number" > Figure 1: < / span > Test Bench Schematic< / p >
2020-10-29 10:07:20 +01:00
< / div >
2020-11-02 16:03:55 +01:00
2020-11-12 10:17:13 +01:00
< div id = "org1945c4e" class = "figure" >
2020-11-02 16:03:55 +01:00
< p > < img src = "figs/IMG-7865.JPG" alt = "IMG-7865.JPG" / >
< / p >
< p > < span class = "figure-number" > Figure 2: < / span > Picture of the test bench. The Attocube and mirror are covered by a “ bubble sheet” < / p >
< / div >
2020-10-29 11:20:34 +01:00
< / div >
2020-11-12 10:17:13 +01:00
< div id = "outline-container-org7ed0442" class = "outline-3" >
< h3 id = "org7ed0442" > < span class = "section-number-3" > 1.1< / span > Long and Slow measurement< / h3 >
2020-10-29 10:07:20 +01:00
< div class = "outline-text-3" id = "text-1-1" >
2020-10-29 10:42:00 +01:00
< p >
The first measurement was made during ~17 hours with a sampling time of \(T_s = 0.1\,s\).
< / p >
< div class = "org-src-container" >
2020-11-10 12:51:54 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > 'long_test_plastic.mat'< / span > , < span class = "org-string" > 'x'< / span > , < span class = "org-string" > 't'< / span > )
2020-10-29 10:42:00 +01:00
Ts = 0.1; < span class = "org-comment" > % [s]< / span >
< / pre >
< / div >
2020-11-12 10:17:13 +01:00
< div id = "orgabef257" class = "figure" >
2020-10-29 10:42:00 +01:00
< p > < img src = "figs/long_meas_time_domain_full.png" alt = "long_meas_time_domain_full.png" / >
< / p >
2020-11-02 16:03:55 +01:00
< p > < span class = "figure-number" > Figure 3: < / span > Long measurement time domain data< / p >
2020-10-29 10:42:00 +01:00
< / div >
< p >
2020-11-12 10:17:13 +01:00
Let’ s fit the data with a step response to a first order low pass filter (Figure < a href = "#org3effe27" > 4< / a > ).
2020-10-29 11:05:45 +01:00
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > f = @(b,x) b(1)< span class = "org-type" > *< / span > (1 < span class = "org-type" > -< / span > exp(< span class = "org-type" > -< / span > x< span class = "org-type" > /< / span > b(2)));
2020-11-03 11:24:53 +01:00
y_cur = x(t < span class = "org-type" > < < / span > 17.5< span class = "org-type" > *< / span > 60< span class = "org-type" > *< / span > 60);
t_cur = t(t < span class = "org-type" > < < / span > 17.5< span class = "org-type" > *< / span > 60< span class = "org-type" > *< / span > 60);
2020-10-29 11:05:45 +01:00
nrmrsd = @(b) norm(y_cur < span class = "org-type" > -< / span > f(b,t_cur)); < span class = "org-comment" > % Residual Norm Cost Function< / span >
B0 = [400e< span class = "org-type" > -< / span > 9, 2< span class = "org-type" > *< / span > 60< span class = "org-type" > *< / span > 60]; < span class = "org-comment" > % Choose Appropriate Initial Estimates< / span >
[B,rnrm] = fminsearch(nrmrsd, B0); < span class = "org-comment" > % Estimate Parameters ‘ B’ < / span >
< / pre >
< / div >
< p >
The corresponding time constant is (in [h]):
< / p >
< pre class = "example" >
2020-11-03 11:24:53 +01:00
2.0658
2020-10-29 11:05:45 +01:00
< / pre >
2020-10-29 11:07:35 +01:00
2020-11-12 10:17:13 +01:00
< div id = "org3effe27" class = "figure" >
2020-10-29 11:07:35 +01:00
< p > < img src = "figs/long_meas_time_domain_fit.png" alt = "long_meas_time_domain_fit.png" / >
2020-10-29 11:05:45 +01:00
< / p >
2020-11-02 16:03:55 +01:00
< p > < span class = "figure-number" > Figure 4: < / span > Fit of the measurement data with a step response of a first order low pass filter< / p >
2020-10-29 11:07:35 +01:00
< / div >
2020-10-29 11:05:45 +01:00
< p >
2020-11-12 10:17:13 +01:00
We can see in Figure < a href = "#orgabef257" > 3< / a > that there is a transient period where the measured displacement experiences some drifts.
2020-10-29 10:42:00 +01:00
This is probably due to thermal effects.
We only select the data between < code > t1< / code > and < code > t2< / code > .
2020-11-12 10:17:13 +01:00
The obtained displacement is shown in Figure < a href = "#orgdb1e675" > 5< / a > .
2020-10-29 10:42:00 +01:00
< / p >
2020-10-29 10:07:20 +01:00
< div class = "org-src-container" >
2020-11-03 11:24:53 +01:00
< pre class = "src src-matlab" > t1 = 10.5; t2 = 17.5; < span class = "org-comment" > % [h]< / span >
2020-10-29 10:42:00 +01:00
x = x(t < span class = "org-type" > > < / span > t1< span class = "org-type" > *< / span > 60< span class = "org-type" > *< / span > 60 < span class = "org-type" > & < / span > t < span class = "org-type" > < < / span > t2< span class = "org-type" > *< / span > 60< span class = "org-type" > *< / span > 60);
x = x < span class = "org-type" > -< / span > mean(x);
t = t(t < span class = "org-type" > > < / span > t1< span class = "org-type" > *< / span > 60< span class = "org-type" > *< / span > 60 < span class = "org-type" > & < / span > t < span class = "org-type" > < < / span > t2< span class = "org-type" > *< / span > 60< span class = "org-type" > *< / span > 60);
t = t < span class = "org-type" > -< / span > t(1);
< / pre >
< / div >
2020-10-29 10:07:20 +01:00
2020-10-29 10:42:00 +01:00
2020-11-12 10:17:13 +01:00
< div id = "orgdb1e675" class = "figure" >
2020-10-29 10:42:00 +01:00
< p > < img src = "figs/long_meas_time_domain_zoom.png" alt = "long_meas_time_domain_zoom.png" / >
< / p >
2020-11-02 16:03:55 +01:00
< p > < span class = "figure-number" > Figure 5: < / span > Kept data (removed slow drifts during the first hours)< / p >
2020-10-29 10:42:00 +01:00
< / div >
< p >
The Power Spectral Density of the measured displacement is computed
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > win = hann(ceil(length(x)< span class = "org-type" > /< / span > 20));
2020-10-29 10:07:20 +01:00
[p_1, f_1] = pwelch(x, win, [], [], 1< span class = "org-type" > /< / span > Ts);
< / pre >
< / div >
2020-11-02 16:03:55 +01:00
< p >
As a low pass filter was used in the measurement process, we multiply the PSD by the square of the inverse of the filter’ s norm.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > G_lpf = 1< span class = "org-type" > /< / span > (1 < span class = "org-type" > +< / span > s< span class = "org-type" > /< / span > 2< span class = "org-type" > /< / span > < span class = "org-constant" > pi< / span > );
p_1 = p_1< span class = "org-type" > ./< / span > abs(squeeze(freqresp(G_lpf, f_1, < span class = "org-string" > 'Hz'< / span > )))< span class = "org-type" > .^< / span > 2;
< / pre >
< / div >
< p >
Only frequencies below 2Hz are taken into account (high frequency noise will be measured afterwards).
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > p_1 = p_1(f_1 < span class = "org-type" > < < / span > 2);
f_1 = f_1(f_1 < span class = "org-type" > < < / span > 2);
< / pre >
< / div >
2020-10-29 10:42:00 +01:00
< / div >
< / div >
2020-11-12 10:17:13 +01:00
< div id = "outline-container-org84a3a7f" class = "outline-3" >
< h3 id = "org84a3a7f" > < span class = "section-number-3" > 1.2< / span > Short and Fast measurement< / h3 >
2020-10-29 10:42:00 +01:00
< div class = "outline-text-3" id = "text-1-2" >
< p >
An second measurement is done in order to estimate the high frequency noise of the interferometer.
The measurement is done with a sampling time of \(T_s = 0.1\,ms\) and a duration of ~100s.
< / p >
2020-10-29 10:07:20 +01:00
< div class = "org-src-container" >
2020-11-10 12:51:54 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > 'short_test_plastic.mat'< / span > )
2020-10-29 10:07:20 +01:00
Ts = 1e< span class = "org-type" > -< / span > 4; < span class = "org-comment" > % [s]< / span >
2020-10-29 10:42:00 +01:00
< / pre >
< / div >
2020-11-02 16:03:55 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > x = detrend(x, 0);
< / pre >
< / div >
2020-10-29 10:42:00 +01:00
< p >
2020-11-12 10:17:13 +01:00
The time domain measurement is shown in Figure < a href = "#orgb156e4e" > 6< / a > .
2020-10-29 10:42:00 +01:00
< / p >
2020-11-12 10:17:13 +01:00
< div id = "orgb156e4e" class = "figure" >
2020-10-29 10:42:00 +01:00
< p > < img src = "figs/short_meas_time_domain.png" alt = "short_meas_time_domain.png" / >
< / p >
2020-11-02 16:03:55 +01:00
< p > < span class = "figure-number" > Figure 6: < / span > Time domain measurement with the high sampling rate< / p >
2020-10-29 10:42:00 +01:00
< / div >
2020-10-29 10:07:20 +01:00
2020-10-29 10:42:00 +01:00
< p >
The Power Spectral Density of the measured displacement is computed
< / p >
< div class = "org-src-container" >
2020-11-03 11:24:53 +01:00
< pre class = "src src-matlab" > win = hann(ceil(length(x)< span class = "org-type" > /< / span > 20));
2020-10-29 10:07:20 +01:00
[p_2, f_2] = pwelch(x, win, [], [], 1< span class = "org-type" > /< / span > Ts);
< / pre >
< / div >
< / div >
< / div >
2020-10-29 10:42:00 +01:00
2020-11-12 10:17:13 +01:00
< div id = "outline-container-org8263623" class = "outline-3" >
< h3 id = "org8263623" > < span class = "section-number-3" > 1.3< / span > Obtained Amplitude Spectral Density of the measured displacement< / h3 >
2020-10-29 10:42:00 +01:00
< div class = "outline-text-3" id = "text-1-3" >
< p >
2020-11-12 10:17:13 +01:00
The computed ASD of the two measurements are combined in Figure < a href = "#org72c2457" > 7< / a > .
2020-10-29 10:42:00 +01:00
< / p >
2020-11-12 10:17:13 +01:00
< div id = "org72c2457" class = "figure" >
2020-10-29 10:42:00 +01:00
< p > < img src = "figs/psd_combined.png" alt = "psd_combined.png" / >
< / p >
2020-11-02 16:03:55 +01:00
< p > < span class = "figure-number" > Figure 7: < / span > Obtained Amplitude Spectral Density of the measured displacement< / p >
< / div >
< / div >
< / div >
< / div >
2020-11-12 10:17:13 +01:00
< div id = "outline-container-orgfbcdb24" class = "outline-2" >
< h2 id = "orgfbcdb24" > < span class = "section-number-2" > 2< / span > Effect of the “ bubble sheet” and “ Aluminium tube” < / h2 >
2020-11-02 16:03:55 +01:00
< div class = "outline-text-2" id = "text-2" >
2020-11-10 12:51:54 +01:00
< p >
2020-11-12 10:17:13 +01:00
< a id = "orgf93a547" > < / a >
2020-11-10 12:51:54 +01:00
< / p >
2020-11-02 16:03:55 +01:00
2020-11-12 10:17:13 +01:00
< div id = "org5a9ad77" class = "figure" >
2020-11-02 16:03:55 +01:00
< p > < img src = "figs/IMG-7864.JPG" alt = "IMG-7864.JPG" / >
< / p >
< p > < span class = "figure-number" > Figure 8: < / span > Aluminium tube used to protect the beam path from disturbances< / p >
< / div >
< / div >
2020-11-12 10:17:13 +01:00
< div id = "outline-container-org2c0e0f6" class = "outline-3" >
< h3 id = "org2c0e0f6" > < span class = "section-number-3" > 2.1< / span > Aluminium Tube and Bubble Sheet< / h3 >
2020-11-02 16:03:55 +01:00
< div class = "outline-text-3" id = "text-2-1" >
< div class = "org-src-container" >
2020-11-10 12:51:54 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > 'short_test_plastic.mat'< / span > );
2020-11-02 16:03:55 +01:00
Ts = 1e< span class = "org-type" > -< / span > 4; < span class = "org-comment" > % [s]< / span >
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > x = detrend(x, 0);
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > win = hann(ceil(length(x)< span class = "org-type" > /< / span > 10));
[p_1, f_1] = pwelch(x, win, [], [], 1< span class = "org-type" > /< / span > Ts);
< / pre >
< / div >
< / div >
< / div >
2020-11-12 10:17:13 +01:00
< div id = "outline-container-orgab2ff04" class = "outline-3" >
< h3 id = "orgab2ff04" > < span class = "section-number-3" > 2.2< / span > Only Aluminium Tube< / h3 >
2020-11-02 16:03:55 +01:00
< div class = "outline-text-3" id = "text-2-2" >
< div class = "org-src-container" >
2020-11-10 12:51:54 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > 'short_test_alu_tube.mat'< / span > );
2020-11-02 16:03:55 +01:00
Ts = 1e< span class = "org-type" > -< / span > 4; < span class = "org-comment" > % [s]< / span >
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > x = detrend(x, 0);
< / pre >
< / div >
< p >
2020-11-12 10:17:13 +01:00
The time domain measurement is shown in Figure < a href = "#orgb156e4e" > 6< / a > .
2020-11-02 16:03:55 +01:00
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > win = hann(ceil(length(x)< span class = "org-type" > /< / span > 10));
[p_2, f_2] = pwelch(x, win, [], [], 1< span class = "org-type" > /< / span > Ts);
< / pre >
< / div >
< / div >
< / div >
2020-11-12 10:17:13 +01:00
< div id = "outline-container-org5e0cbb8" class = "outline-3" >
< h3 id = "org5e0cbb8" > < span class = "section-number-3" > 2.3< / span > Nothing< / h3 >
2020-11-03 11:24:53 +01:00
< div class = "outline-text-3" id = "text-2-3" >
< div class = "org-src-container" >
2020-11-10 12:51:54 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > 'short_test_without_material.mat'< / span > );
2020-11-03 11:24:53 +01:00
Ts = 1e< span class = "org-type" > -< / span > 4; < span class = "org-comment" > % [s]< / span >
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > x = detrend(x, 0);
< / pre >
< / div >
< p >
2020-11-12 10:17:13 +01:00
The time domain measurement is shown in Figure < a href = "#orgb156e4e" > 6< / a > .
2020-11-03 11:24:53 +01:00
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > win = hann(ceil(length(x)< span class = "org-type" > /< / span > 10));
[p_3, f_3] = pwelch(x, win, [], [], 1< span class = "org-type" > /< / span > Ts);
< / pre >
< / div >
< / div >
2020-11-02 16:03:55 +01:00
< / div >
2020-11-12 10:17:13 +01:00
< div id = "outline-container-org0161dc2" class = "outline-3" >
< h3 id = "org0161dc2" > < span class = "section-number-3" > 2.4< / span > Comparison< / h3 >
2020-11-02 16:03:55 +01:00
< div class = "outline-text-3" id = "text-2-4" >
2020-11-12 10:17:13 +01:00
< div id = "orgcaa0ad4" class = "figure" >
2020-11-02 16:03:55 +01:00
< p > < img src = "figs/asd_noise_comp_bubble_aluminium.png" alt = "asd_noise_comp_bubble_aluminium.png" / >
< / p >
< p > < span class = "figure-number" > Figure 9: < / span > Comparison of the noise ASD with and without bubble sheet< / p >
2020-10-29 10:42:00 +01:00
< / div >
< / div >
< / div >
2020-10-29 10:07:20 +01:00
< / div >
2020-11-10 09:53:29 +01:00
2020-11-12 10:17:13 +01:00
< div id = "outline-container-org45e7337" class = "outline-2" >
< h2 id = "org45e7337" > < span class = "section-number-2" > 3< / span > Measurement of the Attocube’ s non-linearity< / h2 >
2020-11-10 09:53:29 +01:00
< div class = "outline-text-2" id = "text-3" >
< p >
2020-11-12 10:17:13 +01:00
< a id = "org421bcba" > < / a >
2020-11-10 12:51:54 +01:00
< / p >
< p >
2020-11-12 10:17:13 +01:00
The measurement setup is shown in Figure < a href = "#org1b67344" > 10< / a > .
2020-11-10 09:53:29 +01:00
< / p >
2020-11-12 10:17:13 +01:00
< div class = "note" id = "org1f1e587" >
2020-11-10 10:21:08 +01:00
< p >
Here are the equipment used in the test bench:
< / p >
< ul class = "org-ul" >
< li > Renishaw Resolution Encoder with 1nm resolution (< a href = "doc/L-9517-9448-05-B_Data_sheet_RESOLUTE_BiSS_en.pdf" > doc< / a > )< / li >
< li > Attocube interferometer (< a href = "doc/IDS3010.pdf" > doc< / a > )< / li >
< li > Cedrat Amplified Piezoelectric Actuator APA95ML (< a href = "doc/APA95ML.pdf" > doc< / a > )< / li >
< li > Voltage Amplifier LA75B (< a href = "doc/LA75B.pdf" > doc< / a > )< / li >
< li > Speedgoat IO131 with 16bits ADC and DAC (< a href = "doc/IO130 IO131 OEM Datasheet.pdf" > doc< / a > )< / li >
< / ul >
< / div >
2020-11-10 09:53:29 +01:00
2020-11-12 10:17:13 +01:00
< div id = "org1b67344" class = "figure" >
2020-11-10 09:53:29 +01:00
< p > < img src = "figs/exp_setup_schematic.png" alt = "exp_setup_schematic.png" / >
< / p >
< p > < span class = "figure-number" > Figure 10: < / span > Schematic of the Experiment< / p >
< / div >
< p >
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.
< / p >
< p >
As will be shown shortly, this measurement permitted to measure the period non-linearity of the Attocube.
< / p >
< / div >
2020-11-12 10:17:13 +01:00
< div id = "outline-container-orgf2cd3af" class = "outline-3" >
< h3 id = "orgf2cd3af" > < span class = "section-number-3" > 3.1< / span > Load Data< / h3 >
2020-11-10 09:53:29 +01:00
< div class = "outline-text-3" id = "text-3-1" >
< p >
The measurement data are loaded and the offset are removed using the < code > detrend< / code > command.
< / p >
< div class = "org-src-container" >
2020-11-10 12:51:54 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > 'int_enc_comp.mat'< / span > , < span class = "org-string" > 'interferometer'< / span > , < span class = "org-string" > 'encoder'< / span > , < span class = "org-string" > 'u'< / span > , < span class = "org-string" > 't'< / span > );
2020-11-10 09:53:29 +01:00
Ts = 1e< span class = "org-type" > -< / span > 4; < span class = "org-comment" > % Sampling Time [s]< / span >
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > interferometer = detrend(interferometer, 0);
encoder = detrend(encoder, 0);
u = detrend(u, 0);
< / pre >
< / div >
< / div >
< / div >
2020-11-12 10:17:13 +01:00
< div id = "outline-container-org9caccde" class = "outline-3" >
< h3 id = "org9caccde" > < span class = "section-number-3" > 3.2< / span > Time Domain Results< / h3 >
2020-11-10 09:53:29 +01:00
< div class = "outline-text-3" id = "text-3-2" >
< p >
2020-11-12 10:17:13 +01:00
One period of the displacement of the mass as measured by the encoder and interferometer are shown in Figure < a href = "#orgadbe636" > 11< / a > .
2020-11-10 09:53:29 +01:00
It consist of the sinusoidal motion at 0.5Hz with an amplitude of approximately \(70\mu m\).
< / p >
< p >
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.
< / p >
2020-11-12 10:17:13 +01:00
< div id = "orgadbe636" class = "figure" >
2020-11-10 09:53:29 +01:00
< p > < img src = "figs/int_enc_one_cycle.png" alt = "int_enc_one_cycle.png" / >
< / p >
< p > < span class = "figure-number" > Figure 11: < / span > One cycle measurement< / p >
< / div >
< p >
2020-11-12 10:17:13 +01:00
The difference between the two measurements during the same period is shown in Figure < a href = "#org448b33f" > 12< / a > .
2020-11-10 09:53:29 +01:00
< / p >
2020-11-12 10:17:13 +01:00
< div id = "org448b33f" class = "figure" >
2020-11-10 09:53:29 +01:00
< p > < img src = "figs/int_enc_one_cycle_error.png" alt = "int_enc_one_cycle_error.png" / >
< / p >
< p > < span class = "figure-number" > Figure 12: < / span > Difference between the Encoder and the interferometer during one cycle< / p >
< / div >
< / div >
< / div >
2020-11-12 10:17:13 +01:00
< div id = "outline-container-orgb15ec0f" class = "outline-3" >
< h3 id = "orgb15ec0f" > < span class = "section-number-3" > 3.3< / span > Difference between Encoder and Interferometer as a function of time< / h3 >
2020-11-10 09:53:29 +01:00
< div class = "outline-text-3" id = "text-3-3" >
< p >
The data is filtered using a second order low pass filter with a cut-off frequency \(\omega_0\) as defined below.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > w0 = 2< span class = "org-type" > *< / span > < span class = "org-constant" > pi< / span > < span class = "org-type" > *< / span > 5; < span class = "org-comment" > % [rad/s]< / span >
xi = 0.7;
G_lpf = 1< span class = "org-type" > /< / span > (1 < span class = "org-type" > +< / span > 2< span class = "org-type" > *< / span > xi< span class = "org-type" > /< / span > w0< span class = "org-type" > *< / span > s < span class = "org-type" > +< / span > s< span class = "org-type" > ^< / span > 2< span class = "org-type" > /< / span > w0< span class = "org-type" > ^< / span > 2);
< / pre >
< / div >
< p >
2020-11-12 10:17:13 +01:00
After filtering, the data is “ re-shaped” such that we can superimpose all the measured periods as shown in Figure < a href = "#org99397ec" > 13< / a > .
2020-11-10 09:53:29 +01:00
This gives an idea of the measurement error as given by the Attocube during a \(70 \mu m\) motion.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > d_err_mean = reshape(lsim(G_lpf, encoder < span class = "org-type" > -< / span > interferometer, t), [2< span class = "org-type" > /< / span > Ts floor(Ts< span class = "org-type" > /< / span > 2< span class = "org-type" > *< / span > length(encoder))]);
d_err_mean = d_err_mean < span class = "org-type" > -< / span > mean(d_err_mean);
< / pre >
< / div >
2020-11-12 10:17:13 +01:00
< div id = "org99397ec" class = "figure" >
2020-11-10 09:53:29 +01:00
< p > < img src = "figs/int_enc_error_mean_time.png" alt = "int_enc_error_mean_time.png" / >
< / p >
< p > < span class = "figure-number" > Figure 13: < / span > Difference between the two measurement in the time domain, averaged for all the cycles< / p >
< / div >
< / div >
< / div >
2020-11-12 10:17:13 +01:00
< div id = "outline-container-orga0c30bc" class = "outline-3" >
< h3 id = "orga0c30bc" > < span class = "section-number-3" > 3.4< / span > Difference between Encoder and Interferometer as a function of position< / h3 >
2020-11-10 09:53:29 +01:00
< div class = "outline-text-3" id = "text-3-4" >
< p >
2020-11-12 10:17:13 +01:00
Figure < a href = "#org99397ec" > 13< / a > gives the measurement error as a function of time.
2020-11-10 09:53:29 +01:00
We here wish the compute this measurement error as a function of the position (as measured by the encoer).
< / p >
< p >
To do so, all the attocube measurements corresponding to each position measured by the Encoder (resolution of \(1nm\)) are averaged.
2020-11-12 10:17:13 +01:00
Figure < a href = "#org0eccff0" > 14< / a > 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.
2020-11-10 09:53:29 +01:00
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > [e_sorted, < span class = "org-type" > ~< / span > , e_ind] = unique(encoder);
i_mean = zeros(length(e_sorted), 1);
< span class = "org-keyword" > for< / span > < span class = "org-variable-name" > < span class = "org-constant" > i< / span > < / span > = < span class = "org-constant" > 1:length(e_sorted)< / span >
i_mean(< span class = "org-constant" > i< / span > ) = mean(interferometer(e_ind < span class = "org-type" > ==< / span > < span class = "org-constant" > i< / span > ));
< span class = "org-keyword" > end< / span >
i_mean_error = (i_mean < span class = "org-type" > -< / span > e_sorted);
< / pre >
< / div >
2020-11-12 10:17:13 +01:00
< div id = "org0eccff0" class = "figure" >
2020-11-10 09:53:29 +01:00
< p > < img src = "figs/int_enc_error_mean_position.png" alt = "int_enc_error_mean_position.png" / >
< / p >
< p > < span class = "figure-number" > Figure 14: < / span > Difference between the two measurement as a function of the measured position by the encoder, averaged for all the cycles< / p >
< / div >
< p >
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.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > win_length = 1530< span class = "org-type" > /< / span > 2; < span class = "org-comment" > % length of the windows (corresponds to 765 nm)< / span >
num_avg = floor(length(e_sorted)< span class = "org-type" > /< / span > win_length); < span class = "org-comment" > % number of averaging< / span >
i_init = ceil((length(e_sorted) < span class = "org-type" > -< / span > win_length< span class = "org-type" > *< / span > num_avg)< span class = "org-type" > /< / span > 2); < span class = "org-comment" > % does not start at the extremity< / span >
e_sorted_mean_over_period = mean(reshape(i_mean_error(i_init< span class = "org-type" > :< / span > i_init< span class = "org-type" > +< / span > win_length< span class = "org-type" > *< / span > num_avg< span class = "org-type" > -< / span > 1), [win_length num_avg]), 2);
< / pre >
< / div >
< p >
2020-11-12 10:17:13 +01:00
The obtained periodic non-linearity is shown in Figure < a href = "#orge856c17" > 15< / a > .
2020-11-10 09:53:29 +01:00
< / p >
2020-11-12 10:17:13 +01:00
< div id = "orge856c17" class = "figure" >
2020-11-10 09:53:29 +01:00
< p > < img src = "figs/int_non_linearity_period_wavelength.png" alt = "int_non_linearity_period_wavelength.png" / >
< / p >
< p > < span class = "figure-number" > Figure 15: < / span > Non-Linearity of the Interferometer over the period of the wavelength< / p >
< / div >
< / div >
< / div >
< / div >
2020-10-29 10:07:20 +01:00
< / div >
< div id = "postamble" class = "status" >
< p class = "author" > Author: Dehaeze Thomas< / p >
2020-11-12 10:17:13 +01:00
< p class = "date" > Created: 2020-11-12 jeu. 10:17< / p >
2020-10-29 10:07:20 +01:00
< / div >
< / body >
< / html >