2020-05-20 15:49:43 +02:00
<?xml version="1.0" encoding="utf-8"?>
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" lang = "en" xml:lang = "en" >
< head >
2020-09-01 13:51:37 +02:00
<!-- 2020 - 09 - 01 mar. 13:48 -->
2020-05-20 15:49:43 +02:00
< meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" / >
< title > Amplified Piezoelectric Stack Actuator< / title >
< meta name = "generator" content = "Org mode" / >
< meta name = "author" content = "Dehaeze Thomas" / >
< link rel = "stylesheet" type = "text/css" href = "./css/htmlize.css" / >
< link rel = "stylesheet" type = "text/css" href = "./css/readtheorg.css" / >
< script src = "./js/jquery.min.js" > < / script >
< script src = "./js/bootstrap.min.js" > < / script >
< script src = "./js/jquery.stickytableheaders.min.js" > < / script >
< script src = "./js/readtheorg.js" > < / script >
< script > M a t h J a x = {
tex: {
tags: 'ams',
macros: {bm: ["\\boldsymbol{#1}",1],}
}
};
< / script >
< script type = "text/javascript" src = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js" > < / script >
< / head >
< body >
< div id = "org-div-home-and-up" >
< a accesskey = "h" href = "./index.html" > UP < / a >
|
< a accesskey = "H" href = "./index.html" > HOME < / a >
< / div > < div id = "content" >
< h1 class = "title" > Amplified Piezoelectric Stack Actuator< / h1 >
< div id = "table-of-contents" >
< h2 > Table of Contents< / h2 >
< div id = "text-table-of-contents" >
< ul >
< li > < a href = "#org996fd7c" > 1. Simplified Model< / a >
< ul >
2020-09-01 13:51:37 +02:00
< li > < a href = "#org76fe747" > 1.1. Parameters< / a > < / li >
< li > < a href = "#orgbe95c15" > 1.2. Identification< / a > < / li >
< li > < a href = "#orgeaad673" > 1.3. Root Locus< / a > < / li >
2020-05-25 11:13:54 +02:00
< li > < a href = "#orged9310d" > 1.4. Analytical Model< / a > < / li >
< li > < a href = "#org2f351a4" > 1.5. Analytical Analysis< / a > < / li >
2020-05-20 15:49:43 +02:00
< / ul >
< / li >
< li > < a href = "#orgf1a765f" > 2. Rotating X-Y platform< / a >
< ul >
2020-09-01 13:51:37 +02:00
< li > < a href = "#orga31e2d2" > 2.1. Parameters< / a > < / li >
< li > < a href = "#orgb7a6747" > 2.2. Identification< / a > < / li >
< li > < a href = "#org290de6f" > 2.3. Root Locus< / a > < / li >
2020-05-20 15:49:43 +02:00
< li > < a href = "#org069f401" > 2.4. Analysis< / a > < / li >
< / ul >
< / li >
2020-05-20 16:41:34 +02:00
< li > < a href = "#org3c74f7f" > 3. Stewart Platform with Amplified Actuators< / a >
< ul >
< li > < a href = "#org5a7c6dc" > 3.1. Initialization< / a > < / li >
2020-09-01 13:51:37 +02:00
< li > < a href = "#orgdfe4eeb" > 3.2. APA-100 Amplified Actuator< / a >
< ul >
< li > < a href = "#org7798ce9" > 3.2.1. Identification< / a > < / li >
< li > < a href = "#orgb943e63" > 3.2.2. Controller Design< / a > < / li >
< li > < a href = "#org0bf79ae" > 3.2.3. Effect of the Low Authority Control on the Primary Plant< / a > < / li >
< li > < a href = "#org96f3a8d" > 3.2.4. Effect of the Low Authority Control on the Sensibility to Disturbances< / a > < / li >
< / ul >
< / li >
< li > < a href = "#org297c2ad" > 3.3. Optimal Stiffnesses< / a >
< ul >
< li > < a href = "#org5dc2ac7" > 3.3.1. Low Authority Controller< / a >
< ul >
< li > < a href = "#orgf339f37" > 3.3.1.1. Identification< / a > < / li >
< li > < a href = "#orgfcd4ad7" > 3.3.1.2. Effect of the Low Authority Control on the Primary Plant< / a > < / li >
< li > < a href = "#org32c3422" > 3.3.1.3. Effect of the Low Authority Control on the Sensibility to Disturbances< / a > < / li >
< / ul >
< / li >
< li > < a href = "#orgce4f07c" > 3.3.2. High Authority Controller< / a >
< ul >
< li > < a href = "#orgc16003c" > 3.3.2.1. Controller Design< / a > < / li >
< li > < a href = "#orgbcf7749" > 3.3.2.2. Sensibility to Disturbances and Noise Budget< / a > < / li >
< li > < a href = "#orga0e8915" > 3.3.2.3. Simulations of Tomography Experiment< / a > < / li >
< li > < a href = "#orgb6ec250" > 3.3.2.4. Results< / a > < / li >
< / ul >
< / li >
< / ul >
< / li >
< li > < a href = "#org1e2f810" > 3.4. Direct Velocity Feedback with Amplified Actuators< / a > < / li >
< / ul >
< / li >
< li > < a href = "#org936810c" > 4. APA300ML< / a >
< ul >
< li > < a href = "#org797e3ca" > 4.1. Initialization< / a > < / li >
< li > < a href = "#org2300f00" > 4.2. Identification< / a > < / li >
< li > < a href = "#org4ec1cb7" > 4.3. Controller Design< / a > < / li >
< li > < a href = "#org1b67874" > 4.4. Effect of the Low Authority Control on the Primary Plant< / a > < / li >
< li > < a href = "#org655c28c" > 4.5. Control in the leg space< / a > < / li >
< li > < a href = "#org92df47e" > 4.6. Sensibility to Disturbances and Noise Budget< / a > < / li >
< li > < a href = "#orge84cedc" > 4.7. Simulations of Tomography Experiment< / a > < / li >
< li > < a href = "#org05ce41a" > 4.8. Results< / a > < / li >
2020-05-20 16:41:34 +02:00
< / ul >
< / li >
2020-05-20 15:49:43 +02:00
< / ul >
< / div >
< / div >
< p >
2020-09-01 13:51:37 +02:00
The presented model is based on (< a href = "#citeproc_bib_item_2" > Souleille et al. 2018< / a > ).
2020-05-20 15:49:43 +02:00
< / p >
< p >
The model represents the amplified piezo APA100M from Cedrat-Technologies (Figure < a href = "#orgb707bbd" > 1< / a > ).
The parameters are shown in the table below.
< / p >
< div id = "orgb707bbd" class = "figure" >
< p > < img src = "./figs/souleille18_model_piezo.png" alt = "souleille18_model_piezo.png" / >
< / p >
< p > < span class = "figure-number" > Figure 1: < / span > Picture of an APA100M from Cedrat Technologies. Simplified model of a one DoF payload mounted on such isolator< / p >
< / div >
< table border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
< caption class = "t-above" > < span class = "table-number" > Table 1:< / span > Parameters used for the model of the APA 100M< / caption >
< colgroup >
< col class = "org-left" / >
< col class = "org-left" / >
< col class = "org-left" / >
< / colgroup >
< thead >
< tr >
< th scope = "col" class = "org-left" >   < / th >
< th scope = "col" class = "org-left" > Value< / th >
< th scope = "col" class = "org-left" > Meaning< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td class = "org-left" > \(m\)< / td >
< td class = "org-left" > \(1\,[kg]\)< / td >
< td class = "org-left" > Payload mass< / td >
< / tr >
< tr >
< td class = "org-left" > \(k_e\)< / td >
< td class = "org-left" > \(4.8\,[N/\mu m]\)< / td >
< td class = "org-left" > Stiffness used to adjust the pole of the isolator< / td >
< / tr >
< tr >
< td class = "org-left" > \(k_1\)< / td >
< td class = "org-left" > \(0.96\,[N/\mu m]\)< / td >
< td class = "org-left" > Stiffness of the metallic suspension when the stack is removed< / td >
< / tr >
< tr >
< td class = "org-left" > \(k_a\)< / td >
< td class = "org-left" > \(65\,[N/\mu m]\)< / td >
< td class = "org-left" > Stiffness of the actuator< / td >
< / tr >
< tr >
< td class = "org-left" > \(c_1\)< / td >
< td class = "org-left" > \(10\,[N/(m/s)]\)< / td >
< td class = "org-left" > Added viscous damping< / td >
< / tr >
< / tbody >
< / table >
< div id = "outline-container-org996fd7c" class = "outline-2" >
< h2 id = "org996fd7c" > < span class = "section-number-2" > 1< / span > Simplified Model< / h2 >
< div class = "outline-text-2" id = "text-1" >
< / div >
2020-09-01 13:51:37 +02:00
< div id = "outline-container-org76fe747" class = "outline-3" >
< h3 id = "org76fe747" > < span class = "section-number-3" > 1.1< / span > Parameters< / h3 >
2020-05-20 15:49:43 +02:00
< div class = "outline-text-3" id = "text-1-1" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > m = 1; % [kg]
ke = 4.8e6; % [N/m]
ce = 5; % [N/(m/s)]
me = 0.001; % [kg]
k1 = 0.96e6; % [N/m]
c1 = 10; % [N/(m/s)]
ka = 65e6; % [N/m]
ca = 5; % [N/(m/s)]
ma = 0.001; % [kg]
h = 0.2; % [m]
< / pre >
< / div >
< p >
IFF Controller:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Kiff = -8000/s;
< / pre >
< / div >
< / div >
< / div >
2020-09-01 13:51:37 +02:00
< div id = "outline-container-orgbe95c15" class = "outline-3" >
< h3 id = "orgbe95c15" > < span class = "section-number-3" > 1.2< / span > Identification< / h3 >
2020-05-20 15:49:43 +02:00
< div class = "outline-text-3" id = "text-1-2" >
< p >
Identification in open-loop.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > %% Name of the Simulink File
mdl = 'amplified_piezo_model';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/w'], 1, 'openinput'); io_i = io_i + 1; % Base Motion
io(io_i) = linio([mdl, '/f'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs
io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1; % External Force
io(io_i) = linio([mdl, '/Fs'], 3, 'openoutput'); io_i = io_i + 1; % Force Sensors
io(io_i) = linio([mdl, '/x1'], 1, 'openoutput'); io_i = io_i + 1; % Mass displacement
G = linearize(mdl, io, 0);
G.InputName = {'w', 'f', 'F'};
G.OutputName = {'Fs', 'x1'};
< / pre >
< / div >
< p >
Identification in closed-loop.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > %% Name of the Simulink File
mdl = 'amplified_piezo_model';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/w'], 1, 'input'); io_i = io_i + 1; % Base Motion
io(io_i) = linio([mdl, '/f'], 1, 'input'); io_i = io_i + 1; % Actuator Inputs
io(io_i) = linio([mdl, '/F'], 1, 'input'); io_i = io_i + 1; % External Force
io(io_i) = linio([mdl, '/Fs'], 3, 'output'); io_i = io_i + 1; % Force Sensors
io(io_i) = linio([mdl, '/x1'], 1, 'output'); io_i = io_i + 1; % Mass displacement
Giff = linearize(mdl, io, 0);
Giff.InputName = {'w', 'f', 'F'};
Giff.OutputName = {'Fs', 'x1'};
< / pre >
< / div >
< div id = "org55d1535" class = "figure" >
< p > < img src = "figs/amplified_piezo_tf_ol_and_cl.png" alt = "amplified_piezo_tf_ol_and_cl.png" / >
< / p >
< p > < span class = "figure-number" > Figure 2: < / span > Matrix of transfer functions from input to output in open loop (blue) and closed loop (red)< / p >
< / div >
< / div >
< / div >
2020-09-01 13:51:37 +02:00
< div id = "outline-container-orgeaad673" class = "outline-3" >
< h3 id = "orgeaad673" > < span class = "section-number-3" > 1.3< / span > Root Locus< / h3 >
2020-05-20 15:49:43 +02:00
< div class = "outline-text-3" id = "text-1-3" >
< div id = "org85cd6e5" class = "figure" >
< p > < img src = "figs/amplified_piezo_root_locus.png" alt = "amplified_piezo_root_locus.png" / >
< / p >
< p > < span class = "figure-number" > Figure 3: < / span > Root Locus< / p >
< / div >
< / div >
< / div >
2020-05-25 11:13:54 +02:00
< div id = "outline-container-orged9310d" class = "outline-3" >
< h3 id = "orged9310d" > < span class = "section-number-3" > 1.4< / span > Analytical Model< / h3 >
< div class = "outline-text-3" id = "text-1-4" >
< p >
If we apply the Newton’ s second law of motion on the top mass, we obtain:
\[ ms^2 x_1 = F + k_1 (w - x_1) + k_e (x_e - x_1) \]
< / p >
< p >
Then, we can write that the measured force \(F_s\) is equal to:
\[ F_s = k_a(w - x_e) + f = -k_e (x_1 - x_e) \]
which gives:
\[ x_e = \frac{k_a}{k_e + k_a} w + \frac{1}{k_e + k_a} f + \frac{k_e}{k_e + k_a} x_1 \]
< / p >
< p >
Re-injecting that into the previous equations gives:
\[ x_1 = F \frac{1}{ms^2 + k_1 + \frac{k_e k_a}{k_e + k_a}} + w \frac{k_1 + \frac{k_e k_a}{k_e + k_a}}{ms^2 + k_1 + \frac{k_e k_a}{k_e + k_a}} + f \frac{\frac{k_e}{k_e + k_a}}{ms^2 + k_1 + \frac{k_e k_a}{k_e + k_a}} \]
\[ F_s = - F \frac{\frac{k_e k_a}{k_e + k_a}}{ms^2 + k_1 + \frac{k_e k_a}{k_e + k_a}} + w \frac{k_e k_a}{k_e + k_a} \Big( \frac{ms^2}{ms^2 + k_1 + \frac{k_e k_a}{k_e + k_a}} \Big) - f \frac{k_e}{k_e + k_a} \Big( \frac{ms^2 + k_1}{ms^2 + k_1 + \frac{k_e k_a}{k_e + k_a}} \Big) \]
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Ga = 1/(m*s^2 + k1 + ke*ka/(ke + ka)) * ...
[ 1 , k1 + ke*ka/(ke + ka) , ke/(ke + ka) ;
-ke*ka/(ke + ka), ke*ka/(ke + ka)*m*s^2 , -ke/(ke+ka)*(m*s^2 + k1)];
Ga.InputName = {'F', 'w', 'f'};
Ga.OutputName = {'x1', 'Fs'};
< / pre >
< / div >
< div id = "org7970b34" class = "figure" >
< p > < img src = "figs/comp_simscape_analytical.png" alt = "comp_simscape_analytical.png" / >
< / p >
< p > < span class = "figure-number" > Figure 4: < / span > Comparison of the Identified Simscape Dynamics (solid) and the Analytical Model (dashed)< / p >
< / div >
< / div >
< / div >
< div id = "outline-container-org2f351a4" class = "outline-3" >
< h3 id = "org2f351a4" > < span class = "section-number-3" > 1.5< / span > Analytical Analysis< / h3 >
< div class = "outline-text-3" id = "text-1-5" >
< p >
For Integral Force Feedback Control, the plant is:
\[ \frac{F_s}{f} = \frac{k_e}{k_e + k_a} \Big( \frac{ms^2 + k_1}{ms^2 + k_1 + \frac{k_e k_a}{k_e + k_a}} \Big) \]
< / p >
< p >
As high frequency, this converge to:
\[ \frac{F_s}{f} \underset{\omega\to\infty}{\longrightarrow} \frac{k_e}{k_e + k_a} \]
And at low frequency:
\[ \frac{F_s}{f} \underset{\omega\to 0}{\longrightarrow} \frac{k_e}{k_e + k_a} \frac{k_1}{k_1 + \frac{k_e k_a}{k_e + k_a}} \]
< / p >
< p >
It has two complex conjugate zeros at:
\[ z = \pm j \sqrt{\frac{k_1}{m}} \]
And two complex conjugate poles at:
\[ p = \pm j \sqrt{\frac{k_1 + \frac{k_e k_a}{k_e + k_a}}{m}} \]
< / p >
< p >
If maximal damping is to be attained with IFF, the distance between the zero and the pole is to be maximized.
Thus, we wish to maximize \(p/z\), which is equivalent as to minimize \(k_1\) and have \(k_e \approx k_a\) (supposing \(k_e + k_a \approx \text{cst}\)).
< / p >
2020-09-01 13:51:37 +02:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > m = 1;
k1 = 1e6;
ka = 1e6;
ke = 1e6;
Giff.InputName = {'f'};
Giff.OutputName = {'Fs'};
< / pre >
< / div >
2020-05-25 11:13:54 +02:00
< / div >
< / div >
2020-05-20 15:49:43 +02:00
< / div >
< div id = "outline-container-orgf1a765f" class = "outline-2" >
< h2 id = "orgf1a765f" > < span class = "section-number-2" > 2< / span > Rotating X-Y platform< / h2 >
< div class = "outline-text-2" id = "text-2" >
2020-09-01 13:51:37 +02:00
< p >
This analysis gave rise to a paper (< a href = "#citeproc_bib_item_1" > Dehaeze and Collette 2020< / a > ).
< / p >
2020-05-20 15:49:43 +02:00
< / div >
2020-09-01 13:51:37 +02:00
< div id = "outline-container-orga31e2d2" class = "outline-3" >
< h3 id = "orga31e2d2" > < span class = "section-number-3" > 2.1< / span > Parameters< / h3 >
2020-05-20 15:49:43 +02:00
< div class = "outline-text-3" id = "text-2-1" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > m = 1; % [kg]
ke = 4.8e6; % [N/m]
ce = 5; % [N/(m/s)]
me = 0.001; % [kg]
k1 = 0.96e6; % [N/m]
c1 = 10; % [N/(m/s)]
ka = 65e6; % [N/m]
ca = 5; % [N/(m/s)]
ma = 0.001; % [kg]
h = 0.2; % [m]
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Kiff = tf(0);
< / pre >
< / div >
< / div >
< / div >
2020-09-01 13:51:37 +02:00
< div id = "outline-container-orgb7a6747" class = "outline-3" >
< h3 id = "orgb7a6747" > < span class = "section-number-3" > 2.2< / span > Identification< / h3 >
2020-05-20 15:49:43 +02:00
< div class = "outline-text-3" id = "text-2-2" >
< p >
Rotating speed in rad/s:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Ws = 2*pi*[0, 1, 10, 100];
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Gs = {zeros(length(Ws), 1)};
< / pre >
< / div >
< p >
Identification in open-loop.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > %% Name of the Simulink File
mdl = 'amplified_piezo_xy_rotating_stage';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/fx'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/fy'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/Fs'], 1, 'openoutput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/Fs'], 2, 'openoutput'); io_i = io_i + 1;
for i = 1:length(Ws)
ws = Ws(i);
G = linearize(mdl, io, 0);
G.InputName = {'fx', 'fy'};
G.OutputName = {'Fsx', 'Fsy'};
Gs(i) = {G};
end
< / pre >
< / div >
< div id = "orga4fc975" class = "figure" >
< p > < img src = "figs/amplitifed_piezo_xy_rotation_plant_iff.png" alt = "amplitifed_piezo_xy_rotation_plant_iff.png" / >
< / p >
2020-05-25 11:13:54 +02:00
< p > < span class = "figure-number" > Figure 5: < / span > Transfer function matrix from forces to force sensors for multiple rotation speed< / p >
2020-05-20 15:49:43 +02:00
< / div >
< / div >
< / div >
2020-09-01 13:51:37 +02:00
< div id = "outline-container-org290de6f" class = "outline-3" >
< h3 id = "org290de6f" > < span class = "section-number-3" > 2.3< / span > Root Locus< / h3 >
2020-05-20 15:49:43 +02:00
< div class = "outline-text-3" id = "text-2-3" >
< div id = "orgccd3396" class = "figure" >
< p > < img src = "figs/amplified_piezo_xy_rotation_root_locus.png" alt = "amplified_piezo_xy_rotation_root_locus.png" / >
< / p >
2020-05-25 11:13:54 +02:00
< p > < span class = "figure-number" > Figure 6: < / span > Root locus for 3 rotating speed< / p >
2020-05-20 15:49:43 +02:00
< / div >
< / div >
< / div >
< div id = "outline-container-org069f401" class = "outline-3" >
< h3 id = "org069f401" > < span class = "section-number-3" > 2.4< / span > Analysis< / h3 >
< div class = "outline-text-3" id = "text-2-4" >
< p >
The negative stiffness induced by the rotation is equal to \(m \omega_0^2\).
Thus, the maximum rotation speed where IFF can be applied is:
\[ \omega_\text{max} = \sqrt{\frac{k_1}{m}} \approx 156\,[Hz] \]
< / p >
< p >
Let’ s verify that.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Ws = 2*pi*[140, 160];
< / pre >
< / div >
< p >
Identification
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > %% Name of the Simulink File
mdl = 'amplified_piezo_xy_rotating_stage';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/fx'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/fy'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/Fs'], 1, 'openoutput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/Fs'], 2, 'openoutput'); io_i = io_i + 1;
for i = 1:length(Ws)
ws = Ws(i);
G = linearize(mdl, io, 0);
G.InputName = {'fx', 'fy'};
G.OutputName = {'Fsx', 'Fsy'};
Gs(i) = {G};
end
< / pre >
< / div >
< div id = "orgca23612" class = "figure" >
< p > < img src = "figs/amplified_piezo_xy_rotating_unstable_root_locus.png" alt = "amplified_piezo_xy_rotating_unstable_root_locus.png" / >
< / p >
2020-05-25 11:13:54 +02:00
< p > < span class = "figure-number" > Figure 7: < / span > Root Locus for the two considered rotation speed. For the red curve, the system is unstable.< / p >
2020-05-20 15:49:43 +02:00
< / div >
< / div >
< / div >
< / div >
2020-05-20 16:41:34 +02:00
< div id = "outline-container-org3c74f7f" class = "outline-2" >
< h2 id = "org3c74f7f" > < span class = "section-number-2" > 3< / span > Stewart Platform with Amplified Actuators< / h2 >
< div class = "outline-text-2" id = "text-3" >
< / div >
< div id = "outline-container-org5a7c6dc" class = "outline-3" >
< h3 id = "org5a7c6dc" > < span class = "section-number-3" > 3.1< / span > Initialization< / h3 >
< div class = "outline-text-3" id = "text-3-1" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
initializeSimscapeConfiguration();
initializeDisturbances('enable', false);
initializeLoggingConfiguration('log', 'none');
initializeController('type', 'hac-iff');
< / pre >
< / div >
< p >
We set the stiffness of the payload fixation:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Kp = 1e8; % [N/m]
< / pre >
< / div >
< / div >
< / div >
2020-09-01 13:51:37 +02:00
< div id = "outline-container-orgdfe4eeb" class = "outline-3" >
< h3 id = "orgdfe4eeb" > < span class = "section-number-3" > 3.2< / span > APA-100 Amplified Actuator< / h3 >
2020-05-20 16:41:34 +02:00
< div class = "outline-text-3" id = "text-3-2" >
2020-09-01 13:51:37 +02:00
< / div >
< div id = "outline-container-org7798ce9" class = "outline-4" >
< h4 id = "org7798ce9" > < span class = "section-number-4" > 3.2.1< / span > Identification< / h4 >
< div class = "outline-text-4" id = "text-3-2-1" >
2020-05-20 16:41:34 +02:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > K = tf(zeros(6));
Kiff = tf(zeros(6));
< / pre >
< / div >
< p >
We identify the system for the following payload masses:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Ms = [1, 10, 50];
< / pre >
< / div >
< p >
The nano-hexapod has the following leg’ s stiffness and damping.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeNanoHexapod('actuator', 'amplified');
< / pre >
< / div >
< / div >
< / div >
2020-09-01 13:51:37 +02:00
< div id = "outline-container-orgb943e63" class = "outline-4" >
< h4 id = "orgb943e63" > < span class = "section-number-4" > 3.2.2< / span > Controller Design< / h4 >
< div class = "outline-text-4" id = "text-3-2-2" >
< p >
The loop gain for IFF is shown in Figure < a href = "#org0e2911a" > 8< / a > .
< / p >
< p >
The corresponding root locus is shown in Figure < a href = "#org5d7f6d3" > 9< / a > .
< / p >
< p >
Finally, the damping as function of the gain is display in Figure < a href = "#org4743c83" > 10< / a > .
< / p >
2020-05-20 16:41:34 +02:00
< div id = "org0e2911a" class = "figure" >
< p > < img src = "figs/amplified_piezo_iff_loop_gain.png" alt = "amplified_piezo_iff_loop_gain.png" / >
< / p >
2020-05-25 11:13:54 +02:00
< p > < span class = "figure-number" > Figure 8: < / span > Dynamics for the Integral Force Feedback for three payload masses< / p >
2020-05-20 16:41:34 +02:00
< / div >
< div id = "org5d7f6d3" class = "figure" >
< p > < img src = "figs/amplified_piezo_iff_root_locus.png" alt = "amplified_piezo_iff_root_locus.png" / >
< / p >
2020-05-25 11:13:54 +02:00
< p > < span class = "figure-number" > Figure 9: < / span > Root Locus for the IFF control for three payload masses< / p >
2020-05-20 16:41:34 +02:00
< / div >
< div id = "org4743c83" class = "figure" >
< p > < img src = "figs/amplified_piezo_iff_damping_gain.png" alt = "amplified_piezo_iff_damping_gain.png" / >
< / p >
2020-05-25 11:13:54 +02:00
< p > < span class = "figure-number" > Figure 10: < / span > Damping ratio of the poles as a function of the IFF gain< / p >
2020-05-20 16:41:34 +02:00
< / div >
< p >
2020-09-01 13:51:37 +02:00
The following controller for the Decentralized Integral Force Feedback is used:
2020-05-20 16:41:34 +02:00
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Kiff = -1e4/s*eye(6);
< / pre >
< / div >
< / div >
< / div >
2020-09-01 13:51:37 +02:00
< div id = "outline-container-org0bf79ae" class = "outline-4" >
< h4 id = "org0bf79ae" > < span class = "section-number-4" > 3.2.3< / span > Effect of the Low Authority Control on the Primary Plant< / h4 >
< div class = "outline-text-4" id = "text-3-2-3" >
2020-05-20 16:55:50 +02:00
< div id = "org904efc3" class = "figure" >
< p > < img src = "figs/amplified_piezo_iff_plant_damped_X.png" alt = "amplified_piezo_iff_plant_damped_X.png" / >
< / p >
2020-05-25 11:13:54 +02:00
< p > < span class = "figure-number" > Figure 11: < / span > Primary plant in the task space with (dashed) and without (solid) IFF< / p >
2020-05-20 16:55:50 +02:00
< / div >
< div id = "orgddf3013" class = "figure" >
< p > < img src = "figs/amplified_piezo_iff_damped_plant_L.png" alt = "amplified_piezo_iff_damped_plant_L.png" / >
< / p >
2020-05-25 11:13:54 +02:00
< p > < span class = "figure-number" > Figure 12: < / span > Primary plant in the space of the legs with (dashed) and without (solid) IFF< / p >
2020-05-20 16:55:50 +02:00
< / div >
< div id = "orgd940ce9" class = "figure" >
< p > < img src = "figs/amplified_piezo_iff_damped_coupling_X.png" alt = "amplified_piezo_iff_damped_coupling_X.png" / >
< / p >
2020-05-25 11:13:54 +02:00
< p > < span class = "figure-number" > Figure 13: < / span > Coupling in the primary plant in the task with (dashed) and without (solid) IFF< / p >
2020-05-20 16:55:50 +02:00
< / div >
< div id = "org4278690" class = "figure" >
< p > < img src = "figs/amplified_piezo_iff_damped_coupling_L.png" alt = "amplified_piezo_iff_damped_coupling_L.png" / >
< / p >
2020-05-25 11:13:54 +02:00
< p > < span class = "figure-number" > Figure 14: < / span > Coupling in the primary plant in the space of the legs with (dashed) and without (solid) IFF< / p >
2020-05-20 16:55:50 +02:00
< / div >
< / div >
< / div >
2020-09-01 13:51:37 +02:00
< div id = "outline-container-org96f3a8d" class = "outline-4" >
< h4 id = "org96f3a8d" > < span class = "section-number-4" > 3.2.4< / span > Effect of the Low Authority Control on the Sensibility to Disturbances< / h4 >
< div class = "outline-text-4" id = "text-3-2-4" >
2020-05-20 16:55:50 +02:00
< div id = "org56179cd" class = "figure" >
< p > < img src = "figs/amplified_piezo_iff_disturbances.png" alt = "amplified_piezo_iff_disturbances.png" / >
< / p >
2020-05-25 11:13:54 +02:00
< p > < span class = "figure-number" > Figure 15: < / span > Norm of the transfer function from vertical disturbances to vertical position error with (dashed) and without (solid) Integral Force Feedback applied< / p >
2020-05-20 16:55:50 +02:00
< / div >
2020-09-01 13:51:37 +02:00
< / div >
< / div >
< div class = "outline-text-3" id = "text-3-2" >
2020-05-20 16:55:50 +02:00
< div class = "important" >
< / div >
< / div >
2020-05-20 16:41:34 +02:00
< / div >
2020-05-25 11:13:54 +02:00
< div id = "outline-container-org297c2ad" class = "outline-3" >
2020-09-01 13:51:37 +02:00
< h3 id = "org297c2ad" > < span class = "section-number-3" > 3.3< / span > Optimal Stiffnesses< / h3 >
< div class = "outline-text-3" id = "text-3-3" >
< p >
Based on the analytical analysis, we can determine the parameters of the amplified piezoelectric actuator in order to be able to add a lots of damping using IFF:
< / p >
< ul class = "org-ul" >
< li > \(k_1\) should be minimized.< / li >
< li > \(k_e \approx k_a \approx 10^5 - 10^6\,[N/m]\)< / li >
< / ul >
< p >
However, this might not be realizable.
< / p >
< / div >
< div id = "outline-container-org5dc2ac7" class = "outline-4" >
< h4 id = "org5dc2ac7" > < span class = "section-number-4" > 3.3.1< / span > Low Authority Controller< / h4 >
< div class = "outline-text-4" id = "text-3-3-1" >
< / div >
< div id = "outline-container-orgf339f37" class = "outline-5" >
< h5 id = "orgf339f37" > < span class = "section-number-5" > 3.3.1.1< / span > Identification< / h5 >
< div class = "outline-text-5" id = "text-3-3-1-1" >
< p >
The nano-hexapod is initialized with the following parameters:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeNanoHexapod('actuator', 'amplified', ...
'k1', 1e4, ...
'ke', 1e6, ...
'ka', 1e6);
< / pre >
< / div >
< p >
The obtain plan for the IFF control is shown in Figure < a href = "#orgafcb4d0" > 16< / a > .
The associated Root Locus is shown in Figure < a href = "#org62c3e69" > 17< / a > .
< / p >
< p >
Based on that, the following IFF gain is chosen:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Kiff = -1e3/s*eye(6);
< / pre >
< / div >
< div id = "orgafcb4d0" class = "figure" >
< p > < img src = "figs/amplified_piezo_opt_stiff_iff_plant.png" alt = "amplified_piezo_opt_stiff_iff_plant.png" / >
< / p >
< p > < span class = "figure-number" > Figure 16: < / span > Plant dynamics for IFF with the amplified piezoelectric stack actuator< / p >
< / div >
< div id = "org62c3e69" class = "figure" >
< p > < img src = "figs/amplified_piezo_opt_stiff_iff_root_locus.png" alt = "amplified_piezo_opt_stiff_iff_root_locus.png" / >
< / p >
< p > < span class = "figure-number" > Figure 17: < / span > Root Locus for IFF with the amplified piezoelectric stack actuator< / p >
< / div >
< div id = "orgaf25c91" class = "figure" >
< p > < img src = "figs/amplified_piezo_opt_stiff_gain_damping.png" alt = "amplified_piezo_opt_stiff_gain_damping.png" / >
< / p >
< p > < span class = "figure-number" > Figure 18: < / span > Damping of the modes as a function of the IFF gain< / p >
< / div >
< / div >
< / div >
< div id = "outline-container-orgfcd4ad7" class = "outline-5" >
< h5 id = "orgfcd4ad7" > < span class = "section-number-5" > 3.3.1.2< / span > Effect of the Low Authority Control on the Primary Plant< / h5 >
< / div >
< div id = "outline-container-org32c3422" class = "outline-5" >
< h5 id = "org32c3422" > < span class = "section-number-5" > 3.3.1.3< / span > Effect of the Low Authority Control on the Sensibility to Disturbances< / h5 >
< div class = "outline-text-5" id = "text-3-3-1-3" >
< div id = "orgf43f9ed" class = "figure" >
< p > < img src = "figs/amplified_piezo_opt_stiff_iff_dist.png" alt = "amplified_piezo_opt_stiff_iff_dist.png" / >
< / p >
< p > < span class = "figure-number" > Figure 19: < / span > Effect of disturbance with and without IFF< / p >
< / div >
< div class = "important" >
< p >
< / p >
< / div >
< / div >
< / div >
< / div >
< div id = "outline-container-orgce4f07c" class = "outline-4" >
< h4 id = "orgce4f07c" > < span class = "section-number-4" > 3.3.2< / span > High Authority Controller< / h4 >
< div class = "outline-text-4" id = "text-3-3-2" >
< / div >
< div id = "outline-container-orgc16003c" class = "outline-5" >
< h5 id = "orgc16003c" > < span class = "section-number-5" > 3.3.2.1< / span > Controller Design< / h5 >
< div class = "outline-text-5" id = "text-3-3-2-1" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > h = 2.5;
Kl = 5e6 * eye(6) * ...
1/h*(s/(2*pi*40/h) + 1)/(s/(2*pi*40*h) + 1) * ...
1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
(s/2/pi/50 + 1)/(s/2/pi/50) * ...
(s/2/pi/10 + 1)/(s/2/pi/10) * ...
1/(1 + s/2/pi/200);
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Kl = 3e10 * eye(6) * ...
1/s * ...
(s+0.8)/s * ...
(s+50)/(s+0.01) * ...
(s+120)/(s+1000) * ...
(s+150)/(s+1000);
< / pre >
< / div >
< p >
Finally, we include the Jacobian in the control and we ignore the measurement of the vertical rotation as for the real system.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > load('mat/stages.mat', 'nano_hexapod');
K = Kl*nano_hexapod.kinematics.J*diag([1, 1, 1, 1, 1, 0]);
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-orgbcf7749" class = "outline-5" >
< h5 id = "orgbcf7749" > < span class = "section-number-5" > 3.3.2.2< / span > Sensibility to Disturbances and Noise Budget< / h5 >
< div class = "outline-text-5" id = "text-3-3-2-2" >
< p >
We identify the transfer function from disturbances to the position error of the sample when the HAC-LAC control is applied.
< / p >
< / div >
< / div >
< div id = "outline-container-orga0e8915" class = "outline-5" >
< h5 id = "orga0e8915" > < span class = "section-number-5" > 3.3.2.3< / span > Simulations of Tomography Experiment< / h5 >
< div class = "outline-text-5" id = "text-3-3-2-3" >
< p >
Let’ s now simulate a tomography experiment.
To do so, we include all disturbances except vibrations of the translation stage.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeDisturbances();
initializeSimscapeConfiguration('gravity', false);
initializeLoggingConfiguration('log', 'all');
< / pre >
< / div >
< p >
And we run the simulation for all three payload Masses.
< / p >
< / div >
< / div >
< div id = "outline-container-orgb6ec250" class = "outline-5" >
< h5 id = "orgb6ec250" > < span class = "section-number-5" > 3.3.2.4< / span > Results< / h5 >
< / div >
< / div >
2020-05-25 11:13:54 +02:00
< / div >
< div id = "outline-container-org1e2f810" class = "outline-3" >
2020-09-01 13:51:37 +02:00
< h3 id = "org1e2f810" > < span class = "section-number-3" > 3.4< / span > Direct Velocity Feedback with Amplified Actuators< / h3 >
< div class = "outline-text-3" id = "text-3-4" >
< p >
Lack of collocation.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeController('type', 'hac-dvf');
K = tf(zeros(6));
Kdvf = tf(zeros(6));
< / pre >
< / div >
< p >
We identify the system for the following payload masses:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Ms = [1, 10, 50];
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeNanoHexapod('actuator', 'amplified', ...
'k1', 1e4, ...
'ke', 1e6, ...
'ka', 1e6);
< / pre >
< / div >
< / div >
< / div >
< / div >
< div id = "outline-container-org936810c" class = "outline-2" >
< h2 id = "org936810c" > < span class = "section-number-2" > 4< / span > APA300ML< / h2 >
< div class = "outline-text-2" id = "text-4" >
< / div >
< div id = "outline-container-org797e3ca" class = "outline-3" >
< h3 id = "org797e3ca" > < span class = "section-number-3" > 4.1< / span > Initialization< / h3 >
< div class = "outline-text-3" id = "text-4-1" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
initializeSimscapeConfiguration();
initializeDisturbances('enable', false);
initializeLoggingConfiguration('log', 'none');
initializeController('type', 'hac-dvf');
< / pre >
< / div >
< p >
We set the stiffness of the payload fixation:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Kp = 1e8; % [N/m]
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-org2300f00" class = "outline-3" >
< h3 id = "org2300f00" > < span class = "section-number-3" > 4.2< / span > Identification< / h3 >
< div class = "outline-text-3" id = "text-4-2" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > K = tf(zeros(6));
Kdvf = tf(zeros(6));
< / pre >
< / div >
< p >
We identify the system for the following payload masses:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Ms = [1, 10, 50];
< / pre >
< / div >
< p >
The nano-hexapod has the following leg’ s stiffness and damping.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeNanoHexapod('actuator', 'amplified', 'k1', 0.4e6, 'ka', 43e6, 'ke', 1.5e6);
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-org4ec1cb7" class = "outline-3" >
< h3 id = "org4ec1cb7" > < span class = "section-number-3" > 4.3< / span > Controller Design< / h3 >
< div class = "outline-text-3" id = "text-4-3" >
< p >
Damping as function of the gain
Finally, we use the following controller for the Decentralized Direct Velocity Feedback:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Kdvf = 5e5*s/(1+s/2/pi/1e3)*eye(6);
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-org1b67874" class = "outline-3" >
< h3 id = "org1b67874" > < span class = "section-number-3" > 4.4< / span > Effect of the Low Authority Control on the Primary Plant< / h3 >
< / div >
< div id = "outline-container-org655c28c" class = "outline-3" >
< h3 id = "org655c28c" > < span class = "section-number-3" > 4.5< / span > Control in the leg space< / h3 >
< div class = "outline-text-3" id = "text-4-5" >
< p >
We design a diagonal controller with all the same diagonal elements.
< / p >
< p >
The requirements for the controller are:
< / p >
< ul class = "org-ul" >
< li > Crossover frequency of around 100Hz< / li >
< li > Stable for all the considered payload masses< / li >
< li > Sufficient phase and gain margin< / li >
< li > Integral action at low frequency< / li >
< / ul >
< p >
The design controller is as follows:
< / p >
< ul class = "org-ul" >
< li > Lead centered around the crossover< / li >
< li > An integrator below 10Hz< / li >
< li > A low pass filter at 250Hz< / li >
< / ul >
< div class = "org-src-container" >
< pre class = "src src-matlab" > h = 2.0;
Kl = 1e9 * eye(6) * ...
1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
1/h*(s/(2*pi*200/h) + 1)/(s/(2*pi*200*h) + 1) * ...
(s/2/pi/10 + 1)/(s/2/pi/10) * ...
1/(1 + s/2/pi/300);
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > load('mat/stages.mat', 'nano_hexapod');
K = Kl*nano_hexapod.kinematics.J*diag([1, 1, 1, 1, 1, 0]);
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-org92df47e" class = "outline-3" >
< h3 id = "org92df47e" > < span class = "section-number-3" > 4.6< / span > Sensibility to Disturbances and Noise Budget< / h3 >
< div class = "outline-text-3" id = "text-4-6" >
< p >
We identify the transfer function from disturbances to the position error of the sample when the HAC-LAC control is applied.
< / p >
< div id = "org44696dd" class = "figure" >
< p > < img src = "figs/opt_stiff_primary_control_L_psd_dist.png" alt = "opt_stiff_primary_control_L_psd_dist.png" / >
< / p >
< p > < span class = "figure-number" > Figure 20: < / span > Amplitude Spectral Density of the vertical position error of the sample when the HAC-DVF control is applied due to both the ground motion and spindle vibrations< / p >
< / div >
< div id = "org15d4b96" class = "figure" >
< p > < img src = "figs/opt_stiff_primary_control_L_psd_tot.png" alt = "opt_stiff_primary_control_L_psd_tot.png" / >
< / p >
< p > < span class = "figure-number" > Figure 21: < / span > Amplitude Spectral Density of the vertical position error of the sample in Open-Loop and when the HAC-DVF control is applied< / p >
< / div >
< div id = "org7a31e40" class = "figure" >
< p > < img src = "figs/opt_stiff_primary_control_L_cas_tot.png" alt = "opt_stiff_primary_control_L_cas_tot.png" / >
< / p >
< p > < span class = "figure-number" > Figure 22: < / span > Cumulative Amplitude Spectrum of the vertical position error of the sample in Open-Loop and when the HAC-DVF control is applied< / p >
< / div >
< / div >
< / div >
< div id = "outline-container-orge84cedc" class = "outline-3" >
< h3 id = "orge84cedc" > < span class = "section-number-3" > 4.7< / span > Simulations of Tomography Experiment< / h3 >
< div class = "outline-text-3" id = "text-4-7" >
< p >
Let’ s now simulate a tomography experiment.
To do so, we include all disturbances except vibrations of the translation stage.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeDisturbances();
initializeSimscapeConfiguration('gravity', false);
initializeLoggingConfiguration('log', 'all');
< / pre >
< / div >
< p >
And we run the simulation for all three payload Masses.
< / p >
< / div >
< / div >
< div id = "outline-container-org05ce41a" class = "outline-3" >
< h3 id = "org05ce41a" > < span class = "section-number-3" > 4.8< / span > Results< / h3 >
< div class = "outline-text-3" id = "text-4-8" >
< style > . csl-entry { text-indent : -1.5 em ; margin-left : 1.5 em ; } < / style > < h2 class = 'citeproc-org-bib-h2' > Bibliography< / h2 >
< div class = "csl-bib-body" >
< div class = "csl-entry" > < a name = "citeproc_bib_item_1" > < / a > Dehaeze, T., and C. Collette. 2020. “Active Damping of Rotating Platforms Using Integral Force Feedback.” In < i > Proceedings of the International Conference on Modal Analysis Noise and Vibration Engineering (ISMA)< / i > .< / div >
< div class = "csl-entry" > < a name = "citeproc_bib_item_2" > < / a > Souleille, Adrien, Thibault Lampert, V Lafarga, Sylvain Hellegouarch, Alan Rondineau, Gonçalo Rodrigues, and Christophe Collette. 2018. “A Concept of Active Mount for Space Applications.” < i > CEAS Space Journal< / i > 10 (2). Springer:157– 65.< / div >
< / div >
< / div >
2020-05-25 11:13:54 +02:00
< / div >
2020-05-20 16:41:34 +02:00
< / div >
2020-05-20 15:49:43 +02:00
< / div >
< div id = "postamble" class = "status" >
< p class = "author" > Author: Dehaeze Thomas< / p >
2020-09-01 13:51:37 +02:00
< p class = "date" > Created: 2020-09-01 mar. 13:48< / p >
2020-05-20 15:49:43 +02:00
< / div >
< / body >
< / html >