#+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: #+HTML_HEAD: #+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

This report is also available as a pdf.


#+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