#+TITLE: Measurements #+SETUPFILE: ../config.org * Experimental conditions - The granite is not glued to the floor - FS = 512Hz - Made by Marc Lesourd on the 12 of January 2018 * Measurements procedure *Geophones* L-28LB geophones (table [[tab:L-28LB]]) are placed on - Marle - Tilt Stage - Top of Hexapod #+NAME: tab:L-28LB #+CAPTION: L-28LB Geophone characteristics | Natural Frequency [Hz] | 4.5 | | Weight [g] | 140 | | Sensitivity [V/(m/s)] | 31.3 | The structure is excited using an *instrumented hammer* with impacts on - Marble X-Y-Z - Hexapod X-Y-Z * Measurement Channels #+NAME: tab:meas_channels #+CAPTION: Description of each measurement channel | Ch. nb | Element | Location | Direction | |--------+----------+----------------+-----------| | 1 | Hammer | variable | | |--------+----------+----------------+-----------| | 2 | Geophone | Marble | X-Y-Z | | 3 | Geophone | Tilt stage | X-Y-Z | | 4 | Geophone | Top of Hexapod | X-Y-Z | * Experiments #+NAME: tab:experiments #+CAPTION: Description of the location of direction of the excitation for each measurement | Meas. nb | Location | Direction | |----------+----------+-----------| | 1 | Marble | X | | 2 | Hexapod | X | |----------+----------+-----------| | 3 | Marble | Y | | 4 | Hexapod | Y | |----------+----------+-----------| | 5 | Marble | Z | | 6 | Hexapod | Z | * Data Analysis ** Loading and pre-processing of the data #+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 The Geophone sensitivity is defined below: #+begin_src matlab :results none w0 = 4.5*2*pi; % [rad/s] ksi = 0.38; G0 = 31.3; % [V/(m/s)] G = G0*(s/w0)^2/((s/w0)^2 + 2*ksi*(s/w0) + 1); % [V/(m/s)] #+end_src We then: - load the data - add a minus sign when needed - integrate the signal to have displacement instead of velocity - scaled with the sensitivity of the Geophone #+begin_src matlab :exports code :results none load('./raw_data/freq_frf.mat') % freq_frf w = j*2*pi*freq_frf; % j.omega in [rad/s] scaling = squeeze(freqresp(G, 2*pi*freq_frf))/G0; load('./raw_data/frf_marble_x.mat') % ReIm1 frf_marble_x = zeros(size(ReIm1, 1), 3); frf_marble_x(:, 1) = -ReIm1(:, 2)./w./scaling; % marble_x frf_marble_x(:, 2) = -ReIm1(:, 3)./w./scaling; % tilt_x frf_marble_x(:, 3) = -ReIm1(:, 4)./w./scaling; % hexa_x load('./raw_data/frf_hexa_x.mat') % ReIm2 frf_hexa_x = zeros(size(ReIm2, 1), 3); frf_hexa_x(:, 1) = -ReIm2(:, 2)./w./scaling; % marble_x frf_hexa_x(:, 2) = -ReIm2(:, 3)./w./scaling; % tilt_x frf_hexa_x(:, 3) = -ReIm2(:, 4)./w./scaling; % hexa_x load('./raw_data/frf_marble_y.mat') % ReIm3 frf_marble_y = zeros(size(ReIm3, 1), 3); frf_marble_y(:, 1) = -ReIm3(:, 2)./w./scaling; % marble_y frf_marble_y(:, 2) = -ReIm3(:, 3)./w./scaling; % tilt_y frf_marble_y(:, 3) = -ReIm3(:, 4)./w./scaling; % hexa_y load('./raw_data/frf_hexa_y.mat') % ReIm4 frf_hexa_y = zeros(size(ReIm4, 1), 3); frf_hexa_y(:, 1) = ReIm4(:, 2)./w./scaling; % marble_y frf_hexa_y(:, 2) = ReIm4(:, 3)./w./scaling; % tilt_y frf_hexa_y(:, 3) = ReIm4(:, 4)./w./scaling; % hexa_y load('./raw_data/frf_marble_z.mat') % ReIm5 frf_marble_z = zeros(size(ReIm5, 1), 3); frf_marble_z(:, 1) = ReIm5(:, 2)./w./scaling; % marble_z frf_marble_z(:, 2) = ReIm5(:, 3)./w./scaling; % tilt_z frf_marble_z(:, 3) = ReIm5(:, 4)./w./scaling; % hexa_z load('./raw_data/frf_hexa_z.mat') % ReIm6 frf_hexa_z = zeros(size(ReIm6, 1), 3); frf_hexa_z(:, 1) = ReIm6(:, 2)./w./scaling; % marble_z frf_hexa_z(:, 2) = ReIm6(:, 3)./w./scaling; % tilt_z frf_hexa_z(:, 3) = ReIm6(:, 4)./w./scaling; % hexa_z #+end_src #+begin_src matlab :exports code :results none load('./raw_data/coher_marble_x.mat') % coh1 coh_marble_x = zeros(size(coh1, 1), 3); coh_marble_x(:, 1) = coh1(:, 2); % marble_x coh_marble_x(:, 2) = coh1(:, 3); % tilt_x coh_marble_x(:, 3) = coh1(:, 4); % hexa_x load('./raw_data/coher_hexa_x.mat') % coh2 coh_hexa_x = zeros(size(coh2, 1), 3); coh_hexa_x(:, 1) = coh2(:, 2); % marble_x coh_hexa_x(:, 2) = coh2(:, 3); % tilt_x coh_hexa_x(:, 3) = coh2(:, 4); % hexa_x load('./raw_data/coher_marble_y.mat') % coh3 coh_marble_y = zeros(size(coh3, 1), 3); coh_marble_y(:, 1) = coh3(:, 2); % marble_y coh_marble_y(:, 2) = coh3(:, 3); % tilt_y coh_marble_y(:, 3) = coh3(:, 4); % hexa_y load('./raw_data/coher_hexa_y.mat') % coh4 coh_hexa_y = zeros(size(coh4, 1), 3); coh_hexa_y(:, 1) = coh4(:, 2); % marble_y coh_hexa_y(:, 2) = coh4(:, 3); % tilt_y coh_hexa_y(:, 3) = coh4(:, 4); % hexa_y load('./raw_data/coher_marble_z.mat') % coh5 coh_marble_z = zeros(size(coh5, 1), 3); coh_marble_z(:, 1) = coh5(:, 2); % marble_z coh_marble_z(:, 2) = coh5(:, 3); % tilt_z coh_marble_z(:, 3) = coh5(:, 4); % hexa_z load('./raw_data/coher_hexa_z.mat') % coh6 coh_hexa_z = zeros(size(coh6, 1), 3); coh_hexa_z(:, 1) = coh6(:, 2); % marble_z coh_hexa_z(:, 2) = coh6(:, 3); % tilt_z coh_hexa_z(:, 3) = coh6(:, 4); % hexa_z #+end_src ** X-direction FRF #+begin_src matlab :exports none :results none figure; hold on; plot(freq_frf, abs(frf_marble_x(:, 1)), 'DisplayName', 'Marble - X'); plot(freq_frf, abs(frf_marble_x(:, 2)), 'DisplayName', 'Ry - X'); plot(freq_frf, abs(frf_marble_x(:, 3)), 'DisplayName', 'Hexa - X'); hold off; set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log'); xlabel('Frequency [Hz]'); ylabel('Displacement/Force [m/N]'); xlim([5, 200]); xticks([5, 10, 20, 50, 100, 200]); legend('Location', 'southwest'); #+end_src #+NAME: fig:marble_x_frf #+HEADER: :tangle no :exports results :results raw :noweb yes #+begin_src matlab :var filepath="figs/marble_x_frf.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+NAME: fig:marble_x_frf #+CAPTION: Response to a force applied on the marble in the X direction #+RESULTS: fig:marble_x_frf [[file:figs/marble_x_frf.png]] #+begin_src matlab :exports none :results none figure; hold on; plot(freq_frf, abs(frf_hexa_x(:, 1)), 'DisplayName', 'Marble - X'); plot(freq_frf, abs(frf_hexa_x(:, 2)), 'DisplayName', 'Ry - X'); plot(freq_frf, abs(frf_hexa_x(:, 3)), 'DisplayName', 'Hexa - X'); hold off; set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log'); xlabel('Frequency [Hz]'); ylabel('Displacement/Force [m/N]'); xlim([5, 200]); xticks([5, 10, 20, 50, 100, 200]); legend('Location', 'southwest'); #+end_src #+NAME: fig:hexa_x_frf #+HEADER: :tangle no :exports results :results raw :noweb yes #+begin_src matlab :var filepath="figs/hexa_x_frf.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+NAME: fig:hexa_x_frf #+CAPTION: Response to a force applied on the hexa in the X direction #+RESULTS: fig:hexa_x_frf [[file:figs/hexa_x_frf.png]] ** Y-direction FRF #+begin_src matlab :exports none :results none figure; hold on; plot(freq_frf, abs(frf_marble_y(:, 1)), 'DisplayName', 'Marble - Y'); plot(freq_frf, abs(frf_marble_y(:, 2)), 'DisplayName', 'Ry - Y'); plot(freq_frf, abs(frf_marble_y(:, 3)), 'DisplayName', 'Hexa - Y'); hold off; set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log'); xlabel('Frequency [Hz]'); ylabel('Displacement/Force [m/N]'); xlim([5, 200]); xticks([5, 10, 20, 50, 100, 200]); legend('Location', 'southwest'); #+end_src #+NAME: fig:marble_y_frf #+HEADER: :tangle no :exports results :results raw :noweb yes #+begin_src matlab :var filepath="figs/marble_y_frf.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+NAME: fig:marble_y_frf #+CAPTION: Response to a force applied on the marble in the Y direction #+RESULTS: fig:marble_y_frf [[file:figs/marble_y_frf.png]] #+begin_src matlab :exports none :results none figure; hold on; plot(freq_frf, abs(frf_hexa_y(:, 1)), 'DisplayName', 'Marble - Y'); plot(freq_frf, abs(frf_hexa_y(:, 2)), 'DisplayName', 'Ry - Y'); plot(freq_frf, abs(frf_hexa_y(:, 3)), 'DisplayName', 'Hexa - Y'); hold off; set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log'); xlabel('Frequency [Hz]'); ylabel('Displacement/Force [m/N]'); xlim([5, 200]); xticks([5, 10, 20, 50, 100, 200]); legend('Location', 'southwest'); #+end_src #+NAME: fig:hexa_y_frf #+HEADER: :tangle no :exports results :results raw :noweb yes #+begin_src matlab :var filepath="figs/hexa_y_frf.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+NAME: fig:hexa_y_frf #+CAPTION: Response to a force applied on the hexa in the Y direction #+RESULTS: fig:hexa_y_frf [[file:figs/hexa_y_frf.png]] ** Z-direction FRF #+begin_src matlab :exports none :results none figure; hold on; plot(freq_frf, abs(frf_marble_z(:, 1)), 'DisplayName', 'Marble - Z'); plot(freq_frf, abs(frf_marble_z(:, 2)), 'DisplayName', 'Ry - Z'); plot(freq_frf, abs(frf_marble_z(:, 3)), 'DisplayName', 'Hexa - Z'); hold off; set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log'); xlabel('Frequency [Hz]'); ylabel('Displacement/Force [m/N]'); xlim([5, 200]); xticks([5, 10, 20, 50, 100, 200]); legend('Location', 'southwest'); #+end_src #+NAME: fig:marble_z_frf #+HEADER: :tangle no :exports results :results raw :noweb yes #+begin_src matlab :var filepath="figs/marble_z_frf.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+NAME: fig:marble_z_frf #+CAPTION: Response to a force applied on the marble in the Z direction #+RESULTS: fig:marble_z_frf [[file:figs/marble_z_frf.png]] #+begin_src matlab :exports none :results none figure; hold on; plot(freq_frf, abs(frf_hexa_z(:, 1)), 'DisplayName', 'Marble - Z'); plot(freq_frf, abs(frf_hexa_z(:, 2)), 'DisplayName', 'Ry - Z'); plot(freq_frf, abs(frf_hexa_z(:, 3)), 'DisplayName', 'Hexa - Z'); hold off; set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log'); xlabel('Frequency [Hz]'); ylabel('Displacement/Force [m/N]'); xlim([5, 200]); xticks([5, 10, 20, 50, 100, 200]); legend('Location', 'southwest'); #+end_src #+NAME: fig:hexa_z_frf #+HEADER: :tangle no :exports results :results raw :noweb yes #+begin_src matlab :var filepath="figs/hexa_z_frf.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+NAME: fig:hexa_z_frf #+CAPTION: Response to a force applied on the hexa in the Z direction #+RESULTS: fig:hexa_z_frf [[file:figs/hexa_z_frf.png]] ** Save the processed data Finally, we save the processed data. #+begin_src matlab :results none save('./data/id31_microstation_2018_01_12_frf.mat', ... 'freq_frf', ... 'frf_marble_x', ... 'frf_marble_y', ... 'frf_marble_z', ... 'frf_hexa_x', ... 'frf_hexa_y', ... 'frf_hexa_z'); save('./data/id31_microstation_2018_01_12_coh.mat', ... 'freq_frf', ... 'coh_marble_x', ... 'coh_marble_y', ... 'coh_marble_z', ... 'coh_hexa_x', ... 'coh_hexa_y', ... 'coh_hexa_z'); #+end_src