Compare commits

...

2 Commits

Author SHA1 Message Date
a4d25b24cf Update .gitignore to ignore tex outputs 2020-11-03 11:08:26 +01:00
892989585b Export the report to PDF 2020-11-03 11:08:16 +01:00
9 changed files with 786 additions and 991 deletions

4
.gitignore vendored
View File

@ -1,5 +1,9 @@
auto/ auto/
*.tex *.tex
*.bbl
*.synctex.gz
.auctex-auto/
_minted*
**/figs/*.svg **/figs/*.svg
**/figs/*.tex **/figs/*.tex

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 97 KiB

1693
index.html

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,8 @@
#+TITLE: Sercalo Test Bench #+TITLE: Sercalo Test Bench
:DRAWER: :DRAWER:
#+BIND: org-latex-image-default-option "scale=1"
#+BIND: org-latex-image-default-width ""
#+STARTUP: overview #+STARTUP: overview
#+LANGUAGE: en #+LANGUAGE: en
@ -14,11 +17,15 @@
#+HTML_HEAD: <script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script> #+HTML_HEAD: <script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD: <script type="text/javascript" src="./js/readtheorg.js"></script> #+HTML_HEAD: <script type="text/javascript" src="./js/readtheorg.js"></script>
#+LATEX_CLASS: scrreprt #+LATEX_CLASS: cleanreport
#+LATEX_CLASS_OPTIONS: [] #+LATEX_CLASS_OPTIONS: [conf, hangsection, secbreak]
#+LATEX_HEADER: \usepackage{minted} #+LATEX_HEADER: \usepackage{minted}
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{/home/thomas/Cloud/thesis/latex/}{config.tex}") #+LATEX_HEADER: \newcommand{\authorFirstName}{Thomas}
#+LATEX_HEADER: \newcommand{\authorLastName}{Dehaeze}
#+LATEX_HEADER: \newcommand{\authorEmail}{dehaeze.thomas@gmail.com}
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{/home/thomas/Cloud/tikz/org/}{config.tex}")
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes #+PROPERTY: header-args:latex+ :imagemagick t :fit yes
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 #+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 #+PROPERTY: header-args:latex+ :imoutoptions -quality 100
@ -40,6 +47,12 @@
#+PROPERTY: header-args:matlab+ :mkdirp yes #+PROPERTY: header-args:matlab+ :mkdirp yes
:END: :END:
#+begin_export html
<hr>
<p>This report is also available as a <a href="./index.pdf">pdf</a>.</p>
<hr>
#+end_export
* Introduction * Introduction
** Block Diagram ** Block Diagram
The block diagram of the setup to be controlled is shown in Fig. [[fig:block_diagram_simplify]]. The block diagram of the setup to be controlled is shown in Fig. [[fig:block_diagram_simplify]].
@ -136,6 +149,7 @@ The block diagram with each transfer function is shown in Fig. [[fig:block_diagr
#+end_src #+end_src
#+name: fig:block_diagram #+name: fig:block_diagram
#+attr_latex: :width \linewidth
#+caption: Block Diagram of the Experimental Setup with detailed dynamics #+caption: Block Diagram of the Experimental Setup with detailed dynamics
#+RESULTS: #+RESULTS:
[[file:figs/sercalo_diagram.png]] [[file:figs/sercalo_diagram.png]]
@ -144,9 +158,12 @@ The block diagram with each transfer function is shown in Fig. [[fig:block_diagr
From the Sercalo documentation, we have the parameters shown on table [[tab:sercalo_parameters]]. From the Sercalo documentation, we have the parameters shown on table [[tab:sercalo_parameters]].
#+name: tab:sercalo_parameters #+name: tab:sercalo_parameters
#+attr_latex: :environment tabularx :width \linewidth :align lXXXXX
#+attr_latex: :center t :booktabs t :float t
#+caption: Sercalo Parameters #+caption: Sercalo Parameters
| | Maximum Stroke [deg] | Resonance Frequency [Hz] | DC Gain [mA/deg] | Gain at resonance [deg/V] | RC Resistance [Ohm] | | | Max. Stroke | Res. Freq. | DC Gain | Gain at res. | RC Res. |
|------------------+----------------------+--------------------------+------------------+---------------------------+---------------------| | | [deg] | [Hz] | [mA/deg] | [deg/V] | [Ohm] |
|------------------+-------------+------------+----------+--------------+---------|
| AX1 (Horizontal) | 5 | 411.13 | 28.4 | 382.9 | 9.41 | | AX1 (Horizontal) | 5 | 411.13 | 28.4 | 382.9 | 9.41 |
| AX2 (Vertical) | 5 | 252.5 | 35.2 | 350.4 | | | AX2 (Vertical) | 5 | 252.5 | 35.2 | 350.4 | |
@ -269,10 +286,12 @@ And we have:
\end{align*} \end{align*}
#+name: fig:newport_doc #+name: fig:newport_doc
#+attr_latex: :width \linewidth
#+caption: Documentation of the Newport #+caption: Documentation of the Newport
[[file:figs/newport_doc.png]] [[file:figs/newport_doc.png]]
#+name: fig:newport_gain #+name: fig:newport_gain
#+attr_latex: :width \linewidth
#+caption: Transfer function of the Newport #+caption: Transfer function of the Newport
[[file:figs/newport_gain.png]] [[file:figs/newport_gain.png]]
@ -539,6 +558,8 @@ Thus, we obtain the "gain of the 4 quadrant photo-diode as shown on table [[tab:
#+end_src #+end_src
#+name: tab:gain_4qd #+name: tab:gain_4qd
#+attr_latex: :environment tabularx :width 0.5\linewidth :align lX
#+attr_latex: :center t :booktabs t :float t
#+caption: Identified Gain of the 4 quadrant diode #+caption: Identified Gain of the 4 quadrant diode
#+RESULTS: #+RESULTS:
| Horizontal [V/rad] | Vertical [V/rad] | | Horizontal [V/rad] | Vertical [V/rad] |
@ -1807,6 +1828,8 @@ The goal is to determine the noise of the photodiodes as well as the noise of th
Multiple measurements are done with different experimental configuration as follow: Multiple measurements are done with different experimental configuration as follow:
#+name: tab:huddle_tests #+name: tab:huddle_tests
#+attr_latex: :environment tabularx :width 0.7\linewidth :align lXXX
#+attr_latex: :center t :booktabs t :float t
#+caption: Experimental Configuration for the various Huddle test #+caption: Experimental Configuration for the various Huddle test
| Number | OL/CL | Compensation Unit | Aluminum | | Number | OL/CL | Compensation Unit | Aluminum |
|--------+-------------+-------------------+----------| |--------+-------------+-------------------+----------|
@ -2058,7 +2081,6 @@ We filter the data with a first order low pass filter with a crossover frequency
#+CAPTION: PSD of the 4QD signal during Huddle tests ([[./figs/huddle_test_4qd_psd.png][png]], [[./figs/huddle_test_4qd_psd.pdf][pdf]]) #+CAPTION: PSD of the 4QD signal during Huddle tests ([[./figs/huddle_test_4qd_psd.png][png]], [[./figs/huddle_test_4qd_psd.pdf][pdf]])
[[file:figs/huddle_test_4qd_psd.png]] [[file:figs/huddle_test_4qd_psd.png]]
** Conclusion ** Conclusion
The Attocube's "Environmental Compensation Unit" does not have a significant effect on the stability of the measurement. The Attocube's "Environmental Compensation Unit" does not have a significant effect on the stability of the measurement.
@ -2245,6 +2267,8 @@ The tracking error of the feedback system used to position the Sercalo mirror sh
#+end_important #+end_important
#+name: tab:effect_angle_error #+name: tab:effect_angle_error
#+attr_latex: :environment tabularx :width 0.6\linewidth :align lX
#+attr_latex: :center t :booktabs t :float t
#+caption: Effect of an angle error $\delta \theta_c$ of the Sercalo's mirror on the measurement error $\delta L$ by the Attocube #+caption: Effect of an angle error $\delta \theta_c$ of the Sercalo's mirror on the measurement error $\delta L$ by the Attocube
| Angle Error $\delta \theta_c$ | Distance measurement error $\delta L$ | | Angle Error $\delta \theta_c$ | Distance measurement error $\delta L$ |
|-------------------------------+---------------------------------------| |-------------------------------+---------------------------------------|
@ -2355,10 +2379,10 @@ These physical properties should change relatively slowly, however, for a beam p
An *Environmental Compensation Unit* is used and can compensate for variations or air properties up to: An *Environmental Compensation Unit* is used and can compensate for variations or air properties up to:
| Air property Variations | Measurement error | | Air property Variations | Measurement error |
|-------------------------+-------------------| |-------------------------+---------------------|
| $\Delta T = \pm 0.1^oC$ | 20nm | | $\Delta T = \pm 0.1^oC$ | $\pm 10\,\text{nm}$ |
| $\Delta P = \pm 1hPa$ | 50nm | | $\Delta P = \pm 1hPa$ | $\pm 25\,\text{nm}$ |
| $\Delta \pm 2\%RH$ | 4nm | | $\Delta \pm 2\%RH$ | $\pm 2\,\text{nm}$ |
#+begin_important #+begin_important
The total measurement error induced by air properties variations is then: The total measurement error induced by air properties variations is then:
@ -2679,6 +2703,8 @@ The goal is the scale the plant prior to control synthesis.
This will simplify the choice of weighting functions and will yield useful insight on the controllability of the plant. This will simplify the choice of weighting functions and will yield useful insight on the controllability of the plant.
#+name: tab:plant_scaling_values #+name: tab:plant_scaling_values
#+attr_latex: :environment tabularx :width 0.7\linewidth :align lXXX
#+attr_latex: :center t :booktabs t :float t
#+caption: Maximum wanted values for various signals #+caption: Maximum wanted values for various signals
| | Value | Unit | Variable Name | | | Value | Unit | Variable Name |
|------------------------+-------+-------------+---------------| |------------------------+-------+-------------+---------------|

BIN
index.pdf Normal file

Binary file not shown.

View File

@ -21,7 +21,7 @@ Kppf.OutputName = {'Uch', 'Ucv'};
figure; figure;
% Magnitude % Magnitude
ax1 = subaxis(2,1,1); ax1 = subplot(2,1,1);
hold on; hold on;
plot(freqs, abs(squeeze(freqresp(G, freqs, 'Hz'))), 'k-'); plot(freqs, abs(squeeze(freqresp(G, freqs, 'Hz'))), 'k-');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
@ -30,7 +30,7 @@ ylabel('Magnitude [dB]');
hold off; hold off;
% Phase % Phase
ax2 = subaxis(2,1,2); ax2 = subplot(2,1,2);
hold on; hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(G, freqs, 'Hz'))), 'k-'); plot(freqs, 180/pi*angle(squeeze(freqresp(G, freqs, 'Hz'))), 'k-');
set(gca,'xscale','log'); set(gca,'xscale','log');

View File

@ -23,7 +23,7 @@ K.OutputName = {'Uch', 'Ucv'};
figure; figure;
% Magnitude % Magnitude
ax1 = subaxis(2,1,1); ax1 = subplot(2,1,1);
hold on; hold on;
plot(freqs, abs(squeeze(freqresp(Kh*sys('Rh', 'Uch'), freqs, 'Hz'))), 'DisplayName', '$L_h = K_h G_{d,h}^{-1} G_{\frac{V_{p,h}}{\tilde{U}_{c,h}}} G_{i,h} $'); plot(freqs, abs(squeeze(freqresp(Kh*sys('Rh', 'Uch'), freqs, 'Hz'))), 'DisplayName', '$L_h = K_h G_{d,h}^{-1} G_{\frac{V_{p,h}}{\tilde{U}_{c,h}}} G_{i,h} $');
plot(freqs, abs(squeeze(freqresp(Kv*sys('Rv', 'Ucv'), freqs, 'Hz'))), 'DisplayName', '$L_v = K_v G_{d,v}^{-1} G_{\frac{V_{p,v}}{\tilde{U}_{c,v}}} G_{i,v} $'); plot(freqs, abs(squeeze(freqresp(Kv*sys('Rv', 'Ucv'), freqs, 'Hz'))), 'DisplayName', '$L_v = K_v G_{d,v}^{-1} G_{\frac{V_{p,v}}{\tilde{U}_{c,v}}} G_{i,v} $');
@ -34,7 +34,7 @@ hold off;
legend('location', 'northeast'); legend('location', 'northeast');
% Phase % Phase
ax2 = subaxis(2,1,2); ax2 = subplot(2,1,2);
hold on; hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(Kh*sys('Rh', 'Uch'), freqs, 'Hz')))); plot(freqs, 180/pi*angle(squeeze(freqresp(Kh*sys('Rh', 'Uch'), freqs, 'Hz'))));
plot(freqs, 180/pi*angle(squeeze(freqresp(Kv*sys('Rv', 'Ucv'), freqs, 'Hz')))); plot(freqs, 180/pi*angle(squeeze(freqresp(Kv*sys('Rv', 'Ucv'), freqs, 'Hz'))));

View File

@ -46,7 +46,7 @@ ht_4 = ht_s{4};
% Time domain plots % Time domain plots
figure; figure;
ax1 = subaxis(2, 2, 1) ax1 = subplot(2, 2, 1)
hold on; hold on;
plot(ht_1.t, 1e9*ht_1.Va); plot(ht_1.t, 1e9*ht_1.Va);
hold off; hold off;
@ -54,7 +54,7 @@ ylabel('Displacement [nm]');
set(gca, 'XTickLabel',[]); set(gca, 'XTickLabel',[]);
title('OL'); title('OL');
ax2 = subaxis(2, 2, 2) ax2 = subplot(2, 2, 2)
hold on; hold on;
plot(ht_2.t, 1e9*ht_2.Va); plot(ht_2.t, 1e9*ht_2.Va);
hold off; hold off;
@ -62,7 +62,7 @@ set(gca, 'XTickLabel',[]);
set(gca, 'YTickLabel',[]); set(gca, 'YTickLabel',[]);
title('OL + CU'); title('OL + CU');
ax3 = subaxis(2, 2, 3) ax3 = subplot(2, 2, 3)
hold on; hold on;
plot(ht_3.t, 1e9*ht_3.Va); plot(ht_3.t, 1e9*ht_3.Va);
hold off; hold off;
@ -70,7 +70,7 @@ xlabel('Time [s]');
ylabel('Displacement [nm]'); ylabel('Displacement [nm]');
title('CL + CU'); title('CL + CU');
ax4 = subaxis(2, 2, 4) ax4 = subplot(2, 2, 4)
hold on; hold on;
plot(ht_4.t, 1e9*ht_4.Va); plot(ht_4.t, 1e9*ht_4.Va);
hold off; hold off;
@ -88,7 +88,7 @@ linkaxes([ax1 ax2 ax3 ax4], 'xy');
figure; figure;
ax1 = subaxis(2, 2, 1) ax1 = subplot(2, 2, 1)
hold on; hold on;
plot(ht_1.t, ht_1.Vph); plot(ht_1.t, ht_1.Vph);
plot(ht_1.t, ht_1.Vpv); plot(ht_1.t, ht_1.Vpv);
@ -97,7 +97,7 @@ ylabel('Voltage [V]');
set(gca, 'XTickLabel',[]); set(gca, 'XTickLabel',[]);
title('OL'); title('OL');
ax2 = subaxis(2, 2, 2) ax2 = subplot(2, 2, 2)
hold on; hold on;
plot(ht_2.t, ht_2.Vph); plot(ht_2.t, ht_2.Vph);
plot(ht_2.t, ht_2.Vpv); plot(ht_2.t, ht_2.Vpv);
@ -106,7 +106,7 @@ set(gca, 'XTickLabel',[]);
set(gca, 'YTickLabel',[]); set(gca, 'YTickLabel',[]);
title('OL + CU'); title('OL + CU');
ax3 = subaxis(2, 2, 3) ax3 = subplot(2, 2, 3)
hold on; hold on;
plot(ht_3.t, ht_3.Vph); plot(ht_3.t, ht_3.Vph);
plot(ht_3.t, ht_3.Vpv); plot(ht_3.t, ht_3.Vpv);
@ -115,7 +115,7 @@ xlabel('Time [s]');
ylabel('Voltage [V]'); ylabel('Voltage [V]');
title('CL + CU'); title('CL + CU');
ax4 = subaxis(2, 2, 4) ax4 = subplot(2, 2, 4)
hold on; hold on;
plot(ht_4.t, ht_4.Vph); plot(ht_4.t, ht_4.Vph);
plot(ht_4.t, ht_4.Vpv); plot(ht_4.t, ht_4.Vpv);