diff --git a/encoder-model-schematic.pdf b/encoder-model-schematic.pdf deleted file mode 100644 index 9e2b448..0000000 Binary files a/encoder-model-schematic.pdf and /dev/null differ diff --git a/figs/vionic_noise_asd.pdf b/figs/vionic_noise_asd.pdf new file mode 100644 index 0000000..ee1ced4 Binary files /dev/null and b/figs/vionic_noise_asd.pdf differ diff --git a/figs/vionic_noise_asd.png b/figs/vionic_noise_asd.png new file mode 100644 index 0000000..981a004 Binary files /dev/null and b/figs/vionic_noise_asd.png differ diff --git a/figs/vionic_noise_asd_model.pdf b/figs/vionic_noise_asd_model.pdf new file mode 100644 index 0000000..a51db0c Binary files /dev/null and b/figs/vionic_noise_asd_model.pdf differ diff --git a/figs/vionic_noise_asd_model.png b/figs/vionic_noise_asd_model.png new file mode 100644 index 0000000..cd75817 Binary files /dev/null and b/figs/vionic_noise_asd_model.png differ diff --git a/figs/vionic_noise_time.pdf b/figs/vionic_noise_time.pdf new file mode 100644 index 0000000..30d2139 Binary files /dev/null and b/figs/vionic_noise_time.pdf differ diff --git a/figs/vionic_noise_time.png b/figs/vionic_noise_time.png new file mode 100644 index 0000000..9120b40 Binary files /dev/null and b/figs/vionic_noise_time.png differ diff --git a/index.html b/index.html index 9e8fcfb..758daa6 100644 --- a/index.html +++ b/index.html @@ -3,21 +3,30 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Encoder Renishaw Vionic - Test Bench - - + +
@@ -30,15 +39,19 @@

Table of Contents

-
+

You can find below the document of:

@@ -63,14 +76,14 @@ In particular, we would like to measure: -
+

encoder_vionic.png

Figure 1: Picture of the Vionic Encoder

-
-

1 Encoder Model

+
+

1 Encoder Model

The Encoder is characterized by its dynamics \(G_m(s)\) from the “true” displacement \(y\) to measured displacement \(y_m\). @@ -82,52 +95,63 @@ It is also characterized by its measurement noise \(n\) that can be described by

-The model of the encoder is shown in Figure 2. +The model of the encoder is shown in Figure 2.

-
+

encoder-model-schematic.png

Figure 2: Model of the Encoder

- +
-++ + - + + + + + + + + - + + - + + - + +
Table 1: Characteristics of the Vionic Encoder
CharacteristicsManualManualSpecifications
RangeRuler length> 200 [um]
Resolution2.5nm2.5 [nm]< 50 [nm rms]
Sub-Divisional Error\(< \pm 15\,nm\)\(< \pm 15\,nm\) 
Bandwidth> 50 kHzTo be checked> 5 [kHz]
- -
+

vionic_expected_noise.png

Figure 3: Expected interpolation errors for the Vionic Encoder

@@ -136,8 +160,8 @@ The model of the encoder is shown in Figure 2.
-
-

2 Test-Bench Description

+
+

2 Test-Bench Description

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

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

@@ -164,7 +188,7 @@ As the interferometer has a very large bandwidth, we should be able to estimate

-
+

test_bench_encoder_calibration.png

Figure 4: Schematic of the test bench

@@ -172,11 +196,11 @@ As the interferometer has a very large bandwidth, we should be able to estimate

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. -This can be done by clamping the two as done in the mounting strut tool (Figure 5). +This can be done by clamping the two as done in the mounting strut tool (Figure 5).

-
+

test_bench_measure_noise.png

Figure 5: Mounting Strut test bench as a clamping method to measure the encoder noise.

@@ -184,17 +208,70 @@ This can be done by clamping the two as done in the mounting strut tool (Figure
-
-

3 Measurement procedure

+
+

3 Measurement procedure

-
-

4 Measurement Results

+
+

4 Measurement Results

+
+
+
+

4.1 Noise Measurement

+
+
+
load('noise_meas_100s_20kHz.mat', 't', 'x');
+x = x - mean(x);
+
+
+ +
+
figure;
+hold on;
+plot(t, 1e9*x, '.', 'DisplayName', 'Raw');
+plot(t, 1e9*lsim(1/(1 + s/2/pi/500), x, t), 'DisplayName', 'LPF - 500Hz')
+hold off;
+xlabel('Time [s]');
+ylabel('Displacement [nm]');
+legend('location', 'northeast');
+
+
+ + +
+

vionic_noise_time.png +

+

Figure 6: Time domain measurement (raw data and low pass filtered data)

+
+ + +
+

vionic_noise_asd.png +

+

Figure 7: Amplitude Spectral Density of the measured signal

+
+ +

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

+
+
Gn_e = 1.8e-11/(1 + s/2/pi/5e3);
+
+
+ + +
+

vionic_noise_asd_model.png +

+

Figure 8: Measured ASD of the noise and modelled one

+
+
+

Author: Dehaeze Thomas

-

Created: 2021-01-04 lun. 11:44

+

Created: 2021-02-02 mar. 18:24

diff --git a/index.org b/index.org index 80eb7b6..c1ad011 100644 --- a/index.org +++ b/index.org @@ -94,12 +94,13 @@ The model of the encoder is shown in Figure [[fig:encoder-model-schematic]]. #+caption: Characteristics of the Vionic Encoder #+attr_latex: :environment tabularx :width \linewidth :align lXX #+attr_latex: :center t :booktabs t :float t -| *Characteristics* | *Manual* | -|----------------------+----------------| -| Resolution | 2.5nm | -| Sub-Divisional Error | $< \pm 15\,nm$ | -| Bandwidth | > 50 kHz | - +| | | | +| *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 #+caption: Expected interpolation errors for the Vionic Encoder @@ -136,3 +137,104 @@ This can be done by clamping the two as done in the mounting strut tool (Figure * Measurement procedure * Measurement Results +** Noise Measurement +*** 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 + +*** Analysis :ignore: +#+begin_src matlab +load('noise_meas_100s_20kHz.mat', 't', 'x'); +x = x - mean(x); +#+end_src + +#+begin_src matlab +figure; +hold on; +plot(t, 1e9*x, '.', 'DisplayName', 'Raw'); +plot(t, 1e9*lsim(1/(1 + s/2/pi/500), x, t), 'DisplayName', 'LPF - 500Hz') +hold off; +xlabel('Time [s]'); +ylabel('Displacement [nm]'); +legend('location', 'northeast'); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/vionic_noise_time.pdf', 'width', 'wide', 'height', 'normal'); +#+end_src + +#+name: fig:vionic_noise_time +#+caption: Time domain measurement (raw data and low pass filtered data) +#+RESULTS: +[[file:figs/vionic_noise_time.png]] + +#+begin_src matlab :exports none +% Compute sampling Frequency +Ts = (t(end) - t(1))/(length(t)-1); +Fs = 1/Ts; +#+end_src + +#+begin_src matlab :exports none +% Hannning Windows +win = hanning(ceil(0.5*Fs)); + +[pxx, f] = pwelch(x, win, [], [], Fs); +#+end_src + +#+begin_src matlab :exports none +figure; +plot(f, sqrt(pxx)); +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); ylabel('ASD [$m/\sqrt{Hz}$]'); +xlim([1, Fs/2]); +ylim([1e-11, 1e-9]); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/vionic_noise_asd.pdf', 'width', 'wide', 'height', 'normal'); +#+end_src + +#+name: fig:vionic_noise_asd +#+caption: Amplitude Spectral Density of the measured signal +#+RESULTS: +[[file:figs/vionic_noise_asd.png]] + +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/5e3); +#+end_src + +#+begin_src matlab :exports none +figure; +hold on; +plot(f, sqrt(pxx)); +plot(f, abs(squeeze(freqresp(Gn_e, f, 'Hz'))), 'k--'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); ylabel('ASD [$m/\sqrt{Hz}$]'); +xlim([1, Fs/2]); +ylim([1e-11, 1e-9]); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace +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 +#+RESULTS: +[[file:figs/vionic_noise_asd_model.png]]