#+end_export
#+latex: \clearpage
* Build :noexport:
#+NAME: startblock
#+BEGIN_SRC emacs-lisp :results none :tangle no
(add-to-list 'org-latex-classes
'("scrreprt"
"\\documentclass{scrreprt}"
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
))
;; Remove automatic org heading labels
(defun my-latex-filter-removeOrgAutoLabels (text backend info)
"Org-mode automatically generates labels for headings despite explicit use of `#+LABEL`. This filter forcibly removes all automatically generated org-labels in headings."
(when (org-export-derived-backend-p backend 'latex)
(replace-regexp-in-string "\\\\label{sec:org[a-f0-9]+}\n" "" text)))
(add-to-list 'org-export-filter-headline-functions
'my-latex-filter-removeOrgAutoLabels)
;; Remove all org comments in the output LaTeX file
(defun delete-org-comments (backend)
(loop for comment in (reverse (org-element-map (org-element-parse-buffer)
'comment 'identity))
do
(setf (buffer-substring (org-element-property :begin comment)
(org-element-property :end comment))
"")))
(add-hook 'org-export-before-processing-hook 'delete-org-comments)
;; Use no package by default
(setq org-latex-packages-alist nil)
(setq org-latex-default-packages-alist nil)
;; Do not include the subtitle inside the title
(setq org-latex-subtitle-separate t)
(setq org-latex-subtitle-format "\\subtitle{%s}")
(setq org-export-before-parsing-hook '(org-ref-glossary-before-parsing
org-ref-acronyms-before-parsing))
#+END_SRC
* Notes :noexport:
** Notes
Prefix is =instrumentation=
Compilation of the following reports:
- [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-PD200/test-bench-pd200.org][test-bench-PD200]] and [[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-piezo-amplifiers/index.org][test-bench-piezo-amplifiers]] (but less useful)
- [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-vionic/test-bench-vionic.org][test-bench-vionic]]
- [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-attocube/test-bench-attocube.org][test-bench-attocube]]
- [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/noise_budgeting.org][file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/noise_budgeting.org]] for the maximum allowed noise of the relative motion sensors
- [ ] DAC, ADC, Control system
- [ ] Reading of the force sensor: ADC + [[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-force-sensor/test-bench-force-sensor.org][test-bench-force-sensor]]
Electrical characteristics of the APA force sensor
** TODO [#C] Noise budgeting to have specifications
Simplified model (uniaxial?)
From maximum induced vibration, and estimated bandwidth (S and T), estimate the maximum:
- Actuator noise (i.e DAC + voltage amplifier)
- force sensor noise (i.e. ADC) + encoder noise?
- external metrology noise? (not very relevant, maybe this should be assumed, similar to Attocube noise [[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-attocube/test-bench-attocube.org][test-bench-attocube]])
=> *Specifications*
And specifications in terms of bandwidth, voltage ranges, etc...
** TODO [#C] Find instrumentation that meet such specification
How to read force sensor, etc...
** TODO [#C] Characterization of received instruments and compare with specifications
Test benches to characterize instruments
- [[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-PD200/test-bench-pd200.org][test-bench-PD200]]
- [[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-force-sensor/test-bench-force-sensor.org][test-bench-force-sensor]]
** TODO [#C] Perform rigorous noise budgeting
Sources:
- ADC: measured
- PD200: measured
- Encoder: measured
- ADC (force sensors): measured
- Ground motion: estimated
By taking into account all those sources, we should be able to do a noise budgeting and compare with the obtain measurements.
We need the following transfer functions:
- from ground motion (x,y,z) to strut motion (1 to 6) => Simscape
- from DAC voltage to strut motion => identified FRF
- from PD200 voltage to strut motion => identified FRF
- from ADC noise to strut motion => identified FRF + Controller (closed-loop)
* Introduction :ignore:
The goal is to show that each element in the system has been properly chosen based on certain requirements.
In order to determine the maximum noise of each instrumentation, a dynamic error budgeting is performed in Section ref:sec:instrumentation_dynamic_error_budgeting.
The required instrumentation are then selected based on obtained noise specifications and other requirements summarized in Section ref:sec:instrumentation_choice.
The received instrumentation are characterized in Section ref:sec:instrumentation_characterization.
#+name: tab:instrumentation_section_matlab_code
#+caption: Report sections and corresponding Matlab files
#+attr_latex: :environment tabularx :width 0.6\linewidth :align lX
#+attr_latex: :center t :booktabs t
| *Sections* | *Matlab File* |
|----------------------------------+------------------------|
| Section ref:sec:instrumentation_ | =instrumentation_1_.m= |
* Dynamic Error Budgeting
:PROPERTIES:
:HEADER-ARGS:matlab+: :tangle matlab/instrumentation_1_dynamic_error_budgeting.m
:END:
<>
** Introduction :ignore:
*Goal*: get maximum noise of instrumentation
*Procedure*:
- Get closed-loop transfer functions from noises to positioning error
Need the multi-body model with controllers
- Suppose a maximum error ASD.
Suppose flat ASD, bandwidth of ~200Hz, maximum RMS of ~10nmRMS => x nm/sqrt(Hz)
- Deduce the maximum ASD of the noise sources
Have a look at his report: [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/noise_budgeting.org][file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/noise_budgeting.org]]
** Estimation of the online metrology noise
[[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-attocube/test-bench-attocube.org][test-bench-attocube]]
** Closed-Loop transfer functions
** Estimation of maximum instrumentation noise
- Output the maximum instrumentation noise ASD in =.mat= files (that will be used to compare with the obtained instrumentations)
* Choice of Instrumentation
:PROPERTIES:
:HEADER-ARGS:matlab+: :tangle matlab/instrumentation_2_choice.m
:END:
<>
** Introduction :ignore:
In previous section: noise characteristics.
In this section, other characteristics (range, bandwidth, etc...)
ADC, DAC, Voltage amplifier, Encoder
*Model of each instrument* (transfer function + noise source).
In this section, also tell which instrumentation has been bought.
** Piezoelectric Voltage Amplifier
Capacitance of the piezoelectric actuator
** ADC
Talk about input impedance, ...
Add resistor, reading of the force sensor: ADC + [[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-force-sensor/test-bench-force-sensor.org][test-bench-force-sensor]]
* Characterization of Instrumentation
:PROPERTIES:
:HEADER-ARGS:matlab+: :tangle matlab/instrumentation_3_characterization.m
:END:
<>
** Introduction :ignore:
For each element, make a table with the specifications, and the measured performances for comparison.
** Analog to Digital Converters
[[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-PD200/test-bench-pd200.org::*Quantization Noise of the ADC][Quantization Noise of the ADC]]
** Digital to Analog Converters
[[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-PD200/test-bench-pd200.org::*16bits DAC noise measurement][16bits DAC noise measurement]]
** Piezoelectric Voltage Amplifier
[[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-PD200/test-bench-pd200.org][test-bench-PD200]]
** Linear Encoders
[[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-vionic/test-bench-vionic.org][test-bench-vionic]]
* Conclusion
<>
* Bibliography :ignore:
#+latex: \printbibliography[heading=bibintoc,title={Bibliography}]
* Helping Functions :noexport:
** Initialize Path
#+NAME: m-init-path
#+BEGIN_SRC matlab
%% Path for functions, data and scripts
addpath('./matlab/mat/'); % Path for data
addpath('./matlab/'); % Path for scripts
#+END_SRC
#+NAME: m-init-path-tangle
#+BEGIN_SRC matlab
%% Path for functions, data and scripts
addpath('./mat/'); % Path for data
#+END_SRC
** Initialize other elements
#+NAME: m-init-other
#+BEGIN_SRC matlab
%% Colors for the figures
colors = colororder;
#+END_SRC