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:25:28 +01:00
<!-- 2021 - 02 - 02 mar. 18:24 -->
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:25:28 +01:00
< li > < a href = "#orgd4a4664" > 1. Encoder Model< / a > < / li >
< li > < a href = "#org8e70edd" > 2. Test-Bench Description< / a > < / li >
< li > < a href = "#orge118b0f" > 3. Measurement procedure< / a > < / li >
< li > < a href = "#org8e44240" > 4. Measurement Results< / a >
< ul >
< li > < a href = "#org7e465e7" > 4.1. Noise Measurement< / a > < / li >
< / ul >
< / li >
2020-12-16 11:52:53 +01:00
< / ul >
< / div >
< / div >
2021-02-02 18:25:28 +01:00
< div class = "note" id = "org4c0c9be" >
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:25:28 +01:00
< div id = "org13fff85" 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:25:28 +01:00
< div id = "outline-container-orgd4a4664" class = "outline-2" >
< h2 id = "orgd4a4664" > < 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:25:28 +01:00
The model of the encoder is shown in Figure < a href = "#org08a4e7a" > 2< / a > .
2020-12-16 14:07:07 +01:00
< / p >
2020-12-16 11:52:53 +01:00
2021-02-02 18:25:28 +01:00
< div id = "org08a4e7a" 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:25:28 +01:00
< table id = "org20ed9a5" 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:25:28 +01:00
< div id = "org2068d11" 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-01-04 11:44:11 +01:00
< p > < span class = "figure-number" > Figure 3: < / 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:25:28 +01:00
< div id = "outline-container-org8e70edd" class = "outline-2" >
< h2 id = "org8e70edd" > < span class = "section-number-2" > 2< / span > Test-Bench Description< / h2 >
2020-12-16 14:07:07 +01:00
< div class = "outline-text-2" id = "text-2" >
< p >
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 >
2020-12-16 11:52:53 +01:00
2020-12-16 14:07:07 +01:00
< p >
In order to measure the linearity, we have to compare the measured displacement with a reference sensor with a known linearity.
2020-12-17 14:54:16 +01:00
An interferometer or capacitive sensor should work fine.
2020-12-16 14:07:07 +01:00
An actuator should also be there so impose a displacement.
< / p >
2020-12-17 14:54:16 +01:00
< p >
2021-02-02 18:25:28 +01:00
One idea is to use the test-bench shown in Figure < a href = "#orgfefda93" > 4< / a > .
2020-12-17 14:54:16 +01:00
< / p >
< 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 >
< p >
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).
< / p >
2021-02-02 18:25:28 +01:00
< div id = "orgfefda93" class = "figure" >
2020-12-17 14:54:16 +01:00
< p > < img src = "figs/test_bench_encoder_calibration.png" alt = "test_bench_encoder_calibration.png" / >
< / p >
2021-01-04 11:44:11 +01:00
< p > < span class = "figure-number" > Figure 4: < / span > Schematic of the test bench< / p >
2020-12-17 14:54:16 +01:00
< / div >
< p >
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.
2021-02-02 18:25:28 +01:00
This can be done by clamping the two as done in the mounting strut tool (Figure < a href = "#org742c647" > 5< / a > ).
2020-12-17 14:54:16 +01:00
< / p >
2021-02-02 18:25:28 +01:00
< div id = "org742c647" class = "figure" >
2020-12-17 14:54:16 +01:00
< p > < img src = "figs/test_bench_measure_noise.png" alt = "test_bench_measure_noise.png" / >
< / p >
2021-01-04 11:44:11 +01:00
< p > < span class = "figure-number" > Figure 5: < / span > Mounting Strut test bench as a clamping method to measure the encoder noise.< / p >
2020-12-17 14:54:16 +01:00
< / div >
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 id = "outline-container-orge118b0f" class = "outline-2" >
< h2 id = "orge118b0f" > < span class = "section-number-2" > 3< / span > Measurement procedure< / h2 >
< / div >
< div id = "outline-container-org8e44240" class = "outline-2" >
< h2 id = "org8e44240" > < span class = "section-number-2" > 4< / span > Measurement Results< / h2 >
< div class = "outline-text-2" id = "text-4" >
< / div >
< div id = "outline-container-org7e465e7" class = "outline-3" >
< h3 id = "org7e465e7" > < span class = "section-number-3" > 4.1< / span > Noise Measurement< / h3 >
< div class = "outline-text-3" id = "text-4-1" >
< 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 >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-type" > figure< / span > ;
hold on;
plot(t, 1e9< span class = "org-type" > *< / span > x, < span class = "org-string" > '.'< / span > , < span class = "org-string" > 'DisplayName'< / span > , < span class = "org-string" > 'Raw'< / span > );
plot(t, 1e9< span class = "org-type" > *< / span > lsim(1< 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 > 500), x, t), < span class = "org-string" > 'DisplayName'< / span > , < span class = "org-string" > 'LPF - 500Hz'< / span > )
hold off;
xlabel(< span class = "org-string" > 'Time [s]'< / span > );
ylabel(< span class = "org-string" > 'Displacement [nm]'< / span > );
legend(< span class = "org-string" > 'location'< / span > , < span class = "org-string" > 'northeast'< / span > );
< / pre >
< / div >
< div id = "org3070d03" class = "figure" >
< p > < img src = "figs/vionic_noise_time.png" alt = "vionic_noise_time.png" / >
< / p >
< p > < span class = "figure-number" > Figure 6: < / span > Time domain measurement (raw data and low pass filtered data)< / p >
< / div >
< div id = "orgd593081" class = "figure" >
< p > < img src = "figs/vionic_noise_asd.png" alt = "vionic_noise_asd.png" / >
< / p >
< p > < span class = "figure-number" > Figure 7: < / span > Amplitude Spectral Density of the measured signal< / p >
2020-12-16 14:07:07 +01:00
< / div >
2020-12-16 11:52:53 +01:00
2021-02-02 18:25:28 +01:00
< p >
Let’ s create a transfer function that approximate the measured noise of the encoder.
< / p >
< 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 >
< / div >
< div id = "orgd1f9fd9" class = "figure" >
< p > < img src = "figs/vionic_noise_asd_model.png" alt = "vionic_noise_asd_model.png" / >
< / p >
< p > < span class = "figure-number" > Figure 8: < / span > Measured ASD of the noise and modelled one< / p >
< / div >
< / div >
< / 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:25:28 +01:00
< p class = "date" > Created: 2021-02-02 mar. 18:24< / p >
2020-12-16 11:52:53 +01:00
< / div >
< / body >
< / html >