nass-micro-station-measurem.../2018-01-12 - Marc/index.org

323 lines
11 KiB
Org Mode
Raw Normal View History

2019-03-14 16:40:28 +01:00
#+TITLE: Measurements
#+SETUPFILE: ../config.org
2019-03-15 11:48:56 +01:00
2019-03-14 16:40:28 +01:00
* 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)
<<matlab-dir>>
#+end_src
#+begin_src matlab :exports none :results silent :noweb yes
2019-03-14 16:40:28 +01:00
<<matlab-init>>
#+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
2019-03-14 16:40:28 +01:00
#+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;
2019-03-14 16:40:28 +01:00
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
2019-03-14 16:40:28 +01:00
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
2019-03-14 16:40:28 +01:00
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
2019-03-14 16:40:28 +01:00
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
2019-03-14 16:40:28 +01:00
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
2019-03-14 16:40:28 +01:00
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
2019-03-14 16:40:28 +01:00
#+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]);
2019-03-14 16:40:28 +01:00
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")
<<plt-matlab>>
#+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]);
2019-03-14 16:40:28 +01:00
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")
<<plt-matlab>>
#+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]);
2019-03-14 16:40:28 +01:00
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")
<<plt-matlab>>
#+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]);
2019-03-14 16:40:28 +01:00
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")
<<plt-matlab>>
#+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]);
2019-03-14 16:40:28 +01:00
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")
<<plt-matlab>>
#+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]);
2019-03-14 16:40:28 +01:00
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")
<<plt-matlab>>
#+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]]
2019-05-10 09:07:30 +02:00
** 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