277 lines
11 KiB
Org Mode
277 lines
11 KiB
Org Mode
#+TITLE: Nano Active Stabilization System - Instrumentation
|
|
:DRAWER:
|
|
#+LANGUAGE: en
|
|
#+EMAIL: dehaeze.thomas@gmail.com
|
|
#+AUTHOR: Dehaeze Thomas
|
|
|
|
#+HTML_LINK_HOME: ../index.html
|
|
#+HTML_LINK_UP: ../index.html
|
|
|
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
|
|
|
#+BIND: org-latex-image-default-option "scale=1"
|
|
#+BIND: org-latex-image-default-width ""
|
|
|
|
#+LaTeX_CLASS: scrreprt
|
|
#+LaTeX_CLASS_OPTIONS: [a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]
|
|
#+LaTeX_HEADER_EXTRA: \input{preamble.tex}
|
|
#+LATEX_HEADER_EXTRA: \bibliography{nass-instrumentation.bib}
|
|
|
|
#+BIND: org-latex-bib-compiler "biber"
|
|
|
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
|
#+PROPERTY: header-args:matlab+ :comments org
|
|
#+PROPERTY: header-args:matlab+ :exports none
|
|
#+PROPERTY: header-args:matlab+ :results none
|
|
#+PROPERTY: header-args:matlab+ :eval no-export
|
|
#+PROPERTY: header-args:matlab+ :noweb yes
|
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
|
#+PROPERTY: header-args:matlab+ :tangle no
|
|
|
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
|
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
|
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
|
#+PROPERTY: header-args:latex+ :results file raw replace
|
|
#+PROPERTY: header-args:latex+ :buffer no
|
|
#+PROPERTY: header-args:latex+ :tangle no
|
|
#+PROPERTY: header-args:latex+ :eval no-export
|
|
#+PROPERTY: header-args:latex+ :exports results
|
|
#+PROPERTY: header-args:latex+ :mkdirp yes
|
|
#+PROPERTY: header-args:latex+ :output-dir figs
|
|
#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png")
|
|
:END:
|
|
|
|
#+begin_export html
|
|
<hr>
|
|
<p>This report is also available as a <a href="./nass-instrumentation.pdf">pdf</a>.</p>
|
|
<hr>
|
|
#+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:
|
|
<<sec:instrumentation_dynamic_error_budgeting>>
|
|
** 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:
|
|
<<sec:instrumentation_choice>>
|
|
** 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:
|
|
<<sec:instrumentation_characterization>>
|
|
** 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
|
|
<<sec:instrumentation_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
|