341 lines
12 KiB
Org Mode
341 lines
12 KiB
Org Mode
#+TITLE: Measurements
|
|
:drawer:
|
|
#+STARTUP: overview
|
|
|
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
|
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
|
|
#+HTML_HEAD: <script src="../js/jquery.min.js"></script>
|
|
#+HTML_HEAD: <script src="../js/bootstrap.min.js"></script>
|
|
#+HTML_HEAD: <script src="../js/jquery.stickytableheaders.min.js"></script>
|
|
#+HTML_HEAD: <script src="../js/readtheorg.js"></script>
|
|
|
|
#+LATEX_CLASS: cleanreport
|
|
#+LaTeX_CLASS_OPTIONS: [tocnp, secbreak, minted]
|
|
|
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
|
#+PROPERTY: header-args:matlab+ :comments org
|
|
#+PROPERTY: header-args:matlab+ :exports both
|
|
#+PROPERTY: header-args:matlab+ :eval no-export
|
|
#+PROPERTY: header-args:matlab+ :noweb yes
|
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
|
:end:
|
|
|
|
[[../index.org][Back to main page]].
|
|
|
|
* 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 :exports none :results silent
|
|
<<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
|
|
#+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")
|
|
<<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]);
|
|
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]);
|
|
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]);
|
|
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]);
|
|
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]);
|
|
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]]
|
|
** 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
|