2020-12-16 11:52:53 +01:00
<?xml version="1.0" encoding="utf-8"?>
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" lang = "en" xml:lang = "en" >
< head >
2021-02-02 18:46:58 +01:00
<!-- 2021 - 02 - 02 mar. 18:44 -->
2020-12-16 11:52:53 +01:00
< meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" / >
< title > Encoder Renishaw Vionic - Test Bench< / title >
< meta name = "generator" content = "Org mode" / >
< meta name = "author" content = "Dehaeze Thomas" / >
< link rel = "stylesheet" type = "text/css" href = "https://research.tdehaeze.xyz/css/style.css" / >
< script type = "text/javascript" src = "https://research.tdehaeze.xyz/js/script.js" > < / script >
2021-02-02 18:25:28 +01:00
< script >
MathJax = {
svg: {
scale: 1,
fontCache: "global"
},
tex: {
tags: "ams",
multlineWidth: "%MULTLINEWIDTH",
tagSide: "right",
macros: {bm: ["\\boldsymbol{#1}",1],},
tagIndent: ".8em"
}
};
< / script >
< script id = "MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js">< / script >
2020-12-16 11:52:53 +01:00
< / head >
< body >
< div id = "org-div-home-and-up" >
< a accesskey = "h" href = "../index.html" > UP < / a >
|
< a accesskey = "H" href = "../index.html" > HOME < / a >
< / div > < div id = "content" >
< h1 class = "title" > Encoder Renishaw Vionic - Test Bench< / h1 >
< div id = "table-of-contents" >
< h2 > Table of Contents< / h2 >
< div id = "text-table-of-contents" >
< ul >
2021-02-02 18:46:58 +01:00
< li > < a href = "#orgad23dda" > 1. Encoder Model< / a > < / li >
< li > < a href = "#org6337f06" > 2. Noise Measurement< / a >
2021-02-02 18:25:28 +01:00
< ul >
2021-02-02 18:46:58 +01:00
< li > < a href = "#orgc20e5d1" > 2.1. Test Bench< / a > < / li >
< li > < a href = "#org818aa3a" > 2.2. Results< / a > < / li >
< / ul >
< / li >
< li > < a href = "#orgfb293f3" > 3. Linearity Measurement< / a >
< ul >
< li > < a href = "#orgee55e64" > 3.1. Test Bench< / a > < / li >
< li > < a href = "#org53d1667" > 3.2. Results< / a > < / li >
< / ul >
< / li >
< li > < a href = "#org1f03c19" > 4. Dynamical Measurement< / a >
< ul >
< li > < a href = "#org2650123" > 4.1. Test Bench< / a > < / li >
< li > < a href = "#org26f79d3" > 4.2. Results< / a > < / li >
2021-02-02 18:25:28 +01:00
< / ul >
< / li >
2020-12-16 11:52:53 +01:00
< / ul >
< / div >
< / div >
2021-02-02 18:46:58 +01:00
< hr >
< p > This report is also available as a < a href = "./index.pdf" > pdf< / a > .< / p >
< hr >
2020-12-16 11:52:53 +01:00
2021-02-02 18:46:58 +01:00
< div class = "note" id = "org7fbf5f9" >
2020-12-16 11:52:53 +01:00
< p >
You can find below the document of:
< / p >
< ul class = "org-ul" >
< li > < a href = "doc/L-9517-9678-05-A_Data_sheet_VIONiC_series_en.pdf" > Vionic Encoder< / a > < / li >
< li > < a href = "doc/L-9517-9862-01-C_Data_sheet_RKLC_EN.pdf" > Linear Scale< / a > < / li >
< / ul >
2020-12-16 14:07:07 +01:00
< / div >
< p >
We would like to characterize the encoder measurement system.
< / p >
< p >
In particular, we would like to measure:
< / p >
< ul class = "org-ul" >
< li > Power Spectral Density of the measurement noise< / li >
2020-12-17 14:54:16 +01:00
< li > Bandwidth of the sensor< / li >
< li > Linearity of the sensor< / li >
2020-12-16 14:07:07 +01:00
< / ul >
2021-01-04 11:44:11 +01:00
2021-02-02 18:46:58 +01:00
< div id = "org136f1cc" class = "figure" >
2021-01-04 11:44:11 +01:00
< p > < img src = "figs/encoder_vionic.png" alt = "encoder_vionic.png" / >
< / p >
< p > < span class = "figure-number" > Figure 1: < / span > Picture of the Vionic Encoder< / p >
< / div >
2021-02-02 18:46:58 +01:00
< div id = "outline-container-orgad23dda" class = "outline-2" >
< h2 id = "orgad23dda" > < span class = "section-number-2" > 1< / span > Encoder Model< / h2 >
2020-12-16 11:52:53 +01:00
< div class = "outline-text-2" id = "text-1" >
< p >
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.
< / p >
< p >
It is also characterized by its measurement noise \(n\) that can be described by its Power Spectral Density (PSD).
< / p >
2020-12-16 14:07:07 +01:00
< p >
2021-02-02 18:46:58 +01:00
The model of the encoder is shown in Figure < a href = "#orgb95c9f6" > 2< / a > .
2020-12-16 14:07:07 +01:00
< / p >
2020-12-16 11:52:53 +01:00
2021-02-02 18:46:58 +01:00
< div id = "orgb95c9f6" class = "figure" >
2020-12-16 11:52:53 +01:00
< p > < img src = "figs/encoder-model-schematic.png" alt = "encoder-model-schematic.png" / >
< / p >
2021-01-04 11:44:11 +01:00
< p > < span class = "figure-number" > Figure 2: < / span > Model of the Encoder< / p >
2020-12-16 11:52:53 +01:00
< / div >
2020-12-17 14:54:16 +01:00
2021-02-02 18:46:58 +01:00
< p >
We can also use a transfer function \(G_n(s)\) to shape a noise \(\tilde{n}\) with unity ASD as shown in Figure < a href = "#org9d20614" > 4< / a > .
< / p >
2020-12-17 14:54:16 +01:00
2021-02-02 18:46:58 +01:00
< div id = "org985a473" class = "figure" >
< p > < img src = "figs/encoder-model-schematic-with-asd.png" alt = "encoder-model-schematic-with-asd.png" / >
< / p >
< / div >
< table id = "orgcd45716" border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
2020-12-17 14:54:16 +01:00
< caption class = "t-above" > < span class = "table-number" > Table 1:< / span > Characteristics of the Vionic Encoder< / caption >
< colgroup >
< col class = "org-left" / >
2021-02-02 18:25:28 +01:00
< col class = "org-center" / >
< col class = "org-center" / >
2020-12-17 14:54:16 +01:00
< / colgroup >
< thead >
< tr >
< th scope = "col" class = "org-left" > < b > Characteristics< / b > < / th >
2021-02-02 18:25:28 +01:00
< th scope = "col" class = "org-center" > < b > Manual< / b > < / th >
< th scope = "col" class = "org-center" > < b > Specifications< / b > < / th >
2020-12-17 14:54:16 +01:00
< / tr >
< / thead >
< tbody >
2021-02-02 18:25:28 +01:00
< tr >
< td class = "org-left" > Range< / td >
< td class = "org-center" > Ruler length< / td >
< td class = "org-center" > > 200 [um]< / td >
< / tr >
2020-12-17 14:54:16 +01:00
< tr >
< td class = "org-left" > Resolution< / td >
2021-02-02 18:25:28 +01:00
< td class = "org-center" > 2.5 [nm]< / td >
< td class = "org-center" > < 50 [nm rms]< / td >
2020-12-17 14:54:16 +01:00
< / tr >
< tr >
< td class = "org-left" > Sub-Divisional Error< / td >
2021-02-02 18:25:28 +01:00
< td class = "org-center" > \(< \pm 15\,nm\)< / td >
< td class = "org-center" >   < / td >
2020-12-17 14:54:16 +01:00
< / tr >
< tr >
< td class = "org-left" > Bandwidth< / td >
2021-02-02 18:25:28 +01:00
< td class = "org-center" > To be checked< / td >
< td class = "org-center" > > 5 [kHz]< / td >
2020-12-17 14:54:16 +01:00
< / tr >
< / tbody >
< / table >
2021-02-02 18:46:58 +01:00
< div id = "org9d20614" class = "figure" >
2020-12-17 14:54:16 +01:00
< p > < img src = "./figs/vionic_expected_noise.png" alt = "vionic_expected_noise.png" / >
< / p >
2021-02-02 18:46:58 +01:00
< p > < span class = "figure-number" > Figure 4: < / span > Expected interpolation errors for the Vionic Encoder< / p >
2020-12-16 11:52:53 +01:00
< / div >
< / div >
2020-12-17 14:54:16 +01:00
< / div >
2020-12-16 11:52:53 +01:00
2021-02-02 18:46:58 +01:00
< div id = "outline-container-org6337f06" class = "outline-2" >
< h2 id = "org6337f06" > < span class = "section-number-2" > 2< / span > Noise Measurement< / h2 >
2020-12-16 14:07:07 +01:00
< div class = "outline-text-2" id = "text-2" >
< p >
2021-02-02 18:46:58 +01:00
< a id = "org93db977" > < / a >
< / p >
< / div >
< div id = "outline-container-orgc20e5d1" class = "outline-3" >
< h3 id = "orgc20e5d1" > < span class = "section-number-3" > 2.1< / span > Test Bench< / h3 >
< div class = "outline-text-3" id = "text-2-1" >
< p >
2020-12-16 14:07:07 +01:00
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\).
< / p >
2021-02-02 18:46:58 +01:00
< / div >
< / div >
2020-12-16 11:52:53 +01:00
2021-02-02 18:46:58 +01:00
< div id = "outline-container-org818aa3a" class = "outline-3" >
< h3 id = "org818aa3a" > < span class = "section-number-3" > 2.2< / span > Results< / h3 >
< div class = "outline-text-3" id = "text-2-2" >
2020-12-16 14:07:07 +01:00
< p >
2021-02-02 18:46:58 +01:00
First we load the data.
2020-12-16 14:07:07 +01:00
< / p >
2021-02-02 18:46:58 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > load(< span class = "org-string" > 'noise_meas_100s_20kHz.mat'< / span > , < span class = "org-string" > 't'< / span > , < span class = "org-string" > 'x'< / span > );
x = x < span class = "org-type" > -< / span > mean(x);
< / pre >
< / div >
2020-12-17 14:54:16 +01:00
< p >
2021-02-02 18:46:58 +01:00
The time domain data are shown in Figure < a href = "#orgb5a687f" > 4< / a > .
2020-12-17 14:54:16 +01:00
< / p >
< p >
2021-02-02 18:46:58 +01:00
< img src = "figs/vionic_noise_time.png" alt = "vionic_noise_time.png" / >
The amplitude spectral density is computed and shown in Figure < a href = "#org5702aa0" > 5< / a > .
2020-12-17 14:54:16 +01:00
< / p >
2021-02-02 18:46:58 +01:00
< div id = "org5702aa0" class = "figure" >
< p > < img src = "figs/vionic_noise_asd.png" alt = "vionic_noise_asd.png" / >
< / p >
< p > < span class = "figure-number" > Figure 5: < / span > Amplitude Spectral Density of the measured signal< / p >
< / div >
2020-12-17 14:54:16 +01:00
2021-02-02 18:46:58 +01:00
< p >
Let’ s create a transfer function that approximate the measured noise of the encoder.
2020-12-17 14:54:16 +01:00
< / p >
2021-02-02 18:46:58 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > Gn_e = 1.8e< span class = "org-type" > -< / span > 11< span class = "org-type" > /< / span > (1 < span class = "org-type" > +< / span > s< span class = "org-type" > /< / span > 2< span class = "org-type" > /< / span > < span class = "org-constant" > pi< / span > < span class = "org-type" > /< / span > 5e3);
< / pre >
2020-12-17 14:54:16 +01:00
< / div >
< p >
2021-02-02 18:46:58 +01:00
The amplitude of the transfer function and the measured ASD are shown in Figure < a href = "#orgbbcd196" > 6< / a > .
2020-12-17 14:54:16 +01:00
< / p >
2021-02-02 18:46:58 +01:00
< div id = "orgbbcd196" class = "figure" >
< p > < img src = "figs/vionic_noise_asd_model.png" alt = "vionic_noise_asd_model.png" / >
2020-12-17 14:54:16 +01:00
< / p >
2021-02-02 18:46:58 +01:00
< p > < span class = "figure-number" > Figure 6: < / span > Measured ASD of the noise and modelled one< / p >
2020-12-16 14:07:07 +01:00
< / div >
2020-12-16 11:52:53 +01:00
< / div >
2021-02-02 18:25:28 +01:00
< / div >
< / div >
2021-02-02 18:46:58 +01:00
< div id = "outline-container-orgfb293f3" class = "outline-2" >
< h2 id = "orgfb293f3" > < span class = "section-number-2" > 3< / span > Linearity Measurement< / h2 >
< div class = "outline-text-2" id = "text-3" >
< p >
< a id = "org0812023" > < / a >
< / p >
2021-02-02 18:25:28 +01:00
< / div >
2021-02-02 18:46:58 +01:00
< div id = "outline-container-orgee55e64" class = "outline-3" >
< h3 id = "orgee55e64" > < span class = "section-number-3" > 3.1< / span > Test Bench< / h3 >
< div class = "outline-text-3" id = "text-3-1" >
< p >
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.
< / p >
2021-02-02 18:25:28 +01:00
2021-02-02 18:46:58 +01:00
< p >
One idea is to use the test-bench shown in Figure < a href = "#org00b4ff5" > 7< / a > .
< / p >
2021-02-02 18:25:28 +01:00
2021-02-02 18:46:58 +01:00
< p >
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).
< / p >
2021-02-02 18:25:28 +01:00
2021-02-02 18:46:58 +01:00
< p >
As the interferometer has a very large bandwidth, we should be able to estimate the bandwidth of the encoder if it is less than the Nyquist frequency that can be around 10kHz.
2021-02-02 18:25:28 +01:00
< / p >
2021-02-02 18:46:58 +01:00
< div id = "org00b4ff5" class = "figure" >
< p > < img src = "figs/test_bench_encoder_calibration.png" alt = "test_bench_encoder_calibration.png" / >
2021-02-02 18:25:28 +01:00
< / p >
2021-02-02 18:46:58 +01:00
< p > < span class = "figure-number" > Figure 7: < / span > Schematic of the test bench< / p >
< / div >
2020-12-16 14:07:07 +01:00
< / div >
2021-02-02 18:25:28 +01:00
< / div >
2021-02-02 18:46:58 +01:00
< div id = "outline-container-org53d1667" class = "outline-3" >
< h3 id = "org53d1667" > < span class = "section-number-3" > 3.2< / span > Results< / h3 >
< / div >
< / div >
2021-02-02 18:25:28 +01:00
2021-02-02 18:46:58 +01:00
< div id = "outline-container-org1f03c19" class = "outline-2" >
< h2 id = "org1f03c19" > < span class = "section-number-2" > 4< / span > Dynamical Measurement< / h2 >
< div class = "outline-text-2" id = "text-4" >
< p >
< a id = "org02907d6" > < / a >
2021-02-02 18:25:28 +01:00
< / p >
< / div >
2021-02-02 18:46:58 +01:00
< div id = "outline-container-org2650123" class = "outline-3" >
< h3 id = "org2650123" > < span class = "section-number-3" > 4.1< / span > Test Bench< / h3 >
2021-02-02 18:25:28 +01:00
< / div >
2021-02-02 18:46:58 +01:00
< div id = "outline-container-org26f79d3" class = "outline-3" >
< h3 id = "org26f79d3" > < span class = "section-number-3" > 4.2< / span > Results< / h3 >
2021-02-02 18:25:28 +01:00
< / div >
2020-12-16 11:52:53 +01:00
< / div >
< / div >
< div id = "postamble" class = "status" >
< p class = "author" > Author: Dehaeze Thomas< / p >
2021-02-02 18:46:58 +01:00
< p class = "date" > Created: 2021-02-02 mar. 18:44< / p >
2020-12-16 11:52:53 +01:00
< / div >
< / body >
< / html >