Work suspension table part
BIN
figs/test_nhexa_compliance_table.pdf
Normal file
BIN
figs/test_nhexa_compliance_table.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
figs/test_nhexa_mode_shapes_rigid_table.gif
Normal file
After Width: | Height: | Size: 4.5 MiB |
BIN
figs/test_nhexa_mode_shapes_rigid_table.png
Normal file
After Width: | Height: | Size: 187 KiB |
BIN
figs/test_nhexa_suspended_table.jpg
Normal file
After Width: | Height: | Size: 1.3 MiB |
BIN
figs/test_nhexa_suspended_table_cad.jpg
Normal file
After Width: | Height: | Size: 135 KiB |
BIN
figs/test_nhexa_suspended_table_simscape.pdf
Normal file
BIN
figs/test_nhexa_suspended_table_simscape.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
figs/test_nhexa_table_flexible_mode_1.jpg
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
figs/test_nhexa_table_flexible_mode_2.jpg
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
figs/test_nhexa_table_flexible_mode_3.jpg
Normal file
After Width: | Height: | Size: 33 KiB |
@ -105,6 +105,9 @@ Add these documents:
|
|||||||
- [X] [[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-vibration-table/vibration-table.org][test-bench-vibration-table]]
|
- [X] [[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-vibration-table/vibration-table.org][test-bench-vibration-table]]
|
||||||
- [ ] *Use corrected APA parameters in the initialization script*
|
- [ ] *Use corrected APA parameters in the initialization script*
|
||||||
|
|
||||||
|
|
||||||
|
Suspended table EPDM: ID00/test_bench/table_dyn
|
||||||
|
|
||||||
*Goal of this test bench*:
|
*Goal of this test bench*:
|
||||||
- Properly mount the nano-hexapod
|
- Properly mount the nano-hexapod
|
||||||
- Verify all is working
|
- Verify all is working
|
||||||
@ -141,6 +144,8 @@ Maybe the rest is not so interesting here as it will be presented again in the n
|
|||||||
- [ ] Modes of the encoder supports
|
- [ ] Modes of the encoder supports
|
||||||
- [ ] ...
|
- [ ] ...
|
||||||
|
|
||||||
|
** TODO [#C] Remove un-used matlab scripts and src files
|
||||||
|
|
||||||
** TODO [#B] Make nice subfigures for identified modes
|
** TODO [#B] Make nice subfigures for identified modes
|
||||||
SCHEDULED: <2024-10-26 Sat>
|
SCHEDULED: <2024-10-26 Sat>
|
||||||
|
|
||||||
@ -4111,94 +4116,24 @@ After all six struts are mounted, the mounting tool (Figure ref:fig:test_nhexa_c
|
|||||||
<<sec:test_nhexa_table>>
|
<<sec:test_nhexa_table>>
|
||||||
** Introduction
|
** Introduction
|
||||||
|
|
||||||
# In EPDM: ID00/test_bench/table_dyn
|
When a dynamical system is fixed to a support (such as a granite or an optical table), its dynamics will couple to the support dynamics.
|
||||||
|
This may results in additional modes appearing in the system dynamics, which are difficult to predict and model.
|
||||||
|
Two prevent this issue, strategy adopted here is to mount the nano-hexapod on top a suspended table with low frequency suspension modes.
|
||||||
|
|
||||||
This document is divided as follows:
|
In such a case, the modes of the suspended table are chosen to be at much lower frequency than those of the nano-hexapod such that they are well decoupled.
|
||||||
- Section ref:ssec:test_nhexa_table_setup: the experimental setup and all the instrumentation are described
|
An other key advantage is that the suspension modes of the suspended table can be easily modelled using Simscape.
|
||||||
- Section ref:ssec:test_nhexa_table_identification: the table dynamics is identified
|
Therefore, the measured dynamics of the nano-hexapod on top of the suspended table can be compared to a simscape model representing the same experimental conditions.
|
||||||
- Section ref:ssec:test_nhexa_table_model: a Simscape model of the vibration table is developed and tuned from the measurements
|
The model of the Nano-Hexapod can thus be precisely tuned to match the measured dynamics.
|
||||||
|
|
||||||
** Experimental Setup
|
The developed suspended table is presented in Section ref:ssec:test_nhexa_table_setup.
|
||||||
<<ssec:test_nhexa_table_setup>>
|
The modal analysis of the table is done in ref:ssec:test_nhexa_table_identification.
|
||||||
*** Introduction :ignore:
|
Finally, the Simscape model representing the suspended table is tuned to match the measured modes (Section ref:ssec:test_nhexa_table_model).
|
||||||
|
|
||||||
- [ ] Redo the CAD view
|
** Matlab Init :noexport:ignore:
|
||||||
|
#+begin_src matlab
|
||||||
|
%% test_nhexa_table.m
|
||||||
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:vibration-table-cad-view
|
|
||||||
#+caption: CAD View of the vibration table
|
|
||||||
#+attr_latex: :width 0.8\linewidth
|
|
||||||
[[file:figs/vibration-table-cad-view.png]]
|
|
||||||
|
|
||||||
*** Suspended table
|
|
||||||
|
|
||||||
- Dimensions :: 450 mm x 450 mm x 60 mm
|
|
||||||
- Mass :: 21.3 kg (bot=7.8, top=7.6, mid=5.9kg)
|
|
||||||
- Interface plate :: 3.2kg
|
|
||||||
|
|
||||||
#+name: fig:compliance_optical_table
|
|
||||||
#+caption: Compliance of the B4545A optical table
|
|
||||||
#+attr_latex: :width 0.8\linewidth
|
|
||||||
[[file:figs/test_nhexa_compliance_table.png]]
|
|
||||||
|
|
||||||
If we include including the bottom interface plate:
|
|
||||||
- Total mass: 24.5 kg
|
|
||||||
- CoM: 42mm below Center of optical table
|
|
||||||
- Ix = 0.54, Iy = 0.54, Iz = 1.07 (with respect to CoM)
|
|
||||||
|
|
||||||
*** Springs
|
|
||||||
|
|
||||||
Helical compression spring
|
|
||||||
make of steel wire (52SiCrNi5) with rectangular cross section
|
|
||||||
SZ8005 20 x 044 from Steinel
|
|
||||||
L0 = 44mm
|
|
||||||
Spring rate = 17.8 N/mm
|
|
||||||
|
|
||||||
[[file:figs/test_nhexa_table_springs.jpg]]
|
|
||||||
|
|
||||||
** Identification of the table's response
|
|
||||||
<<ssec:test_nhexa_table_identification>>
|
|
||||||
|
|
||||||
(4x) 3D accelerometer [[https://www.pcbpiezotronics.fr/produit/accelerometres/356b18/][PCB 356B18]]
|
|
||||||
|
|
||||||
#+name: tab:list_modes
|
|
||||||
#+caption: List of the identified modes
|
|
||||||
#+attr_latex: :environment tabularx :width 0.5\linewidth :align ccX
|
|
||||||
#+attr_latex: :center t :booktabs t :float t
|
|
||||||
| | Freq. [Hz] | Description |
|
|
||||||
|---+------------+---------------|
|
|
||||||
| 1 | 1.3 | X-translation |
|
|
||||||
| 2 | 1.3 | Y-translation |
|
|
||||||
| 3 | 1.95 | Z-rotation |
|
|
||||||
| 4 | 6.85 | Z-translation |
|
|
||||||
| 5 | 8.9 | Tilt |
|
|
||||||
| 6 | 8.9 | Tilt |
|
|
||||||
| 7 | 700 | Flexible Mode |
|
|
||||||
|
|
||||||
#+name: fig:test_nhexa_mode_shapes_rigid_table
|
|
||||||
#+caption: Mode shapes of the 6 suspension modes (from 1Hz to 9Hz)
|
|
||||||
#+attr_latex: :width \linewidth
|
|
||||||
[[file:figs/test_nhexa_mode_shapes_rigid_table.png]]
|
|
||||||
|
|
||||||
#+name: fig:ModeShapeHF1_crop
|
|
||||||
#+caption: First flexible mode of the table at 700Hz
|
|
||||||
#+attr_latex: :width 0.3\linewidth
|
|
||||||
[[file:figs/ModeShapeHF1_crop.gif]]
|
|
||||||
|
|
||||||
|
|
||||||
** Simscape Model of the suspended table
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args:matlab+: :tangle matlab/simscape_model.m
|
|
||||||
:END:
|
|
||||||
<<ssec:test_nhexa_table_model>>
|
|
||||||
*** Introduction :ignore:
|
|
||||||
In this section, the Simscape model of the vibration table is described.
|
|
||||||
|
|
||||||
#+name: fig:simscape_vibration_table
|
|
||||||
#+caption: 3D representation of the simscape model
|
|
||||||
#+attr_latex: :width 0.8\linewidth
|
|
||||||
[[file:figs/simscape_vibration_table.png]]
|
|
||||||
|
|
||||||
*** Matlab Init :noexport:ignore:
|
|
||||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||||
<<matlab-dir>>
|
<<matlab-dir>>
|
||||||
#+end_src
|
#+end_src
|
||||||
@ -4223,79 +4158,101 @@ In this section, the Simscape model of the vibration table is described.
|
|||||||
<<m-init-other>>
|
<<m-init-other>>
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Simscape Sub-systems
|
** Experimental Setup
|
||||||
<<sec:simscape_parameters>>
|
<<ssec:test_nhexa_table_setup>>
|
||||||
|
|
||||||
Parameters for sub-components of the simscape model are defined below.
|
The design of the suspended table is quite straightforward.
|
||||||
|
First, an optical table with high frequency flexible mode was selected[fn:5].
|
||||||
|
Then, four springs[fn:6] were selected with low enough spring rate such that the suspension modes are below 10Hz.
|
||||||
|
Finally, some interface elements were designed, and mechanical lateral mechanical stops were added (Figure ref:fig:test_nhexa_suspended_table_cad).
|
||||||
|
|
||||||
**** Springs
|
#+name: fig:test_nhexa_suspended_table_cad
|
||||||
<<sec:simscape_springs>>
|
#+caption: CAD View of the vibration table. Purple cylinders are representing the soft springs.
|
||||||
|
#+attr_latex: :width 0.7\linewidth
|
||||||
|
[[file:figs/test_nhexa_suspended_table_cad.jpg]]
|
||||||
|
|
||||||
The 4 springs supporting the suspended optical table are modelled with "bushing joints" having stiffness and damping in the x-y-z directions:
|
** Modal analysis of the suspended table
|
||||||
|
<<ssec:test_nhexa_table_identification>>
|
||||||
|
|
||||||
#+begin_src matlab
|
In order to perform a modal analysis of the suspended table, a total of 15 3-axis accelerometers[fn:7] were fixed to the breadboard.
|
||||||
%% This parameters are defined in the Mask of the suspended table
|
Using an instrumented hammer, the first 9 modes could be identified and are summarized in Table ref:tab:test_nhexa_suspended_table_modes.
|
||||||
% spring.kx = 0.5e3; % X- Stiffness [N/m]
|
The first 6 modes are suspension modes (i.e. rigid body mode of the breadboard) and are located below 10Hz.
|
||||||
% spring.cx = 15; % X- Damping [N/(m/s)]
|
The next modes are flexible modes of the breadboard as shown in Figure ref:fig:test_nhexa_table_flexible_modes, and located above 700Hz.
|
||||||
|
|
||||||
% spring.ky = 0.5e3; % Y- Stiffness [N/m]
|
#+attr_latex: :options [t]{0.45\linewidth}
|
||||||
% spring.cy = 15; % Y- Damping [N/(m/s)]
|
#+begin_minipage
|
||||||
|
#+name: fig:test_nhexa_suspended_table
|
||||||
|
#+caption: Mounted suspended table. Only 1 or the 15 accelerometer is mounted on top
|
||||||
|
#+attr_latex: :width 0.99\linewidth :float nil
|
||||||
|
[[file:figs/test_nhexa_suspended_table.jpg]]
|
||||||
|
#+end_minipage
|
||||||
|
\hfill
|
||||||
|
#+attr_latex: :options [b]{0.45\linewidth}
|
||||||
|
#+begin_minipage
|
||||||
|
#+begin_scriptsize
|
||||||
|
#+name: tab:test_nhexa_suspended_table_modes
|
||||||
|
#+caption: Obtained modes of the suspended table
|
||||||
|
#+attr_latex: :environment tabularx :width 0.9\linewidth :placement [b] :align clX
|
||||||
|
#+attr_latex: :booktabs t :float nil :center t
|
||||||
|
#+RESULTS:
|
||||||
|
| *Modes* | *Frequency* | *Description* |
|
||||||
|
|---------+-------------+------------------|
|
||||||
|
| 1,2 | 1.3 Hz | X-Y translations |
|
||||||
|
| 3 | 2.0 Hz | Z rotation |
|
||||||
|
| 4 | 6.9 Hz | Z translation |
|
||||||
|
| 5,6 | 9.5 Hz | X-Y rotations |
|
||||||
|
|---------+-------------+------------------|
|
||||||
|
| 7 | 701 Hz | "Membrane" Mode |
|
||||||
|
| 8 | 989 Hz | Complex mode |
|
||||||
|
| 9 | 1025 Hz | Complex mode |
|
||||||
|
#+end_scriptsize
|
||||||
|
#+end_minipage
|
||||||
|
|
||||||
% spring.kz = 1e3; % Z- Stiffness [N/m]
|
|
||||||
% spring.cz = 50; % Z- Damping [N/(m/s)]
|
|
||||||
|
|
||||||
% spring.z0 = 32e-3; % Equilibrium z-length [m]
|
#+name: fig:test_nhexa_table_flexible_modes
|
||||||
#+end_src
|
#+caption: Three identified flexible modes of the suspended table
|
||||||
|
#+attr_latex: :options [htbp]
|
||||||
|
#+begin_figure
|
||||||
|
#+attr_latex: :caption \subcaption{\label{fig:test_nhexa_table_flexible_mode_1}Flexible mode at 701Hz}
|
||||||
|
#+attr_latex: :options {\textwidth}
|
||||||
|
#+begin_subfigure
|
||||||
|
#+attr_latex: :width \linewidth
|
||||||
|
[[file:figs/test_nhexa_table_flexible_mode_1.jpg]]
|
||||||
|
#+end_subfigure
|
||||||
|
#+attr_latex: :caption \subcaption{\label{fig:test_nhexa_table_flexible_mode_2}Flexible mode at 989Hz}
|
||||||
|
#+attr_latex: :options {\textwidth}
|
||||||
|
#+begin_subfigure
|
||||||
|
#+attr_latex: :width \linewidth
|
||||||
|
[[file:figs/test_nhexa_table_flexible_mode_2.jpg]]
|
||||||
|
#+end_subfigure
|
||||||
|
#+attr_latex: :caption \subcaption{\label{fig:test_nhexa_table_flexible_mode_3}Flexible mode at 1025Hz}
|
||||||
|
#+attr_latex: :options {\textwidth}
|
||||||
|
#+begin_subfigure
|
||||||
|
#+attr_latex: :width \linewidth
|
||||||
|
[[file:figs/test_nhexa_table_flexible_mode_3.jpg]]
|
||||||
|
#+end_subfigure
|
||||||
|
#+end_figure
|
||||||
|
|
||||||
**** Inertial Shaker (IS20)
|
** Simscape Model of the suspended table
|
||||||
<<sec:simscape_inertial_shaker>>
|
:PROPERTIES:
|
||||||
|
:header-args:matlab+: :tangle matlab/simscape_model.m
|
||||||
|
:END:
|
||||||
|
<<ssec:test_nhexa_table_model>>
|
||||||
|
|
||||||
The inertial shaker is defined as two solid bodies:
|
The Simscape model of the suspended table simply consists of two solid bodies connected by 4 springs.
|
||||||
- the "housing" that is fixed to the element that we want to excite
|
The 4 springs are here modelled with "bushing joints" that have stiffness and damping properties in x, y and z directions.
|
||||||
- the "inertial mass" that is suspended inside the housing
|
The 3D representation of the model is displayed in Figure ref:fig:test_nhexa_suspended_table_simscape where the 4 "bushing joints" are represented by the blue cylinders.
|
||||||
|
|
||||||
The inertial mass is guided inside the housing and an actuator (coil and magnet) can be used to apply a force between the inertial mass and the support.
|
#+name: fig:test_nhexa_suspended_table_simscape
|
||||||
The "reacting" force on the support is then used as an excitation.
|
#+caption: 3D representation of the simscape model
|
||||||
|
#+attr_latex: :width 0.8\linewidth
|
||||||
|
[[file:figs/test_nhexa_suspended_table_simscape.png]]
|
||||||
|
|
||||||
#+name: tab:is20_characteristics
|
The model order is 12, and it represents the 6 suspension modes.
|
||||||
#+caption: Summary of the IS20 datasheet
|
The inertia properties of the parts are set from the geometry and material densities.
|
||||||
#+attr_latex: :environment tabularx :width 0.4\linewidth :align lX
|
The stiffness of the springs was initially set from the datasheet nominal value of $17.8\,N/mm$ and then reduced down to $14\,N/mm$ to better match the measured suspension modes.
|
||||||
#+attr_latex: :center t :booktabs t :float t
|
The stiffness of the springs in the horizontal plane is set at $0.5\,N/mm$.
|
||||||
| Characteristic | Value |
|
The obtained suspension modes of the simscape model are compared with the measured ones in Table ref:tab:test_nhexa_suspended_table_simscape_modes.
|
||||||
|-----------------+------------|
|
|
||||||
| Output Force | 20 N |
|
|
||||||
| Frequency Range | 10-3000 Hz |
|
|
||||||
| Moving Mass | 0.1 kg |
|
|
||||||
| Total Mass | 0.3 kg |
|
|
||||||
|
|
||||||
From the datasheet in Table ref:tab:is20_characteristics, we can estimate the parameters of the physical shaker.
|
|
||||||
|
|
||||||
These parameters are defined below
|
|
||||||
**** 3D accelerometer (356B18)
|
|
||||||
<<sec:simscape_accelerometers>>
|
|
||||||
|
|
||||||
An accelerometer consists of 2 solids:
|
|
||||||
- a "housing" rigidly fixed to the measured body
|
|
||||||
- an "inertial mass" suspended inside the housing by springs and guided in the measured direction
|
|
||||||
|
|
||||||
The relative motion between the housing and the inertial mass gives a measurement of the acceleration of the measured body (up to the suspension mode of the inertial mass).
|
|
||||||
|
|
||||||
#+name: tab:356b18_characteristics
|
|
||||||
#+caption: Summary of the 356B18 datasheet
|
|
||||||
#+attr_latex: :environment tabularx :width 0.5\linewidth :align lX
|
|
||||||
#+attr_latex: :center t :booktabs t :float t
|
|
||||||
| Characteristic | Value |
|
|
||||||
|---------------------+---------------------|
|
|
||||||
| Sensitivity | 0.102 V/(m/s2) |
|
|
||||||
| Frequency Range | 0.5 to 3000 Hz |
|
|
||||||
| Resonance Frequency | > 20 kHz |
|
|
||||||
| Resolution | 0.0005 m/s2 rms |
|
|
||||||
| Weight | 0.025 kg |
|
|
||||||
| Size | 20.3x26.1x20.3 [mm] |
|
|
||||||
|
|
||||||
*** Identification
|
|
||||||
<<sec:simscape_parameters>>
|
|
||||||
Let's now identify the resonance frequency and mode shapes associated with the suspension modes of the optical table.
|
|
||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
%% Configure Simscape Model
|
%% Configure Simscape Model
|
||||||
@ -4312,79 +4269,20 @@ io(io_i) = linio([mdl, '/F_v'], 1, 'openoutput'); io_i = io_i + 1;
|
|||||||
G = linearize(mdl, io);
|
G = linearize(mdl, io);
|
||||||
G.InputName = {'Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz'};
|
G.InputName = {'Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz'};
|
||||||
G.OutputName = {'Vdx', 'Vdy', 'Vdz', 'Vrx', 'Vry', 'Vrz'};
|
G.OutputName = {'Vdx', 'Vdy', 'Vdz', 'Vrx', 'Vry', 'Vrz'};
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src matlab
|
%% Compute the resonance frequencies
|
||||||
freqs = logspace(0, 2, 1000);
|
|
||||||
figure;
|
|
||||||
hold on;
|
|
||||||
plot(freqs, abs(squeeze(freqresp(G(1,1), freqs, 'Hz'))), 'DisplayName', '$x$');
|
|
||||||
plot(freqs, abs(squeeze(freqresp(G(2,2), freqs, 'Hz'))), 'DisplayName', '$y$');
|
|
||||||
plot(freqs, abs(squeeze(freqresp(G(3,3), freqs, 'Hz'))), 'DisplayName', '$z$');
|
|
||||||
plot(freqs, abs(squeeze(freqresp(G(4,4), freqs, 'Hz'))), 'DisplayName', '$R_x$');
|
|
||||||
plot(freqs, abs(squeeze(freqresp(G(5,5), freqs, 'Hz'))), 'DisplayName', '$R_y$');
|
|
||||||
plot(freqs, abs(squeeze(freqresp(G(6,6), freqs, 'Hz'))), 'DisplayName', '$R_z$');
|
|
||||||
hold off;
|
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
|
||||||
xlabel('Frequency [Hz]'); ylabel('Amplitude [$m/s/N$]');
|
|
||||||
legend('location', 'northeast');
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src matlab :results output replace :exports results :tangle no
|
|
||||||
size(G)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+RESULTS:
|
|
||||||
: size(G)
|
|
||||||
: State-space model with 6 outputs, 6 inputs, and 12 states.
|
|
||||||
|
|
||||||
Compute the resonance frequencies
|
|
||||||
#+begin_src matlab
|
|
||||||
ws = eig(G.A);
|
ws = eig(G.A);
|
||||||
ws = ws(imag(ws) > 0);
|
ws = ws(imag(ws) > 0);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
|
#+name: tab:test_nhexa_suspended_table_simscape_modes
|
||||||
data2orgtable([sort(imag(ws))'/2/pi; 1.3, 1.3, 1.95, 6.85, 8.9, 9.5], {'Simscape', 'Experimental'}, {'x', 'y', 'Rz', 'Dz', 'Rx', 'Ry'}, ' %.2f ');
|
#+caption: Comparison of the identified suspension modes with the Simscape model and measured experimentally
|
||||||
#+end_src
|
#+attr_latex: :environment tabularx :width 0.6\linewidth :align Xcccc
|
||||||
|
#+attr_latex: :center t :booktabs t
|
||||||
#+RESULTS:
|
| Directions | $D_x$, $D_y$ | $R_z$ | $D_z$ | $R_x$, $R_y$ |
|
||||||
| | x | y | Rz | Dz | Rx | Ry |
|
|--------------+--------------+--------+--------+--------------|
|
||||||
|--------------+------+------+------+------+------+------|
|
| Experimental | 1.3 Hz | 2.0 Hz | 6.9 Hz | 9.5 Hz |
|
||||||
| Simscape | 1.28 | 1.28 | 1.82 | 6.78 | 9.47 | 9.47 |
|
| Simscape | 1.3 Hz | 1.8 Hz | 6.8 Hz | 9.5 Hz |
|
||||||
| Experimental | 1.3 | 1.3 | 1.95 | 6.85 | 8.9 | 9.5 |
|
|
||||||
|
|
||||||
|
|
||||||
And the associated response of the optical table
|
|
||||||
#+begin_src matlab
|
|
||||||
x_mod = zeros(6, 6); % 6 modes, 6 outputs
|
|
||||||
|
|
||||||
for i = 1:length(ws)
|
|
||||||
xi = evalfr(G(1,:), ws(i));
|
|
||||||
x_mod(:,i) = xi./norm(xi);
|
|
||||||
end
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
The results are shown in Table ref:tab:mode_shapes.
|
|
||||||
The motion associated to the mode shapes are just indicative.
|
|
||||||
|
|
||||||
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
|
|
||||||
data2orgtable([flip(imag(ws)/2/pi)'; flip(abs(x_mod),2)], {'$\omega_0$ [Hz]', 'x', 'y', 'z', 'Rx', 'Ry', 'Rz'}, {}, ' %.1f ');
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+name: tab:mode_shapes
|
|
||||||
#+caption: Resonance frequency and approximation of the mode shapes
|
|
||||||
#+attr_latex: :environment tabularx :width 0.4\linewidth :align Xcccccc
|
|
||||||
#+attr_latex: :center t :booktabs t :float t
|
|
||||||
#+RESULTS:
|
|
||||||
| $\omega_0$ [Hz] | 8.2 | 8.2 | 8.2 | 5.8 | 5.6 | 5.6 |
|
|
||||||
|-----------------+-----+-----+-----+-----+-----+-----|
|
|
||||||
| x | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 0.5 |
|
|
||||||
| y | 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 |
|
|
||||||
| z | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 |
|
|
||||||
| Rx | 1.0 | 0.0 | 0.0 | 0.0 | 0.8 | 0.0 |
|
|
||||||
| Ry | 0.0 | 1.0 | 0.0 | 0.0 | 0.2 | 0.9 |
|
|
||||||
| Rz | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 |
|
|
||||||
|
|
||||||
* Nano-Hexapod Dynamics
|
* Nano-Hexapod Dynamics
|
||||||
<<sec:test_nhexa_dynamics>>
|
<<sec:test_nhexa_dynamics>>
|
||||||
@ -5899,6 +5797,10 @@ freqs = 2*logspace(1, 3, 1000);
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
* Footnotes
|
* Footnotes
|
||||||
|
|
||||||
|
[fn:7]PCB 356B18. Sensitivity is $1\,V/g$, measurement range is $\pm 5\,g$ and bandwidth is $0.5$ to $5\,\text{kHz}$.
|
||||||
|
[fn:6]"SZ8005 20 x 044" from Steinel. The spring rate is specified at $17.8\,N/mm$
|
||||||
|
[fn:5]The 450 mm x 450 mm x 60 mm Nexus B4545A from Thorlabs.
|
||||||
[fn:4]As the accuracy of the FARO arm is $\pm 13\,\mu m$, the true straightness is probably better than the values indicated. The limitation of the instrument is here reached.
|
[fn:4]As the accuracy of the FARO arm is $\pm 13\,\mu m$, the true straightness is probably better than the values indicated. The limitation of the instrument is here reached.
|
||||||
[fn:3]The height dimension is better than $40\,\mu m$. The diameter fit of 182g6 and 24g6 with the two plates is verified.
|
[fn:3]The height dimension is better than $40\,\mu m$. The diameter fit of 182g6 and 24g6 with the two plates is verified.
|
||||||
[fn:2]Location of all the interface surfaces with the flexible joints are checked. The fits (182H7 and 24H8) with the interface element are checked.
|
[fn:2]Location of all the interface surfaces with the flexible joints are checked. The fits (182H7 and 24H8) with the interface element are checked.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
% Created 2024-10-27 Sun 11:12
|
% Created 2024-10-27 Sun 14:49
|
||||||
% Intended LaTeX compiler: pdflatex
|
% Intended LaTeX compiler: pdflatex
|
||||||
\documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt}
|
\documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt}
|
||||||
|
|
||||||
@ -133,214 +133,124 @@ After all six struts are mounted, the mounting tool (Figure \ref{fig:test_nhexa_
|
|||||||
\label{sec:test_nhexa_table}
|
\label{sec:test_nhexa_table}
|
||||||
\section{Introduction}
|
\section{Introduction}
|
||||||
|
|
||||||
This document is divided as follows:
|
When a dynamical system is fixed to a support (such as a granite or an optical table), its dynamics will couple to the support dynamics.
|
||||||
\begin{itemize}
|
This may results in additional modes appearing in the system dynamics, which are difficult to predict and model.
|
||||||
\item Section \ref{ssec:test_nhexa_table_setup}: the experimental setup and all the instrumentation are described
|
Two prevent this issue, strategy adopted here is to mount the nano-hexapod on top a suspended table with low frequency suspension modes.
|
||||||
\item Section \ref{ssec:test_nhexa_table_identification}: the table dynamics is identified
|
|
||||||
\item Section \ref{ssec:test_nhexa_table_model}: a Simscape model of the vibration table is developed and tuned from the measurements
|
In such a case, the modes of the suspended table are chosen to be at much lower frequency than those of the nano-hexapod such that they are well decoupled.
|
||||||
\end{itemize}
|
An other key advantage is that the suspension modes of the suspended table can be easily modelled using Simscape.
|
||||||
|
Therefore, the measured dynamics of the nano-hexapod on top of the suspended table can be compared to a simscape model representing the same experimental conditions.
|
||||||
|
The model of the Nano-Hexapod can thus be precisely tuned to match the measured dynamics.
|
||||||
|
|
||||||
|
The developed suspended table is presented in Section \ref{ssec:test_nhexa_table_setup}.
|
||||||
|
The modal analysis of the table is done in \ref{ssec:test_nhexa_table_identification}.
|
||||||
|
Finally, the Simscape model representing the suspended table is tuned to match the measured modes (Section \ref{ssec:test_nhexa_table_model}).
|
||||||
|
|
||||||
\section{Experimental Setup}
|
\section{Experimental Setup}
|
||||||
\label{ssec:test_nhexa_table_setup}
|
\label{ssec:test_nhexa_table_setup}
|
||||||
\begin{itemize}
|
|
||||||
\item[{$\square$}] Redo the CAD view
|
The design of the suspended table is quite straightforward.
|
||||||
\end{itemize}
|
First, an optical table with high frequency flexible mode was selected\footnote{The 450 mm x 450 mm x 60 mm Nexus B4545A from Thorlabs.}.
|
||||||
|
Then, four springs\footnote{``SZ8005 20 x 044'' from Steinel. The spring rate is specified at \(17.8\,N/mm\)} were selected with low enough spring rate such that the suspension modes are below 10Hz.
|
||||||
|
Finally, some interface elements were designed, and mechanical lateral mechanical stops were added (Figure \ref{fig:test_nhexa_suspended_table_cad}).
|
||||||
|
|
||||||
\begin{figure}[htbp]
|
\begin{figure}[htbp]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[scale=1,width=0.8\linewidth]{figs/vibration-table-cad-view.png}
|
\includegraphics[scale=1,width=0.7\linewidth]{figs/test_nhexa_suspended_table_cad.jpg}
|
||||||
\caption{\label{fig:vibration-table-cad-view}CAD View of the vibration table}
|
\caption{\label{fig:test_nhexa_suspended_table_cad}CAD View of the vibration table. Purple cylinders are representing the soft springs.}
|
||||||
\end{figure}
|
|
||||||
\subsection{Suspended table}
|
|
||||||
|
|
||||||
\begin{description}
|
|
||||||
\item[{Dimensions}] 450 mm x 450 mm x 60 mm
|
|
||||||
\item[{Mass}] 21.3 kg (bot=7.8, top=7.6, mid=5.9kg)
|
|
||||||
\item[{Interface plate}] 3.2kg
|
|
||||||
\end{description}
|
|
||||||
|
|
||||||
\begin{figure}[htbp]
|
|
||||||
\centering
|
|
||||||
\includegraphics[scale=1,width=0.8\linewidth]{figs/test_nhexa_compliance_table.png}
|
|
||||||
\caption{\label{fig:compliance_optical_table}Compliance of the B4545A optical table}
|
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
If we include including the bottom interface plate:
|
\section{Modal analysis of the suspended table}
|
||||||
\begin{itemize}
|
|
||||||
\item Total mass: 24.5 kg
|
|
||||||
\item CoM: 42mm below Center of optical table
|
|
||||||
\item Ix = 0.54, Iy = 0.54, Iz = 1.07 (with respect to CoM)
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
\subsection{Springs}
|
|
||||||
|
|
||||||
Helical compression spring
|
|
||||||
make of steel wire (52SiCrNi5) with rectangular cross section
|
|
||||||
SZ8005 20 x 044 from Steinel
|
|
||||||
L0 = 44mm
|
|
||||||
Spring rate = 17.8 N/mm
|
|
||||||
|
|
||||||
\begin{center}
|
|
||||||
\includegraphics[scale=1]{figs/test_nhexa_table_springs.jpg}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
\section{Identification of the table's response}
|
|
||||||
\label{ssec:test_nhexa_table_identification}
|
\label{ssec:test_nhexa_table_identification}
|
||||||
|
|
||||||
(4x) 3D accelerometer \href{https://www.pcbpiezotronics.fr/produit/accelerometres/356b18/}{PCB 356B18}
|
In order to perform a modal analysis of the suspended table, a total of 15 3-axis accelerometers\footnote{PCB 356B18. Sensitivity is \(1\,V/g\), measurement range is \(\pm 5\,g\) and bandwidth is \(0.5\) to \(5\,\text{kHz}\).} were fixed to the breadboard.
|
||||||
|
Using an instrumented hammer, the first 9 modes could be identified and are summarized in Table \ref{tab:test_nhexa_suspended_table_modes}.
|
||||||
|
The first 6 modes are suspension modes (i.e. rigid body mode of the breadboard) and are located below 10Hz.
|
||||||
|
The next modes are flexible modes of the breadboard as shown in Figure \ref{fig:test_nhexa_table_flexible_modes}, and located above 700Hz.
|
||||||
|
|
||||||
\begin{table}[htbp]
|
\begin{minipage}[t]{0.45\linewidth}
|
||||||
\centering
|
\begin{center}
|
||||||
\begin{tabularx}{0.5\linewidth}{ccX}
|
\includegraphics[scale=1,width=0.99\linewidth]{figs/test_nhexa_suspended_table.jpg}
|
||||||
|
\captionof{figure}{\label{fig:test_nhexa_suspended_table}Mounted suspended table. Only 1 or the 15 accelerometer is mounted on top}
|
||||||
|
\end{center}
|
||||||
|
\end{minipage}
|
||||||
|
\hfill
|
||||||
|
\begin{minipage}[b]{0.45\linewidth}
|
||||||
|
\begin{scriptsize}
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabularx}{0.9\linewidth}{clX}
|
||||||
\toprule
|
\toprule
|
||||||
& Freq. [Hz] & Description\\
|
\textbf{Modes} & \textbf{Frequency} & \textbf{Description}\\
|
||||||
\midrule
|
\midrule
|
||||||
1 & 1.3 & X-translation\\
|
1,2 & 1.3 Hz & X-Y translations\\
|
||||||
2 & 1.3 & Y-translation\\
|
3 & 2.0 Hz & Z rotation\\
|
||||||
3 & 1.95 & Z-rotation\\
|
4 & 6.9 Hz & Z translation\\
|
||||||
4 & 6.85 & Z-translation\\
|
5,6 & 9.5 Hz & X-Y rotations\\
|
||||||
5 & 8.9 & Tilt\\
|
\midrule
|
||||||
6 & 8.9 & Tilt\\
|
7 & 701 Hz & ``Membrane'' Mode\\
|
||||||
7 & 700 & Flexible Mode\\
|
8 & 989 Hz & Complex mode\\
|
||||||
|
9 & 1025 Hz & Complex mode\\
|
||||||
\bottomrule
|
\bottomrule
|
||||||
\end{tabularx}
|
\end{tabularx}
|
||||||
\caption{\label{tab:list_modes}List of the identified modes}
|
\captionof{table}{\label{tab:test_nhexa_suspended_table_modes}Obtained modes of the suspended table}
|
||||||
|
|
||||||
|
\end{center}
|
||||||
|
\end{scriptsize}
|
||||||
|
\end{minipage}
|
||||||
|
|
||||||
\end{table}
|
|
||||||
|
|
||||||
\begin{figure}[htbp]
|
\begin{figure}[htbp]
|
||||||
\centering
|
\begin{subfigure}{\textwidth}
|
||||||
\includegraphics[scale=1,width=\linewidth]{figs/test_nhexa_mode_shapes_rigid_table.png}
|
\begin{center}
|
||||||
\caption{\label{fig:test_nhexa_mode_shapes_rigid_table}Mode shapes of the 6 suspension modes (from 1Hz to 9Hz)}
|
\includegraphics[scale=1,width=\linewidth]{figs/test_nhexa_table_flexible_mode_1.jpg}
|
||||||
|
\end{center}
|
||||||
|
\subcaption{\label{fig:test_nhexa_table_flexible_mode_1}Flexible mode at 701Hz}
|
||||||
|
\end{subfigure}
|
||||||
|
\begin{subfigure}{\textwidth}
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[scale=1,width=\linewidth]{figs/test_nhexa_table_flexible_mode_2.jpg}
|
||||||
|
\end{center}
|
||||||
|
\subcaption{\label{fig:test_nhexa_table_flexible_mode_2}Flexible mode at 989Hz}
|
||||||
|
\end{subfigure}
|
||||||
|
\begin{subfigure}{\textwidth}
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[scale=1,width=\linewidth]{figs/test_nhexa_table_flexible_mode_3.jpg}
|
||||||
|
\end{center}
|
||||||
|
\subcaption{\label{fig:test_nhexa_table_flexible_mode_3}Flexible mode at 1025Hz}
|
||||||
|
\end{subfigure}
|
||||||
|
\caption{\label{fig:test_nhexa_table_flexible_modes}Three identified flexible modes of the suspended table}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
\begin{figure}[htbp]
|
|
||||||
\centering
|
|
||||||
\includegraphics[scale=1,width=0.3\linewidth]{figs/ModeShapeHF1_crop.gif}
|
|
||||||
\caption{\label{fig:ModeShapeHF1_crop}First flexible mode of the table at 700Hz}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
|
|
||||||
\section{Simscape Model of the suspended table}
|
\section{Simscape Model of the suspended table}
|
||||||
\label{ssec:test_nhexa_table_model}
|
\label{ssec:test_nhexa_table_model}
|
||||||
In this section, the Simscape model of the vibration table is described.
|
|
||||||
|
The Simscape model of the suspended table simply consists of two solid bodies connected by 4 springs.
|
||||||
|
The 4 springs are here modelled with ``bushing joints'' that have stiffness and damping properties in x, y and z directions.
|
||||||
|
The 3D representation of the model is displayed in Figure \ref{fig:test_nhexa_suspended_table_simscape} where the 4 ``bushing joints'' are represented by the blue cylinders.
|
||||||
|
|
||||||
\begin{figure}[htbp]
|
\begin{figure}[htbp]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[scale=1,width=0.8\linewidth]{figs/simscape_vibration_table.png}
|
\includegraphics[scale=1,width=0.8\linewidth]{figs/test_nhexa_suspended_table_simscape.png}
|
||||||
\caption{\label{fig:simscape_vibration_table}3D representation of the simscape model}
|
\caption{\label{fig:test_nhexa_suspended_table_simscape}3D representation of the simscape model}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
\subsection{Simscape Sub-systems}
|
|
||||||
\label{sec:simscape_parameters}
|
|
||||||
|
|
||||||
Parameters for sub-components of the simscape model are defined below.
|
The model order is 12, and it represents the 6 suspension modes.
|
||||||
|
The inertia properties of the parts are set from the geometry and material densities.
|
||||||
\paragraph{Springs}
|
The stiffness of the springs was initially set from the datasheet nominal value of \(17.8\,N/mm\) and then reduced down to \(14\,N/mm\) to better match the measured suspension modes.
|
||||||
\label{sec:simscape_springs}
|
The stiffness of the springs in the horizontal plane is set at \(0.5\,N/mm\).
|
||||||
|
The obtained suspension modes of the simscape model are compared with the measured ones in Table \ref{tab:test_nhexa_suspended_table_simscape_modes}.
|
||||||
The 4 springs supporting the suspended optical table are modelled with ``bushing joints'' having stiffness and damping in the x-y-z directions:
|
|
||||||
|
|
||||||
\paragraph{Inertial Shaker (IS20)}
|
|
||||||
\label{sec:simscape_inertial_shaker}
|
|
||||||
|
|
||||||
The inertial shaker is defined as two solid bodies:
|
|
||||||
\begin{itemize}
|
|
||||||
\item the ``housing'' that is fixed to the element that we want to excite
|
|
||||||
\item the ``inertial mass'' that is suspended inside the housing
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
The inertial mass is guided inside the housing and an actuator (coil and magnet) can be used to apply a force between the inertial mass and the support.
|
|
||||||
The ``reacting'' force on the support is then used as an excitation.
|
|
||||||
|
|
||||||
\begin{table}[htbp]
|
\begin{table}[htbp]
|
||||||
\centering
|
\centering
|
||||||
\begin{tabularx}{0.4\linewidth}{lX}
|
\begin{tabularx}{0.6\linewidth}{Xcccc}
|
||||||
\toprule
|
\toprule
|
||||||
Characteristic & Value\\
|
Directions & \(D_x\), \(D_y\) & \(R_z\) & \(D_z\) & \(R_x\), \(R_y\)\\
|
||||||
\midrule
|
\midrule
|
||||||
Output Force & 20 N\\
|
Experimental & 1.3 Hz & 2.0 Hz & 6.9 Hz & 9.5 Hz\\
|
||||||
Frequency Range & 10-3000 Hz\\
|
Simscape & 1.3 Hz & 1.8 Hz & 6.8 Hz & 9.5 Hz\\
|
||||||
Moving Mass & 0.1 kg\\
|
|
||||||
Total Mass & 0.3 kg\\
|
|
||||||
\bottomrule
|
\bottomrule
|
||||||
\end{tabularx}
|
\end{tabularx}
|
||||||
\caption{\label{tab:is20_characteristics}Summary of the IS20 datasheet}
|
\caption{\label{tab:test_nhexa_suspended_table_simscape_modes}Comparison of the identified suspension modes with the Simscape model and measured experimentally}
|
||||||
|
|
||||||
\end{table}
|
|
||||||
|
|
||||||
From the datasheet in Table \ref{tab:is20_characteristics}, we can estimate the parameters of the physical shaker.
|
|
||||||
|
|
||||||
These parameters are defined below
|
|
||||||
\paragraph{3D accelerometer (356B18)}
|
|
||||||
\label{sec:simscape_accelerometers}
|
|
||||||
|
|
||||||
An accelerometer consists of 2 solids:
|
|
||||||
\begin{itemize}
|
|
||||||
\item a ``housing'' rigidly fixed to the measured body
|
|
||||||
\item an ``inertial mass'' suspended inside the housing by springs and guided in the measured direction
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
The relative motion between the housing and the inertial mass gives a measurement of the acceleration of the measured body (up to the suspension mode of the inertial mass).
|
|
||||||
|
|
||||||
\begin{table}[htbp]
|
|
||||||
\centering
|
|
||||||
\begin{tabularx}{0.5\linewidth}{lX}
|
|
||||||
\toprule
|
|
||||||
Characteristic & Value\\
|
|
||||||
\midrule
|
|
||||||
Sensitivity & 0.102 V/(m/s2)\\
|
|
||||||
Frequency Range & 0.5 to 3000 Hz\\
|
|
||||||
Resonance Frequency & > 20 kHz\\
|
|
||||||
Resolution & 0.0005 m/s2 rms\\
|
|
||||||
Weight & 0.025 kg\\
|
|
||||||
Size & 20.3x26.1x20.3 [mm]\\
|
|
||||||
\bottomrule
|
|
||||||
\end{tabularx}
|
|
||||||
\caption{\label{tab:356b18_characteristics}Summary of the 356B18 datasheet}
|
|
||||||
|
|
||||||
\end{table}
|
|
||||||
|
|
||||||
\subsection{Identification}
|
|
||||||
\label{sec:simscape_parameters}
|
|
||||||
Let's now identify the resonance frequency and mode shapes associated with the suspension modes of the optical table.
|
|
||||||
|
|
||||||
\begin{verbatim}
|
|
||||||
size(G)
|
|
||||||
State-space model with 6 outputs, 6 inputs, and 12 states.
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
|
|
||||||
Compute the resonance frequencies
|
|
||||||
\begin{center}
|
|
||||||
\begin{tabular}{lrrrrrr}
|
|
||||||
& x & y & Rz & Dz & Rx & Ry\\
|
|
||||||
\hline
|
|
||||||
Simscape & 1.28 & 1.28 & 1.82 & 6.78 & 9.47 & 9.47\\
|
|
||||||
Experimental & 1.3 & 1.3 & 1.95 & 6.85 & 8.9 & 9.5\\
|
|
||||||
\end{tabular}
|
|
||||||
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
|
|
||||||
And the associated response of the optical table
|
|
||||||
The results are shown in Table \ref{tab:mode_shapes}.
|
|
||||||
The motion associated to the mode shapes are just indicative.
|
|
||||||
|
|
||||||
\begin{table}[htbp]
|
|
||||||
\centering
|
|
||||||
\begin{tabularx}{0.4\linewidth}{Xcccccc}
|
|
||||||
\toprule
|
|
||||||
\(\omega_0\) [Hz] & 8.2 & 8.2 & 8.2 & 5.8 & 5.6 & 5.6\\
|
|
||||||
\midrule
|
|
||||||
x & 0.0 & 0.0 & 0.0 & 0.0 & 0.1 & 0.5\\
|
|
||||||
y & 0.0 & 0.0 & 0.0 & 0.0 & 0.5 & 0.0\\
|
|
||||||
z & 0.0 & 0.0 & 0.0 & 1.0 & 0.0 & 0.0\\
|
|
||||||
Rx & 1.0 & 0.0 & 0.0 & 0.0 & 0.8 & 0.0\\
|
|
||||||
Ry & 0.0 & 1.0 & 0.0 & 0.0 & 0.2 & 0.9\\
|
|
||||||
Rz & 0.0 & 0.0 & 1.0 & 0.0 & 0.0 & 0.0\\
|
|
||||||
\bottomrule
|
|
||||||
\end{tabularx}
|
|
||||||
\caption{\label{tab:mode_shapes}Resonance frequency and approximation of the mode shapes}
|
|
||||||
|
|
||||||
\end{table}
|
\end{table}
|
||||||
|
|
||||||
|