#+TITLE: Measurements :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_HEAD: #+HTML_HEAD: #+HTML_HEAD: #+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 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_html: :width 500px [[file:./figs/accelerometers.png]] #+name: fig:instrumented_hammer #+caption: Instrumented Hammer used #+attr_html: :width 500px [[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 :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 :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") <> #+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") <> #+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") <> #+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") <> #+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") <> #+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") <> #+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]]