diff --git a/figs/vionic_noise_cas_model.pdf b/figs/vionic_noise_cas_model.pdf new file mode 100644 index 0000000..2726f9a Binary files /dev/null and b/figs/vionic_noise_cas_model.pdf differ diff --git a/figs/vionic_noise_cas_model.png b/figs/vionic_noise_cas_model.png new file mode 100644 index 0000000..641a59f Binary files /dev/null and b/figs/vionic_noise_cas_model.png differ diff --git a/test-bench-vionic.html b/test-bench-vionic.html index 5596bad..3b934bf 100644 --- a/test-bench-vionic.html +++ b/test-bench-vionic.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Encoder Renishaw Vionic - Test Bench @@ -39,23 +39,22 @@

Table of Contents

@@ -65,9 +64,9 @@

This report is also available as a pdf.


-
+

-You can find below the document of: +You can find below the documentation of:

  • Vionic Encoder
  • @@ -77,70 +76,81 @@ You can find below the document of:

-We would like to characterize the encoder measurement system. -

- -

+In this document, we wish to characterize the performances of the encoder measurement system. In particular, we would like to measure:

+

+This document is structured as follow: +

+ -
+
+

1 Expected Performances

+
+

+ +

+ +

+The Vionic encoder is shown in Figure 1. +

+ + +

encoder_vionic.png

Figure 1: Picture of the Vionic Encoder

-
    -
  • 1: 2YA275
  • -
  • 2: 2YA274
  • -
  • 3: 2YA273
  • -
  • 4: 2YA270
  • -
  • 5: 2YA272
  • -
  • 6: 2YA271
  • -
  • 7: 2YJ313
  • -
- -
-

1 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. +From the Renishaw website: +

+
+

+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 bandwidth to beyond 500 kHz.

-It is also characterized by its measurement noise \(n\) that can be described by its Power Spectral Density (PSD). +Fully integrated advanced dynamic signal conditioning, Auto Gain , Auto Balance and Auto Offset Controls combine to ensure ultra-low Sub-Divisional Error (SDE) of typically \(<\pm 15\, nm\).

-The model of the encoder is shown in Figure 2. +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 jitter of just 1.6 nm RMS. +

+
+ +

+The expected interpolation errors (non-linearity) is shown in Figure 2.

-
-

encoder-model-schematic.png +

+

vionic_expected_noise.png

-

Figure 2: Model of the Encoder

+

Figure 2: Expected interpolation errors for the Vionic Encoder

-We can also use a transfer function \(G_n(s)\) to shape a noise \(\tilde{n}\) with unity ASD as shown in Figure 4. +The characteristics as advertise in the manual as well as our specifications are shown in Table 1.

- -
-

encoder-model-schematic-with-asd.png -

-
- - - +
Table 1: Characteristics of the Vionic Encoder
+@@ -153,56 +163,93 @@ We can also use a transfer function \(G_n(s)\) to shape a noise \(\tilde{n}\) wi - + - - - - - - - - - - - - - - + + - - + + + + + + + + + + + + + + + + + + + +
Table 1: Characteristics of the Vionic compared with the specifications
Characteristics ManualSpecificationsSpecification
RangeRuler length> 200 [um]
Resolution2.5 [nm]< 50 [nm rms]
Sub-Divisional Error\(< \pm 15\,nm\)Time Delay  < 0.5 ms
BandwidthTo be checked> 5 [kHz]> 500 kHz> 5 kHz
Noise< 1.6 nm rms< 50 nm rms
Linearity< +/- 15 nm 
RangeRuler length> 200 um
- - -
-

vionic_expected_noise.png -

-

Figure 4: Expected interpolation errors for the Vionic Encoder

-
- -
-

2 Noise Measurement

+
+

2 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) \(\Gamma_n(\omega)\). +

+ +

+The model of the encoder is shown in Figure 3. +

+ + +
+

encoder-model-schematic.png +

+

Figure 3: Model of the Encoder

+
+ +

+We can also use a transfer function \(G_n(s)\) to shape a noise \(\tilde{n}\) with unity ASD as shown in Figure 2. +

+ + +
+

encoder-model-schematic-with-asd.png

-
-

2.1 Test Bench

-
+
+
+ +
+

3 Noise Measurement

+
+

+ +

+
+
+

3.1 Test Bench

+

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\). @@ -210,40 +257,62 @@ Then, the measured signal \(y_m\) corresponds to the noise \(n\).

-
-

2.2 Results

-
+
+

3.2 Thermal drifts

+
+
    +
  • [ ] picture of the setup
  • +
  • [ ] long thermal drifts
  • +
  • [ ] once stabilize, look at the noise
  • +
  • [ ] compute low frequency ASD (may still be thermal drifts of the mechanics and not noise)
  • +
+
+
+ +
+

3.3 Time Domain signals

+

First we load the data. -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 5. +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 5.

-
+

vionic_noise_raw_lpf.png

Figure 5: Time domain measurement (raw data and low pass filtered data with first order 10Hz LPF)

-The time domain data for all the encoders are compared in Figure 6. +The time domain data for all the encoders are compared in Figure 6.

-
+

vionic_noise_time.png

Figure 6: Comparison of the time domain measurement

+
+
+
+

3.4 Noise Spectral Density

+

-The amplitude spectral density is computed and shown in Figure 7. +The amplitude spectral density is computed and shown in Figure 7.

-
+

vionic_noise_asd.png

Figure 7: Amplitude Spectral Density of the measured signal

+
+
+
+

3.5 Noise Model

+

Let’s create a transfer function that approximate the measured noise of the encoder.

@@ -253,29 +322,49 @@ Let’s create a transfer function that approximate the measured noise of th

-The amplitude of the transfer function and the measured ASD are shown in Figure 8. +The amplitude of the transfer function and the measured ASD are shown in Figure 8.

-
+

vionic_noise_asd_model.png

-

Figure 8: Measured ASD of the noise and modelled one

+

Figure 8: Measured ASD of the noise and modeled one

+
+
+
+ +
+

3.6 Validity of the noise model

+
+

+The cumulative amplitude spectrum is now computed and shown in Figure 9. +

+ +

+We can see that the Root Mean Square value of the measurement noise is \(\approx 1.6 \, nm\) as advertise in the datasheet. +

+ + +
+

vionic_noise_cas_model.png +

+

Figure 9: Meassured CAS of the noise and modeled one

-
-

3 Linearity Measurement

-
+
+

4 Linearity Measurement

+

- +

-
-

3.1 Test Bench

-
+
+

4.1 Test Bench

+

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. @@ -283,7 +372,7 @@ An actuator should also be there so impose a displacement.

-One idea is to use the test-bench shown in Figure 9. +One idea is to use the test-bench shown in Figure 10.

@@ -296,38 +385,22 @@ As the interferometer has a very large bandwidth, we should be able to estimate

-
+

test_bench_encoder_calibration.png

-

Figure 9: Schematic of the test bench

+

Figure 10: Schematic of the test bench

-
-

3.2 Results

-
-
- -
-

4 Dynamical Measurement

-
-

- -

-
-
-

4.1 Test Bench

-
- -
-

4.2 Results

+
+

4.2 Results

Author: Dehaeze Thomas

-

Created: 2021-02-04 jeu. 20:23

+

Created: 2021-02-10 mer. 15:14

diff --git a/test-bench-vionic.org b/test-bench-vionic.org index 8c11682..6332d4c 100644 --- a/test-bench-vionic.org +++ b/test-bench-vionic.org @@ -49,36 +49,75 @@ * Introduction :ignore: #+begin_note -You can find below the document of: +You can find below the documentation 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 this document, we wish to characterize the performances of 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 +- the measurement noise +- the linearity of the sensor +- the bandwidth of the sensor + +This document is structured as follow: +- Section [[sec:vionic_expected_performances]]: the expected performance of the Vionic encoder system are described +- Section [[sec:encoder_model]]: a simple model of the encoder is developed +- Section [[sec:noise_measurement]]: the noise of the encoder is measured and a model of the noise is identified +- Section [[sec:linearity_measurement]]: the linearity of the sensor is estimated + +* Expected Performances +<> + +The Vionic encoder is shown in Figure [[fig:encoder_vionic]]. #+name: fig:encoder_vionic #+caption: Picture of the Vionic Encoder #+attr_latex: :width 0.6\linewidth [[file:figs/encoder_vionic.png]] -- 1: 2YA275 -- 2: 2YA274 -- 3: 2YA273 -- 4: 2YA270 -- 5: 2YA272 -- 6: 2YA271 -- 7: 2YJ313 +From the Renishaw [[https://www.renishaw.com/en/how-optical-encoders-work--36979][website]]: +#+begin_quote +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 *bandwidth to beyond 500 kHz*. + +Fully integrated advanced dynamic signal conditioning, Auto Gain , Auto Balance and Auto Offset Controls combine to ensure *ultra-low Sub-Divisional Error (SDE) of typically* $<\pm 15\, nm$. + +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 *jitter of just 1.6 nm RMS*. +#+end_quote + +The expected interpolation errors (non-linearity) is shown in Figure [[fig:vionic_expected_noise]]. + +#+name: fig:vionic_expected_noise +#+attr_latex: :width \linewidth +#+caption: Expected interpolation errors for the Vionic Encoder +[[file:./figs/vionic_expected_noise.png]] + +The characteristics as advertise in the manual as well as our specifications are shown in Table [[tab:vionic_characteristics]]. + +#+name: tab:vionic_characteristics +#+caption: Characteristics of the Vionic compared with the specifications +#+attr_latex: :environment tabularx :width 0.6\linewidth :align lcc +#+attr_latex: :center t :booktabs t :float t +| | | | +| *Characteristics* | *Manual* | *Specification* | +|-------------------+--------------+-----------------| +| Time Delay | | < 0.5 ms | +| Bandwidth | > 500 kHz | > 5 kHz | +| Noise | < 1.6 nm rms | < 50 nm rms | +| Linearity | < +/- 15 nm | | +| Range | Ruler length | > 200 um | * 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). +It is also characterized by its measurement noise $n$ that can be described by its Power Spectral Density (PSD) $\Gamma_n(\omega)$. The model of the encoder is shown in Figure [[fig:encoder-model-schematic]]. @@ -128,24 +167,6 @@ We can also use a transfer function $G_n(s)$ to shape a noise $\tilde{n}$ with u #+RESULTS: [[file:figs/encoder-model-schematic-with-asd.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* | *Specifications* | -|----------------------+----------------+------------------| -| Range | Ruler length | > 200 [um] | -| Resolution | 2.5 [nm] | < 50 [nm rms] | -| Sub-Divisional Error | $< \pm 15\,nm$ | | -| Bandwidth | To be checked | > 5 [kHz] | - -#+name: fig:vionic_expected_noise -#+attr_latex: :width \linewidth -#+caption: Expected interpolation errors for the Vionic Encoder -[[file:./figs/vionic_expected_noise.png]] - - * Noise Measurement <> ** Test Bench @@ -171,7 +192,13 @@ addpath('./matlab/'); addpath('./mat/'); #+end_src -** Results +** TODO Thermal drifts +- [ ] picture of the setup +- [ ] long thermal drifts +- [ ] once stabilize, look at the noise +- [ ] compute low frequency ASD (may still be thermal drifts of the mechanics and not noise) + +** Time Domain signals First we load the data. #+begin_src matlab :exports none %% Load all the measurements @@ -232,10 +259,11 @@ exportFig('figs/vionic_noise_time.pdf', 'width', 'wide', 'height', 'normal'); #+RESULTS: [[file:figs/vionic_noise_time.png]] +** Noise Spectral Density The amplitude spectral density is computed and shown in Figure [[fig:vionic_noise_asd]]. #+begin_src matlab :exports none % Compute sampling Frequency -Ts = (enc1.t(end) - enc1.t(1))/(length(enc1.t)-1); +Ts = (enc{1}.t(end) - enc{1}.t(1))/(length(enc{1}.t)-1); Fs = 1/Ts; % Hannning Windows @@ -273,6 +301,8 @@ exportFig('figs/vionic_noise_asd.pdf', 'width', 'wide', 'height', 'normal'); #+RESULTS: [[file:figs/vionic_noise_asd.png]] +** Noise Model + Let's create a transfer function that approximate the measured noise of the encoder. #+begin_src matlab Gn_e = 1.8e-11/(1 + s/2/pi/1e4); @@ -302,10 +332,48 @@ exportFig('figs/vionic_noise_asd_model.pdf', 'width', 'wide', 'height', 'normal' #+end_src #+name: fig:vionic_noise_asd_model -#+caption: Measured ASD of the noise and modelled one +#+caption: Measured ASD of the noise and modeled one #+RESULTS: [[file:figs/vionic_noise_asd_model.png]] +** Validity of the noise model +The cumulative amplitude spectrum is now computed and shown in Figure [[fig:vionic_noise_cas_model]]. + +We can see that the Root Mean Square value of the measurement noise is $\approx 1.6 \, nm$ as advertise in the datasheet. + +#+begin_src matlab :exports none +for i = 1:7 + enc{i}.CPS = flip(-cumtrapz(flip(f), flip(enc{i}.pxx))); +end + +CAS_Gn = flip(-cumtrapz(flip(f), flip(abs(squeeze(freqresp(Gn_e, f, 'Hz'))).^2))); +#+end_src + +#+begin_src matlab :exports none +figure; +hold on; +plot(f, sqrt(enc{1}.CPS), 'color', [0, 0, 0, 0.5], 'DisplayName', '$CAS_n(\omega)$'); +for i=2:7 + plot(f, sqrt(enc{i}.CPS), 'color', [0, 0, 0, 0.5], 'HandleVisibility', 'off'); +end +plot(f, sqrt(CAS_Gn), 'r-', 'DisplayName', 'model'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); ylabel('CPS [$m$]'); +xlim([10, Fs/2]); +ylim([1e-10, 1e-8]); +legend('location', 'northeast'); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/vionic_noise_cas_model.pdf', 'width', 'wide', 'height', 'normal'); +#+end_src + +#+name: fig:vionic_noise_cas_model +#+caption: Meassured CAS of the noise and modeled one +#+RESULTS: +[[file:figs/vionic_noise_cas_model.png]] + * Linearity Measurement <> ** Test Bench @@ -344,26 +412,3 @@ addpath('./mat/'); ** Results -* Dynamical Measurement -<> -** Test Bench - -** Matlab Init :noexport:ignore: -#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) -<> -#+end_src - -#+begin_src matlab :exports none :results silent :noweb yes -<> -#+end_src - -#+begin_src matlab :tangle no -addpath('./matlab/mat/'); -addpath('./matlab/'); -#+end_src - -#+begin_src matlab :eval no -addpath('./mat/'); -#+end_src - -** Results diff --git a/test-bench-vionic.pdf b/test-bench-vionic.pdf index cc9113d..78451a3 100644 Binary files a/test-bench-vionic.pdf and b/test-bench-vionic.pdf differ