Reworked the section about basic measurements

This commit is contained in:
Thomas Dehaeze 2021-06-17 10:32:56 +02:00
parent 3b4ba4a932
commit 990438df3b
11 changed files with 181 additions and 59 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 677 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 538 KiB

View File

Before

Width:  |  Height:  |  Size: 291 KiB

After

Width:  |  Height:  |  Size: 291 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB

BIN
figs/received_apa.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

BIN
figs/stroke_test_bench.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 621 KiB

View File

@ -55,27 +55,34 @@
In this document, a test-bench is used to characterize the struts of the nano-hexapod. In this document, a test-bench is used to characterize the struts of the nano-hexapod.
Each strut includes: Each strut includes (Figure [[fig:picture_strut_top_view]]):
- 2 flexible joints at each ends. This flexible joints have been characterized in a [[file:../test-bench-nass-flexible-joints/test-bench-flexible-joints.org][separate test bench]]. - 2 flexible joints at each ends.
- one Amplified Piezoelectric Actuator (APA300ML) (described in Section [[sec:model_apa]]) These flexible joints have been characterized in a [[file:../test-bench-nass-flexible-joints/test-bench-flexible-joints.org][separate test bench]].
- one encoder (Renishaw Vionci) that has been characterized in a [[file:../test-bench-vionic/test-bench-vionic.org][separate test bench]]. - 1 Amplified Piezoelectric Actuator (APA300ML) (described in Section [[sec:model_apa]]).
Two stacks are used as an actuator and one stack as a (force) sensor.
- 1 encoder (Renishaw Vionic) that has been characterized in a [[file:../test-bench-vionic/test-bench-vionic.org][separate test bench]].
The goal here, is to first characterize the APA300ML in terms of: #+name: fig:picture_strut_top_view
#+caption: One strut including two flexible joints, an amplified piezoelectric actuator and an encoder
#+attr_latex: :width 0.8\linewidth
[[file:figs/picture_strut_top_view.jpg]]
The first goal is to characterize the APA300ML in terms of:
- The, geometric features, electrical capacitance, stroke, hysteresis, spurious resonances. - The, geometric features, electrical capacitance, stroke, hysteresis, spurious resonances.
This is performed in Section [[sec:first_measurements]]. This is performed in Section [[sec:first_measurements]].
- The dynamics from the voltage applied on the actuator stacks to the induced displacement, and to the measured voltage by the force sensor stack. - The dynamics from the generated DAC voltage (going to the voltage amplifiers and then applied on the actuator stacks) to the induced displacement, and to the measured voltage by the force sensor stack.
Also the "actuator constant" and "sensor constant" are identified. Also the "actuator constant" and "sensor constant" are identified.
This is done in Section [[sec:dynamical_meas_apa]]. This is done in Section [[sec:dynamical_meas_apa]].
- Compare the measurements with the Simscape models (2DoF, Super-Element) in order to tuned/validate the models. - Compare the measurements with the Simscape models (2DoF, Super-Element) in order to tuned/validate the models.
This is explained in Section [[sec:simscape_bench_apa]]. This is explained in Section [[sec:simscape_bench_apa]].
Then the struts are mounted, and are fixed to the same measurement bench. Then the struts are mounted (procedure described [[file:../test-bench-strut-mounting/test-bench-strut-mounting.org][here]]), and are fixed to the same measurement bench.
Similarly, the goals are to: Similarly, the goals are to:
- Identify the dynamics from the generated DAC voltage (going to the PD200 voltage amplitifer and then to the actuator stacks) to (Section [[sec:dynamical_meas_struts]]): - Section [[sec:dynamical_meas_struts]]: Identify the dynamics from the generated DAC voltage to:
- the sensors stack generated voltage - the sensors stack generated voltage
- the measured displacement by the encoder - the measured displacement by the encoder
- the measured displacement by the interferometer - the measured displacement by the interferometer (representing encoders that would be fixed to the nano-hexapod's plates instead of the struts)
- Compare the measurements with the Simscape model of the struts and tune the models (Section [[sec:simscape_bench_struts]]) - Section [[sec:simscape_bench_struts]]: Compare the measurements with the Simscape model of the struts and tune the models
The final goal of the work presented in this document is to have an accurate Simscape model of the struts that can then be included in the Simscape model of the nano-hexapod. The final goal of the work presented in this document is to have an accurate Simscape model of the struts that can then be included in the Simscape model of the nano-hexapod.
@ -89,7 +96,7 @@ The Amplified Piezoelectric Actuator (APA) used is the APA300ML from Cedrat tech
#+attr_latex: :width 0.8\linewidth #+attr_latex: :width 0.8\linewidth
[[file:figs/apa300ML.png]] [[file:figs/apa300ML.png]]
Simscape models of the APA300ML are developed: Two simscape models of the APA300ML are developed:
- Section [[sec:apa_2dof_model]]: a simple 2 degrees of freedom (DoF) model - Section [[sec:apa_2dof_model]]: a simple 2 degrees of freedom (DoF) model
- Section [[sec:apa_flexible_model]]: a "flexible" model using a "super-element" extracted from a Finite Element Model of the APA - Section [[sec:apa_flexible_model]]: a "flexible" model using a "super-element" extracted from a Finite Element Model of the APA
@ -100,6 +107,32 @@ They are described in Section [[sec:apa_constants]].
** Two Degrees of Freedom Model ** Two Degrees of Freedom Model
<<sec:apa_2dof_model>> <<sec:apa_2dof_model>>
The presented model is based on cite:souleille18_concep_activ_mount_space_applic and represented in Figure [[fig:souleille18_model_piezo]].
#+name: fig:souleille18_model_piezo
#+caption: Picture of an APA100M from Cedrat Technologies. Simplified model of a one DoF payload mounted on such isolator
#+attr_latex: :width 0.6\linewidth
[[file:./figs/souleille18_model_piezo.png]]
The parameters are described in Table [[tab:souleille18_model_params]].
#+name: tab:souleille18_model_params
#+caption: Parameters used for the model of the APA 100M
#+attr_latex: :environment tabularx :width 0.6\linewidth :align lX
#+attr_latex: :center t :booktabs t :float t
| | *Meaning* |
|-------+----------------------------------------------------------------|
| $k_e$ | Stiffness used to adjust the pole of the isolator |
| $k_1$ | Stiffness of the metallic suspension when the stack is removed |
| $k_a$ | Stiffness of the actuator |
| $c_1$ | Added viscous damping |
The model is shown again in Figure [[fig:2dof_apa_model]].
As will be shown in the next section, such model can be quite accurate in modelling the axial behavior of the APA.
However, it does not model the flexibility of the APA in the other directions.
Therefore this model can be useful for quick simulations as it contains a very limited number of states, but when more complex dynamics of the APA is to be modelled, a flexible model will be used.
#+name: fig:2dof_apa_model #+name: fig:2dof_apa_model
#+attr_latex: :width 0.2\linewidth #+attr_latex: :width 0.2\linewidth
#+caption: Schematic of the 2DoF model for the Amplified Piezoelectric Actuator #+caption: Schematic of the 2DoF model for the Amplified Piezoelectric Actuator
@ -108,11 +141,19 @@ They are described in Section [[sec:apa_constants]].
** Flexible Model ** Flexible Model
<<sec:apa_flexible_model>> <<sec:apa_flexible_model>>
In order to model with high accuracy the behavior of the APA, a flexible model can be used.
The idea is to do a Finite element model of the structure, and to defined "remote points" as shown in Figure [[fig:apa300ml_ansys]].
Then, on the finite element software, a "super-element" can be extracted which consists of a mass matrix, a stiffness matrix, and the coordinates of the remote points.
#+name: fig:apa300ml_ansys #+name: fig:apa300ml_ansys
#+caption: Remote points for the APA300ML (Ansys) #+caption: Remote points for the APA300ML (Ansys)
#+attr_latex: :width 0.3\linewidth #+attr_latex: :width 0.3\linewidth
[[file:figs/mesh_APA.png]] [[file:figs/mesh_APA.png]]
This "super-element" can then be included in the Simscape model as shown in Figure [[fig:figure_name]].
The remotes points are defined as "frames" in Simscape, and the "super-element" can be connected with other Simscape elements (mechanical joints, masses, force actuators, etc..).
#+name: fig:figure_name #+name: fig:figure_name
#+caption: From a finite Element Model (Ansys, bottom left) is extract the mass and stiffness matrices that are then used on Simscape (right) #+caption: From a finite Element Model (Ansys, bottom left) is extract the mass and stiffness matrices that are then used on Simscape (right)
#+attr_latex: :width \linewidth #+attr_latex: :width \linewidth
@ -121,6 +162,10 @@ They are described in Section [[sec:apa_constants]].
** Actuator and Sensor constants ** Actuator and Sensor constants
<<sec:apa_constants>> <<sec:apa_constants>>
On Simscape, we want to model both the actuator stacks and the sensors stack.
We therefore need to link the electrical domain (voltages, charges) with the mechanical domain (forces, strain).
To do so, we use the "actuator constant" and the "sensor constant".
Consider a schematic of the Amplified Piezoelectric Actuator in Figure [[fig:apa_model_schematic]]. Consider a schematic of the Amplified Piezoelectric Actuator in Figure [[fig:apa_model_schematic]].
#+name: fig:apa_model_schematic #+name: fig:apa_model_schematic
@ -130,16 +175,14 @@ Consider a schematic of the Amplified Piezoelectric Actuator in Figure [[fig:apa
A voltage $V_a$ applied to the actuator stacks will induce an actuator force $F_a$: A voltage $V_a$ applied to the actuator stacks will induce an actuator force $F_a$:
\begin{equation} \begin{equation}
F_a = g_a \cdot V_a \boxed{F_a = g_a \cdot V_a}
\end{equation} \end{equation}
A change of length $dl$ of the sensor stack will induce a voltage $V_s$: A change of length $dl$ of the sensor stack will induce a voltage $V_s$:
\begin{equation} \begin{equation}
V_s = g_s \cdot dl \boxed{V_s = g_s \cdot dl}
\end{equation} \end{equation}
We wish here to experimental measure $g_a$ and $g_s$.
The block-diagram model of the piezoelectric actuator is then as shown in Figure [[fig:apa-model-simscape-schematic]]. The block-diagram model of the piezoelectric actuator is then as shown in Figure [[fig:apa-model-simscape-schematic]].
#+begin_src latex :file apa-model-simscape-schematic.pdf #+begin_src latex :file apa-model-simscape-schematic.pdf
@ -160,14 +203,17 @@ The block-diagram model of the piezoelectric actuator is then as shown in Figure
#+RESULTS: #+RESULTS:
[[file:figs/apa-model-simscape-schematic.png]] [[file:figs/apa-model-simscape-schematic.png]]
The constants $g_a$ and $g_s$ will be experimentally estimated.
* First Basic Measurements * First Basic Measurements
<<sec:first_measurements>> <<sec:first_measurements>>
** Introduction :ignore: ** Introduction :ignore:
- Section [[sec:geometrical_measurements]]: Before using the measurement bench to characterize the APA300ML, first simple measurements are performed:
- Section [[sec:electrical_measurements]]: - Section [[sec:geometrical_measurements]]: the geometric tolerances of the interface planes are checked
- Section [[sec:stroke_measurements]]: - Section [[sec:electrical_measurements]]: the capacitance of the stacks are measured
- Section [[sec:spurious_resonances]]: - Section [[sec:stroke_measurements]]: the stroke of the APA are measured
- Section [[sec:spurious_resonances]]: the "spurious" resonances of the APA are investigated
** Geometrical Measurements ** Geometrical Measurements
<<sec:geometrical_measurements>> <<sec:geometrical_measurements>>
@ -178,7 +224,7 @@ The received APA are shown in Figure [[fig:received_apa]].
#+name: fig:received_apa #+name: fig:received_apa
#+caption: Received APA #+caption: Received APA
#+attr_latex: :width 0.6\linewidth #+attr_latex: :width 0.6\linewidth
[[file:figs/IMG_20210224_143500.jpg]] [[file:figs/received_apa.jpg]]
*** Matlab Init :noexport:ignore: *** 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)
@ -209,12 +255,13 @@ The flatness corresponding to the two interface planes are measured as shown in
#+name: fig:flatness_meas_setup #+name: fig:flatness_meas_setup
#+caption: Measurement Setup #+caption: Measurement Setup
#+attr_latex: :width 0.6\linewidth #+attr_latex: :width 0.6\linewidth
[[file:figs/IMG_20210224_143809.jpg]] [[file:figs/flatness_meas_setup.jpg]]
*** Measurement Results *** Measurement Results
The height (Z) measurements at the 8 locations (4 points by plane) are defined below. The height (Z) measurements at the 8 locations (4 points by plane) are defined below.
#+begin_src matlab #+begin_src matlab
%% Measured height for all the APA at the 8 locations
apa1 = 1e-6*[0, -0.5 , 3.5 , 3.5 , 42 , 45.5, 52.5 , 46]; apa1 = 1e-6*[0, -0.5 , 3.5 , 3.5 , 42 , 45.5, 52.5 , 46];
apa2 = 1e-6*[0, -2.5 , -3 , 0 , -1.5 , 1 , -2 , -4]; apa2 = 1e-6*[0, -2.5 , -3 , 0 , -1.5 , 1 , -2 , -4];
apa3 = 1e-6*[0, -1.5 , 15 , 17.5 , 6.5 , 6.5 , 21 , 23]; apa3 = 1e-6*[0, -1.5 , 15 , 17.5 , 6.5 , 6.5 , 21 , 23];
@ -223,21 +270,31 @@ apa5 = 1e-6*[0, -12.5, 16.5 , 28.5 , -43 , -52 , -22.5, -13.5];
apa6 = 1e-6*[0, -8 , -2 , 5 , -57.5, -62 , -55.5, -52.5]; apa6 = 1e-6*[0, -8 , -2 , 5 , -57.5, -62 , -55.5, -52.5];
apa7 = 1e-6*[0, 19.5 , -8 , -29.5, 75 , 97.5, 70 , 48]; apa7 = 1e-6*[0, 19.5 , -8 , -29.5, 75 , 97.5, 70 , 48];
apa7b = 1e-6*[0, 9 , -18.5, -30 , 31 , 46.5, 16.5 , 7.5]; apa7b = 1e-6*[0, 9 , -18.5, -30 , 31 , 46.5, 16.5 , 7.5];
apa = {apa1, apa2, apa3, apa4, apa5, apa6, apa7b}; apa = {apa1, apa2, apa3, apa4, apa5, apa6, apa7b};
#+end_src #+end_src
The X/Y Positions of the 8 measurement points are defined below. The X/Y Positions of the 8 measurement points are defined below.
#+begin_src matlab #+begin_src matlab
%% X-Y positions of the measurements points
W = 20e-3; % Width [m] W = 20e-3; % Width [m]
L = 61e-3; % Length [m] L = 61e-3; % Length [m]
d = 1e-3; % Distance from border [m] d = 1e-3; % Distance from border [m]
l = 15.5e-3; % [m] l = 15.5e-3; % [m]
pos = [[-L/2 + d; W/2 - d], [-L/2 + l - d; W/2 - d], [-L/2 + l - d; -W/2 + d], [-L/2 + d; -W/2 + d], [L/2 - l + d; W/2 - d], [L/2 - d; W/2 - d], [L/2 - d; -W/2 + d], [L/2 - l + d; -W/2 + d]]; pos = [[-L/2 + d; W/2 - d],
[-L/2 + l - d; W/2 - d],
[-L/2 + l - d; -W/2 + d],
[-L/2 + d; -W/2 + d],
[L/2 - l + d; W/2 - d],
[L/2 - d; W/2 - d],
[L/2 - d; -W/2 + d],
[L/2 - l + d; -W/2 + d]];
#+end_src #+end_src
Finally, the flatness is estimated by fitting a plane through the 8 points using the =fminsearch= command. Finally, the flatness is estimated by fitting a plane through the 8 points using the =fminsearch= command.
#+begin_src matlab #+begin_src matlab
%% Using fminsearch to find the best fitting plane
apa_d = zeros(1, 7); apa_d = zeros(1, 7);
for i = 1:7 for i = 1:7
fun = @(x)max(abs(([pos; apa{i}]-[0;0;x(1)])'*([x(2:3);1]/norm([x(2:3);1])))); fun = @(x)max(abs(([pos; apa{i}]-[0;0;x(1)])'*([x(2:3);1]/norm([x(2:3);1]))));
@ -268,19 +325,33 @@ data2orgtable(1e6*apa_d', {'APA 1', 'APA 2', 'APA 3', 'APA 4', 'APA 5', 'APA 6',
| APA 6 | 7.1 | | APA 6 | 7.1 |
| APA 7 | 18.7 | | APA 7 | 18.7 |
#+begin_important
The measured flatness of the APA300ML interface planes are within the specifications.
#+end_important
** Electrical Measurements ** Electrical Measurements
<<sec:electrical_measurements>> <<sec:electrical_measurements>>
*** Measurement Setup
#+begin_note #+begin_note
The capacitance of the stacks is measure with the [[https://www.gwinstek.com/en-global/products/detail/LCR-800][LCR-800 Meter]] ([[file:doc/DS_LCR-800_Series_V2_E.pdf][doc]]) The capacitance of the stacks is measure with the [[https://www.gwinstek.com/en-global/products/detail/LCR-800][LCR-800 Meter]] ([[file:doc/DS_LCR-800_Series_V2_E.pdf][doc]]) shown in Figure [[fig:LCR_meter]].
The excitation frequency is set to be 1kHz.
#+end_note #+end_note
#+name: fig:LCR_meter #+name: fig:LCR_meter
#+caption: LCR Meter used for the measurements #+caption: LCR Meter used for the measurements
#+attr_latex: :width 0.9\linewidth #+attr_latex: :width 0.9\linewidth
[[file:figs/IMG_20210312_120337.jpg]] [[file:figs/LCR_meter.jpg]]
The excitation frequency is set to be 1kHz. *** Measured Capacitance
From the documentation of the APA300ML, the total capacitance of the three stacks should be between $18\mu F$ and $26\mu F$ with a nominal capacitance of $20\mu F$.
However, from the documentation of the stack themselves, it can be seen that the capacitance of a single stack should be $4.4\mu F$.
Clearly, the total capacitance of the APA300ML if more than just three times the capacitance of one stack.
#+begin_question
Could it be possible that the capacitance of the stacks increase that much when they are pre-stressed?
#+end_question
The measured capacitance of the stacks are summarized in Table [[tab:apa300ml_capacitance]].
#+name: tab:apa300ml_capacitance #+name: tab:apa300ml_capacitance
#+caption: Capacitance measured with the LCR meter. The excitation signal is a sinus at 1kHz #+caption: Capacitance measured with the LCR meter. The excitation signal is a sinus at 1kHz
@ -296,16 +367,18 @@ The excitation frequency is set to be 1kHz.
| APA 6 | 4.99 | 9.91 | | APA 6 | 4.99 | 9.91 |
| APA 7 | 4.85 | 9.85 | | APA 7 | 4.85 | 9.85 |
#+begin_important
From the measurements (Table [[tab:apa300ml_capacitance]]), the capacitance of one stack is found to be $\approx 5 \mu F$.
#+end_important
#+begin_warning #+begin_warning
There is clearly a problem with APA300ML number 3 There is clearly a problem with APA300ML number 3
#+end_warning
The APA number 3 has ben sent back to Cedrat, and a new APA300ML has been shipped back. The APA number 3 has ben sent back to Cedrat, and a new APA300ML has been shipped back.
#+end_warning
** Stroke measurement ** Stroke measurement
<<sec:stroke_measurements>> <<sec:stroke_measurements>>
*** Introduction :ignore: *** Introduction :ignore:
We here wish to estimate the stroke of the APA. We here wish to estimate the stroke of the APA.
To do so, one side of the APA is fixed, and a displacement probe is located on the other side as shown in Figure [[fig:stroke_test_bench]]. To do so, one side of the APA is fixed, and a displacement probe is located on the other side as shown in Figure [[fig:stroke_test_bench]].
@ -322,7 +395,9 @@ Here are the documentation of the equipment used for this test bench:
#+name: fig:stroke_test_bench #+name: fig:stroke_test_bench
#+caption: Bench to measured the APA stroke #+caption: Bench to measured the APA stroke
#+attr_latex: :width 0.9\linewidth #+attr_latex: :width 0.9\linewidth
[[file:figs/CE0EF55E-07B7-461B-8CDB-98590F68D15B.jpeg]] [[file:figs/stroke_test_bench.jpg]]
From the documentation, the nominal stroke of the APA300ML is $304\,\mu m$.
*** Matlab Init :noexport:ignore: *** 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)
@ -351,6 +426,7 @@ addpath('./mat/');
Let's first look at the relation between the voltage applied to *one* stack to the displacement of the APA as measured by the displacement probe. Let's first look at the relation between the voltage applied to *one* stack to the displacement of the APA as measured by the displacement probe.
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Load the measurements
apa300ml_1s = {}; apa300ml_1s = {};
for i = 1:7 for i = 1:7
apa300ml_1s(i) = {load(['mat/stroke_apa_1stacks_' num2str(i) '.mat'], 't', 'V', 'd')}; apa300ml_1s(i) = {load(['mat/stroke_apa_1stacks_' num2str(i) '.mat'], 't', 'V', 'd')};
@ -358,6 +434,7 @@ end
#+end_src #+end_src
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Only take the data between t=2 and t=10 and reset the measured displacement at t=2
for i = 1:7 for i = 1:7
t = apa300ml_1s{i}.t; t = apa300ml_1s{i}.t;
apa300ml_1s{i}.d = apa300ml_1s{i}.d - mean(apa300ml_1s{i}.d(t > 1.9 & t < 2.0)); apa300ml_1s{i}.d = apa300ml_1s{i}.d - mean(apa300ml_1s{i}.d(t > 1.9 & t < 2.0));
@ -370,6 +447,7 @@ end
The applied voltage is shown in Figure [[fig:apa_stroke_voltage_time]]. The applied voltage is shown in Figure [[fig:apa_stroke_voltage_time]].
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Applied voltage as a function of time
figure; figure;
plot(apa300ml_1s{1}.t, 20*apa300ml_1s{1}.V) plot(apa300ml_1s{1}.t, 20*apa300ml_1s{1}.V)
xlabel('Time [s]'); ylabel('Voltage [V]'); xlabel('Time [s]'); ylabel('Voltage [V]');
@ -385,10 +463,11 @@ exportFig('figs/apa_stroke_voltage_time.pdf', 'width', 'wide', 'height', 'normal
#+RESULTS: #+RESULTS:
[[file:figs/apa_stroke_voltage_time.png]] [[file:figs/apa_stroke_voltage_time.png]]
The obtained displacement is shown in Figure [[fig:apa_stroke_time_1s]]. The obtained displacements for all the APA are shown in Figure [[fig:apa_stroke_time_1s]].
The displacement is set to zero at initial time when the voltage applied is -20V. The displacement is set to zero at initial time when the voltage applied is -20V.
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Measured motion for all the APA300ML
figure; figure;
hold on; hold on;
for i = 1:7 for i = 1:7
@ -404,7 +483,7 @@ exportFig('figs/apa_stroke_time_1s.pdf', 'width', 'wide', 'height', 'normal');
#+end_src #+end_src
#+name: fig:apa_stroke_time_1s #+name: fig:apa_stroke_time_1s
#+caption: Displacement as a function of time for all the APA300ML #+caption: Displacement as a function of time for all the APA300ML (only one stack is used as an actuator)
#+RESULTS: #+RESULTS:
[[file:figs/apa_stroke_time_1s.png]] [[file:figs/apa_stroke_time_1s.png]]
@ -413,6 +492,7 @@ We can clearly see that there is a problem with the APA 3.
Also, there is a large hysteresis. Also, there is a large hysteresis.
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Displacement as a function of the applied voltage
figure; figure;
hold on; hold on;
for i = 1:7 for i = 1:7
@ -429,12 +509,12 @@ exportFig('figs/apa_d_vs_V_1s.pdf', 'width', 'wide', 'height', 'tall');
#+end_src #+end_src
#+name: fig:apa_d_vs_V_1s #+name: fig:apa_d_vs_V_1s
#+caption: Displacement as a function of the applied voltage #+caption: Displacement as a function of the applied voltage (on only one stack)
#+RESULTS: #+RESULTS:
[[file:figs/apa_d_vs_V_1s.png]] [[file:figs/apa_d_vs_V_1s.png]]
#+begin_important #+begin_important
We can clearly see from Figure [[fig:apa_d_vs_V_1s]] that there is a problem with the APA number 3. We can clearly confirm from Figure [[fig:apa_d_vs_V_1s]] that there is a problem with the APA number 3.
#+end_important #+end_important
*** Voltage applied on two stacks *** Voltage applied on two stacks
@ -442,6 +522,7 @@ We can clearly see from Figure [[fig:apa_d_vs_V_1s]] that there is a problem wit
Now look at the relation between the voltage applied to the *two* other stacks to the displacement of the APA as measured by the displacement probe. Now look at the relation between the voltage applied to the *two* other stacks to the displacement of the APA as measured by the displacement probe.
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Load the measurements
apa300ml_2s = {}; apa300ml_2s = {};
for i = 1:7 for i = 1:7
apa300ml_2s(i) = {load(['mat/stroke_apa_2stacks_' num2str(i) '.mat'], 't', 'V', 'd')}; apa300ml_2s(i) = {load(['mat/stroke_apa_2stacks_' num2str(i) '.mat'], 't', 'V', 'd')};
@ -449,6 +530,7 @@ end
#+end_src #+end_src
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Only take the data between t=2 and t=10 and reset the measured displacement at t=2
for i = 1:7 for i = 1:7
t = apa300ml_2s{i}.t; t = apa300ml_2s{i}.t;
apa300ml_2s{i}.d = apa300ml_2s{i}.d - mean(apa300ml_2s{i}.d(t > 1.9 & t < 2.0)); apa300ml_2s{i}.d = apa300ml_2s{i}.d - mean(apa300ml_2s{i}.d(t > 1.9 & t < 2.0));
@ -460,8 +542,8 @@ end
The obtained displacement is shown in Figure [[fig:apa_stroke_time_2s]]. The obtained displacement is shown in Figure [[fig:apa_stroke_time_2s]].
The displacement is set to zero at initial time when the voltage applied is -20V. The displacement is set to zero at initial time when the voltage applied is -20V.
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Measured motion for all the APA300ML
figure; figure;
hold on; hold on;
for i = 1:7 for i = 1:7
@ -478,15 +560,13 @@ exportFig('figs/apa_stroke_time_2s.pdf', 'width', 'wide', 'height', 'normal');
#+end_src #+end_src
#+name: fig:apa_stroke_time_2s #+name: fig:apa_stroke_time_2s
#+caption: Displacement as a function of time for all the APA300ML #+caption: Displacement as a function of time for all the APA300ML (two stacks are used as actuators)
#+RESULTS: #+RESULTS:
[[file:figs/apa_stroke_time_2s.png]] [[file:figs/apa_stroke_time_2s.png]]
Finally, the displacement is shown as a function of the applied voltage in Figure [[fig:apa_d_vs_V_2s]]. Finally, the displacement is shown as a function of the applied voltage in Figure [[fig:apa_d_vs_V_2s]].
We can clearly see that there is a problem with the APA 3.
Also, there is a large hysteresis.
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Displacement as a function of the applied voltage
figure; figure;
hold on; hold on;
for i = 1:7 for i = 1:7
@ -503,7 +583,7 @@ exportFig('figs/apa_d_vs_V_2s.pdf', 'width', 'wide', 'height', 'tall');
#+end_src #+end_src
#+name: fig:apa_d_vs_V_2s #+name: fig:apa_d_vs_V_2s
#+caption: Displacement as a function of the applied voltage #+caption: Displacement as a function of the applied voltage on two stacks
#+RESULTS: #+RESULTS:
[[file:figs/apa_d_vs_V_2s.png]] [[file:figs/apa_d_vs_V_2s.png]]
@ -512,6 +592,7 @@ exportFig('figs/apa_d_vs_V_2s.pdf', 'width', 'wide', 'height', 'tall');
Finally, we can combine the two measurements to estimate the relation between the displacement and the voltage applied to the *three* stacks (Figure [[fig:apa_d_vs_V_3s]]). Finally, we can combine the two measurements to estimate the relation between the displacement and the voltage applied to the *three* stacks (Figure [[fig:apa_d_vs_V_3s]]).
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Motion induced by applying a voltage to the three stack is the sum to the previous two measured displacements
apa300ml_3s = {}; apa300ml_3s = {};
for i = 1:7 for i = 1:7
apa300ml_3s(i) = apa300ml_1s(i); apa300ml_3s(i) = apa300ml_1s(i);
@ -520,6 +601,7 @@ end
#+end_src #+end_src
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Displacement as a function of the applied voltage
figure; figure;
hold on; hold on;
for i = 1:7 for i = 1:7
@ -536,13 +618,14 @@ exportFig('figs/apa_d_vs_V_3s.pdf', 'width', 'wide', 'height', 'tall');
#+end_src #+end_src
#+name: fig:apa_d_vs_V_3s #+name: fig:apa_d_vs_V_3s
#+caption: Displacement as a function of the applied voltage #+caption: Displacement as a function of the applied voltage on all three stacks
#+RESULTS: #+RESULTS:
[[file:figs/apa_d_vs_V_3s.png]] [[file:figs/apa_d_vs_V_3s.png]]
The obtained maximum stroke for all the APA are summarized in Table [[tab:apa_measured_stroke]]. The obtained maximum stroke for all the APA are summarized in Table [[tab:apa_measured_stroke]].
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Estimate the maximum stroke
apa300ml_stroke = zeros(1, 7); apa300ml_stroke = zeros(1, 7);
for i = 1:7 for i = 1:7
apa300ml_stroke(i) = max(apa300ml_3s{i}.d) - min(apa300ml_3s{i}.d); apa300ml_stroke(i) = max(apa300ml_3s{i}.d) - min(apa300ml_3s{i}.d);
@ -568,12 +651,19 @@ data2orgtable(1e6*apa300ml_stroke', {'APA 1', 'APA 2', 'APA 3', 'APA 4', 'APA 5'
| APA 6 | 363.9 | | APA 6 | 363.9 |
| APA 7 | 358.4 | | APA 7 | 358.4 |
*** Conclusion
#+begin_important
The except from APA 3 that has a problem, all the APA are similar when it comes to stroke and hysteresis.
Also, the obtained stroke is more than specified in the documentation.
Therefore, only two stacks can be used as an actuator.
#+end_important
** Spurious resonances ** Spurious resonances
<<sec:spurious_resonances>> <<sec:spurious_resonances>>
*** Introduction *** Introduction
Three main resonances are foreseen to be problematic for the control of the APA300ML (Figure [[fig:apa_mode_shapes]]): From a Finite Element Model of the struts, it have been found that three main resonances are foreseen to be problematic for the control of the APA300ML (Figure [[fig:apa_mode_shapes]]):
- Mode in X-bending at 189Hz - Mode in X-bending at 200Hz
- Mode in Y-bending at 285Hz - Mode in Y-bending at 285Hz
- Mode in Z-torsion at 400Hz - Mode in Z-torsion at 400Hz
@ -608,13 +698,14 @@ addpath('matlab/mat/');
addpath('mat/'); addpath('mat/');
#+end_src #+end_src
*** Setup *** Measurement Setup
The measurement setup is shown in Figure [[fig:measurement_setup_torsion]]. The measurement setup is shown in Figure [[fig:measurement_setup_torsion]].
A Laser vibrometer is measuring the difference of motion of two points. A Laser vibrometer is measuring the difference of motion between two points.
The APA is excited with an instrumented hammer and the transfer function from the hammer to the measured rotation is computed. The APA is excited with an instrumented hammer and the transfer function from the hammer to the measured rotation is computed.
#+begin_note #+begin_note
The instrumentation used are:
- Laser Doppler Vibrometer Polytec OFV512 - Laser Doppler Vibrometer Polytec OFV512
- Instrumented hammer - Instrumented hammer
#+end_note #+end_note
@ -624,9 +715,9 @@ The APA is excited with an instrumented hammer and the transfer function from th
#+attr_latex: :width 0.7\linewidth #+attr_latex: :width 0.7\linewidth
[[file:figs/measurement_setup_torsion.jpg]] [[file:figs/measurement_setup_torsion.jpg]]
*** Bending - X *** X-Bending Mode
The setup to measure the X-bending motion is shown in Figure [[fig:measurement_setup_X_bending]]. The vibrometer is setup to measure the X-bending motion is shown in Figure [[fig:measurement_setup_X_bending]].
The APA is excited with an instrumented hammer having a solid metallic tip. The APA is excited with an instrumented hammer having a solid metallic tip.
The impact point is on the back-side of the APA aligned with the top measurement point. The impact point is on the back-side of the APA aligned with the top measurement point.
@ -637,17 +728,20 @@ The impact point is on the back-side of the APA aligned with the top measurement
The data is loaded. The data is loaded.
#+begin_src matlab #+begin_src matlab
%% Load Data
bending_X = load('apa300ml_bending_X_top.mat'); bending_X = load('apa300ml_bending_X_top.mat');
#+end_src #+end_src
The config for =tfestimate= is performed: The configuration (Sampling time and windows) for =tfestimate= is done:
#+begin_src matlab #+begin_src matlab
Ts = bending_X.Track1_X_Resolution; % Sampling frequency [Hz] %% Spectral Analysis setup
Ts = bending_X.Track1_X_Resolution; % Sampling Time [s]
win = hann(ceil(1/Ts)); win = hann(ceil(1/Ts));
#+end_src #+end_src
The transfer function from the input force to the output "rotation" (difference between the two measured distances). The transfer function from the input force to the output "rotation" (difference between the two measured distances).
#+begin_src matlab #+begin_src matlab
%% Compute the transfer function from applied force to measured rotation
[G_bending_X, f] = tfestimate(bending_X.Track1, bending_X.Track2, win, [], [], 1/Ts); [G_bending_X, f] = tfestimate(bending_X.Track1, bending_X.Track2, win, [], [], 1/Ts);
#+end_src #+end_src
@ -655,6 +749,7 @@ The result is shown in Figure [[fig:apa300ml_meas_freq_bending_x]].
The can clearly observe a nice peak at 280Hz, and then peaks at the odd "harmonics" (third "harmonic" at 840Hz, and fifth "harmonic" at 1400Hz). The can clearly observe a nice peak at 280Hz, and then peaks at the odd "harmonics" (third "harmonic" at 840Hz, and fifth "harmonic" at 1400Hz).
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Plot the transfer function
figure; figure;
hold on; hold on;
plot(f, abs(G_bending_X), 'k-'); plot(f, abs(G_bending_X), 'k-');
@ -676,7 +771,12 @@ exportFig('figs/apa300ml_meas_freq_bending_x.pdf', 'width', 'wide', 'height', 'n
#+RESULTS: #+RESULTS:
[[file:figs/apa300ml_meas_freq_bending_x.png]] [[file:figs/apa300ml_meas_freq_bending_x.png]]
*** Bending - Y Then the APA is in the "free-free" condition, this bending mode is foreseen to be at 200Hz (Figure [[fig:apa_mode_shapes]]).
We are here in the "fixed-free" condition.
If we consider that we therefore double the stiffness associated with this mode, we should obtain a resonance a factor $\sqrt{2}$ higher than 200Hz which is indeed 280Hz.
Not sure this reasoning is correct though.
*** Y-Bending Mode
The setup to measure the Y-bending is shown in Figure [[fig:measurement_setup_Y_bending]]. The setup to measure the Y-bending is shown in Figure [[fig:measurement_setup_Y_bending]].
@ -689,7 +789,10 @@ The impact point of the instrumented hammer is located on the back surface of th
The data is loaded, and the transfer function from the force to the measured rotation is computed. The data is loaded, and the transfer function from the force to the measured rotation is computed.
#+begin_src matlab #+begin_src matlab
%% Load Data
bending_Y = load('apa300ml_bending_Y_top.mat'); bending_Y = load('apa300ml_bending_Y_top.mat');
%% Compute the transfer function
[G_bending_Y, ~] = tfestimate(bending_Y.Track1, bending_Y.Track2, win, [], [], 1/Ts); [G_bending_Y, ~] = tfestimate(bending_Y.Track1, bending_Y.Track2, win, [], [], 1/Ts);
#+end_src #+end_src
@ -697,6 +800,7 @@ The results are shown in Figure [[fig:apa300ml_meas_freq_bending_y]].
The main resonance is at 412Hz, and we also see the third "harmonic" at 1220Hz. The main resonance is at 412Hz, and we also see the third "harmonic" at 1220Hz.
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Plot the transfer function
figure; figure;
hold on; hold on;
plot(f, abs(G_bending_Y), 'k-'); plot(f, abs(G_bending_Y), 'k-');
@ -717,7 +821,10 @@ exportFig('figs/apa300ml_meas_freq_bending_y.pdf', 'width', 'wide', 'height', 'n
#+RESULTS: #+RESULTS:
[[file:figs/apa300ml_meas_freq_bending_y.png]] [[file:figs/apa300ml_meas_freq_bending_y.png]]
*** Torsion - Z We can apply the same reasoning as in the previous section and estimate the mode to be a factor $\sqrt{2}$ higher than the mode estimated in the "free-free" condition.
We would obtain a mode at 403Hz which is very close to the one estimated here.
*** Z-Torsion Mode
Finally, we measure the Z-torsion resonance as shown in Figure [[fig:measurement_setup_torsion_bis]]. Finally, we measure the Z-torsion resonance as shown in Figure [[fig:measurement_setup_torsion_bis]].
@ -730,15 +837,20 @@ The excitation is shown on the other side of the APA, on the side to excite the
The data is loaded, and the transfer function computed. The data is loaded, and the transfer function computed.
#+begin_src matlab #+begin_src matlab
%% Load Data
torsion = load('apa300ml_torsion_left.mat'); torsion = load('apa300ml_torsion_left.mat');
%% Compute transfer function
[G_torsion, ~] = tfestimate(torsion.Track1, torsion.Track2, win, [], [], 1/Ts); [G_torsion, ~] = tfestimate(torsion.Track1, torsion.Track2, win, [], [], 1/Ts);
#+end_src #+end_src
The results are shown in Figure [[fig:apa300ml_meas_freq_torsion_z]]. The results are shown in Figure [[fig:apa300ml_meas_freq_torsion_z]].
We observe a first peak at 267Hz, which corresponds to the X-bending mode that was measured at 280Hz. We observe a first peak at 267Hz, which corresponds to the X-bending mode that was measured at 280Hz.
And then a second peak at 415Hz, which corresponds to the X-bending mode that was measured at 412Hz. And then a second peak at 415Hz, which corresponds to the X-bending mode that was measured at 412Hz.
The mode in pure torsion is probably at higher frequency (peak around 1kHz?). A third mode at 800Hz could correspond to this torsion mode.
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Plot the transfer function
figure; figure;
hold on; hold on;
plot(f, abs(G_torsion), 'k-'); plot(f, abs(G_torsion), 'k-');
@ -762,7 +874,10 @@ exportFig('figs/apa300ml_meas_freq_torsion_z.pdf', 'width', 'wide', 'height', 'n
In order to verify that, the APA is excited on the top part such that the torsion mode should not be excited. In order to verify that, the APA is excited on the top part such that the torsion mode should not be excited.
#+begin_src matlab #+begin_src matlab
%% Load data
torsion = load('apa300ml_torsion_top.mat'); torsion = load('apa300ml_torsion_top.mat');
%% Compute transfer function
[G_torsion_top, ~] = tfestimate(torsion.Track1, torsion.Track2, win, [], [], 1/Ts); [G_torsion_top, ~] = tfestimate(torsion.Track1, torsion.Track2, win, [], [], 1/Ts);
#+end_src #+end_src
@ -770,6 +885,7 @@ The two FRF are compared in Figure [[fig:apa300ml_meas_freq_torsion_z_comp]].
It is clear that the first two modes does not correspond to the torsional mode. It is clear that the first two modes does not correspond to the torsional mode.
Maybe the resonance at 800Hz, or even higher resonances. It is difficult to conclude here. Maybe the resonance at 800Hz, or even higher resonances. It is difficult to conclude here.
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Plot the two transfer functions
figure; figure;
hold on; hold on;
plot(f, abs(G_torsion), 'k-', 'DisplayName', 'Left excitation'); plot(f, abs(G_torsion), 'k-', 'DisplayName', 'Left excitation');
@ -827,13 +943,13 @@ It is however quite interesting that there is a factor $\approx \sqrt{2}$ betwee
#+name: tab:apa300ml_measured_modes_freq #+name: tab:apa300ml_measured_modes_freq
#+caption: Measured frequency of the modes #+caption: Measured frequency of the modes
#+attr_latex: :environment tabularx :width 0.6\linewidth :align ccc #+attr_latex: :environment tabularx :width 0.7\linewidth :align ccc
#+attr_latex: :center t :booktabs t :float t #+attr_latex: :center t :booktabs t :float t
| Mode | Strut Mode | Measured Frequency | | *Mode* | *FEM - Strut mode* | *Measured Frequency* |
|-----------+------------+--------------------| |-----------+--------------------+----------------------|
| X-Bending | 189Hz | 280Hz | | X-Bending | 189Hz | 280Hz |
| Y-Bending | 285Hz | 410Hz | | Y-Bending | 285Hz | 410Hz |
| Z-Torsion | 400Hz | ? | | Z-Torsion | 400Hz | 800Hz? |
* Dynamical measurements - APA * Dynamical measurements - APA
<<sec:dynamical_meas_apa>> <<sec:dynamical_meas_apa>>
@ -4461,6 +4577,12 @@ From Figure [[fig:comp_enc_frf_align_perfect]], it is clear that:
2. The measured FRF have different shapes 2. The measured FRF have different shapes
#+end_important #+end_important
#+begin_question
Why is the flexible mode of the strut at 200Hz is not seen in the model in Figure [[fig:comp_enc_frf_align_perfect]]?
Probably because the presence of this mode is not due because of the "unbalanced" mass of the encoder, but rather because of the misalignment of the APA with respect to the two flexible joints.
This will be verified in the next sections.
#+end_question
#+begin_src matlab :exports none #+begin_src matlab :exports none
freqs = 5*logspace(0, 3, 1000); freqs = 5*logspace(0, 3, 1000);
@ -4924,7 +5046,7 @@ This method gives nice match between the measured FRF and the one extracted from
Using this method, an axial stiffness of $70 N/\mu m$ is found to give good results (and is reasonable based on the finite element models). Using this method, an axial stiffness of $70 N/\mu m$ is found to give good results (and is reasonable based on the finite element models).
#+end_important #+end_important
*** Effect of bending damping *** TODO Effect of bending damping
* TODO Compare with the FEM/Simscape Model :noexport: * TODO Compare with the FEM/Simscape Model :noexport:
:PROPERTIES: :PROPERTIES: