139 lines
5.4 KiB
Org Mode
139 lines
5.4 KiB
Org Mode
#+TITLE: Encoder Renishaw Vionic - Test Bench
|
|
: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]
|
|
#+LaTeX_HEADER_EXTRA: \input{preamble.tex}
|
|
|
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
|
#+PROPERTY: header-args:matlab+ :comments org
|
|
#+PROPERTY: header-args:matlab+ :exports both
|
|
#+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: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:
|
|
|
|
* Introduction :ignore:
|
|
|
|
#+begin_note
|
|
You can find below the document of:
|
|
- [[file:doc/L-9517-9678-05-A_Data_sheet_VIONiC_series_en.pdf][Vionic Encoder]]
|
|
- [[file:doc/L-9517-9862-01-C_Data_sheet_RKLC_EN.pdf][Linear Scale]]
|
|
#+end_note
|
|
|
|
We would like to characterize the encoder measurement system.
|
|
|
|
In particular, we would like to measure:
|
|
- Power Spectral Density of the measurement noise
|
|
- Bandwidth of the sensor
|
|
- Linearity of the sensor
|
|
|
|
#+name: fig:encoder_vionic
|
|
#+caption: Picture of the Vionic Encoder
|
|
[[file:figs/encoder_vionic.png]]
|
|
|
|
* Encoder Model
|
|
The Encoder is characterized by its dynamics $G_m(s)$ from the "true" displacement $y$ to measured displacement $y_m$.
|
|
Ideally, this dynamics is constant over a wide frequency band with very small phase drop.
|
|
|
|
It is also characterized by its measurement noise $n$ that can be described by its Power Spectral Density (PSD).
|
|
|
|
The model of the encoder is shown in Figure [[fig:encoder-model-schematic]].
|
|
|
|
#+begin_src latex :file encoder-model-schematic.pdf
|
|
\begin{tikzpicture}
|
|
\node[block] (G) at (0,0){$G_m(s)$};
|
|
\node[addb, left=0.8 of G] (add){};
|
|
|
|
\draw[<-] (add.west) -- ++(-1.0, 0) node[above right]{$y$};
|
|
\draw[->] (add.east) -- (G.west);
|
|
\draw[->] (G.east) -- ++(1.0, 0) node[above left]{$y_m$};
|
|
\draw[<-] (add.north) -- ++(0, 0.6) node[below right](n){$n$};
|
|
|
|
\begin{scope}[on background layer]
|
|
\node[fit={(add.west|-G.south) (n.north-|G.east)}, inner sep=8pt, draw, dashed, fill=black!20!white] (P) {};
|
|
\node[below left] at (P.north east) {Encoder};
|
|
\end{scope}
|
|
\end{tikzpicture}
|
|
#+end_src
|
|
|
|
#+name: fig:encoder-model-schematic
|
|
#+caption: Model of the Encoder
|
|
#+RESULTS:
|
|
[[file:figs/encoder-model-schematic.png]]
|
|
|
|
|
|
#+name: tab:vionic_characteristics_manual
|
|
#+caption: Characteristics of the Vionic Encoder
|
|
#+attr_latex: :environment tabularx :width \linewidth :align lXX
|
|
#+attr_latex: :center t :booktabs t :float t
|
|
| *Characteristics* | *Manual* |
|
|
|----------------------+----------------|
|
|
| Resolution | 2.5nm |
|
|
| Sub-Divisional Error | $< \pm 15\,nm$ |
|
|
| Bandwidth | > 50 kHz |
|
|
|
|
|
|
#+name: fig:vionic_expected_noise
|
|
#+caption: Expected interpolation errors for the Vionic Encoder
|
|
[[file:./figs/vionic_expected_noise.png]]
|
|
|
|
|
|
* Test-Bench Description
|
|
|
|
To measure the noise $n$ of the encoder, one can rigidly fix the head and the ruler together such that no motion should be measured.
|
|
Then, the measured signal $y_m$ corresponds to the noise $n$.
|
|
|
|
In order to measure the linearity, we have to compare the measured displacement with a reference sensor with a known linearity.
|
|
An interferometer or capacitive sensor should work fine.
|
|
An actuator should also be there so impose a displacement.
|
|
|
|
One idea is to use the test-bench shown in Figure [[fig:test_bench_encoder_calibration]].
|
|
|
|
The APA300ML is used to excite the mass in a broad bandwidth.
|
|
The motion is measured at the same time by the Vionic Encoder and by an interferometer (most likely an Attocube).
|
|
|
|
As the interferometer has a very large bandwidth, we should be able to estimate the bandwidth of the encoder is it is less than the Nyquist frequency (~ 5kHz).
|
|
|
|
#+name: fig:test_bench_encoder_calibration
|
|
#+caption: Schematic of the test bench
|
|
[[file:figs/test_bench_encoder_calibration.png]]
|
|
|
|
To measure the noise of the sensor, we can also simply measure the output signal when the relative motion between the encoder and the ruler is null.
|
|
This can be done by clamping the two as done in the mounting strut tool (Figure [[fig:test_bench_measure_noise]]).
|
|
|
|
#+name: fig:test_bench_measure_noise
|
|
#+caption: Mounting Strut test bench as a clamping method to measure the encoder noise.
|
|
[[file:figs/test_bench_measure_noise.png]]
|
|
|
|
* Measurement procedure
|
|
|
|
* Measurement Results
|