#+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: #+HTML_HEAD: #+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: <> ** 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) <> #+end_src #+begin_src matlab :exports none :results silent :noweb yes <> #+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") <> #+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") <> #+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") <> #+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") <> #+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") <> #+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") <> #+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") <> #+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") <> #+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") <> #+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") <> #+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") <> #+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") <> #+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") <> #+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