294 lines
11 KiB
Org Mode
294 lines
11 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:
|
||
|
|
||
|
* Experimental conditions
|
||
|
- Measurement made in a metrology lab
|
||
|
- The granite is not glued to the floor
|
||
|
- The Y-Translation stage is powered and in closed-loop
|
||
|
- The spindle is not powered
|
||
|
- Mass is placed on top of the Hexapod (*how much?*) (figure [[fig:accelerometers]]).
|
||
|
- Made by Marc Lesourd on the 17th of November 2017
|
||
|
|
||
|
#+name: fig:accelerometers
|
||
|
#+caption: Accelerometers position
|
||
|
#+attr_latex: :width 0.5\linewidth
|
||
|
file:./figs/accelerometers.png
|
||
|
|
||
|
#+name: fig:instrumented_hammer
|
||
|
#+caption: Instrumented Hammer used
|
||
|
#+attr_latex: :width 0.5\linewidth
|
||
|
file:./figs/instrumented_hammer.png
|
||
|
|
||
|
* Measurements procedure
|
||
|
*3-axis Accelerometers* (specifications table [[tab:accelerometer]]) are glued on (see figure [[fig:accelerometers]]):
|
||
|
- Marble
|
||
|
- Y-Translation stage
|
||
|
- Tilt stage
|
||
|
- top of Hexapod
|
||
|
|
||
|
#+NAME: tab:accelerometer
|
||
|
#+CAPTION: Pieozoelectric acc. 356b18 - 3 axis
|
||
|
| Sensitivity | 0.102 V/(m/s2) |
|
||
|
| Measurement Range | 4.9 m/s2 pk |
|
||
|
| Frequency Range | 0.5 to 3000 Hz |
|
||
|
| resonant frequency | >20000 Hz |
|
||
|
| broadband resolution | 0.0005 m/s2 rms |
|
||
|
|
||
|
The structure is excited using an *instrumented hammer* with impacts on (see figure [[fig:instrumented_hammer]]):
|
||
|
- Marble
|
||
|
- Hexapod
|
||
|
|
||
|
* Measurement Files
|
||
|
Two measurements files are:
|
||
|
- =id31_microstation_2017_11_17_frf.mat= that contains:
|
||
|
- =freq_frf= the frequency vector in Hz
|
||
|
- Computed frequency response functions (see table [[tab:data_name]])
|
||
|
- =id31_microstation_2017_11_17_coh.mat=
|
||
|
- Computed coherence
|
||
|
|
||
|
For each of the measurement, the measured channels are shown on table [[tab:meas_channels]].
|
||
|
|
||
|
#+NAME: tab:data_name
|
||
|
#+CAPTION: Description of the location of direction of the excitation for each measurement
|
||
|
| Object name | Location | Direction |
|
||
|
|--------------+----------+-----------|
|
||
|
| frf_hexa_x | Hexapod | X |
|
||
|
| frf_hexa_y | Hexapod | Y |
|
||
|
| frf_hexa_z | Hexapod | Z |
|
||
|
| frf_marble_x | Marble | X |
|
||
|
| frf_marble_y | Marble | Y |
|
||
|
| frf_marble_z | Marble | Z |
|
||
|
|
||
|
#+NAME: tab:meas_channels
|
||
|
#+CAPTION: Description of each measurement channel
|
||
|
| Ch. nb | Element | Location | Direction |
|
||
|
|--------+---------------+----------+-----------|
|
||
|
| 1 | Not wired | na | na |
|
||
|
| 2 | Accelerometer | Marble | X |
|
||
|
| 3 | Accelerometer | Marble | Y |
|
||
|
| 4 | Accelerometer | Marble | Z |
|
||
|
| 5 | Accelerometer | Ty | X |
|
||
|
| 6 | Accelerometer | Ty | Y |
|
||
|
| 7 | Accelerometer | Ty | Z |
|
||
|
| 8 | Accelerometer | Tilt | X |
|
||
|
| 9 | Accelerometer | Tilt | Y |
|
||
|
| 10 | Accelerometer | Tilt | Z |
|
||
|
| 11 | Accelerometer | Hexapod | X |
|
||
|
| 12 | Accelerometer | Hexapod | Y |
|
||
|
| 13 | Accelerometer | Hexapod | Z |
|
||
|
|
||
|
* Data Analysis
|
||
|
** Loading of the data
|
||
|
#+begin_src matlab :exports none :results silent
|
||
|
<<matlab-init>>
|
||
|
#+end_src
|
||
|
|
||
|
#+begin_src matlab :exports code :results none
|
||
|
load('./raw_data/id31_microstation_2017_11_17_coh.mat',...
|
||
|
'coh_hexa_x',...
|
||
|
'coh_hexa_y',...
|
||
|
'coh_hexa_z',...
|
||
|
'coh_marble_x',...
|
||
|
'coh_marble_y',...
|
||
|
'coh_marble_z');
|
||
|
|
||
|
load('./raw_data/id31_microstation_2017_11_17_frf.mat',...
|
||
|
'freq_frf',...
|
||
|
'frf_hexa_x',...
|
||
|
'frf_hexa_y',...
|
||
|
'frf_hexa_z',...
|
||
|
'frf_marble_x',...
|
||
|
'frf_marble_y',...
|
||
|
'frf_marble_z');
|
||
|
#+end_src
|
||
|
|
||
|
** Pre-processing of the data
|
||
|
The FRF data are scaled with the sensitivity of the accelerometer and integrated two times to have the displacement instead of the acceleration.
|
||
|
|
||
|
#+begin_src matlab :results none
|
||
|
accel_sensitivity = 0.102; % [V/(m/s2)]
|
||
|
w = j*2*pi*freq_frf; % j.omega in [rad/s]
|
||
|
|
||
|
frf_hexa_x = 1/accel_sensitivity*frf_hexa_x./(w.^2);
|
||
|
frf_hexa_y = -1/accel_sensitivity*frf_hexa_y./(w.^2);
|
||
|
frf_hexa_z = -1/accel_sensitivity*frf_hexa_z./(w.^2);
|
||
|
|
||
|
frf_marble_x = 1/accel_sensitivity*frf_marble_x./(w.^2);
|
||
|
frf_marble_y = 1/accel_sensitivity*frf_marble_y./(w.^2);
|
||
|
frf_marble_z = -1/accel_sensitivity*frf_marble_z./(w.^2);
|
||
|
#+end_src
|
||
|
|
||
|
** X-direction FRF
|
||
|
#+begin_src matlab :exports none :results none
|
||
|
figure;
|
||
|
hold on;
|
||
|
plot(freq_frf, abs(frf_marble_x(:, 2)), 'DisplayName', 'Marble - X');
|
||
|
plot(freq_frf, abs(frf_marble_x(:, 5)), 'DisplayName', 'Ty - X');
|
||
|
plot(freq_frf, abs(frf_marble_x(:, 8)), 'DisplayName', 'Ry - X');
|
||
|
plot(freq_frf, abs(frf_marble_x(:, 11)), 'DisplayName', 'Hexa - X');
|
||
|
hold off;
|
||
|
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
|
||
|
xlabel('Frequency [Hz]'); ylabel('Displacement/Force [m/N]');
|
||
|
xlim([20, 200]); xticks([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(:, 2)), 'DisplayName', 'Marble - X');
|
||
|
plot(freq_frf, abs(frf_hexa_x(:, 5)), 'DisplayName', 'Ty - X');
|
||
|
plot(freq_frf, abs(frf_hexa_x(:, 8)), 'DisplayName', 'Ry - X');
|
||
|
plot(freq_frf, abs(frf_hexa_x(:, 11)), 'DisplayName', 'Hexa - X');
|
||
|
hold off;
|
||
|
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
|
||
|
xlabel('Frequency [Hz]'); ylabel('Displacement/Force [m/N]');
|
||
|
xlim([20, 200]); xticks([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(:, 3)), 'DisplayName', 'Marble - Y');
|
||
|
plot(freq_frf, abs(frf_marble_y(:, 6)), 'DisplayName', 'Ty - Y');
|
||
|
plot(freq_frf, abs(frf_marble_y(:, 9)), 'DisplayName', 'Ry - Y');
|
||
|
plot(freq_frf, abs(frf_marble_y(:, 12)), 'DisplayName', 'Hexa - Y');
|
||
|
hold off;
|
||
|
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
|
||
|
xlabel('Frequency [Hz]'); ylabel('Displacement/Force [m/N]');
|
||
|
xlim([20, 200]); xticks([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(:, 3)), 'DisplayName', 'Marble - Y');
|
||
|
plot(freq_frf, abs(frf_hexa_y(:, 6)), 'DisplayName', 'Ty - Y');
|
||
|
plot(freq_frf, abs(frf_hexa_y(:, 9)), 'DisplayName', 'Ry - Y');
|
||
|
plot(freq_frf, abs(frf_hexa_y(:, 12)), 'DisplayName', 'Hexa - Y');
|
||
|
hold off;
|
||
|
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
|
||
|
xlabel('Frequency [Hz]'); ylabel('Displacement/Force [m/N]');
|
||
|
xlim([20, 200]); xticks([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(:, 4)), 'DisplayName', 'Marble - Z');
|
||
|
plot(freq_frf, abs(frf_marble_z(:, 7)), 'DisplayName', 'Ty - Z');
|
||
|
plot(freq_frf, abs(frf_marble_z(:, 10)), 'DisplayName', 'Ry - Z');
|
||
|
plot(freq_frf, abs(frf_marble_z(:, 13)), 'DisplayName', 'Hexa - Z');
|
||
|
hold off;
|
||
|
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
|
||
|
xlabel('Frequency [Hz]'); ylabel('Displacement/Force [m/N]');
|
||
|
xlim([20, 200]); xticks([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(:, 4)), 'DisplayName', 'Marble - Z');
|
||
|
plot(freq_frf, abs(frf_hexa_z(:, 7)), 'DisplayName', 'Ty - Z');
|
||
|
plot(freq_frf, abs(frf_hexa_z(:, 10)), 'DisplayName', 'Ry - Z');
|
||
|
plot(freq_frf, abs(frf_hexa_z(:, 13)), 'DisplayName', 'Hexa - Z');
|
||
|
hold off;
|
||
|
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
|
||
|
xlabel('Frequency [Hz]'); ylabel('Displacement/Force [m/N]');
|
||
|
xlim([20, 200]); xticks([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]]
|