nass-micro-station-measurem.../disturbance-sr-rz/index.org

506 lines
19 KiB
Org Mode

#+TITLE: Vibrations induced by the Slip-Ring and the Spindle
:DRAWER:
#+STARTUP: overview
#+LANGUAGE: en
#+EMAIL: dehaeze.thomas@gmail.com
#+AUTHOR: Dehaeze Thomas
#+HTML_LINK_HOME: ../index.html
#+HTML_LINK_UP: ../index.html
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+HTML_MATHJAX: align: center tagside: right font: TeX
#+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org
#+PROPERTY: header-args:matlab+ :results none
#+PROPERTY: header-args:matlab+ :exports both
#+PROPERTY: header-args:matlab+ :eval no-export
#+PROPERTY: header-args:matlab+ :output-dir figs
#+PROPERTY: header-args:shell :eval no-export
:END:
* Experimental Setup
*Setup*:
All the stages are OFF.
Two geophone are use:
- One on the marble (corresponding to the first column in the data)
- One at the sample location (corresponding to the second column in the data)
Two voltage amplifiers are used, their setup is:
- gain of 60dB
- AC/DC switch on AC
- Low pass filter at 1kHz
A first order low pass filter is also added at the input of the voltage amplifiers.
*Goal*:
- Identify the vibrations induced by the rotation of the Slip-Ring and Spindle
*Measurements*:
Three measurements are done:
| Measurement File | Description |
|--------------------+----------------------------------------------------------------------|
| =mat/data_024.mat= | All the stages are OFF |
| =mat/data_025.mat= | The slip-ring is ON and rotates at 6rpm. The spindle is OFF |
| =mat/data_026.mat= | The slip-ring and spindle are both ON. They are both turning at 6rpm |
Each of the measurement =mat= file contains one =data= array with 3 columns:
| Column number | Description |
|---------------+-------------------|
| 1 | Geophone - Marble |
| 2 | Geophone - Sample |
| 3 | Time |
A movie showing the experiment is shown on figure [[fig:exp_sl_sp_gif]].
#+name: fig:exp_sl_sp_gif
#+attr_html: :width 300px
#+caption: Movie of the experiment, rotation speed is 6rpm
[[file:./img/VID_20190510_155655.gif]]
* Data Analysis
:PROPERTIES:
:header-args:matlab+: :tangle matlab/spindle_slip_ring_vibrations.m
:header-args:matlab+: :comments org :mkdirp yes
:END:
<<sec:spindle_slip_ring_vibrations>>
** ZIP file containing the data and matlab files :ignore:
#+begin_src bash :exports none :results none
if [ matlab/spindle_slip_ring_vibrations.m -nt data/spindle_slip_ring_vibrations.zip ]; then
cp matlab/spindle_slip_ring_vibrations.m spindle_slip_ring_vibrations.m;
zip data/spindle_slip_ring_vibrations \
mat/data_024.mat \
mat/data_025.mat \
mat/data_026.mat \
spindle_slip_ring_vibrations.m
rm spindle_slip_ring_vibrations.m;
fi
#+end_src
#+begin_note
All the files (data and Matlab scripts) are accessible [[file:data/spindle_slip_ring_vibrations.zip][here]].
#+end_note
** Matlab Init :noexport:ignore:
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
<<matlab-dir>>
#+end_src
#+begin_src matlab :exports none :results silent :noweb yes
<<matlab-init>>
#+end_src
#+begin_src matlab
addpath('../src');
#+end_src
** Load data
#+begin_src matlab
of = load('mat/data_024.mat', 'data'); of = of.data; % OFF
sr = load('mat/data_025.mat', 'data'); sr = sr.data; % Slip Ring
sp = load('mat/data_026.mat', 'data'); sp = sp.data; % Spindle
#+end_src
#+begin_warning
There is a sign error for the Geophone located on top of the Hexapod.
The problem probably comes from the wiring in the Slip-Ring.
#+end_warning
#+begin_src matlab
of(:, 2) = -of(:, 2);
sr(:, 2) = -sr(:, 2);
sp(:, 2) = -sp(:, 2);
#+end_src
** Voltage to Velocity
We convert the measured voltage to velocity using the function =voltageToVelocityL22= (accessible [[file:../src/index.org][here]]).
#+begin_src matlab
gain = 60; % [dB]
of(:, 1) = voltageToVelocityL22(of(:, 1), of(:, 3), gain);
sr(:, 1) = voltageToVelocityL22(sr(:, 1), sr(:, 3), gain);
sp(:, 1) = voltageToVelocityL22(sp(:, 1), sp(:, 3), gain);
of(:, 2) = voltageToVelocityL22(of(:, 2), of(:, 3), gain);
sr(:, 2) = voltageToVelocityL22(sr(:, 2), sr(:, 3), gain);
sp(:, 2) = voltageToVelocityL22(sp(:, 2), sp(:, 3), gain);
#+end_src
** Time domain plots
#+begin_src matlab
figure;
hold on;
plot(sp(:, 3), sp(:, 1), 'DisplayName', 'Spindle - 6rpm');
plot(sr(:, 3), sr(:, 1), 'DisplayName', 'Slip-Ring - 6rpm');
plot(of(:, 3), of(:, 1), 'DisplayName', 'OFF');
hold off;
xlabel('Time [s]'); ylabel('Velocity [m/s]');
xlim([0, 100]);
legend('Location', 'northeast');
#+end_src
#+NAME: fig:slip_ring_spindle_marble_time
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
#+begin_src matlab :var filepath="figs/slip_ring_spindle_marble_time.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:slip_ring_spindle_marble_time
#+CAPTION: Velocity as measured by the geophone located on the marble - Time domain
#+RESULTS: fig:slip_ring_spindle_marble_time
[[file:figs/slip_ring_spindle_marble_time.png]]
#+begin_src matlab
figure;
hold on;
plot(sp(:, 3), sp(:, 2), 'DisplayName', 'Spindle and Slip-Ring');
plot(sr(:, 3), sr(:, 2), 'DisplayName', 'Only Slip-Ring');
plot(of(:, 3), of(:, 2), 'DisplayName', 'OFF');
hold off;
xlabel('Time [s]'); ylabel('Velocity [m/s]');
xlim([0, 100]);
legend('Location', 'northeast');
#+end_src
#+NAME: fig:slip_ring_spindle_sample_time
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
#+begin_src matlab :var filepath="figs/slip_ring_spindle_sample_time.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:slip_ring_spindle_sample_time
#+CAPTION: Velocity as measured by the geophone at the sample location - Time domain
#+RESULTS: fig:slip_ring_spindle_sample_time
[[file:figs/slip_ring_spindle_sample_time.png]]
#+begin_src matlab :exports none :tangle no
xlim([0, 1]);
#+end_src
#+NAME: fig:slip_ring_spindle_sample_zoom
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
#+begin_src matlab :var filepath="figs/slip_ring_spindle_sample_zoom.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:slip_ring_spindle_sample_zoom
#+CAPTION: Velocity as measured by the geophone at the sample location - Time domain
#+RESULTS: fig:slip_ring_spindle_sample_zoom
[[file:figs/slip_ring_spindle_sample_zoom.png]]
** Frequency Domain
We first compute some parameters that will be used for the PSD computation.
#+begin_src matlab :results none
dt = of(2, 3)-of(1, 3); % [s]
Fs = 1/dt; % [Hz]
win = hanning(ceil(10*Fs)); % Window used
#+end_src
Then we compute the Power Spectral Density using =pwelch= function.
First for the geophone located on the marble
#+begin_src matlab
[pxof_m, f] = pwelch(of(:, 1), win, [], [], Fs);
[pxsr_m, ~] = pwelch(sr(:, 1), win, [], [], Fs);
[pxsp_m, ~] = pwelch(sp(:, 1), win, [], [], Fs);
#+end_src
And for the geophone located at the sample position.
#+begin_src matlab
[pxof_s, ~] = pwelch(of(:, 2), win, [], [], Fs);
[pxsr_s, ~] = pwelch(sr(:, 2), win, [], [], Fs);
[pxsp_s, ~] = pwelch(sp(:, 2), win, [], [], Fs);
#+end_src
And we plot the ASD of the measured velocities:
- figure [[fig:sr_sp_psd_marble_compare]] for the geophone located on the marble
- figure [[fig:sr_sp_psd_sample_compare]] for the geophone at the sample position
#+begin_src matlab :results none
figure;
hold on;
plot(f, sqrt(pxsp_m), 'DisplayName', 'Spindle - 6rpm');
plot(f, sqrt(pxsr_m), 'DisplayName', 'Slip-Ring - 6rpm');
plot(f, sqrt(pxof_m), 'DisplayName', 'OFF');
hold off;
set(gca, 'xscale', 'log');
set(gca, 'yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('ASD of the measured velocity $\left[\frac{m/s}{\sqrt{Hz}}\right]$')
legend('Location', 'southwest');
xlim([2, 500]);
#+end_src
#+NAME: fig:sr_sp_psd_marble_compare
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
#+begin_src matlab :var filepath="figs/sr_sp_psd_marble_compare.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:sr_sp_psd_marble_compare
#+CAPTION: Comparison of the ASD of the measured velocities from the Geophone on the marble
#+RESULTS: fig:sr_sp_psd_marble_compare
[[file:figs/sr_sp_psd_marble_compare.png]]
#+begin_src matlab :results none
figure;
hold on;
plot(f, sqrt(pxsp_s), 'DisplayName', 'Spindle - 6rpm');
plot(f, sqrt(pxsr_s), 'DisplayName', 'Slip-Ring - 6rpm');
plot(f, sqrt(pxof_s), 'DisplayName', 'OFF');
hold off;
set(gca, 'xscale', 'log');
set(gca, 'yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('ASD of the measured velocity $\left[\frac{m/s}{\sqrt{Hz}}\right]$')
legend('Location', 'southwest');
xlim([2, 500]);
#+end_src
#+NAME: fig:sr_sp_psd_sample_compare
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
#+begin_src matlab :var filepath="figs/sr_sp_psd_sample_compare.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:sr_sp_psd_sample_compare
#+CAPTION: Comparison of the ASD of the measured velocities from the Geophone at the sample location
#+RESULTS: fig:sr_sp_psd_sample_compare
[[file:figs/sr_sp_psd_sample_compare.png]]
We load the ground motion to compare with the measurements (Fig. [[fig:ty_comp_gm]]).
We see that the motion is dominated by the ground motion below 20Hz.
#+begin_src matlab
gm = load('../ground-motion/mat/psd_gm.mat', 'f', 'psd_gv');
#+end_src
#+begin_src matlab :results none
figure;
hold on;
plot(f, sqrt(pxsp_m), 'DisplayName', 'Spindle - 6rpm');
plot(f, sqrt(pxsr_m), 'DisplayName', 'Slip-Ring - 6rpm');
plot(f, sqrt(pxof_m), 'DisplayName', 'OFF');
plot(gm.f, sqrt(gm.psd_gv), 'k-', 'DisplayName', 'Ground Motion');
hold off;
set(gca, 'xscale', 'log');
set(gca, 'yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('ASD of the measured velocity $\left[\frac{m/s}{\sqrt{Hz}}\right]$')
legend('Location', 'southwest');
xlim([2, 500]);
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/ty_comp_gm.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:ty_comp_gm
#+CAPTION: Comparison of the ground velocity with the measured velocity ([[./figs/ty_comp_gm.png][png]], [[./figs/ty_comp_gm.pdf][pdf]])
[[file:figs/ty_comp_gm.png]]
** Relative Motion
The relative velocity between the sample and the marble is shown in Fig. [[fig:rz_relative_velocity]].
The velocity is integrated to have the relative displacement in Fig. [[fig:rz_relative_motion]].
#+begin_src matlab :exports results
figure;
hold on;
plot(sp(:, 3), sp(:, 2)-sp(:, 1), 'DisplayName', 'Spindle - 6rpm');
plot(sr(:, 3), sr(:, 2)-sr(:, 1), 'DisplayName', 'Slip-Ring - 6rpm');
plot(of(:, 3), of(:, 2)-of(:, 1), 'DisplayName', 'OFF');
hold off;
xlabel('Time [s]'); ylabel('Velocity [m/s]');
xlim([0, 100]); ylim([-1e-4, 1e-4]);
legend('Location', 'northeast');
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/rz_relative_velocity.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:rz_relative_velocity
#+CAPTION: Relative velocity between the hexapod and the marble ([[./figs/rz_relative_velocity.png][png]], [[./figs/rz_relative_velocity.pdf][pdf]])
[[file:figs/rz_relative_velocity.png]]
Time domain: Integration to have the displacement
#+begin_src matlab :exports results
figure;
hold on;
plot(sp(:, 3), lsim(1/s, sp(:, 2)-sp(:, 1), sp(:, 3)), 'DisplayName', 'Spindle - 6rpm');
plot(sr(:, 3), lsim(1/s, sr(:, 2)-sr(:, 1), sr(:, 3)), 'DisplayName', 'Slip-Ring - 6rpm');
plot(of(:, 3), lsim(1/s, of(:, 2)-of(:, 1), of(:, 3)), 'DisplayName', 'OFF');
hold off;
xlabel('Time [s]'); ylabel('Displacement [m]');
xlim([0, 100]);
legend('Location', 'northeast');
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/rz_relative_motion.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:rz_relative_motion
#+CAPTION: Relative displacement between the Hexapod and the marble ([[./figs/rz_relative_motion.png][png]], [[./figs/rz_relative_motion.pdf][pdf]])
[[file:figs/rz_relative_motion.png]]
We compute the PSD of the relative velocity between the sample and the marble.
#+begin_src matlab
[pxof_r, f] = pwelch(of(:, 2)-of(:, 1), win, [], [], Fs);
[pxsr_r, ~] = pwelch(sr(:, 2)-sr(:, 1), win, [], [], Fs);
[pxsp_r, ~] = pwelch(sp(:, 2)-sp(:, 1), win, [], [], Fs);
#+end_src
The Power Spectral Density of the Granite Velocity, Sample velocity and relative velocity are compare in Fig. [[fig:rz_psd_sample_granite_relative_comp]].
#+begin_src matlab :exports results
figure;
hold on;
plot(f, sqrt(pxof_m)./(2*pi*f), 'DisplayName', 'Granite');
plot(f, sqrt(pxof_s)./(2*pi*f), 'DisplayName', 'Sample');
plot(f, sqrt(pxof_r)./(2*pi*f), 'DisplayName', 'Diff');
hold off;
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('ASD of the relative velocity $\left[\frac{m/s}{\sqrt{Hz}}\right]$')
legend('Location', 'southwest');
xlim([2, 500]);
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/rz_psd_sample_granite_relative_comp.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:rz_psd_sample_granite_relative_comp
#+CAPTION: Comparison of the PSD of the velocity of the Sample, Granite and relative velocity ([[./figs/rz_psd_sample_granite_relative_comp.png][png]], [[./figs/rz_psd_sample_granite_relative_comp.pdf][pdf]])
[[file:figs/rz_psd_sample_granite_relative_comp.png]]
Then, we display the PSD of the relative velocity for all three cases in Fig. [[fig:sr_sp_psd_relative_compare]].
#+begin_src matlab :results none
figure;
hold on;
plot(f, sqrt(pxsp_r), 'DisplayName', 'Spindle - 6rpm');
plot(f, sqrt(pxsr_r), 'DisplayName', 'Slip-Ring - 6rpm');
plot(f, sqrt(pxof_r), 'DisplayName', 'OFF');
hold off;
set(gca, 'xscale', 'log');
set(gca, 'yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('ASD of the relative velocity $\left[\frac{m/s}{\sqrt{Hz}}\right]$')
legend('Location', 'southwest');
xlim([2, 500]);
#+end_src
#+NAME: fig:sr_sp_psd_relative_compare
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
#+begin_src matlab :var filepath="figs/sr_sp_psd_relative_compare.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:sr_sp_psd_relative_compare
#+CAPTION: Comparison of the ASD of the relative velocity
#+RESULTS: fig:sr_sp_psd_relative_compare
[[file:figs/sr_sp_psd_relative_compare.png]]
The Cumulative Power Spectrum of the relative velocity is shown in Fig. [[fig:dist_rz_cps]] and in Fig. [[fig:dist_rz_cps_reverse]] (integrated in reverse direction).
#+begin_src matlab :results none :exports results
figure;
hold on;
plot(f, cumtrapz(f,pxsp_r), 'DisplayName', 'Spindle - 6rpm');
plot(f, cumtrapz(f,pxsr_r), 'DisplayName', 'Slip-Ring - 6rpm');
plot(f, cumtrapz(f,pxof_r), 'DisplayName', 'OFF');
hold off;
set(gca, 'xscale', 'log');
set(gca, 'yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('CPS of the relative velocity $\left[\frac{(m/s)^2}{Hz}\right]$')
legend('Location', 'southwest');
xlim([2, 500]);
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/dist_rz_cps.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:dist_rz_cps
#+CAPTION: Cumulative Power Spectrum of the relative velocity ([[./figs/dist_rz_cps.png][png]], [[./figs/dist_rz_cps.pdf][pdf]])
[[file:figs/dist_rz_cps.png]]
#+begin_src matlab :exports results
figure;
hold on;
plot(f, flip(-cumtrapz(flip(f), flip(pxsp_r))), 'DisplayName', 'Spindle - 6rpm');
plot(f, flip(-cumtrapz(flip(f), flip(pxsr_r))), 'DisplayName', 'Slip-Ring - 6rpm');
plot(f, flip(-cumtrapz(flip(f), flip(pxof_r))), 'DisplayName', 'OFF');
hold off;
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('CPS of the relative velocity $\left[\frac{(m/s)^2}{Hz}\right]$')
legend('Location', 'southwest');
xlim([2, 500]);
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/dist_rz_cps_reverse.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:dist_rz_cps_reverse
#+CAPTION: Cumulative Power Spectrum of the relative velocity (integrated from high to low frequencies) ([[./figs/dist_rz_cps_reverse.png][png]], [[./figs/dist_rz_cps_reverse.pdf][pdf]])
[[file:figs/dist_rz_cps_reverse.png]]
Finally, the Cumulative Amplitude Spectrum of the relative position between the hexapod and the marble is shown in Fig. [[fig:dist_rz_cas]].
#+begin_src matlab :results none
figure;
hold on;
plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxsp_r./(2*pi*f).^2)))), 'DisplayName', 'Spindle - 6rpm');
plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxsr_r./(2*pi*f).^2)))), 'DisplayName', 'Slip-Ring - 6rpm');
plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxof_r./(2*pi*f).^2)))), 'DisplayName', 'OFF');
hold off;
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('CAS of the relative displacement $\left[\frac{m}{\sqrt{Hz}}\right]$')
legend('Location', 'southwest');
xlim([2, 500]);
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/dist_rz_cas.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:dist_rz_cas
#+CAPTION: Cumulative Amplitude Spectrum of the relative motion Hexapod/Granite ([[./figs/dist_rz_cas.png][png]], [[./figs/dist_rz_cas.pdf][pdf]])
[[file:figs/dist_rz_cas.png]]
** Save
The Power Spectral Density of the relative velocity and of the hexapod velocity is saved for further analysis.
#+begin_src matlab
save('mat/pxsp_r.mat', 'f', 'pxsp_r', 'pxsp_s');
#+end_src
** Conclusion
#+begin_important
The relative motion below 20Hz is dominated by another effect than the rotation of the Spindle (probably ground motion).
The Slip-Ring rotation induce almost no relative motion of the hexapod with respect to the granite (only a little above 400Hz).
The Spindle rotation induces relative motion of the hexapod with respect to the granite above 20Hz.
#+end_important
#+begin_important
There is a huge peak at 24Hz on the sample vibration but not on the granite vibration
- The peak is really sharp, could this be due to magnetic effect?
- Should redo the measurement with piezo accelerometers.
#+end_important