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-05-20 16:55:50 +02:00
<!-- 2020 - 05 - 20 mer. 16:56 -->
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-05-20 16:55:50 +02:00
< li > < a href = "#org1e2b26f" > 1.1. Parameters< / a > < / li >
< li > < a href = "#orgac18acf" > 1.2. Identification< / a > < / li >
< li > < a href = "#orgd6c324c" > 1.3. Root Locus< / a > < / li >
2020-05-20 15:49:43 +02:00
< / ul >
< / li >
< li > < a href = "#orgf1a765f" > 2. Rotating X-Y platform< / a >
< ul >
2020-05-20 16:55:50 +02:00
< li > < a href = "#orgd4866c5" > 2.1. Parameters< / a > < / li >
< li > < a href = "#orgcfc57a7" > 2.2. Identification< / a > < / li >
< li > < a href = "#org8d3f9bd" > 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-05-20 16:55:50 +02:00
< li > < a href = "#orgf0cb0e7" > 3.2. Identification< / a > < / li >
2020-05-20 16:41:34 +02:00
< li > < a href = "#org14c7063" > 3.3. Controller Design< / a > < / li >
< li > < a href = "#org043ce40" > 3.4. Effect of the Low Authority Control on the Primary Plant< / a > < / li >
2020-05-20 16:55:50 +02:00
< li > < a href = "#orgbc2f246" > 3.5. Effect of the Low Authority Control on the Sensibility to Disturbances< / a > < / li >
2020-05-20 16:41:34 +02:00
< / ul >
< / li >
2020-05-20 15:49:43 +02:00
< / ul >
< / div >
< / div >
< p >
The presented model is based on < a class = 'org-ref-reference' href = "#souleille18_concep_activ_mount_space_applic" > souleille18_concep_activ_mount_space_applic< / a > .
< / 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-05-20 16:55:50 +02:00
< div id = "outline-container-org1e2b26f" class = "outline-3" >
< h3 id = "org1e2b26f" > < 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-05-20 16:55:50 +02:00
< div id = "outline-container-orgac18acf" class = "outline-3" >
< h3 id = "orgac18acf" > < 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-05-20 16:55:50 +02:00
< div id = "outline-container-orgd6c324c" class = "outline-3" >
< h3 id = "orgd6c324c" > < 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 >
< / 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" >
< / div >
2020-05-20 16:55:50 +02:00
< div id = "outline-container-orgd4866c5" class = "outline-3" >
< h3 id = "orgd4866c5" > < 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-05-20 16:55:50 +02:00
< div id = "outline-container-orgcfc57a7" class = "outline-3" >
< h3 id = "orgcfc57a7" > < 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 >
< p > < span class = "figure-number" > Figure 4: < / span > Transfer function matrix from forces to force sensors for multiple rotation speed< / p >
< / div >
< / div >
< / div >
2020-05-20 16:55:50 +02:00
< div id = "outline-container-org8d3f9bd" class = "outline-3" >
< h3 id = "org8d3f9bd" > < 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 >
< p > < span class = "figure-number" > Figure 5: < / span > Root locus for 3 rotating speed< / p >
< / 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 >
< p > < span class = "figure-number" > Figure 6: < / span > Root Locus for the two considered rotation speed. For the red curve, the system is unstable.< / p >
< / 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-05-20 16:55:50 +02:00
< div id = "outline-container-orgf0cb0e7" class = "outline-3" >
< h3 id = "orgf0cb0e7" > < span class = "section-number-3" > 3.2< / span > Identification< / h3 >
2020-05-20 16:41:34 +02:00
< div class = "outline-text-3" id = "text-3-2" >
< 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 >
< div id = "outline-container-org14c7063" class = "outline-3" >
< h3 id = "org14c7063" > < span class = "section-number-3" > 3.3< / span > Controller Design< / h3 >
< div class = "outline-text-3" id = "text-3-3" >
< div id = "org0e2911a" class = "figure" >
< p > < img src = "figs/amplified_piezo_iff_loop_gain.png" alt = "amplified_piezo_iff_loop_gain.png" / >
< / p >
< p > < span class = "figure-number" > Figure 7: < / span > Dynamics for the Integral Force Feedback for three payload masses< / p >
< / div >
< div id = "org5d7f6d3" class = "figure" >
< p > < img src = "figs/amplified_piezo_iff_root_locus.png" alt = "amplified_piezo_iff_root_locus.png" / >
< / p >
< p > < span class = "figure-number" > Figure 8: < / span > Root Locus for the IFF control for three payload masses< / p >
< / div >
< p >
Damping as function of the gain
< / p >
< div id = "org4743c83" class = "figure" >
< p > < img src = "figs/amplified_piezo_iff_damping_gain.png" alt = "amplified_piezo_iff_damping_gain.png" / >
< / p >
< p > < span class = "figure-number" > Figure 9: < / span > Damping ratio of the poles as a function of the IFF gain< / p >
< / div >
< p >
Finally, we use the following controller for the Decentralized Direct Velocity Feedback:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Kiff = -1e4/s*eye(6);
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-org043ce40" class = "outline-3" >
< h3 id = "org043ce40" > < span class = "section-number-3" > 3.4< / span > Effect of the Low Authority Control on the Primary Plant< / h3 >
2020-05-20 16:55:50 +02:00
< div class = "outline-text-3" id = "text-3-4" >
< 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 >
< p > < span class = "figure-number" > Figure 10: < / span > Primary plant in the task space with (dashed) and without (solid) IFF< / p >
< / 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 >
< p > < span class = "figure-number" > Figure 11: < / span > Primary plant in the space of the legs with (dashed) and without (solid) IFF< / p >
< / 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 >
< p > < span class = "figure-number" > Figure 12: < / span > Coupling in the primary plant in the task with (dashed) and without (solid) IFF< / p >
< / 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 >
< p > < span class = "figure-number" > Figure 13: < / span > Coupling in the primary plant in the space of the legs with (dashed) and without (solid) IFF< / p >
< / div >
< / div >
< / div >
< div id = "outline-container-orgbc2f246" class = "outline-3" >
< h3 id = "orgbc2f246" > < span class = "section-number-3" > 3.5< / span > Effect of the Low Authority Control on the Sensibility to Disturbances< / h3 >
< div class = "outline-text-3" id = "text-3-5" >
< div id = "org56179cd" class = "figure" >
< p > < img src = "figs/amplified_piezo_iff_disturbances.png" alt = "amplified_piezo_iff_disturbances.png" / >
< / p >
< p > < span class = "figure-number" > Figure 14: < / span > Norm of the transfer function from vertical disturbances to vertical position error with (dashed) and without (solid) Integral Force Feedback applied< / p >
< / div >
< div class = "important" >
< / div >
< / div >
2020-05-20 16:41:34 +02:00
< / div >
< / div >
2020-05-20 15:49:43 +02:00
< / div >
< div id = "postamble" class = "status" >
< p class = "author" > Author: Dehaeze Thomas< / p >
2020-05-20 16:55:50 +02:00
< p class = "date" > Created: 2020-05-20 mer. 16:56< / p >
2020-05-20 15:49:43 +02:00
< / div >
< / body >
< / html >