2021-02-02 18:46:58 +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-03 11:20:22 +01:00
<!-- 2021 - 02 - 03 mer. 11:20 -->
2021-02-02 18:46:58 +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 >
< 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 >
< / 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-03 11:20:22 +01:00
< li > < a href = "#org691fd8d" > 1. Encoder Model< / a > < / li >
< li > < a href = "#org6d49234" > 2. Noise Measurement< / a >
2021-02-02 18:46:58 +01:00
< ul >
2021-02-03 11:20:22 +01:00
< li > < a href = "#orga5ff56c" > 2.1. Test Bench< / a > < / li >
< li > < a href = "#org14877fe" > 2.2. Results< / a > < / li >
2021-02-02 18:46:58 +01:00
< / ul >
< / li >
2021-02-03 11:20:22 +01:00
< li > < a href = "#org2b0bcde" > 3. Linearity Measurement< / a >
2021-02-02 18:46:58 +01:00
< ul >
2021-02-03 11:20:22 +01:00
< li > < a href = "#org175ba6f" > 3.1. Test Bench< / a > < / li >
< li > < a href = "#org69056ec" > 3.2. Results< / a > < / li >
2021-02-02 18:46:58 +01:00
< / ul >
< / li >
2021-02-03 11:20:22 +01:00
< li > < a href = "#org5ca0c03" > 4. Dynamical Measurement< / a >
2021-02-02 18:46:58 +01:00
< ul >
2021-02-03 11:20:22 +01:00
< li > < a href = "#orgde9a37d" > 4.1. Test Bench< / a > < / li >
< li > < a href = "#org8bc51db" > 4.2. Results< / a > < / li >
2021-02-02 18:46:58 +01:00
< / ul >
< / li >
< / ul >
< / div >
< / div >
< hr >
< p > This report is also available as a < a href = "./test-bench-vionic.pdf" > pdf< / a > .< / p >
< hr >
2021-02-03 11:20:22 +01:00
< div class = "note" id = "org978e8ad" >
2021-02-02 18:46:58 +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 >
< / 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 >
< li > Bandwidth of the sensor< / li >
< li > Linearity of the sensor< / li >
< / ul >
2021-02-03 11:20:22 +01:00
< div id = "orgf372152" class = "figure" >
2021-02-02 18:46:58 +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-03 11:20:22 +01:00
< ul class = "org-ul" >
< li > 1: 2YA275< / li >
< li > 2: 2YA274< / li >
< li > 3: 2YA273< / li >
< li > 4: 2YA270< / li >
< li > 5: 2YA272< / li >
< li > 6: 2YA271< / li >
< li > 7: 2YJ313< / li >
< / ul >
< div id = "outline-container-org691fd8d" class = "outline-2" >
< h2 id = "org691fd8d" > < span class = "section-number-2" > 1< / span > Encoder Model< / h2 >
2021-02-02 18:46:58 +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 >
< p >
2021-02-03 11:20:22 +01:00
The model of the encoder is shown in Figure < a href = "#orgb6cf5b4" > 2< / a > .
2021-02-02 18:46:58 +01:00
< / p >
2021-02-03 11:20:22 +01:00
< div id = "orgb6cf5b4" class = "figure" >
2021-02-02 18:46:58 +01:00
< p > < img src = "figs/encoder-model-schematic.png" alt = "encoder-model-schematic.png" / >
< / p >
< p > < span class = "figure-number" > Figure 2: < / span > Model of the Encoder< / p >
< / div >
< p >
2021-02-03 11:20:22 +01:00
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 = "#orgd00343b" > 4< / a > .
2021-02-02 18:46:58 +01:00
< / p >
2021-02-03 11:20:22 +01:00
< div id = "org2725c4b" class = "figure" >
2021-02-02 18:46:58 +01:00
< p > < img src = "figs/encoder-model-schematic-with-asd.png" alt = "encoder-model-schematic-with-asd.png" / >
< / p >
< / div >
2021-02-03 11:20:22 +01:00
< table id = "org20632fc" border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
2021-02-02 18:46:58 +01:00
< caption class = "t-above" > < span class = "table-number" > Table 1:< / span > Characteristics of the Vionic Encoder< / caption >
< colgroup >
< col class = "org-left" / >
< col class = "org-center" / >
< col class = "org-center" / >
< / colgroup >
< thead >
< tr >
< th scope = "col" class = "org-left" > < b > Characteristics< / b > < / th >
< th scope = "col" class = "org-center" > < b > Manual< / b > < / th >
< th scope = "col" class = "org-center" > < b > Specifications< / b > < / th >
< / tr >
< / thead >
< tbody >
< tr >
< td class = "org-left" > Range< / td >
< td class = "org-center" > Ruler length< / td >
< td class = "org-center" > > 200 [um]< / td >
< / tr >
< tr >
< td class = "org-left" > Resolution< / td >
< td class = "org-center" > 2.5 [nm]< / td >
< td class = "org-center" > < 50 [nm rms]< / td >
< / tr >
< tr >
< td class = "org-left" > Sub-Divisional Error< / td >
< td class = "org-center" > \(< \pm 15\,nm\)< / td >
< td class = "org-center" >   < / td >
< / tr >
< tr >
< td class = "org-left" > Bandwidth< / td >
< td class = "org-center" > To be checked< / td >
< td class = "org-center" > > 5 [kHz]< / td >
< / tr >
< / tbody >
< / table >
2021-02-03 11:20:22 +01:00
< div id = "orgd00343b" class = "figure" >
2021-02-02 18:46:58 +01:00
< p > < img src = "./figs/vionic_expected_noise.png" alt = "vionic_expected_noise.png" / >
< / p >
< p > < span class = "figure-number" > Figure 4: < / span > Expected interpolation errors for the Vionic Encoder< / p >
< / div >
< / div >
< / div >
2021-02-03 11:20:22 +01:00
< div id = "outline-container-org6d49234" class = "outline-2" >
< h2 id = "org6d49234" > < span class = "section-number-2" > 2< / span > Noise Measurement< / h2 >
2021-02-02 18:46:58 +01:00
< div class = "outline-text-2" id = "text-2" >
< p >
2021-02-03 11:20:22 +01:00
< a id = "org4cb96c9" > < / a >
2021-02-02 18:46:58 +01:00
< / p >
< / div >
2021-02-03 11:20:22 +01:00
< div id = "outline-container-orga5ff56c" class = "outline-3" >
< h3 id = "orga5ff56c" > < span class = "section-number-3" > 2.1< / span > Test Bench< / h3 >
2021-02-02 18:46:58 +01:00
< div class = "outline-text-3" id = "text-2-1" >
< 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 >
< / div >
< / div >
2021-02-03 11:20:22 +01:00
< div id = "outline-container-org14877fe" class = "outline-3" >
< h3 id = "org14877fe" > < span class = "section-number-3" > 2.2< / span > Results< / h3 >
2021-02-02 18:46:58 +01:00
< div class = "outline-text-3" id = "text-2-2" >
< p >
First we load the data.
< / p >
< div class = "org-src-container" >
2021-02-03 11:20:22 +01:00
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > < span class = "org-comment" > %% Load Data< / span > < / span >
enc1 = load(< span class = "org-string" > 'noise_meas_100s_20kHz_1.mat'< / span > , < span class = "org-string" > 't'< / span > , < span class = "org-string" > 'x'< / span > );
enc2 = load(< span class = "org-string" > 'noise_meas_100s_20kHz_2.mat'< / span > , < span class = "org-string" > 't'< / span > , < span class = "org-string" > 'x'< / span > );
enc3 = load(< span class = "org-string" > 'noise_meas_100s_20kHz_3.mat'< / span > , < span class = "org-string" > 't'< / span > , < span class = "org-string" > 'x'< / span > );
enc4 = load(< span class = "org-string" > 'noise_meas_100s_20kHz_4.mat'< / span > , < span class = "org-string" > 't'< / span > , < span class = "org-string" > 'x'< / span > );
enc6 = load(< span class = "org-string" > 'noise_meas_100s_20kHz_6.mat'< / span > , < span class = "org-string" > 't'< / span > , < span class = "org-string" > 'x'< / span > );
enc7 = load(< span class = "org-string" > 'noise_meas_100s_20kHz_7.mat'< / span > , < span class = "org-string" > 't'< / span > , < span class = "org-string" > 'x'< / span > );
2021-02-02 18:46:58 +01:00
< / pre >
< / div >
< p >
2021-02-03 11:20:22 +01:00
The raw measured data as well as the low pass filtered data (using a first order low pass filter with a cut-off at 10Hz) are shown in Figure < a href = "#org72fd239" > 5< / a > .
2021-02-02 18:46:58 +01:00
< / p >
2021-02-03 11:20:22 +01:00
< div id = "org72fd239" class = "figure" >
< p > < img src = "figs/vionic_noise_raw_lpf.png" alt = "vionic_noise_raw_lpf.png" / >
< / p >
< p > < span class = "figure-number" > Figure 5: < / span > Time domain measurement (raw data and low pass filtered data with first order 10Hz LPF)< / p >
< / div >
2021-02-02 18:46:58 +01:00
< p >
2021-02-03 11:20:22 +01:00
The time domain data for all the encoders are compared in Figure < a href = "#orgf7f2fda" > 6< / a > .
2021-02-02 18:46:58 +01:00
< / p >
2021-02-03 11:20:22 +01:00
< div id = "orgf7f2fda" class = "figure" >
< p > < img src = "figs/vionic_noise_time.png" alt = "vionic_noise_time.png" / >
< / p >
< p > < span class = "figure-number" > Figure 6: < / span > Comparison of the time domain measurement< / p >
< / div >
< p >
The amplitude spectral density is computed and shown in Figure < a href = "#orgf3c083c" > 7< / a > .
< / p >
2021-02-02 18:46:58 +01:00
2021-02-03 11:20:22 +01:00
< div id = "orgf3c083c" class = "figure" >
2021-02-02 18:46:58 +01:00
< p > < img src = "figs/vionic_noise_asd.png" alt = "vionic_noise_asd.png" / >
< / p >
2021-02-03 11:20:22 +01:00
< p > < span class = "figure-number" > Figure 7: < / span > Amplitude Spectral Density of the measured signal< / p >
2021-02-02 18:46:58 +01:00
< / div >
< p >
Let’ s create a transfer function that approximate the measured noise of the encoder.
< / p >
< div class = "org-src-container" >
2021-02-03 11:20:22 +01:00
< 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 > 1e4);
2021-02-02 18:46:58 +01:00
< / pre >
< / div >
< p >
2021-02-03 11:20:22 +01:00
The amplitude of the transfer function and the measured ASD are shown in Figure < a href = "#org8714af7" > 8< / a > .
2021-02-02 18:46:58 +01:00
< / p >
2021-02-03 11:20:22 +01:00
< div id = "org8714af7" class = "figure" >
2021-02-02 18:46:58 +01:00
< p > < img src = "figs/vionic_noise_asd_model.png" alt = "vionic_noise_asd_model.png" / >
< / p >
2021-02-03 11:20:22 +01:00
< p > < span class = "figure-number" > Figure 8: < / span > Measured ASD of the noise and modelled one< / p >
2021-02-02 18:46:58 +01:00
< / div >
< / div >
< / div >
< / div >
2021-02-03 11:20:22 +01:00
< div id = "outline-container-org2b0bcde" class = "outline-2" >
< h2 id = "org2b0bcde" > < span class = "section-number-2" > 3< / span > Linearity Measurement< / h2 >
2021-02-02 18:46:58 +01:00
< div class = "outline-text-2" id = "text-3" >
< p >
2021-02-03 11:20:22 +01:00
< a id = "orgc339bfd" > < / a >
2021-02-02 18:46:58 +01:00
< / p >
< / div >
2021-02-03 11:20:22 +01:00
< div id = "outline-container-org175ba6f" class = "outline-3" >
< h3 id = "org175ba6f" > < span class = "section-number-3" > 3.1< / span > Test Bench< / h3 >
2021-02-02 18:46:58 +01:00
< 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 >
< p >
2021-02-03 11:20:22 +01:00
One idea is to use the test-bench shown in Figure < a href = "#org30ec1c0" > 9< / a > .
2021-02-02 18:46:58 +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 if it is less than the Nyquist frequency that can be around 10kHz.
< / p >
2021-02-03 11:20:22 +01:00
< div id = "org30ec1c0" class = "figure" >
2021-02-02 18:46:58 +01:00
< p > < img src = "figs/test_bench_encoder_calibration.png" alt = "test_bench_encoder_calibration.png" / >
< / p >
2021-02-03 11:20:22 +01:00
< p > < span class = "figure-number" > Figure 9: < / span > Schematic of the test bench< / p >
2021-02-02 18:46:58 +01:00
< / div >
< / div >
< / div >
2021-02-03 11:20:22 +01:00
< div id = "outline-container-org69056ec" class = "outline-3" >
< h3 id = "org69056ec" > < span class = "section-number-3" > 3.2< / span > Results< / h3 >
2021-02-02 18:46:58 +01:00
< / div >
< / div >
2021-02-03 11:20:22 +01:00
< div id = "outline-container-org5ca0c03" class = "outline-2" >
< h2 id = "org5ca0c03" > < span class = "section-number-2" > 4< / span > Dynamical Measurement< / h2 >
2021-02-02 18:46:58 +01:00
< div class = "outline-text-2" id = "text-4" >
< p >
2021-02-03 11:20:22 +01:00
< a id = "org71dc40b" > < / a >
2021-02-02 18:46:58 +01:00
< / p >
< / div >
2021-02-03 11:20:22 +01:00
< div id = "outline-container-orgde9a37d" class = "outline-3" >
< h3 id = "orgde9a37d" > < span class = "section-number-3" > 4.1< / span > Test Bench< / h3 >
2021-02-02 18:46:58 +01:00
< / div >
2021-02-03 11:20:22 +01:00
< div id = "outline-container-org8bc51db" class = "outline-3" >
< h3 id = "org8bc51db" > < span class = "section-number-3" > 4.2< / span > Results< / h3 >
2021-02-02 18:46:58 +01:00
< / div >
< / div >
< / div >
< div id = "postamble" class = "status" >
< p class = "author" > Author: Dehaeze Thomas< / p >
2021-02-03 11:20:22 +01:00
< p class = "date" > Created: 2021-02-03 mer. 11:20< / p >
2021-02-02 18:46:58 +01:00
< / div >
< / body >
< / html >