492 lines
16 KiB
HTML
492 lines
16 KiB
HTML
<?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-11 jeu. 15:21 -->
|
|
<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>
|
|
<li><a href="#orgacaf822">1. Expected Performances</a></li>
|
|
<li><a href="#orgd1b48b9">2. Encoder Model</a></li>
|
|
<li><a href="#org9947f0d">3. Noise Measurement</a>
|
|
<ul>
|
|
<li><a href="#org7dd6ce0">3.1. Test Bench</a></li>
|
|
<li><a href="#orgd61ad80">3.2. Thermal drifts</a></li>
|
|
<li><a href="#org8f23c76">3.3. Time Domain signals</a></li>
|
|
<li><a href="#orgbd6cefe">3.4. Noise Spectral Density</a></li>
|
|
<li><a href="#orgc14197f">3.5. Noise Model</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#orgbc58807">4. Linearity Measurement</a>
|
|
<ul>
|
|
<li><a href="#org38d4317">4.1. Test Bench</a></li>
|
|
<li><a href="#org9a6927b">4.2. Results</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<hr>
|
|
<p>This report is also available as a <a href="./test-bench-vionic.pdf">pdf</a>.</p>
|
|
<hr>
|
|
|
|
<div class="note" id="org34d0504">
|
|
<p>
|
|
You can find below the documentation 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>
|
|
In this document, we wish to characterize the performances of the encoder measurement system.
|
|
In particular, we would like to measure:
|
|
</p>
|
|
<ul class="org-ul">
|
|
<li>the measurement noise</li>
|
|
<li>the linearity of the sensor</li>
|
|
<li>the bandwidth of the sensor</li>
|
|
</ul>
|
|
|
|
<p>
|
|
This document is structured as follow:
|
|
</p>
|
|
<ul class="org-ul">
|
|
<li>Section <a href="#orgafe2cb7">1</a>: the expected performance of the Vionic encoder system are described</li>
|
|
<li>Section <a href="#org1d1f36e">2</a>: a simple model of the encoder is developed</li>
|
|
<li>Section <a href="#orgf70a154">3</a>: the noise of the encoder is measured and a model of the noise is identified</li>
|
|
<li>Section <a href="#org3767bd5">4</a>: the linearity of the sensor is estimated</li>
|
|
</ul>
|
|
|
|
<div id="outline-container-orgacaf822" class="outline-2">
|
|
<h2 id="orgacaf822"><span class="section-number-2">1</span> Expected Performances</h2>
|
|
<div class="outline-text-2" id="text-1">
|
|
<p>
|
|
<a id="orgafe2cb7"></a>
|
|
</p>
|
|
|
|
<p>
|
|
The Vionic encoder is shown in Figure <a href="#org300cb52">1</a>.
|
|
</p>
|
|
|
|
|
|
<div id="org300cb52" class="figure">
|
|
<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>
|
|
|
|
<p>
|
|
From the Renishaw <a href="https://www.renishaw.com/en/how-optical-encoders-work--36979">website</a>:
|
|
</p>
|
|
<blockquote>
|
|
<p>
|
|
The VIONiC encoder features the third generation of Renishaw’s unique filtering optics that average the contributions from many scale periods and effectively filter out non-periodic features such as dirt.
|
|
The nominally square-wave scale pattern is also filtered to leave a pure sinusoidal fringe field at the detector.
|
|
Here, a multiple finger structure is employed, fine enough to produce photocurrents in the form of four symmetrically phased signals.
|
|
These are combined to remove DC components and produce sine and cosine signal outputs with high spectral purity and low offset while maintaining <b>bandwidth to beyond 500 kHz</b>.
|
|
</p>
|
|
|
|
<p>
|
|
Fully integrated advanced dynamic signal conditioning, Auto Gain , Auto Balance and Auto Offset Controls combine to ensure <b>ultra-low Sub-Divisional Error (SDE) of typically</b> \(<\pm 15\, nm\).
|
|
</p>
|
|
|
|
<p>
|
|
This evolution of filtering optics, combined with carefully-selected electronics, provide incremental signals with wide bandwidth achieving a maximum speed of 12 m/s with the lowest positional jitter (noise) of any encoder in its class.
|
|
Interpolation is within the readhead, with fine resolution versions being further augmented by additional noise-reducing electronics to achieve <b>jitter of just 1.6 nm RMS</b>.
|
|
</p>
|
|
</blockquote>
|
|
|
|
<p>
|
|
The expected interpolation errors (non-linearity) is shown in Figure <a href="#org74b94f4">2</a>.
|
|
</p>
|
|
|
|
|
|
<div id="org74b94f4" class="figure">
|
|
<p><img src="./figs/vionic_expected_noise.png" alt="vionic_expected_noise.png" />
|
|
</p>
|
|
<p><span class="figure-number">Figure 2: </span>Expected interpolation errors for the Vionic Encoder</p>
|
|
</div>
|
|
|
|
<p>
|
|
The characteristics as advertise in the manual as well as our specifications are shown in Table <a href="#org12ad600">1</a>.
|
|
</p>
|
|
|
|
<table id="org12ad600" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
<caption class="t-above"><span class="table-number">Table 1:</span> Characteristics of the Vionic compared with the specifications</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>Specification</b></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left">Time Delay</td>
|
|
<td class="org-center">< 10 ns</td>
|
|
<td class="org-center">< 0.5 ms</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left">Bandwidth</td>
|
|
<td class="org-center">> 500 kHz</td>
|
|
<td class="org-center">> 5 kHz</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left">Noise</td>
|
|
<td class="org-center">< 1.6 nm rms</td>
|
|
<td class="org-center">< 50 nm rms</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left">Linearity</td>
|
|
<td class="org-center">< +/- 15 nm</td>
|
|
<td class="org-center"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left">Range</td>
|
|
<td class="org-center">Ruler length</td>
|
|
<td class="org-center">> 200 um</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-orgd1b48b9" class="outline-2">
|
|
<h2 id="orgd1b48b9"><span class="section-number-2">2</span> Encoder Model</h2>
|
|
<div class="outline-text-2" id="text-2">
|
|
<p>
|
|
<a id="org1d1f36e"></a>
|
|
</p>
|
|
|
|
<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) \(\Gamma_n(\omega)\).
|
|
</p>
|
|
|
|
<p>
|
|
The model of the encoder is shown in Figure <a href="#orge3dfe4a">3</a>.
|
|
</p>
|
|
|
|
|
|
<div id="orge3dfe4a" class="figure">
|
|
<p><img src="figs/encoder-model-schematic.png" alt="encoder-model-schematic.png" />
|
|
</p>
|
|
<p><span class="figure-number">Figure 3: </span>Model of the Encoder</p>
|
|
</div>
|
|
|
|
<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="#org74b94f4">2</a>.
|
|
</p>
|
|
|
|
|
|
<div id="orgb259ef8" class="figure">
|
|
<p><img src="figs/encoder-model-schematic-with-asd.png" alt="encoder-model-schematic-with-asd.png" />
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org9947f0d" class="outline-2">
|
|
<h2 id="org9947f0d"><span class="section-number-2">3</span> Noise Measurement</h2>
|
|
<div class="outline-text-2" id="text-3">
|
|
<p>
|
|
<a id="orgf70a154"></a>
|
|
</p>
|
|
<p>
|
|
This part is structured as follow:
|
|
</p>
|
|
<ul class="org-ul">
|
|
<li>Section <a href="#org1bbddb3">3.1</a>: the measurement bench is described</li>
|
|
<li>Section <a href="#orge37ddeb">3.2</a>: long measurement is performed to estimate the low frequency drifts in the measurement</li>
|
|
<li>Section <a href="#orgbe1c0e1">3.3</a>: high frequency measurements are performed to estimate the high frequency noise</li>
|
|
<li>Section <a href="#orgfafa9fd">3.4</a>: the Spectral density of the measurement noise is estimated</li>
|
|
<li>Section <a href="#org2284feb">3.5</a>: finally, the measured noise is modeled</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div id="outline-container-org7dd6ce0" class="outline-3">
|
|
<h3 id="org7dd6ce0"><span class="section-number-3">3.1</span> Test Bench</h3>
|
|
<div class="outline-text-3" id="text-3-1">
|
|
<p>
|
|
<a id="org1bbddb3"></a>
|
|
</p>
|
|
|
|
<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>
|
|
|
|
<div id="outline-container-orgd61ad80" class="outline-3">
|
|
<h3 id="orgd61ad80"><span class="section-number-3">3.2</span> Thermal drifts</h3>
|
|
<div class="outline-text-3" id="text-3-2">
|
|
<p>
|
|
<a id="orge37ddeb"></a>
|
|
Measured displacement were recording during approximately 40 hours with a sample frequency of 100Hz.
|
|
A first order low pass filter with a corner frequency of 1Hz
|
|
</p>
|
|
|
|
<div class="org-src-container">
|
|
<pre class="src src-matlab">enc_l = load(<span class="org-string">'mat/noise_meas_40h_100Hz_1.mat'</span>, <span class="org-string">'t'</span>, <span class="org-string">'x'</span>);
|
|
</pre>
|
|
</div>
|
|
|
|
<p>
|
|
The measured time domain data are shown in Figure <a href="#org55bfe2a">5</a>.
|
|
</p>
|
|
|
|
<div id="org55bfe2a" class="figure">
|
|
<p><img src="figs/vionic_drifts_time.png" alt="vionic_drifts_time.png" />
|
|
</p>
|
|
<p><span class="figure-number">Figure 5: </span>Measured thermal drifts</p>
|
|
</div>
|
|
|
|
<p>
|
|
The measured data seems to experience a constant drift after approximately 20 hour.
|
|
Let’s estimate this drift.
|
|
</p>
|
|
|
|
<pre class="example">
|
|
The mean drift is approximately 60.9 [nm/hour] or 1.0 [nm/min]
|
|
</pre>
|
|
|
|
|
|
<p>
|
|
Comparison between the data and the linear fit is shown in Figure <a href="#org1085735">6</a>.
|
|
</p>
|
|
|
|
<div id="org1085735" class="figure">
|
|
<p><img src="figs/vionic_drifts_linear_fit.png" alt="vionic_drifts_linear_fit.png" />
|
|
</p>
|
|
<p><span class="figure-number">Figure 6: </span>Measured drift and linear fit</p>
|
|
</div>
|
|
|
|
<p>
|
|
Let’s now estimate the Power Spectral Density of the measured displacement.
|
|
The obtained low frequency ASD is shown in Figure <a href="#orgf2675d7">7</a>.
|
|
</p>
|
|
|
|
<div id="orgf2675d7" class="figure">
|
|
<p><img src="figs/vionic_noise_asd_low_freq.png" alt="vionic_noise_asd_low_freq.png" />
|
|
</p>
|
|
<p><span class="figure-number">Figure 7: </span>Amplitude Spectral density of the measured displacement</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org8f23c76" class="outline-3">
|
|
<h3 id="org8f23c76"><span class="section-number-3">3.3</span> Time Domain signals</h3>
|
|
<div class="outline-text-3" id="text-3-3">
|
|
<p>
|
|
<a id="orgbe1c0e1"></a>
|
|
</p>
|
|
|
|
<p>
|
|
Then, and for all the 7 encoders, we record the measured motion during 100s with a sampling frequency of 20kHz.
|
|
</p>
|
|
|
|
<p>
|
|
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="#orgbd876dc">8</a>.
|
|
</p>
|
|
|
|
<div id="orgbd876dc" class="figure">
|
|
<p><img src="figs/vionic_noise_raw_lpf.png" alt="vionic_noise_raw_lpf.png" />
|
|
</p>
|
|
<p><span class="figure-number">Figure 8: </span>Time domain measurement (raw data and low pass filtered data with first order 10Hz LPF)</p>
|
|
</div>
|
|
|
|
<p>
|
|
The time domain data for all the encoders are compared in Figure <a href="#org63a82cb">9</a>.
|
|
</p>
|
|
|
|
<p>
|
|
We can see some drifts that are in the order of few nm to 20nm per minute.
|
|
As shown in Section <a href="#orge37ddeb">3.2</a>, these drifts should diminish over time down to 1nm/min.
|
|
</p>
|
|
|
|
<div id="org63a82cb" class="figure">
|
|
<p><img src="figs/vionic_noise_time.png" alt="vionic_noise_time.png" />
|
|
</p>
|
|
<p><span class="figure-number">Figure 9: </span>Comparison of the time domain measurement</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-orgbd6cefe" class="outline-3">
|
|
<h3 id="orgbd6cefe"><span class="section-number-3">3.4</span> Noise Spectral Density</h3>
|
|
<div class="outline-text-3" id="text-3-4">
|
|
<p>
|
|
<a id="orgfafa9fd"></a>
|
|
</p>
|
|
|
|
<p>
|
|
The amplitude spectral densities for all the encoder are computed and shown in Figure <a href="#org4b13cc6">10</a>.
|
|
</p>
|
|
|
|
<div id="org4b13cc6" class="figure">
|
|
<p><img src="figs/vionic_noise_asd.png" alt="vionic_noise_asd.png" />
|
|
</p>
|
|
<p><span class="figure-number">Figure 10: </span>Amplitude Spectral Density of the measured signal</p>
|
|
</div>
|
|
|
|
<p>
|
|
We can combine these measurements with the low frequency noise computed in Section <a href="#orge37ddeb">3.2</a>.
|
|
The obtained ASD is shown in Figure <a href="#orgec960f3">11</a>.
|
|
</p>
|
|
|
|
<div id="orgec960f3" class="figure">
|
|
<p><img src="figs/vionic_noise_asd_combined.png" alt="vionic_noise_asd_combined.png" />
|
|
</p>
|
|
<p><span class="figure-number">Figure 11: </span>Combined low frequency and high frequency noise measurements</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-orgc14197f" class="outline-3">
|
|
<h3 id="orgc14197f"><span class="section-number-3">3.5</span> Noise Model</h3>
|
|
<div class="outline-text-3" id="text-3-5">
|
|
<p>
|
|
<a id="org2284feb"></a>
|
|
</p>
|
|
|
|
<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>1e4);
|
|
</pre>
|
|
</div>
|
|
|
|
<p>
|
|
The amplitude of the transfer function and the measured ASD are shown in Figure <a href="#org904aecb">12</a>.
|
|
</p>
|
|
|
|
|
|
<div id="org904aecb" class="figure">
|
|
<p><img src="figs/vionic_noise_asd_model.png" alt="vionic_noise_asd_model.png" />
|
|
</p>
|
|
<p><span class="figure-number">Figure 12: </span>Measured ASD of the noise and modeled one</p>
|
|
</div>
|
|
|
|
<p>
|
|
The cumulative amplitude spectrum is now computed and shown in Figure <a href="#orgff7d2cd">13</a>.
|
|
</p>
|
|
|
|
<p>
|
|
We can see that the Root Mean Square value of the measurement noise is \(\approx 1.6 \, nm\) as advertise in the datasheet.
|
|
</p>
|
|
|
|
|
|
<div id="orgff7d2cd" class="figure">
|
|
<p><img src="figs/vionic_noise_cas_model.png" alt="vionic_noise_cas_model.png" />
|
|
</p>
|
|
<p><span class="figure-number">Figure 13: </span>Meassured CAS of the noise and modeled one</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-orgbc58807" class="outline-2">
|
|
<h2 id="orgbc58807"><span class="section-number-2">4</span> Linearity Measurement</h2>
|
|
<div class="outline-text-2" id="text-4">
|
|
<p>
|
|
<a id="org3767bd5"></a>
|
|
</p>
|
|
</div>
|
|
<div id="outline-container-org38d4317" class="outline-3">
|
|
<h3 id="org38d4317"><span class="section-number-3">4.1</span> Test Bench</h3>
|
|
<div class="outline-text-3" id="text-4-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>
|
|
One idea is to use the test-bench shown in Figure <a href="#org5a7f983">14</a>.
|
|
</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>
|
|
|
|
|
|
<div id="org5a7f983" class="figure">
|
|
<p><img src="figs/test_bench_encoder_calibration.png" alt="test_bench_encoder_calibration.png" />
|
|
</p>
|
|
<p><span class="figure-number">Figure 14: </span>Schematic of the test bench</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org9a6927b" class="outline-3">
|
|
<h3 id="org9a6927b"><span class="section-number-3">4.2</span> Results</h3>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="postamble" class="status">
|
|
<p class="author">Author: Dehaeze Thomas</p>
|
|
<p class="date">Created: 2021-02-11 jeu. 15:21</p>
|
|
</div>
|
|
</body>
|
|
</html>
|