nass-simscape/docs/amplified_piezoelectric_stack.html

1054 lines
34 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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 mar. 13:48 -->
<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>MathJax = {
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>
<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>
<li><a href="#orged9310d">1.4. Analytical Model</a></li>
<li><a href="#org2f351a4">1.5. Analytical Analysis</a></li>
</ul>
</li>
<li><a href="#orgf1a765f">2. Rotating X-Y platform</a>
<ul>
<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>
<li><a href="#org069f401">2.4. Analysis</a></li>
</ul>
</li>
<li><a href="#org3c74f7f">3. Stewart Platform with Amplified Actuators</a>
<ul>
<li><a href="#org5a7c6dc">3.1. Initialization</a></li>
<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>
</ul>
</li>
</ul>
</div>
</div>
<p>
The presented model is based on (<a href="#citeproc_bib_item_2">Souleille et al. 2018</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">&#xa0;</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>
<div id="outline-container-org76fe747" class="outline-3">
<h3 id="org76fe747"><span class="section-number-3">1.1</span> Parameters</h3>
<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>
<div id="outline-container-orgbe95c15" class="outline-3">
<h3 id="orgbe95c15"><span class="section-number-3">1.2</span> Identification</h3>
<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>
<div id="outline-container-orgeaad673" class="outline-3">
<h3 id="orgeaad673"><span class="section-number-3">1.3</span> Root Locus</h3>
<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 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&rsquo;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>
<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>
</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">
<p>
This analysis gave rise to a paper (<a href="#citeproc_bib_item_1">Dehaeze and Collette 2020</a>).
</p>
</div>
<div id="outline-container-orga31e2d2" class="outline-3">
<h3 id="orga31e2d2"><span class="section-number-3">2.1</span> Parameters</h3>
<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>
<div id="outline-container-orgb7a6747" class="outline-3">
<h3 id="orgb7a6747"><span class="section-number-3">2.2</span> Identification</h3>
<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 5: </span>Transfer function matrix from forces to force sensors for multiple rotation speed</p>
</div>
</div>
</div>
<div id="outline-container-org290de6f" class="outline-3">
<h3 id="org290de6f"><span class="section-number-3">2.3</span> Root Locus</h3>
<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 6: </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&rsquo;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 7: </span>Root Locus for the two considered rotation speed. For the red curve, the system is unstable.</p>
</div>
</div>
</div>
</div>
<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>
<div id="outline-container-orgdfe4eeb" class="outline-3">
<h3 id="orgdfe4eeb"><span class="section-number-3">3.2</span> APA-100 Amplified Actuator</h3>
<div class="outline-text-3" id="text-3-2">
</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">
<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&rsquo;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-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>
<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 8: </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 9: </span>Root Locus for the IFF control for three payload masses</p>
</div>
<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 10: </span>Damping ratio of the poles as a function of the IFF gain</p>
</div>
<p>
The following controller for the Decentralized Integral Force Feedback is used:
</p>
<div class="org-src-container">
<pre class="src src-matlab">Kiff = -1e4/s*eye(6);
</pre>
</div>
</div>
</div>
<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">
<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 11: </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 12: </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 13: </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 14: </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-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">
<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 15: </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>
</div>
<div class="outline-text-3" id="text-3-2">
<div class="important">
</div>
</div>
</div>
<div id="outline-container-org297c2ad" class="outline-3">
<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&rsquo;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>
</div>
<div id="outline-container-org1e2f810" class="outline-3">
<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&rsquo;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&rsquo;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.5em; margin-left: 1.5em;}</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:15765.</div>
</div>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-09-01 mar. 13:48</p>
</div>
</body>
</html>