diff --git a/data/APA300ML/APA300ML_test_bench.slx b/data/APA300ML/APA300ML_test_bench.slx index ab1daa2..7ac65b9 100644 Binary files a/data/APA300ML/APA300ML_test_bench.slx and b/data/APA300ML/APA300ML_test_bench.slx differ diff --git a/figs/apa300ml_ansys.jpg b/figs/apa300ml_ansys.jpg new file mode 100755 index 0000000..afeb594 Binary files /dev/null and b/figs/apa300ml_ansys.jpg differ diff --git a/figs/apa300ml_dvf_plant.pdf b/figs/apa300ml_dvf_plant.pdf new file mode 100644 index 0000000..3ccb0ac Binary files /dev/null and b/figs/apa300ml_dvf_plant.pdf differ diff --git a/figs/apa300ml_dvf_plant.png b/figs/apa300ml_dvf_plant.png new file mode 100644 index 0000000..6a013a3 Binary files /dev/null and b/figs/apa300ml_dvf_plant.png differ diff --git a/figs/apa300ml_dvf_root_locus.pdf b/figs/apa300ml_dvf_root_locus.pdf new file mode 100644 index 0000000..7f59327 Binary files /dev/null and b/figs/apa300ml_dvf_root_locus.pdf differ diff --git a/figs/apa300ml_dvf_root_locus.png b/figs/apa300ml_dvf_root_locus.png new file mode 100644 index 0000000..2cd3d7c Binary files /dev/null and b/figs/apa300ml_dvf_root_locus.png differ diff --git a/figs/apa300ml_iff_plant.pdf b/figs/apa300ml_iff_plant.pdf new file mode 100644 index 0000000..2f6eafa Binary files /dev/null and b/figs/apa300ml_iff_plant.pdf differ diff --git a/figs/apa300ml_iff_plant.png b/figs/apa300ml_iff_plant.png new file mode 100644 index 0000000..906a13b Binary files /dev/null and b/figs/apa300ml_iff_plant.png differ diff --git a/figs/apa300ml_iff_root_locus.pdf b/figs/apa300ml_iff_root_locus.pdf new file mode 100644 index 0000000..b9a2d24 Binary files /dev/null and b/figs/apa300ml_iff_root_locus.pdf differ diff --git a/figs/apa300ml_iff_root_locus.png b/figs/apa300ml_iff_root_locus.png new file mode 100644 index 0000000..8bcb9f3 Binary files /dev/null and b/figs/apa300ml_iff_root_locus.png differ diff --git a/figs/apa300ml_plant_dynamics.pdf b/figs/apa300ml_plant_dynamics.pdf new file mode 100644 index 0000000..8993e0c Binary files /dev/null and b/figs/apa300ml_plant_dynamics.pdf differ diff --git a/figs/apa300ml_plant_dynamics.png b/figs/apa300ml_plant_dynamics.png new file mode 100644 index 0000000..5712c5f Binary files /dev/null and b/figs/apa300ml_plant_dynamics.png differ diff --git a/figs/apa300ml_resonance.pdf b/figs/apa300ml_resonance.pdf new file mode 100644 index 0000000..6a97872 Binary files /dev/null and b/figs/apa300ml_resonance.pdf differ diff --git a/figs/apa300ml_resonance.png b/figs/apa300ml_resonance.png new file mode 100644 index 0000000..f4b8747 Binary files /dev/null and b/figs/apa300ml_resonance.png differ diff --git a/index.html b/index.html index 39840bf..539057a 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- +The idea here is to: @@ -71,8 +101,8 @@ The idea here is to:
We first extract the stiffness and mass matrices. @@ -91,6 +121,21 @@ Then, we extract the coordinates of the interface nodes.
save('./mat/piezo_amplified_3d.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K'); ++
load('./mat/piezo_amplified_3d.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K'); ++
Figure 1: Interface Nodes for the Amplified Piezo Actuator
@@ -581,9 +626,71 @@ UsingK
, M
and int_xyz
, we can use the +Parameters for the APA95ML: +
+ +d33 = 3e-10; % Strain constant [m/V] +n = 80; % Number of layers per stack +eT = 1.6e-7; % Permittivity under constant stress [F/m] +sD = 2e-11; % Elastic compliance under constant electric displacement [m2/N] +ka = 235e6; % Stack stiffness [N/m] +C = 5e-6; % Stack capactiance [F] ++
na = 2; % Number of stacks used as actuator +ns = 1; % Number of stacks used as force sensor ++
+The ratio of the developed force to applied voltage is \(d_{33} n k_a\) in [N/V]. +We denote this constant by \(g_a\) and: +\[ F_a = g_a V_a, \quad g_a = d_{33} n k_a \] +
+d33*(na*n)*(ka/(na + ns)) % [N/V] ++
+3.76 ++ + +
+From (Fleming and Leang 2014) (page 123), the relation between relative displacement and generated voltage is: +\[ V_s = \frac{d_{33}}{\epsilon^T s^D n} \Delta h \] +where: +
+1e-6*d33/(eT*sD*ns*n) % [V/um] ++
+1.1719 ++
The flexible element is imported using the Reduced Order Flexible Solid
simscape block.
m = 0; +m = 0.01;
m = 10; +m = 5;
-The two identified dynamics are compared in Figure 2. +The two identified dynamics are compared in Figure 2.
%% Name of the Simulink File @@ -645,12 +752,12 @@ clear io; io_i = 1; io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1; io(io_i) = linio([mdl, '/y'], 1, 'openoutput'); io_i = io_i + 1; -Ghm = linearize(mdl, io); +Ghm = -linearize(mdl, io);
Figure 2: Dynamics from \(F\) to \(d\) without a payload and with a 10kg payload
@@ -658,9 +765,9 @@ Ghm = linearize(mdl, io);Let’s import the results from an Harmonic response analysis in Ansys.
@@ -671,11 +778,11 @@ Gresp10 = readtable('FEA_HarmResponse_10kg.txt');-The obtained dynamics from the Simscape model and from the Ansys analysis are compare in Figure 3. +The obtained dynamics from the Simscape model and from the Ansys analysis are compare in Figure 3.
-
Figure 3: Comparison of the obtained dynamics using Simscape with the harmonic response analysis using Ansys
@@ -683,15 +790,15 @@ The obtained dynamics from the Simscape model and from the Ansys analysis are coThe dynamics is identified from internal forces applied between nodes 3 and 11 to the relative displacement of nodes 11 and 13.
-The obtained dynamics is shown in Figure 4. +The obtained dynamics is shown in Figure 4.
Figure 4: Dynamics from \(F\) to \(F_m\) for \(m=0\) and \(m = 10kg\)
@@ -739,9 +846,9 @@ Gfm = linearize(mdl, io);m = 0;@@ -789,9 +896,9 @@ Gdm = linearize(mdl, io);
m = 0;@@ -829,19 +936,1383 @@ Gfdm = linearize(mdl, io);
m = 5; +
+And the dynamics is identified. +
+ ++The two identified dynamics are compared in Figure 2. +
+%% Name of the Simulink File +mdl = 'piezo_amplified_3d'; + +%% Input/Output definition +clear io; io_i = 1; +io(io_i) = linio([mdl, '/V'], 1, 'openinput'); io_i = io_i + 1; +io(io_i) = linio([mdl, '/y'], 1, 'openoutput'); io_i = io_i + 1; + +G = -linearize(mdl, io); +
save('../test-bench-apa/mat/fem_model_5kg.mat', 'G') ++
m = 5; ++
%% Name of the Simulink File +mdl = 'piezo_amplified_3d'; + +%% Input/Output definition +clear io; io_i = 1; +io(io_i) = linio([mdl, '/Va'], 1, 'openinput'); io_i = io_i + 1; +io(io_i) = linio([mdl, '/Vs'], 1, 'openoutput'); io_i = io_i + 1; + +G = -linearize(mdl, io); ++
+
+Figure 5: Ansys FEM of the APA300ML
+We first extract the stiffness and mass matrices.
K = extractMatrix('mat_K-48modes-7MDoF.matrix'); +M = extractMatrix('mat_M-48modes-7MDoF.matrix'); ++
K = extractMatrix('mat_K-80modes-7MDoF.matrix'); +M = extractMatrix('mat_M-80modes-7MDoF.matrix'); ++
+Then, we extract the coordinates of the interface nodes. +
+[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('Nodes_MDoF_NLIST_MLIST.txt'); ++
save('./mat/APA300ML.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K'); ++
load('./mat/APA300ML.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K'); ++
Total number of Nodes | +7 | +
Number of interface Nodes | +7 | +
Number of Modes | +6 | +
Size of M and K matrices | +48 | +
Node i | +Node Number | +x [m] | +y [m] | +z [m] | +
---|---|---|---|---|
1.0 | +53917.0 | +0.0 | +-0.015 | +0.0 | +
2.0 | +53918.0 | +0.0 | +0.015 | +0.0 | +
3.0 | +53919.0 | +-0.0325 | +0.0 | +0.0 | +
4.0 | +53920.0 | +-0.0125 | +0.0 | +0.0 | +
5.0 | +53921.0 | +-0.0075 | +0.0 | +0.0 | +
6.0 | +53922.0 | +0.0125 | +0.0 | +0.0 | +
7.0 | +53923.0 | +0.0325 | +0.0 | +0.0 | +
200000000.0 | +30000.0 | +50000.0 | +200.0 | +-100.0 | +-300000.0 | +10000000.0 | +-6000.0 | +20000.0 | +-60.0 | +
30000.0 | +7000000.0 | +10000.0 | +30.0 | +-30.0 | +-70.0 | +7000.0 | +-500000.0 | +3000.0 | +-10.0 | +
50000.0 | +10000.0 | +30000000.0 | +200000.0 | +-200.0 | +-100.0 | +20000.0 | +-2000.0 | +2000000.0 | +-9000.0 | +
200.0 | +30.0 | +200000.0 | +1000.0 | +-0.8 | +-0.4 | +50.0 | +-6 | +9000.0 | +-30.0 | +
-100.0 | +-30.0 | +-200.0 | +-0.8 | +10000.0 | +0.2 | +-40.0 | +10.0 | +20.0 | +-0.05 | +
-300000.0 | +-70.0 | +-100.0 | +-0.4 | +0.2 | +900.0 | +-30000.0 | +10.0 | +-40.0 | +0.1 | +
10000000.0 | +7000.0 | +20000.0 | +50.0 | +-40.0 | +-30000.0 | +200000000.0 | +-50000.0 | +30000.0 | +-50.0 | +
-6000.0 | +-500000.0 | +-2000.0 | +-6 | +10.0 | +10.0 | +-50000.0 | +7000000.0 | +-4000.0 | +8 | +
20000.0 | +3000.0 | +2000000.0 | +9000.0 | +20.0 | +-40.0 | +30000.0 | +-4000.0 | +30000000.0 | +-200000.0 | +
-60.0 | +-10.0 | +-9000.0 | +-30.0 | +-0.05 | +0.1 | +-50.0 | +8 | +-200000.0 | +1000.0 | +
0.01 | +7e-06 | +-5e-06 | +-6e-08 | +3e-09 | +-5e-05 | +-0.0005 | +-2e-07 | +-3e-06 | +1e-08 | +
7e-06 | +0.009 | +4e-07 | +6e-09 | +-4e-09 | +-3e-08 | +-2e-07 | +6e-05 | +5e-07 | +-1e-09 | +
-5e-06 | +4e-07 | +0.01 | +2e-05 | +2e-08 | +3e-08 | +-2e-06 | +-1e-07 | +-0.0002 | +9e-07 | +
-6e-08 | +6e-09 | +2e-05 | +3e-07 | +1e-10 | +3e-10 | +-7e-09 | +2e-10 | +-9e-07 | +3e-09 | +
3e-09 | +-4e-09 | +2e-08 | +1e-10 | +1e-07 | +-3e-12 | +6e-09 | +-2e-10 | +-3e-09 | +9e-12 | +
-5e-05 | +-3e-08 | +3e-08 | +3e-10 | +-3e-12 | +6e-07 | +1e-06 | +-3e-09 | +2e-08 | +-7e-11 | +
-0.0005 | +-2e-07 | +-2e-06 | +-7e-09 | +6e-09 | +1e-06 | +0.01 | +-8e-06 | +-2e-06 | +9e-09 | +
-2e-07 | +6e-05 | +-1e-07 | +2e-10 | +-2e-10 | +-3e-09 | +-8e-06 | +0.009 | +1e-07 | +2e-09 | +
-3e-06 | +5e-07 | +-0.0002 | +-9e-07 | +-3e-09 | +2e-08 | +-2e-06 | +1e-07 | +0.01 | +-2e-05 | +
1e-08 | +-1e-09 | +9e-07 | +3e-09 | +9e-12 | +-7e-11 | +9e-09 | +2e-09 | +-2e-05 | +3e-07 | +
+Using K
, M
and int_xyz
, we can use the Reduced Order Flexible Solid
simscape block.
+
+Parameters for the APA95ML: +
+ +d33 = 3e-10; % Strain constant [m/V] +n = 80; % Number of layers per stack +eT = 1.6e-8; % Permittivity under constant stress [F/m] +sD = 2e-11; % Elastic compliance under constant electric displacement [m2/N] +ka = 235e6; % Stack stiffness [N/m] +C = 5e-6; % Stack capactiance [F] ++
na = 3; % Number of stacks used as actuator +ns = 0; % Number of stacks used as force sensor ++
+The ratio of the developed force to applied voltage is \(d_{33} n k_a\) in [N/V]. +We denote this constant by \(g_a\) and: +\[ F_a = g_a V_a, \quad g_a = d_{33} n k_a \] +
+d33*(na*n)*(ka/(na + ns)) % [N/V] ++
+1.88 ++ + +
+From (Fleming and Leang 2014) (page 123), the relation between relative displacement and generated voltage is: +\[ V_s = \frac{d_{33}}{\epsilon^T s^D n} \Delta h \] +where: +
+1e-6*d33/(eT*sD*ns*n) % [V/um] ++
+5.8594 ++
+The transfer function from vertical external force to the relative vertical displacement is identified. +
+ ++The inverse of its DC gain is the axial stiffness of the APA: +
+1e-6/dcgain(G) % [N/um] ++
+1.8634 ++ + +
+The specified stiffness in the datasheet is \(k = 1.8\, [N/\mu m]\). +
++The resonance frequency is specified to be between 650Hz and 840Hz. +This is also the case for the FEM model (Figure 6). +
+ + ++
+Figure 6: First resonance is around 800Hz
++The amplification factor is the ratio of the axial displacement to the stack displacement. +
+ ++The ratio of the two displacement is computed from the FEM model. +
+-dcgain(G(1,1))./dcgain(G(2,1)) ++
+4.936 ++ + +
+If we take the ratio of the piezo height and length (approximation of the amplification factor): +
+75/15 ++
+5 ++
+Estimation of the actuator stroke: +\[ \Delta H = A n \Delta L \] +with: +
+1e6 * 5 * 3 * 20e-3 * 0.1e-2 ++
+300 ++ + +
+This is exactly the specified stroke in the data-sheet. +
+
+The flexible element is imported using the Reduced Order Flexible Solid
simscape block.
+
+To model the actuator, an Internal Force
block is added between the nodes 3 and 12.
+A Relative Motion Sensor
block is added between the nodes 1 and 2 to measure the displacement and the amplified piezo.
+
+One mass is fixed at one end of the piezo-electric stack actuator, the other end is fixed to the world frame. +
+ ++We first set the mass to be zero. +The dynamics is identified from the applied force to the measured relative displacement. +The same dynamics is identified for a payload mass of 10Kg. +
+m = 10; ++
+
+Figure 7: Transfer function from forces applied by the stack to the axial displacement of the APA
++Let’s use 2 stacks as actuators and 1 stack as force sensor. +
+ ++The transfer function from actuator to sensors is identified and shown in Figure 8. +
+ ++
+Figure 8: Transfer function from actuator to force sensor
++For root locus corresponding to IFF is shown in Figure 9. +
+ + ++
+Figure 9: Root Locus for IFF
++Now the dynamics from the stack actuator to the relative motion sensor is identified and shown in Figure 10. +
+ ++
+Figure 10: Transfer function from stack actuator to relative motion sensor
++The root locus for DVF is shown in Figure 11. +
+ + ++
+Figure 11: Root Locus for Direct Velocity Feedback
++We first extract the stiffness and mass matrices. +
+K = extractMatrix('mat_K_6modes_2MDoF.matrix'); +M = extractMatrix('mat_M_6modes_2MDoF.matrix'); ++
+Then, we extract the coordinates of the interface nodes. +
+[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('out_nodes_3D.txt'); ++
save('./mat/flexor_ID16.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K'); ++
load('./mat/flexor_ID16.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K'); ++
Total number of Nodes | +2 | +
Number of interface Nodes | +2 | +
Number of Modes | +6 | +
Size of M and K matrices | +18 | +
Node i | +Node Number | +x [m] | +y [m] | +z [m] | +
---|---|---|---|---|
1.0 | +181278.0 | +0.0 | +0.0 | +0.0 | +
2.0 | +181279.0 | +0.0 | +0.0 | +-0.0 | +
11200000.0 | +195.0 | +2220.0 | +-0.719 | +-265.0 | +1.59 | +-11200000.0 | +-213.0 | +-2220.0 | +0.147 | +
195.0 | +11400000.0 | +1290.0 | +-148.0 | +-0.188 | +2.41 | +-212.0 | +-11400000.0 | +-1290.0 | +148.0 | +
2220.0 | +1290.0 | +119000000.0 | +1.31 | +1.49 | +1.79 | +-2220.0 | +-1290.0 | +-119000000.0 | +-1.31 | +
-0.719 | +-148.0 | +1.31 | +33.0 | +0.000488 | +-0.000977 | +0.141 | +148.0 | +-1.31 | +-33.0 | +
-265.0 | +-0.188 | +1.49 | +0.000488 | +33.0 | +0.00293 | +266.0 | +0.154 | +-1.49 | +0.00026 | +
1.59 | +2.41 | +1.79 | +-0.000977 | +0.00293 | +236.0 | +-1.32 | +-2.55 | +-1.79 | +0.000379 | +
-11200000.0 | +-212.0 | +-2220.0 | +0.141 | +266.0 | +-1.32 | +11400000.0 | +24600.0 | +1640.0 | +120.0 | +
-213.0 | +-11400000.0 | +-1290.0 | +148.0 | +0.154 | +-2.55 | +24600.0 | +11400000.0 | +1290.0 | +-72.0 | +
-2220.0 | +-1290.0 | +-119000000.0 | +-1.31 | +-1.49 | +-1.79 | +1640.0 | +1290.0 | +119000000.0 | +1.32 | +
0.147 | +148.0 | +-1.31 | +-33.0 | +0.00026 | +0.000379 | +120.0 | +-72.0 | +1.32 | +34.7 | +
0.02 | +1e-09 | +-4e-08 | +-1e-10 | +0.0002 | +-3e-11 | +0.004 | +5e-08 | +7e-08 | +1e-10 | +
1e-09 | +0.02 | +-3e-07 | +-0.0002 | +-1e-10 | +-2e-09 | +2e-08 | +0.004 | +3e-07 | +1e-05 | +
-4e-08 | +-3e-07 | +0.02 | +7e-10 | +-2e-09 | +1e-09 | +3e-07 | +7e-08 | +0.003 | +1e-09 | +
-1e-10 | +-0.0002 | +7e-10 | +4e-06 | +-1e-12 | +-6e-13 | +2e-10 | +-7e-06 | +-8e-10 | +-1e-09 | +
0.0002 | +-1e-10 | +-2e-09 | +-1e-12 | +3e-06 | +2e-13 | +9e-06 | +4e-11 | +2e-09 | +-3e-13 | +
-3e-11 | +-2e-09 | +1e-09 | +-6e-13 | +2e-13 | +4e-07 | +8e-11 | +9e-10 | +-1e-09 | +2e-12 | +
0.004 | +2e-08 | +3e-07 | +2e-10 | +9e-06 | +8e-11 | +0.02 | +-7e-08 | +-3e-07 | +-2e-10 | +
5e-08 | +0.004 | +7e-08 | +-7e-06 | +4e-11 | +9e-10 | +-7e-08 | +0.01 | +-4e-08 | +0.0002 | +
7e-08 | +3e-07 | +0.003 | +-8e-10 | +2e-09 | +-1e-09 | +-3e-07 | +-4e-08 | +0.02 | +-1e-09 | +
1e-10 | +1e-05 | +1e-09 | +-1e-09 | +-3e-13 | +2e-12 | +-2e-10 | +0.0002 | +-1e-09 | +2e-06 | +
+Using K
, M
and int_xyz
, we can use the Reduced Order Flexible Solid
simscape block.
+
Caracteristic | +Value | +Estimation by Francois | +
---|---|---|
Axial Stiffness [N/um] | +119 | +60 | +
Bending Stiffness [Nm/rad] | +33 | +15 | +
Bending Stiffness [Nm/rad] | +33 | +15 | +
Torsion Stiffness [Nm/rad] | +236 | +20 | +
m = 10; ++
+The dynamics is identified from the applied force to the measured relative displacement. +
+%% Name of the Simulink File +mdl = 'flexor_ID16'; + +%% Input/Output definition +clear io; io_i = 1; +io(io_i) = linio([mdl, '/T'], 1, 'openinput'); io_i = io_i + 1; +io(io_i) = linio([mdl, '/D'], 1, 'openoutput'); io_i = io_i + 1; + +G = linearize(mdl, io); ++
Caracteristic | +Value | +Identification | +
---|---|---|
Axial Stiffness Dz [N/um] | +119 | +119 | +
Bending Stiffness Rx [Nm/rad] | +33 | +34 | +
Bending Stiffness Ry [Nm/rad] | +33 | +126 | +
Torsion Stiffness Rz [Nm/rad] | +236 | +238 | +
+We first extract the stiffness and mass matrices. +
+K = extractMatrix('piezo_amplified_IFF_K.txt'); M = extractMatrix('piezo_amplified_IFF_M.txt');@@ -857,11 +2328,11 @@ Then, we extract the coordinates of the interface nodes.
-The transfer function from the force actuator to the force sensor is identified and shown in Figure 5. +The transfer function from the force actuator to the force sensor is identified and shown in Figure 12.
-
Figure 5: IFF Plant
+Figure 12: IFF Plant
-The controller is defined and the loop gain is shown in Figure 6. +The controller is defined and the loop gain is shown in Figure 13.
Kiff = -1e12/s; @@ -918,17 +2389,17 @@ The controller is defined and the loop gain is shown in Figure +-
Figure 6: IFF Loop Gain
+Figure 13: IFF Loop Gain
m = 10;@@ -970,18 +2441,23 @@ G.OutputName = {'x1', 'Fs'};
-
Figure 7: OL and CL transfer functions
+Figure 14: OL and CL transfer functions
-
Figure 8: Results obtained in souleille18_concep_activ_mount_space_applic
+Figure 15: Results obtained in souleille18_concep_activ_mount_space_applic
+Created: 2020-06-15 lun. 09:13
+Created: 2020-08-03 lun. 15:33