encoder-test-bench/index.org

12 KiB

Encoder - Test Bench

Introduction   ignore

In this document, we wish to study the use of an encoder in parallel with an Amplified Piezoelectric Actuator.

The document is divided into the following Sections:

Experimental Setup

<<sec:experimental_setup>>

The experimental Setup is schematically represented in Figure fig:exp_setup_schematic.

Here are the equipment used in the test bench:

  • Renishaw Resolution Encoder with 1nm resolution (doc)
  • Attocube interferometer (doc)
  • Cedrat Amplified Piezoelectric Actuator APA95ML (doc)
  • Voltage Amplifier LA75B (doc)
  • Speedgoat IO131 with 16bits ADC and DAC (doc)

The mass can be vertically moved using the amplified piezoelectric actuator. The displacement of the mass (relative to the mechanical frame) is measured both by the interferometer and by the encoder.

/tdehaeze/encoder-test-bench/media/commit/1956132d5510399a7db5088637beb90aaeb393d9/figs/exp_setup_schematic.png
Schematic of the Experiment
/tdehaeze/encoder-test-bench/media/commit/1956132d5510399a7db5088637beb90aaeb393d9/figs/IMG_20201023_153905.jpg
Side View of the encoder
/tdehaeze/encoder-test-bench/media/commit/1956132d5510399a7db5088637beb90aaeb393d9/figs/IMG_20201023_153914.jpg
Front View of the encoder

Noise Spectral Density of the Encoder

<<sec:encoder_noise>>

Introduction   ignore

The goal in this section is the estimate the noise of both the encoder and the intereferometer.

The actuator is not excited, thus the relative motion between the mass and the frame is as small as possible. Ideally, a mechanical part would clamp the two together, we here suppose that the APA is still enough to clamp the two together.

Load Data

The measurement data are loaded and the offset are removed using the detrend command.

  load('mat/int_enc_huddle_test.mat', 'interferometer', 'encoder', 't');
  interferometer = detrend(interferometer, 0);
  encoder = detrend(encoder, 0);

Time Domain Results

The measurement of both the encoder and interferometer are shown in Figure fig:huddle_test_time_domain.

/tdehaeze/encoder-test-bench/media/commit/1956132d5510399a7db5088637beb90aaeb393d9/figs/huddle_test_time_domain.png

Huddle test - Time domain signals

The raw signals are filtered with a Low Pass filter (defined below) such that we can see the low frequency motion (Figure fig:huddle_test_time_domain_filtered).

  G_lpf = 1/(1 + s/2/pi/10);

/tdehaeze/encoder-test-bench/media/commit/1956132d5510399a7db5088637beb90aaeb393d9/figs/huddle_test_time_domain_filtered.png

Huddle test - Time domain signals filtered with a LPF at 10Hz

Frequency Domain Noise

The noise of the measurement (supposing there is no motion) is now translated in the frequency domain by computed the Amplitude Spectral Density.

  Ts = 1e-4;
  win = hann(ceil(10/Ts));

  [p_i, f] = pwelch(interferometer, win, [], [], 1/Ts);
  [p_e, ~] = pwelch(encoder,        win, [], [], 1/Ts);

The comparison of the ASD of the encoder and interferometer are shown in Figure fig:huddle_test_asd.

It is clear that although the encoder exhibit higher frequency noise, is it more stable at low frequency as the length of the beam path in the air is much smaller and thus changed of temperature/pressure/humity of the air has much smaller effect on the measured displacement.

/tdehaeze/encoder-test-bench/media/commit/1956132d5510399a7db5088637beb90aaeb393d9/figs/huddle_test_asd.png

Amplitude Spectral Density of the signals during the Huddle test

Dynamics from Actuator to Encoder

<<sec:dynamics_encoder>>

Introduction   ignore

Now the dynamics from the force actuator to the measurement by the encoder is identified.

Load Data

As usual, the measurement data are loaded.

  load('mat/int_enc_id_noise_bis.mat', 'interferometer', 'encoder', 'u', 't');

The first 0.1 seconds are removed as it corresponds to transient behavior.

  interferometer = interferometer(t>0.1);
  encoder = encoder(t>0.1);
  u = u(t>0.1);
  t = t(t>0.1);

Finally the offset are removed using the detrend command.

  interferometer = detrend(interferometer, 0);
  encoder = detrend(encoder, 0);
  u = detrend(u, 0);

Excitation and Measured Signals

The excitation signal is a white noise filtered by a low pass filter to not excite too much the high frequency modes.

The excitation signal is shown in Figure fig:encoder_identification_excitation_time.

/tdehaeze/encoder-test-bench/media/commit/1956132d5510399a7db5088637beb90aaeb393d9/figs/encoder_identification_excitation_time.png

The measured motion by the interferometer and encoder is shown in Figure

/tdehaeze/encoder-test-bench/media/commit/1956132d5510399a7db5088637beb90aaeb393d9/figs/encoder_identification_motion.png

Identification

Now the dynamics from the voltage sent to the voltage amplitude driving the APA95ML to the measured displacement by both the encoder and interferometer are computed.

  Ts = 1e-4; % Sampling Time [s]
  win = hann(ceil(10/Ts));

  [tf_i_est, f] = tfestimate(u, interferometer, win, [], [], 1/Ts);
  [co_i_est, ~] = mscohere(u, interferometer, win, [], [], 1/Ts);

  [tf_e_est, ~] = tfestimate(u, encoder, win, [], [], 1/Ts);
  [co_e_est, ~] = mscohere(u, encoder, win, [], [], 1/Ts);

The obtained coherence is shown in Figure fig:identification_dynamics_coherence. It is shown that the identification is good until 500Hz for the interferometer and until 1kHz for the encoder.

/tdehaeze/encoder-test-bench/media/commit/1956132d5510399a7db5088637beb90aaeb393d9/figs/identification_dynamics_coherence.png

The compared dynamics as measured by the intereferometer and encoder are shown in Figure fig:identification_dynamics_bode.

/tdehaeze/encoder-test-bench/media/commit/1956132d5510399a7db5088637beb90aaeb393d9/figs/identification_dynamics_bode.png

The second resonance at around 900Hz most likely corresponds to the resonance of either the ruler support or the head support.