phd-nass-fem/index.html

2702 lines
72 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-08-04 mar. 12:14 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Finite Element Model with Simscape</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">Finite Element Model with Simscape</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org11711e7">1. Amplified Piezoelectric Actuator - 3D elements</a>
<ul>
<li><a href="#org605569c">1.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#org3cecb96">1.2. Output parameters</a></li>
<li><a href="#org8320da0">1.3. Piezoelectric parameters</a></li>
<li><a href="#org143c785">1.4. Identification of the Dynamics</a></li>
<li><a href="#orgf5d3703">1.5. Comparison with Ansys</a></li>
<li><a href="#org3631f01">1.6. Force Sensor</a></li>
<li><a href="#orge78d6e7">1.7. Distributed Actuator</a></li>
<li><a href="#orgeb1fcd5">1.8. Distributed Actuator and Force Sensor</a></li>
<li><a href="#org8b3ceb4">1.9. Dynamics from input voltage to displacement</a></li>
<li><a href="#orgc70429c">1.10. Dynamics from input voltage to output voltage</a></li>
</ul>
</li>
<li><a href="#orgb41a9c6">2. APA300ML</a>
<ul>
<li><a href="#org30af002">2.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#org85fa434">2.2. Output parameters</a></li>
<li><a href="#org5cdf888">2.3. Piezoelectric parameters</a></li>
<li><a href="#orgee1c2b0">2.4. Identification of the APA Characteristics</a>
<ul>
<li><a href="#org14fc9b3">2.4.1. Stiffness</a></li>
<li><a href="#org8015f10">2.4.2. Resonance Frequency</a></li>
<li><a href="#org944a6aa">2.4.3. Amplification factor</a></li>
<li><a href="#orgafa7bfa">2.4.4. Stroke</a></li>
</ul>
</li>
<li><a href="#org556c829">2.5. Identification of the Dynamics</a></li>
<li><a href="#orgf7bedc8">2.6. IFF</a></li>
<li><a href="#org0ec6d6d">2.7. DVF</a></li>
<li><a href="#org389e503">2.8. Identification for a simpler model</a></li>
</ul>
</li>
<li><a href="#org302c208">3. Flexible Joint</a>
<ul>
<li><a href="#org0d5de26">3.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#orgdf345b2">3.2. Output parameters</a></li>
<li><a href="#orgdaac86c">3.3. Flexible Joint Characteristics</a></li>
<li><a href="#org6162023">3.4. Identification of the parameters using Simscape</a></li>
<li><a href="#org8dd435e">3.5. Simpler Model</a></li>
</ul>
</li>
<li><a href="#org91af791">4. Integral Force Feedback with Amplified Piezo</a>
<ul>
<li><a href="#orga880b08">4.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#org4520a0d">4.2. IFF Plant</a></li>
<li><a href="#orge7a688b">4.3. IFF controller</a></li>
<li><a href="#org0515ee4">4.4. Closed Loop System</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-org11711e7" class="outline-2">
<h2 id="org11711e7"><span class="section-number-2">1</span> Amplified Piezoelectric Actuator - 3D elements</h2>
<div class="outline-text-2" id="text-1">
<p>
The idea here is to:
</p>
<ul class="org-ul">
<li>export a FEM of an amplified piezoelectric actuator from Ansys to Matlab</li>
<li>import it into a Simscape model</li>
<li>compare the obtained dynamics</li>
<li>add 10kg mass on top of the actuator and identify the dynamics</li>
<li>compare with results from Ansys where 10kg are directly added to the FEM</li>
</ul>
</div>
<div id="outline-container-org605569c" class="outline-3">
<h3 id="org605569c"><span class="section-number-3">1.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3>
<div class="outline-text-3" id="text-1-1">
<p>
We first extract the stiffness and mass matrices.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K = extractMatrix('piezo_amplified_3d_K.txt');
M = extractMatrix('piezo_amplified_3d_M.txt');
</pre>
</div>
<p>
Then, we extract the coordinates of the interface nodes.
</p>
<div class="org-src-container">
<pre class="src src-matlab">[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('piezo_amplified_3d.txt');
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">save('./mat/piezo_amplified_3d.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
</pre>
</div>
</div>
</div>
<div id="outline-container-org3cecb96" class="outline-3">
<h3 id="org3cecb96"><span class="section-number-3">1.2</span> Output parameters</h3>
<div class="outline-text-3" id="text-1-2">
<div class="org-src-container">
<pre class="src src-matlab">load('./mat/piezo_amplified_3d.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
</pre>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-left">Total number of Nodes</td>
<td class="org-right">168959</td>
</tr>
<tr>
<td class="org-left">Number of interface Nodes</td>
<td class="org-right">13</td>
</tr>
<tr>
<td class="org-left">Number of Modes</td>
<td class="org-right">30</td>
</tr>
<tr>
<td class="org-left">Size of M and K matrices</td>
<td class="org-right">108</td>
</tr>
</tbody>
</table>
<div id="org19ef33f" class="figure">
<p><img src="figs/amplified_piezo_interface_nodes.png" alt="amplified_piezo_interface_nodes.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Interface Nodes for the Amplified Piezo Actuator</p>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 1:</span> Coordinates of the interface nodes</caption>
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-right">Node i</th>
<th scope="col" class="org-right">Node Number</th>
<th scope="col" class="org-right">x [m]</th>
<th scope="col" class="org-right">y [m]</th>
<th scope="col" class="org-right">z [m]</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-right">1.0</td>
<td class="org-right">168947.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.03</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">2.0</td>
<td class="org-right">168949.0</td>
<td class="org-right">0.0</td>
<td class="org-right">-0.03</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">3.0</td>
<td class="org-right">168950.0</td>
<td class="org-right">-0.035</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">4.0</td>
<td class="org-right">168951.0</td>
<td class="org-right">-0.028</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">5.0</td>
<td class="org-right">168952.0</td>
<td class="org-right">-0.021</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">6.0</td>
<td class="org-right">168953.0</td>
<td class="org-right">-0.014</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">7.0</td>
<td class="org-right">168954.0</td>
<td class="org-right">-0.007</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">8.0</td>
<td class="org-right">168955.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">9.0</td>
<td class="org-right">168956.0</td>
<td class="org-right">0.007</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">10.0</td>
<td class="org-right">168957.0</td>
<td class="org-right">0.014</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">11.0</td>
<td class="org-right">168958.0</td>
<td class="org-right">0.021</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">12.0</td>
<td class="org-right">168959.0</td>
<td class="org-right">0.035</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">13.0</td>
<td class="org-right">168960.0</td>
<td class="org-right">0.028</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 2:</span> First 10x10 elements of the Stiffness matrix</caption>
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-right">300000000.0</td>
<td class="org-right">-30000.0</td>
<td class="org-right">8000.0</td>
<td class="org-right">-200.0</td>
<td class="org-right">-30.0</td>
<td class="org-right">-60000.0</td>
<td class="org-right">20000000.0</td>
<td class="org-right">-4000.0</td>
<td class="org-right">500.0</td>
<td class="org-right">8</td>
</tr>
<tr>
<td class="org-right">-30000.0</td>
<td class="org-right">100000000.0</td>
<td class="org-right">400.0</td>
<td class="org-right">30.0</td>
<td class="org-right">200.0</td>
<td class="org-right">-1</td>
<td class="org-right">4000.0</td>
<td class="org-right">-8000000.0</td>
<td class="org-right">800.0</td>
<td class="org-right">7</td>
</tr>
<tr>
<td class="org-right">8000.0</td>
<td class="org-right">400.0</td>
<td class="org-right">50000000.0</td>
<td class="org-right">-800000.0</td>
<td class="org-right">-300.0</td>
<td class="org-right">-40.0</td>
<td class="org-right">300.0</td>
<td class="org-right">100.0</td>
<td class="org-right">5000000.0</td>
<td class="org-right">40000.0</td>
</tr>
<tr>
<td class="org-right">-200.0</td>
<td class="org-right">30.0</td>
<td class="org-right">-800000.0</td>
<td class="org-right">20000.0</td>
<td class="org-right">5</td>
<td class="org-right">1</td>
<td class="org-right">-10.0</td>
<td class="org-right">-2</td>
<td class="org-right">-40000.0</td>
<td class="org-right">-300.0</td>
</tr>
<tr>
<td class="org-right">-30.0</td>
<td class="org-right">200.0</td>
<td class="org-right">-300.0</td>
<td class="org-right">5</td>
<td class="org-right">40000.0</td>
<td class="org-right">0.3</td>
<td class="org-right">-4</td>
<td class="org-right">-10.0</td>
<td class="org-right">40.0</td>
<td class="org-right">0.4</td>
</tr>
<tr>
<td class="org-right">-60000.0</td>
<td class="org-right">-1</td>
<td class="org-right">-40.0</td>
<td class="org-right">1</td>
<td class="org-right">0.3</td>
<td class="org-right">3000.0</td>
<td class="org-right">7000.0</td>
<td class="org-right">0.8</td>
<td class="org-right">-1</td>
<td class="org-right">0.0003</td>
</tr>
<tr>
<td class="org-right">20000000.0</td>
<td class="org-right">4000.0</td>
<td class="org-right">300.0</td>
<td class="org-right">-10.0</td>
<td class="org-right">-4</td>
<td class="org-right">7000.0</td>
<td class="org-right">300000000.0</td>
<td class="org-right">20000.0</td>
<td class="org-right">3000.0</td>
<td class="org-right">80.0</td>
</tr>
<tr>
<td class="org-right">-4000.0</td>
<td class="org-right">-8000000.0</td>
<td class="org-right">100.0</td>
<td class="org-right">-2</td>
<td class="org-right">-10.0</td>
<td class="org-right">0.8</td>
<td class="org-right">20000.0</td>
<td class="org-right">100000000.0</td>
<td class="org-right">-4000.0</td>
<td class="org-right">-100.0</td>
</tr>
<tr>
<td class="org-right">500.0</td>
<td class="org-right">800.0</td>
<td class="org-right">5000000.0</td>
<td class="org-right">-40000.0</td>
<td class="org-right">40.0</td>
<td class="org-right">-1</td>
<td class="org-right">3000.0</td>
<td class="org-right">-4000.0</td>
<td class="org-right">50000000.0</td>
<td class="org-right">800000.0</td>
</tr>
<tr>
<td class="org-right">8</td>
<td class="org-right">7</td>
<td class="org-right">40000.0</td>
<td class="org-right">-300.0</td>
<td class="org-right">0.4</td>
<td class="org-right">0.0003</td>
<td class="org-right">80.0</td>
<td class="org-right">-100.0</td>
<td class="org-right">800000.0</td>
<td class="org-right">20000.0</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 3:</span> First 10x10 elements of the Mass matrix</caption>
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-right">0.03</td>
<td class="org-right">2e-06</td>
<td class="org-right">-2e-07</td>
<td class="org-right">1e-08</td>
<td class="org-right">2e-08</td>
<td class="org-right">0.0002</td>
<td class="org-right">-0.001</td>
<td class="org-right">2e-07</td>
<td class="org-right">-8e-08</td>
<td class="org-right">-9e-10</td>
</tr>
<tr>
<td class="org-right">2e-06</td>
<td class="org-right">0.02</td>
<td class="org-right">-5e-07</td>
<td class="org-right">7e-09</td>
<td class="org-right">3e-08</td>
<td class="org-right">2e-08</td>
<td class="org-right">-3e-07</td>
<td class="org-right">0.0003</td>
<td class="org-right">-1e-08</td>
<td class="org-right">1e-10</td>
</tr>
<tr>
<td class="org-right">-2e-07</td>
<td class="org-right">-5e-07</td>
<td class="org-right">0.02</td>
<td class="org-right">-9e-05</td>
<td class="org-right">4e-09</td>
<td class="org-right">-1e-08</td>
<td class="org-right">2e-07</td>
<td class="org-right">-2e-08</td>
<td class="org-right">-0.0006</td>
<td class="org-right">-5e-06</td>
</tr>
<tr>
<td class="org-right">1e-08</td>
<td class="org-right">7e-09</td>
<td class="org-right">-9e-05</td>
<td class="org-right">1e-06</td>
<td class="org-right">6e-11</td>
<td class="org-right">4e-10</td>
<td class="org-right">-1e-09</td>
<td class="org-right">3e-11</td>
<td class="org-right">5e-06</td>
<td class="org-right">3e-08</td>
</tr>
<tr>
<td class="org-right">2e-08</td>
<td class="org-right">3e-08</td>
<td class="org-right">4e-09</td>
<td class="org-right">6e-11</td>
<td class="org-right">1e-06</td>
<td class="org-right">2e-10</td>
<td class="org-right">-2e-09</td>
<td class="org-right">2e-10</td>
<td class="org-right">-7e-09</td>
<td class="org-right">-4e-11</td>
</tr>
<tr>
<td class="org-right">0.0002</td>
<td class="org-right">2e-08</td>
<td class="org-right">-1e-08</td>
<td class="org-right">4e-10</td>
<td class="org-right">2e-10</td>
<td class="org-right">2e-06</td>
<td class="org-right">-2e-06</td>
<td class="org-right">-1e-09</td>
<td class="org-right">-7e-10</td>
<td class="org-right">-9e-12</td>
</tr>
<tr>
<td class="org-right">-0.001</td>
<td class="org-right">-3e-07</td>
<td class="org-right">2e-07</td>
<td class="org-right">-1e-09</td>
<td class="org-right">-2e-09</td>
<td class="org-right">-2e-06</td>
<td class="org-right">0.03</td>
<td class="org-right">-2e-06</td>
<td class="org-right">-1e-07</td>
<td class="org-right">-5e-09</td>
</tr>
<tr>
<td class="org-right">2e-07</td>
<td class="org-right">0.0003</td>
<td class="org-right">-2e-08</td>
<td class="org-right">3e-11</td>
<td class="org-right">2e-10</td>
<td class="org-right">-1e-09</td>
<td class="org-right">-2e-06</td>
<td class="org-right">0.02</td>
<td class="org-right">-8e-07</td>
<td class="org-right">-1e-08</td>
</tr>
<tr>
<td class="org-right">-8e-08</td>
<td class="org-right">-1e-08</td>
<td class="org-right">-0.0006</td>
<td class="org-right">5e-06</td>
<td class="org-right">-7e-09</td>
<td class="org-right">-7e-10</td>
<td class="org-right">-1e-07</td>
<td class="org-right">-8e-07</td>
<td class="org-right">0.02</td>
<td class="org-right">9e-05</td>
</tr>
<tr>
<td class="org-right">-9e-10</td>
<td class="org-right">1e-10</td>
<td class="org-right">-5e-06</td>
<td class="org-right">3e-08</td>
<td class="org-right">-4e-11</td>
<td class="org-right">-9e-12</td>
<td class="org-right">-5e-09</td>
<td class="org-right">-1e-08</td>
<td class="org-right">9e-05</td>
<td class="org-right">1e-06</td>
</tr>
</tbody>
</table>
<p>
Using <code>K</code>, <code>M</code> and <code>int_xyz</code>, we can use the <code>Reduced Order Flexible Solid</code> simscape block.
</p>
</div>
</div>
<div id="outline-container-org8320da0" class="outline-3">
<h3 id="org8320da0"><span class="section-number-3">1.3</span> Piezoelectric parameters</h3>
<div class="outline-text-3" id="text-1-3">
<p>
Parameters for the APA95ML:
</p>
<div class="org-src-container">
<pre class="src src-matlab">d33 = 3e-10; % Strain constant [m/V]
n = 80; % Number of layers per stack
eT = 1.6e-7; % Permittivity under constant stress [F/m]
sD = 2e-11; % Elastic compliance under constant electric displacement [m2/N]
ka = 235e6; % Stack stiffness [N/m]
C = 5e-6; % Stack capactiance [F]
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">na = 2; % Number of stacks used as actuator
ns = 1; % Number of stacks used as force sensor
</pre>
</div>
<p>
The ratio of the developed force to applied voltage is \(d_{33} n k_a\) in [N/V].
We denote this constant by \(g_a\) and:
\[ F_a = g_a V_a, \quad g_a = d_{33} n k_a \]
</p>
<div class="org-src-container">
<pre class="src src-matlab">d33*(na*n)*(ka/(na + ns)) % [N/V]
</pre>
</div>
<pre class="example">
3.76
</pre>
<p>
From (<a href="#citeproc_bib_item_1">Fleming and Leang 2014</a>) (page 123), the relation between relative displacement and generated voltage is:
\[ V_s = \frac{d_{33}}{\epsilon^T s^D n} \Delta h \]
where:
</p>
<ul class="org-ul">
<li>\(V_s\): measured voltage [V]</li>
<li>\(d_{33}\): strain constant [m/V]</li>
<li>\(\epsilon^T\): permittivity under constant stress [F/m]</li>
<li>\(s^D\): elastic compliance under constant electric displacement [m^2/N]</li>
<li>\(n\): number of layers</li>
<li>\(\Delta h\): relative displacement [m]</li>
</ul>
<div class="org-src-container">
<pre class="src src-matlab">1e-6*d33/(eT*sD*ns*n) % [V/um]
</pre>
</div>
<pre class="example">
1.1719
</pre>
</div>
</div>
<div id="outline-container-org143c785" class="outline-3">
<h3 id="org143c785"><span class="section-number-3">1.4</span> Identification of the Dynamics</h3>
<div class="outline-text-3" id="text-1-4">
<p>
The flexible element is imported using the <code>Reduced Order Flexible Solid</code> simscape block.
</p>
<p>
To model the actuator, an <code>Internal Force</code> block is added between the nodes 3 and 12.
A <code>Relative Motion Sensor</code> block is added between the nodes 1 and 2 to measure the displacement and the amplified piezo.
</p>
<p>
One mass is fixed at one end of the piezo-electric stack actuator, the other end is fixed to the world frame.
</p>
<p>
We first set the mass to be zero.
</p>
<div class="org-src-container">
<pre class="src src-matlab">m = 0.01;
</pre>
</div>
<p>
The dynamics is identified from the applied force to the measured relative displacement.
</p>
<div class="org-src-container">
<pre class="src src-matlab">%% Name of the Simulink File
mdl = 'piezo_amplified_3d';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/y'], 1, 'openoutput'); io_i = io_i + 1;
Gh = -linearize(mdl, io);
</pre>
</div>
<p>
Then, we add 10Kg of mass:
</p>
<div class="org-src-container">
<pre class="src src-matlab">m = 5;
</pre>
</div>
<p>
And the dynamics is identified.
</p>
<p>
The two identified dynamics are compared in Figure <a href="#orga651bf2">2</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">%% Name of the Simulink File
mdl = 'piezo_amplified_3d';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/y'], 1, 'openoutput'); io_i = io_i + 1;
Ghm = -linearize(mdl, io);
</pre>
</div>
<div id="orga651bf2" class="figure">
<p><img src="figs/dynamics_act_disp_comp_mass.png" alt="dynamics_act_disp_comp_mass.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Dynamics from \(F\) to \(d\) without a payload and with a 10kg payload</p>
</div>
</div>
</div>
<div id="outline-container-orgf5d3703" class="outline-3">
<h3 id="orgf5d3703"><span class="section-number-3">1.5</span> Comparison with Ansys</h3>
<div class="outline-text-3" id="text-1-5">
<p>
Let&rsquo;s import the results from an Harmonic response analysis in Ansys.
</p>
<div class="org-src-container">
<pre class="src src-matlab">Gresp0 = readtable('FEA_HarmResponse_00kg.txt');
Gresp10 = readtable('FEA_HarmResponse_10kg.txt');
</pre>
</div>
<p>
The obtained dynamics from the Simscape model and from the Ansys analysis are compare in Figure <a href="#orgf1820ec">3</a>.
</p>
<div id="orgf1820ec" class="figure">
<p><img src="figs/dynamics_force_disp_comp_anasys.png" alt="dynamics_force_disp_comp_anasys.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Comparison of the obtained dynamics using Simscape with the harmonic response analysis using Ansys</p>
</div>
</div>
</div>
<div id="outline-container-org3631f01" class="outline-3">
<h3 id="org3631f01"><span class="section-number-3">1.6</span> Force Sensor</h3>
<div class="outline-text-3" id="text-1-6">
<p>
The dynamics is identified from internal forces applied between nodes 3 and 11 to the relative displacement of nodes 11 and 13.
</p>
<p>
The obtained dynamics is shown in Figure <a href="#org4257ce1">4</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">m = 0;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">%% Name of the Simulink File
mdl = 'piezo_amplified_3d';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/Fa'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/Fs'], 1, 'openoutput'); io_i = io_i + 1;
Gf = linearize(mdl, io);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">m = 10;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">%% Name of the Simulink File
mdl = 'piezo_amplified_3d';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/Fa'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/Fs'], 1, 'openoutput'); io_i = io_i + 1;
Gfm = linearize(mdl, io);
</pre>
</div>
<div id="org4257ce1" class="figure">
<p><img src="figs/dynamics_force_force_sensor_comp_mass.png" alt="dynamics_force_force_sensor_comp_mass.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Dynamics from \(F\) to \(F_m\) for \(m=0\) and \(m = 10kg\)</p>
</div>
</div>
</div>
<div id="outline-container-orge78d6e7" class="outline-3">
<h3 id="orge78d6e7"><span class="section-number-3">1.7</span> Distributed Actuator</h3>
<div class="outline-text-3" id="text-1-7">
<div class="org-src-container">
<pre class="src src-matlab">m = 0;
</pre>
</div>
<p>
The dynamics is identified from the applied force to the measured relative displacement.
</p>
<div class="org-src-container">
<pre class="src src-matlab">%% Name of the Simulink File
mdl = 'piezo_amplified_3d_distri';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/y'], 1, 'openoutput'); io_i = io_i + 1;
Gd = linearize(mdl, io);
</pre>
</div>
<p>
Then, we add 10Kg of mass:
</p>
<div class="org-src-container">
<pre class="src src-matlab">m = 10;
</pre>
</div>
<p>
And the dynamics is identified.
</p>
<div class="org-src-container">
<pre class="src src-matlab">%% Name of the Simulink File
mdl = 'piezo_amplified_3d_distri';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/y'], 1, 'openoutput'); io_i = io_i + 1;
Gdm = linearize(mdl, io);
</pre>
</div>
</div>
</div>
<div id="outline-container-orgeb1fcd5" class="outline-3">
<h3 id="orgeb1fcd5"><span class="section-number-3">1.8</span> Distributed Actuator and Force Sensor</h3>
<div class="outline-text-3" id="text-1-8">
<div class="org-src-container">
<pre class="src src-matlab">m = 0;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">%% Name of the Simulink File
mdl = 'piezo_amplified_3d_distri_act_sens';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/Fm'], 1, 'openoutput'); io_i = io_i + 1;
Gfd = linearize(mdl, io);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">m = 10;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">%% Name of the Simulink File
mdl = 'piezo_amplified_3d_distri_act_sens';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/Fm'], 1, 'openoutput'); io_i = io_i + 1;
Gfdm = linearize(mdl, io);
</pre>
</div>
</div>
</div>
<div id="outline-container-org8b3ceb4" class="outline-3">
<h3 id="org8b3ceb4"><span class="section-number-3">1.9</span> Dynamics from input voltage to displacement</h3>
<div class="outline-text-3" id="text-1-9">
<div class="org-src-container">
<pre class="src src-matlab">m = 5;
</pre>
</div>
<p>
And the dynamics is identified.
</p>
<p>
The two identified dynamics are compared in Figure <a href="#orga651bf2">2</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">%% Name of the Simulink File
mdl = 'piezo_amplified_3d';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/V'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/y'], 1, 'openoutput'); io_i = io_i + 1;
G = -linearize(mdl, io);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">save('../test-bench-apa/mat/fem_model_5kg.mat', 'G')
</pre>
</div>
</div>
</div>
<div id="outline-container-orgc70429c" class="outline-3">
<h3 id="orgc70429c"><span class="section-number-3">1.10</span> Dynamics from input voltage to output voltage</h3>
<div class="outline-text-3" id="text-1-10">
<div class="org-src-container">
<pre class="src src-matlab">m = 5;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">%% Name of the Simulink File
mdl = 'piezo_amplified_3d';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/Va'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/Vs'], 1, 'openoutput'); io_i = io_i + 1;
G = -linearize(mdl, io);
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-orgb41a9c6" class="outline-2">
<h2 id="orgb41a9c6"><span class="section-number-2">2</span> APA300ML</h2>
<div class="outline-text-2" id="text-2">
<div id="orgaa4b384" class="figure">
<p><img src="figs/apa300ml_ansys.jpg" alt="apa300ml_ansys.jpg" />
</p>
<p><span class="figure-number">Figure 5: </span>Ansys FEM of the APA300ML</p>
</div>
</div>
<div id="outline-container-org30af002" class="outline-3">
<h3 id="org30af002"><span class="section-number-3">2.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3>
<div class="outline-text-3" id="text-2-1">
<p>
We first extract the stiffness and mass matrices.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K = extractMatrix('mat_K-48modes-7MDoF.matrix');
M = extractMatrix('mat_M-48modes-7MDoF.matrix');
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">K = extractMatrix('mat_K-80modes-7MDoF.matrix');
M = extractMatrix('mat_M-80modes-7MDoF.matrix');
</pre>
</div>
<p>
Then, we extract the coordinates of the interface nodes.
</p>
<div class="org-src-container">
<pre class="src src-matlab">[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('Nodes_MDoF_NLIST_MLIST.txt');
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">save('./mat/APA300ML.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
</pre>
</div>
</div>
</div>
<div id="outline-container-org85fa434" class="outline-3">
<h3 id="org85fa434"><span class="section-number-3">2.2</span> Output parameters</h3>
<div class="outline-text-3" id="text-2-2">
<div class="org-src-container">
<pre class="src src-matlab">load('./mat/APA300ML.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
</pre>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-left">Total number of Nodes</td>
<td class="org-right">7</td>
</tr>
<tr>
<td class="org-left">Number of interface Nodes</td>
<td class="org-right">7</td>
</tr>
<tr>
<td class="org-left">Number of Modes</td>
<td class="org-right">6</td>
</tr>
<tr>
<td class="org-left">Size of M and K matrices</td>
<td class="org-right">48</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 4:</span> Coordinates of the interface nodes</caption>
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-right">Node i</th>
<th scope="col" class="org-right">Node Number</th>
<th scope="col" class="org-right">x [m]</th>
<th scope="col" class="org-right">y [m]</th>
<th scope="col" class="org-right">z [m]</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-right">1.0</td>
<td class="org-right">53917.0</td>
<td class="org-right">0.0</td>
<td class="org-right">-0.015</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">2.0</td>
<td class="org-right">53918.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.015</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">3.0</td>
<td class="org-right">53919.0</td>
<td class="org-right">-0.0325</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">4.0</td>
<td class="org-right">53920.0</td>
<td class="org-right">-0.0125</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">5.0</td>
<td class="org-right">53921.0</td>
<td class="org-right">-0.0075</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">6.0</td>
<td class="org-right">53922.0</td>
<td class="org-right">0.0125</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">7.0</td>
<td class="org-right">53923.0</td>
<td class="org-right">0.0325</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 5:</span> First 10x10 elements of the Stiffness matrix</caption>
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-right">200000000.0</td>
<td class="org-right">30000.0</td>
<td class="org-right">50000.0</td>
<td class="org-right">200.0</td>
<td class="org-right">-100.0</td>
<td class="org-right">-300000.0</td>
<td class="org-right">10000000.0</td>
<td class="org-right">-6000.0</td>
<td class="org-right">20000.0</td>
<td class="org-right">-60.0</td>
</tr>
<tr>
<td class="org-right">30000.0</td>
<td class="org-right">7000000.0</td>
<td class="org-right">10000.0</td>
<td class="org-right">30.0</td>
<td class="org-right">-30.0</td>
<td class="org-right">-70.0</td>
<td class="org-right">7000.0</td>
<td class="org-right">-500000.0</td>
<td class="org-right">3000.0</td>
<td class="org-right">-10.0</td>
</tr>
<tr>
<td class="org-right">50000.0</td>
<td class="org-right">10000.0</td>
<td class="org-right">30000000.0</td>
<td class="org-right">200000.0</td>
<td class="org-right">-200.0</td>
<td class="org-right">-100.0</td>
<td class="org-right">20000.0</td>
<td class="org-right">-2000.0</td>
<td class="org-right">2000000.0</td>
<td class="org-right">-9000.0</td>
</tr>
<tr>
<td class="org-right">200.0</td>
<td class="org-right">30.0</td>
<td class="org-right">200000.0</td>
<td class="org-right">1000.0</td>
<td class="org-right">-0.8</td>
<td class="org-right">-0.4</td>
<td class="org-right">50.0</td>
<td class="org-right">-6</td>
<td class="org-right">9000.0</td>
<td class="org-right">-30.0</td>
</tr>
<tr>
<td class="org-right">-100.0</td>
<td class="org-right">-30.0</td>
<td class="org-right">-200.0</td>
<td class="org-right">-0.8</td>
<td class="org-right">10000.0</td>
<td class="org-right">0.2</td>
<td class="org-right">-40.0</td>
<td class="org-right">10.0</td>
<td class="org-right">20.0</td>
<td class="org-right">-0.05</td>
</tr>
<tr>
<td class="org-right">-300000.0</td>
<td class="org-right">-70.0</td>
<td class="org-right">-100.0</td>
<td class="org-right">-0.4</td>
<td class="org-right">0.2</td>
<td class="org-right">900.0</td>
<td class="org-right">-30000.0</td>
<td class="org-right">10.0</td>
<td class="org-right">-40.0</td>
<td class="org-right">0.1</td>
</tr>
<tr>
<td class="org-right">10000000.0</td>
<td class="org-right">7000.0</td>
<td class="org-right">20000.0</td>
<td class="org-right">50.0</td>
<td class="org-right">-40.0</td>
<td class="org-right">-30000.0</td>
<td class="org-right">200000000.0</td>
<td class="org-right">-50000.0</td>
<td class="org-right">30000.0</td>
<td class="org-right">-50.0</td>
</tr>
<tr>
<td class="org-right">-6000.0</td>
<td class="org-right">-500000.0</td>
<td class="org-right">-2000.0</td>
<td class="org-right">-6</td>
<td class="org-right">10.0</td>
<td class="org-right">10.0</td>
<td class="org-right">-50000.0</td>
<td class="org-right">7000000.0</td>
<td class="org-right">-4000.0</td>
<td class="org-right">8</td>
</tr>
<tr>
<td class="org-right">20000.0</td>
<td class="org-right">3000.0</td>
<td class="org-right">2000000.0</td>
<td class="org-right">9000.0</td>
<td class="org-right">20.0</td>
<td class="org-right">-40.0</td>
<td class="org-right">30000.0</td>
<td class="org-right">-4000.0</td>
<td class="org-right">30000000.0</td>
<td class="org-right">-200000.0</td>
</tr>
<tr>
<td class="org-right">-60.0</td>
<td class="org-right">-10.0</td>
<td class="org-right">-9000.0</td>
<td class="org-right">-30.0</td>
<td class="org-right">-0.05</td>
<td class="org-right">0.1</td>
<td class="org-right">-50.0</td>
<td class="org-right">8</td>
<td class="org-right">-200000.0</td>
<td class="org-right">1000.0</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 6:</span> First 10x10 elements of the Mass matrix</caption>
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-right">0.01</td>
<td class="org-right">7e-06</td>
<td class="org-right">-5e-06</td>
<td class="org-right">-6e-08</td>
<td class="org-right">3e-09</td>
<td class="org-right">-5e-05</td>
<td class="org-right">-0.0005</td>
<td class="org-right">-2e-07</td>
<td class="org-right">-3e-06</td>
<td class="org-right">1e-08</td>
</tr>
<tr>
<td class="org-right">7e-06</td>
<td class="org-right">0.009</td>
<td class="org-right">4e-07</td>
<td class="org-right">6e-09</td>
<td class="org-right">-4e-09</td>
<td class="org-right">-3e-08</td>
<td class="org-right">-2e-07</td>
<td class="org-right">6e-05</td>
<td class="org-right">5e-07</td>
<td class="org-right">-1e-09</td>
</tr>
<tr>
<td class="org-right">-5e-06</td>
<td class="org-right">4e-07</td>
<td class="org-right">0.01</td>
<td class="org-right">2e-05</td>
<td class="org-right">2e-08</td>
<td class="org-right">3e-08</td>
<td class="org-right">-2e-06</td>
<td class="org-right">-1e-07</td>
<td class="org-right">-0.0002</td>
<td class="org-right">9e-07</td>
</tr>
<tr>
<td class="org-right">-6e-08</td>
<td class="org-right">6e-09</td>
<td class="org-right">2e-05</td>
<td class="org-right">3e-07</td>
<td class="org-right">1e-10</td>
<td class="org-right">3e-10</td>
<td class="org-right">-7e-09</td>
<td class="org-right">2e-10</td>
<td class="org-right">-9e-07</td>
<td class="org-right">3e-09</td>
</tr>
<tr>
<td class="org-right">3e-09</td>
<td class="org-right">-4e-09</td>
<td class="org-right">2e-08</td>
<td class="org-right">1e-10</td>
<td class="org-right">1e-07</td>
<td class="org-right">-3e-12</td>
<td class="org-right">6e-09</td>
<td class="org-right">-2e-10</td>
<td class="org-right">-3e-09</td>
<td class="org-right">9e-12</td>
</tr>
<tr>
<td class="org-right">-5e-05</td>
<td class="org-right">-3e-08</td>
<td class="org-right">3e-08</td>
<td class="org-right">3e-10</td>
<td class="org-right">-3e-12</td>
<td class="org-right">6e-07</td>
<td class="org-right">1e-06</td>
<td class="org-right">-3e-09</td>
<td class="org-right">2e-08</td>
<td class="org-right">-7e-11</td>
</tr>
<tr>
<td class="org-right">-0.0005</td>
<td class="org-right">-2e-07</td>
<td class="org-right">-2e-06</td>
<td class="org-right">-7e-09</td>
<td class="org-right">6e-09</td>
<td class="org-right">1e-06</td>
<td class="org-right">0.01</td>
<td class="org-right">-8e-06</td>
<td class="org-right">-2e-06</td>
<td class="org-right">9e-09</td>
</tr>
<tr>
<td class="org-right">-2e-07</td>
<td class="org-right">6e-05</td>
<td class="org-right">-1e-07</td>
<td class="org-right">2e-10</td>
<td class="org-right">-2e-10</td>
<td class="org-right">-3e-09</td>
<td class="org-right">-8e-06</td>
<td class="org-right">0.009</td>
<td class="org-right">1e-07</td>
<td class="org-right">2e-09</td>
</tr>
<tr>
<td class="org-right">-3e-06</td>
<td class="org-right">5e-07</td>
<td class="org-right">-0.0002</td>
<td class="org-right">-9e-07</td>
<td class="org-right">-3e-09</td>
<td class="org-right">2e-08</td>
<td class="org-right">-2e-06</td>
<td class="org-right">1e-07</td>
<td class="org-right">0.01</td>
<td class="org-right">-2e-05</td>
</tr>
<tr>
<td class="org-right">1e-08</td>
<td class="org-right">-1e-09</td>
<td class="org-right">9e-07</td>
<td class="org-right">3e-09</td>
<td class="org-right">9e-12</td>
<td class="org-right">-7e-11</td>
<td class="org-right">9e-09</td>
<td class="org-right">2e-09</td>
<td class="org-right">-2e-05</td>
<td class="org-right">3e-07</td>
</tr>
</tbody>
</table>
<p>
Using <code>K</code>, <code>M</code> and <code>int_xyz</code>, we can use the <code>Reduced Order Flexible Solid</code> simscape block.
</p>
</div>
</div>
<div id="outline-container-org5cdf888" class="outline-3">
<h3 id="org5cdf888"><span class="section-number-3">2.3</span> Piezoelectric parameters</h3>
<div class="outline-text-3" id="text-2-3">
<p>
Parameters for the APA300ML:
</p>
<div class="org-src-container">
<pre class="src src-matlab">d33 = 3e-10; % Strain constant [m/V]
n = 80; % Number of layers per stack
eT = 1.6e-8; % Permittivity under constant stress [F/m]
sD = 2e-11; % Elastic compliance under constant electric displacement [m2/N]
ka = 235e6; % Stack stiffness [N/m]
C = 5e-6; % Stack capactiance [F]
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">na = 2; % Number of stacks used as actuator
ns = 1; % Number of stacks used as force sensor
</pre>
</div>
<p>
The ratio of the developed force to applied voltage is \(d_{33} n k_a\) in [N/V].
We denote this constant by \(g_a\) and:
\[ F_a = g_a V_a, \quad g_a = d_{33} n k_a \]
</p>
<div class="org-src-container">
<pre class="src src-matlab">d33*(na*n)*(ka/(na + ns)) % [N/V]
</pre>
</div>
<pre class="example">
0.42941
</pre>
<p>
From (<a href="#citeproc_bib_item_1">Fleming and Leang 2014</a>) (page 123), the relation between relative displacement and generated voltage is:
\[ V_s = \frac{d_{33}}{\epsilon^T s^D n} \Delta h \]
where:
</p>
<ul class="org-ul">
<li>\(V_s\): measured voltage [V]</li>
<li>\(d_{33}\): strain constant [m/V]</li>
<li>\(\epsilon^T\): permittivity under constant stress [F/m]</li>
<li>\(s^D\): elastic compliance under constant electric displacement [m^2/N]</li>
<li>\(n\): number of layers</li>
<li>\(\Delta h\): relative displacement [m]</li>
</ul>
<div class="org-src-container">
<pre class="src src-matlab">1e-6*d33/(eT*sD*ns*n) % [V/um]
</pre>
</div>
<pre class="example">
5.8594
</pre>
</div>
</div>
<div id="outline-container-orgee1c2b0" class="outline-3">
<h3 id="orgee1c2b0"><span class="section-number-3">2.4</span> Identification of the APA Characteristics</h3>
<div class="outline-text-3" id="text-2-4">
</div>
<div id="outline-container-org14fc9b3" class="outline-4">
<h4 id="org14fc9b3"><span class="section-number-4">2.4.1</span> Stiffness</h4>
<div class="outline-text-4" id="text-2-4-1">
<p>
The transfer function from vertical external force to the relative vertical displacement is identified.
</p>
<p>
The inverse of its DC gain is the axial stiffness of the APA:
</p>
<div class="org-src-container">
<pre class="src src-matlab">1e-6/dcgain(G) % [N/um]
</pre>
</div>
<pre class="example">
1.8634
</pre>
<p>
The specified stiffness in the datasheet is \(k = 1.8\, [N/\mu m]\).
</p>
</div>
</div>
<div id="outline-container-org8015f10" class="outline-4">
<h4 id="org8015f10"><span class="section-number-4">2.4.2</span> Resonance Frequency</h4>
<div class="outline-text-4" id="text-2-4-2">
<p>
The resonance frequency is specified to be between 650Hz and 840Hz.
This is also the case for the FEM model (Figure <a href="#org56f7212">6</a>).
</p>
<div id="org56f7212" class="figure">
<p><img src="figs/apa300ml_resonance.png" alt="apa300ml_resonance.png" />
</p>
<p><span class="figure-number">Figure 6: </span>First resonance is around 800Hz</p>
</div>
</div>
</div>
<div id="outline-container-org944a6aa" class="outline-4">
<h4 id="org944a6aa"><span class="section-number-4">2.4.3</span> Amplification factor</h4>
<div class="outline-text-4" id="text-2-4-3">
<p>
The amplification factor is the ratio of the axial displacement to the stack displacement.
</p>
<p>
The ratio of the two displacement is computed from the FEM model.
</p>
<div class="org-src-container">
<pre class="src src-matlab">-dcgain(G(1,1))./dcgain(G(2,1))
</pre>
</div>
<pre class="example">
4.936
</pre>
<p>
If we take the ratio of the piezo height and length (approximation of the amplification factor):
</p>
<div class="org-src-container">
<pre class="src src-matlab">75/15
</pre>
</div>
<pre class="example">
5
</pre>
</div>
</div>
<div id="outline-container-orgafa7bfa" class="outline-4">
<h4 id="orgafa7bfa"><span class="section-number-4">2.4.4</span> Stroke</h4>
<div class="outline-text-4" id="text-2-4-4">
<p>
Estimation of the actuator stroke:
\[ \Delta H = A n \Delta L \]
with:
</p>
<ul class="org-ul">
<li>\(\Delta H\) Axial Stroke of the APA</li>
<li>\(A\) Amplification factor (5 for the APA300ML)</li>
<li>\(n\) Number of stack used</li>
<li>\(\Delta L\) Stroke of the stack (0.1% of its length)</li>
</ul>
<div class="org-src-container">
<pre class="src src-matlab">1e6 * 5 * 3 * 20e-3 * 0.1e-2
</pre>
</div>
<pre class="example">
300
</pre>
<p>
This is exactly the specified stroke in the data-sheet.
</p>
</div>
</div>
</div>
<div id="outline-container-org556c829" class="outline-3">
<h3 id="org556c829"><span class="section-number-3">2.5</span> Identification of the Dynamics</h3>
<div class="outline-text-3" id="text-2-5">
<p>
The flexible element is imported using the <code>Reduced Order Flexible Solid</code> simscape block.
</p>
<p>
To model the actuator, an <code>Internal Force</code> block is added between the nodes 3 and 12.
A <code>Relative Motion Sensor</code> block is added between the nodes 1 and 2 to measure the displacement and the amplified piezo.
</p>
<p>
One mass is fixed at one end of the piezo-electric stack actuator, the other end is fixed to the world frame.
</p>
<p>
We first set the mass to be zero.
The dynamics is identified from the applied force to the measured relative displacement.
The same dynamics is identified for a payload mass of 10Kg.
</p>
<div class="org-src-container">
<pre class="src src-matlab">m = 10;
</pre>
</div>
<div id="orgf1438fa" class="figure">
<p><img src="figs/apa300ml_plant_dynamics.png" alt="apa300ml_plant_dynamics.png" />
</p>
<p><span class="figure-number">Figure 7: </span>Transfer function from forces applied by the stack to the axial displacement of the APA</p>
</div>
</div>
</div>
<div id="outline-container-orgf7bedc8" class="outline-3">
<h3 id="orgf7bedc8"><span class="section-number-3">2.6</span> IFF</h3>
<div class="outline-text-3" id="text-2-6">
<p>
Let&rsquo;s use 2 stacks as actuators and 1 stack as force sensor.
</p>
<p>
The transfer function from actuator to sensors is identified and shown in Figure <a href="#orgf24b637">8</a>.
</p>
<div id="orgf24b637" class="figure">
<p><img src="figs/apa300ml_iff_plant.png" alt="apa300ml_iff_plant.png" />
</p>
<p><span class="figure-number">Figure 8: </span>Transfer function from actuator to force sensor</p>
</div>
<p>
For root locus corresponding to IFF is shown in Figure <a href="#org9ea7c48">9</a>.
</p>
<div id="org9ea7c48" class="figure">
<p><img src="figs/apa300ml_iff_root_locus.png" alt="apa300ml_iff_root_locus.png" />
</p>
<p><span class="figure-number">Figure 9: </span>Root Locus for IFF</p>
</div>
</div>
</div>
<div id="outline-container-org0ec6d6d" class="outline-3">
<h3 id="org0ec6d6d"><span class="section-number-3">2.7</span> DVF</h3>
<div class="outline-text-3" id="text-2-7">
<p>
Now the dynamics from the stack actuator to the relative motion sensor is identified and shown in Figure <a href="#org65217e1">10</a>.
</p>
<div id="org65217e1" class="figure">
<p><img src="figs/apa300ml_dvf_plant.png" alt="apa300ml_dvf_plant.png" />
</p>
<p><span class="figure-number">Figure 10: </span>Transfer function from stack actuator to relative motion sensor</p>
</div>
<p>
The root locus for DVF is shown in Figure <a href="#org19d561b">11</a>.
</p>
<div id="org19d561b" class="figure">
<p><img src="figs/apa300ml_dvf_root_locus.png" alt="apa300ml_dvf_root_locus.png" />
</p>
<p><span class="figure-number">Figure 11: </span>Root Locus for Direct Velocity Feedback</p>
</div>
</div>
</div>
<div id="outline-container-org389e503" class="outline-3">
<h3 id="org389e503"><span class="section-number-3">2.8</span> Identification for a simpler model</h3>
<div class="outline-text-3" id="text-2-8">
<p>
The goal in this section is to identify the parameters of a simple APA model from the FEM.
This can be useful is a lower order model is to be used for simulations.
</p>
<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 Actuator (APA) from Cedrat-Technologies (Figure <a href="#org98dd59a">12</a>).
The parameters are shown in the table below.
</p>
<div id="org98dd59a" class="figure">
<p><img src="./figs/souleille18_model_piezo.png" alt="souleille18_model_piezo.png" />
</p>
<p><span class="figure-number">Figure 12: </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 7:</span> Parameters used for the model of the APA 100M</caption>
<colgroup>
<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">Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">\(k_e\)</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">Stiffness of the metallic suspension when the stack is removed</td>
</tr>
<tr>
<td class="org-left">\(k_a\)</td>
<td class="org-left">Stiffness of the actuator</td>
</tr>
<tr>
<td class="org-left">\(c_1\)</td>
<td class="org-left">Added viscous damping</td>
</tr>
</tbody>
</table>
<p>
The goal is to determine \(k_e\), \(k_a\) and \(k_1\) so that the simplified model fits the FEM model.
</p>
<p>
\[ \alpha = \frac{x_1}{f}(\omega=0) = \frac{\frac{k_e}{k_e + k_a}}{k_1 + \frac{k_e k_a}{k_e + k_a}} \]
\[ \beta = \frac{x_1}{F}(\omega=0) = \frac{1}{k_1 + \frac{k_e k_a}{k_e + k_a}} \]
</p>
<p>
If we can fix \(k_a\), we can determine \(k_e\) and \(k_1\) with:
\[ k_e = \frac{k_a}{\frac{\beta}{\alpha} - 1} \]
\[ k_1 = \frac{1}{\beta} - \frac{k_e k_a}{k_e + k_a} \]
</p>
<p>
From the identified dynamics, compute \(\alpha\) and \(\beta\)
</p>
<div class="org-src-container">
<pre class="src src-matlab">alpha = abs(dcgain(G('y', 'Fa')));
beta = abs(dcgain(G('y', 'Fd')));
</pre>
</div>
<p>
\(k_a\) is estimated using the following formula:
</p>
<div class="org-src-container">
<pre class="src src-matlab">ka = 0.8/abs(dcgain(G('y', 'Fa')));
</pre>
</div>
<p>
The factor can be adjusted to better match the curves.
</p>
<p>
Then \(k_e\) and \(k_1\) are computed.
</p>
<div class="org-src-container">
<pre class="src src-matlab">ke = ka/(beta/alpha - 1);
k1 = 1/beta - ke*ka/(ke + ka);
</pre>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-right">Value [N/um]</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">ka</td>
<td class="org-right">42.9</td>
</tr>
<tr>
<td class="org-left">ke</td>
<td class="org-right">1.5</td>
</tr>
<tr>
<td class="org-left">k1</td>
<td class="org-right">0.4</td>
</tr>
</tbody>
</table>
<p>
The damping in the system is adjusted to match the FEM model if necessary.
</p>
<div class="org-src-container">
<pre class="src src-matlab">c1 = 1e2;
</pre>
</div>
<p>
Analytical model of the simpler system:
</p>
<div class="org-src-container">
<pre class="src src-matlab">Ga = 1/(m*s^2 + k1 + c1*s + ke*ka/(ke + ka)) * ...
[ 1 , k1 + c1*s + ke*ka/(ke + ka) , ke/(ke + ka) ;
-ke*ka/(ke + ka), ke*ka/(ke + ka)*m*s^2 , -ke/(ke + ka)*(m*s^2 + c1*s + k1)];
Ga.InputName = {'Fd', 'w', 'Fa'};
Ga.OutputName = {'y', 'Fs'};
</pre>
</div>
<p>
Adjust the DC gain for the force sensor:
</p>
<div class="org-src-container">
<pre class="src src-matlab">lambda = dcgain(Ga('Fs', 'Fd'))/dcgain(G('Fs', 'Fd'));
</pre>
</div>
<div id="orgf2c0742" class="figure">
<p><img src="figs/apa300ml_comp_simpler_model.png" alt="apa300ml_comp_simpler_model.png" />
</p>
<p><span class="figure-number">Figure 13: </span>Comparison of the Dynamics between the FEM model and the simplified one</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org302c208" class="outline-2">
<h2 id="org302c208"><span class="section-number-2">3</span> Flexible Joint</h2>
<div class="outline-text-2" id="text-3">
<p>
The flexor in Figure <a href="#orgad78691">14</a> is studied with a FEM.
</p>
<div id="orgad78691" class="figure">
<p><img src="figs/flexor_id16_screenshot.png" alt="flexor_id16_screenshot.png" />
</p>
<p><span class="figure-number">Figure 14: </span>Flexor studied</p>
</div>
</div>
<div id="outline-container-org0d5de26" class="outline-3">
<h3 id="org0d5de26"><span class="section-number-3">3.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3>
<div class="outline-text-3" id="text-3-1">
<p>
We first extract the stiffness and mass matrices.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K = extractMatrix('mat_K_6modes_2MDoF.matrix');
M = extractMatrix('mat_M_6modes_2MDoF.matrix');
</pre>
</div>
<p>
Then, we extract the coordinates of the interface nodes.
</p>
<div class="org-src-container">
<pre class="src src-matlab">[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('out_nodes_3D.txt');
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">save('./mat/flexor_ID16.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
</pre>
</div>
</div>
</div>
<div id="outline-container-orgdf345b2" class="outline-3">
<h3 id="orgdf345b2"><span class="section-number-3">3.2</span> Output parameters</h3>
<div class="outline-text-3" id="text-3-2">
<div class="org-src-container">
<pre class="src src-matlab">load('./mat/flexor_ID16.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
</pre>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-left">Total number of Nodes</td>
<td class="org-right">2</td>
</tr>
<tr>
<td class="org-left">Number of interface Nodes</td>
<td class="org-right">2</td>
</tr>
<tr>
<td class="org-left">Number of Modes</td>
<td class="org-right">6</td>
</tr>
<tr>
<td class="org-left">Size of M and K matrices</td>
<td class="org-right">18</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 8:</span> Coordinates of the interface nodes</caption>
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-right">Node i</th>
<th scope="col" class="org-right">Node Number</th>
<th scope="col" class="org-right">x [m]</th>
<th scope="col" class="org-right">y [m]</th>
<th scope="col" class="org-right">z [m]</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-right">1.0</td>
<td class="org-right">181278.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">2.0</td>
<td class="org-right">181279.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
<td class="org-right">-0.0</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 9:</span> First 10x10 elements of the Stiffness matrix</caption>
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-right">11200000.0</td>
<td class="org-right">195.0</td>
<td class="org-right">2220.0</td>
<td class="org-right">-0.719</td>
<td class="org-right">-265.0</td>
<td class="org-right">1.59</td>
<td class="org-right">-11200000.0</td>
<td class="org-right">-213.0</td>
<td class="org-right">-2220.0</td>
<td class="org-right">0.147</td>
</tr>
<tr>
<td class="org-right">195.0</td>
<td class="org-right">11400000.0</td>
<td class="org-right">1290.0</td>
<td class="org-right">-148.0</td>
<td class="org-right">-0.188</td>
<td class="org-right">2.41</td>
<td class="org-right">-212.0</td>
<td class="org-right">-11400000.0</td>
<td class="org-right">-1290.0</td>
<td class="org-right">148.0</td>
</tr>
<tr>
<td class="org-right">2220.0</td>
<td class="org-right">1290.0</td>
<td class="org-right">119000000.0</td>
<td class="org-right">1.31</td>
<td class="org-right">1.49</td>
<td class="org-right">1.79</td>
<td class="org-right">-2220.0</td>
<td class="org-right">-1290.0</td>
<td class="org-right">-119000000.0</td>
<td class="org-right">-1.31</td>
</tr>
<tr>
<td class="org-right">-0.719</td>
<td class="org-right">-148.0</td>
<td class="org-right">1.31</td>
<td class="org-right">33.0</td>
<td class="org-right">0.000488</td>
<td class="org-right">-0.000977</td>
<td class="org-right">0.141</td>
<td class="org-right">148.0</td>
<td class="org-right">-1.31</td>
<td class="org-right">-33.0</td>
</tr>
<tr>
<td class="org-right">-265.0</td>
<td class="org-right">-0.188</td>
<td class="org-right">1.49</td>
<td class="org-right">0.000488</td>
<td class="org-right">33.0</td>
<td class="org-right">0.00293</td>
<td class="org-right">266.0</td>
<td class="org-right">0.154</td>
<td class="org-right">-1.49</td>
<td class="org-right">0.00026</td>
</tr>
<tr>
<td class="org-right">1.59</td>
<td class="org-right">2.41</td>
<td class="org-right">1.79</td>
<td class="org-right">-0.000977</td>
<td class="org-right">0.00293</td>
<td class="org-right">236.0</td>
<td class="org-right">-1.32</td>
<td class="org-right">-2.55</td>
<td class="org-right">-1.79</td>
<td class="org-right">0.000379</td>
</tr>
<tr>
<td class="org-right">-11200000.0</td>
<td class="org-right">-212.0</td>
<td class="org-right">-2220.0</td>
<td class="org-right">0.141</td>
<td class="org-right">266.0</td>
<td class="org-right">-1.32</td>
<td class="org-right">11400000.0</td>
<td class="org-right">24600.0</td>
<td class="org-right">1640.0</td>
<td class="org-right">120.0</td>
</tr>
<tr>
<td class="org-right">-213.0</td>
<td class="org-right">-11400000.0</td>
<td class="org-right">-1290.0</td>
<td class="org-right">148.0</td>
<td class="org-right">0.154</td>
<td class="org-right">-2.55</td>
<td class="org-right">24600.0</td>
<td class="org-right">11400000.0</td>
<td class="org-right">1290.0</td>
<td class="org-right">-72.0</td>
</tr>
<tr>
<td class="org-right">-2220.0</td>
<td class="org-right">-1290.0</td>
<td class="org-right">-119000000.0</td>
<td class="org-right">-1.31</td>
<td class="org-right">-1.49</td>
<td class="org-right">-1.79</td>
<td class="org-right">1640.0</td>
<td class="org-right">1290.0</td>
<td class="org-right">119000000.0</td>
<td class="org-right">1.32</td>
</tr>
<tr>
<td class="org-right">0.147</td>
<td class="org-right">148.0</td>
<td class="org-right">-1.31</td>
<td class="org-right">-33.0</td>
<td class="org-right">0.00026</td>
<td class="org-right">0.000379</td>
<td class="org-right">120.0</td>
<td class="org-right">-72.0</td>
<td class="org-right">1.32</td>
<td class="org-right">34.7</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 10:</span> First 10x10 elements of the Mass matrix</caption>
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-right">0.02</td>
<td class="org-right">1e-09</td>
<td class="org-right">-4e-08</td>
<td class="org-right">-1e-10</td>
<td class="org-right">0.0002</td>
<td class="org-right">-3e-11</td>
<td class="org-right">0.004</td>
<td class="org-right">5e-08</td>
<td class="org-right">7e-08</td>
<td class="org-right">1e-10</td>
</tr>
<tr>
<td class="org-right">1e-09</td>
<td class="org-right">0.02</td>
<td class="org-right">-3e-07</td>
<td class="org-right">-0.0002</td>
<td class="org-right">-1e-10</td>
<td class="org-right">-2e-09</td>
<td class="org-right">2e-08</td>
<td class="org-right">0.004</td>
<td class="org-right">3e-07</td>
<td class="org-right">1e-05</td>
</tr>
<tr>
<td class="org-right">-4e-08</td>
<td class="org-right">-3e-07</td>
<td class="org-right">0.02</td>
<td class="org-right">7e-10</td>
<td class="org-right">-2e-09</td>
<td class="org-right">1e-09</td>
<td class="org-right">3e-07</td>
<td class="org-right">7e-08</td>
<td class="org-right">0.003</td>
<td class="org-right">1e-09</td>
</tr>
<tr>
<td class="org-right">-1e-10</td>
<td class="org-right">-0.0002</td>
<td class="org-right">7e-10</td>
<td class="org-right">4e-06</td>
<td class="org-right">-1e-12</td>
<td class="org-right">-6e-13</td>
<td class="org-right">2e-10</td>
<td class="org-right">-7e-06</td>
<td class="org-right">-8e-10</td>
<td class="org-right">-1e-09</td>
</tr>
<tr>
<td class="org-right">0.0002</td>
<td class="org-right">-1e-10</td>
<td class="org-right">-2e-09</td>
<td class="org-right">-1e-12</td>
<td class="org-right">3e-06</td>
<td class="org-right">2e-13</td>
<td class="org-right">9e-06</td>
<td class="org-right">4e-11</td>
<td class="org-right">2e-09</td>
<td class="org-right">-3e-13</td>
</tr>
<tr>
<td class="org-right">-3e-11</td>
<td class="org-right">-2e-09</td>
<td class="org-right">1e-09</td>
<td class="org-right">-6e-13</td>
<td class="org-right">2e-13</td>
<td class="org-right">4e-07</td>
<td class="org-right">8e-11</td>
<td class="org-right">9e-10</td>
<td class="org-right">-1e-09</td>
<td class="org-right">2e-12</td>
</tr>
<tr>
<td class="org-right">0.004</td>
<td class="org-right">2e-08</td>
<td class="org-right">3e-07</td>
<td class="org-right">2e-10</td>
<td class="org-right">9e-06</td>
<td class="org-right">8e-11</td>
<td class="org-right">0.02</td>
<td class="org-right">-7e-08</td>
<td class="org-right">-3e-07</td>
<td class="org-right">-2e-10</td>
</tr>
<tr>
<td class="org-right">5e-08</td>
<td class="org-right">0.004</td>
<td class="org-right">7e-08</td>
<td class="org-right">-7e-06</td>
<td class="org-right">4e-11</td>
<td class="org-right">9e-10</td>
<td class="org-right">-7e-08</td>
<td class="org-right">0.01</td>
<td class="org-right">-4e-08</td>
<td class="org-right">0.0002</td>
</tr>
<tr>
<td class="org-right">7e-08</td>
<td class="org-right">3e-07</td>
<td class="org-right">0.003</td>
<td class="org-right">-8e-10</td>
<td class="org-right">2e-09</td>
<td class="org-right">-1e-09</td>
<td class="org-right">-3e-07</td>
<td class="org-right">-4e-08</td>
<td class="org-right">0.02</td>
<td class="org-right">-1e-09</td>
</tr>
<tr>
<td class="org-right">1e-10</td>
<td class="org-right">1e-05</td>
<td class="org-right">1e-09</td>
<td class="org-right">-1e-09</td>
<td class="org-right">-3e-13</td>
<td class="org-right">2e-12</td>
<td class="org-right">-2e-10</td>
<td class="org-right">0.0002</td>
<td class="org-right">-1e-09</td>
<td class="org-right">2e-06</td>
</tr>
</tbody>
</table>
<p>
Using <code>K</code>, <code>M</code> and <code>int_xyz</code>, we can use the <code>Reduced Order Flexible Solid</code> simscape block.
</p>
</div>
</div>
<div id="outline-container-orgdaac86c" class="outline-3">
<h3 id="orgdaac86c"><span class="section-number-3">3.3</span> Flexible Joint Characteristics</h3>
<div class="outline-text-3" id="text-3-3">
<p>
The most important parameters of the flexible joint can be directly estimated from the stiffness matrix.
</p>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left"><b>Caracteristic</b></th>
<th scope="col" class="org-right"><b>Value</b></th>
<th scope="col" class="org-right"><b>Estimation by Francois</b></th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Axial Stiffness [N/um]</td>
<td class="org-right">119</td>
<td class="org-right">60</td>
</tr>
<tr>
<td class="org-left">Bending Stiffness [Nm/rad]</td>
<td class="org-right">33</td>
<td class="org-right">15</td>
</tr>
<tr>
<td class="org-left">Bending Stiffness [Nm/rad]</td>
<td class="org-right">33</td>
<td class="org-right">15</td>
</tr>
<tr>
<td class="org-left">Torsion Stiffness [Nm/rad]</td>
<td class="org-right">236</td>
<td class="org-right">20</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-org6162023" class="outline-3">
<h3 id="org6162023"><span class="section-number-3">3.4</span> Identification of the parameters using Simscape</h3>
<div class="outline-text-3" id="text-3-4">
<p>
The flexor is now imported into Simscape and its parameters are estimated using an identification.
</p>
<p>
The dynamics is identified from the applied force/torque to the measured displacement/rotation of the flexor.
And we find the same parameters as the one estimated from the Stiffness matrix.
</p>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left"><b>Caracteristic</b></th>
<th scope="col" class="org-right"><b>Value</b></th>
<th scope="col" class="org-right"><b>Identification</b></th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Axial Stiffness Dz [N/um]</td>
<td class="org-right">119</td>
<td class="org-right">119</td>
</tr>
<tr>
<td class="org-left">Bending Stiffness Rx [Nm/rad]</td>
<td class="org-right">33</td>
<td class="org-right">33</td>
</tr>
<tr>
<td class="org-left">Bending Stiffness Ry [Nm/rad]</td>
<td class="org-right">33</td>
<td class="org-right">33</td>
</tr>
<tr>
<td class="org-left">Torsion Stiffness Rz [Nm/rad]</td>
<td class="org-right">236</td>
<td class="org-right">236</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-org8dd435e" class="outline-3">
<h3 id="org8dd435e"><span class="section-number-3">3.5</span> Simpler Model</h3>
<div class="outline-text-3" id="text-3-5">
<p>
Let&rsquo;s now model the flexible joint with a &ldquo;perfect&rdquo; Bushing joint as shown in Figure <a href="#orgfcd1afb">15</a>.
</p>
<div id="orgfcd1afb" class="figure">
<p><img src="figs/flexible_joint_simscape.png" alt="flexible_joint_simscape.png" />
</p>
<p><span class="figure-number">Figure 15: </span>Bushing Joint used to model the flexible joint</p>
</div>
<p>
The parameters of the Bushing joint (stiffnesses) are estimated from the Stiffness matrix that was computed from the FEM.
</p>
<div class="org-src-container">
<pre class="src src-matlab">Kx = K(1,1); % [N/m]
Ky = K(2,2); % [N/m]
Kz = K(3,3); % [N/m]
Krx = K(4,4); % [Nm/rad]
Kry = K(5,5); % [Nm/rad]
Krz = K(6,6); % [Nm/rad]
</pre>
</div>
<p>
The dynamics from the applied force/torque to the measured displacement/rotation of the flexor is identified again for this simpler model.
The two obtained dynamics are compared in Figure
</p>
<div id="orgec63a7e" class="figure">
<p><img src="figs/flexor_ID16_compare_bushing_joint.png" alt="flexor_ID16_compare_bushing_joint.png" />
</p>
<p><span class="figure-number">Figure 16: </span>Comparison of the Joint compliance between the FEM model and the simpler model</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org91af791" class="outline-2">
<h2 id="org91af791"><span class="section-number-2">4</span> Integral Force Feedback with Amplified Piezo</h2>
<div class="outline-text-2" id="text-4">
<p>
In this section, we try to replicate the results obtained in (<a href="#citeproc_bib_item_2">Souleille et al. 2018</a>).
</p>
</div>
<div id="outline-container-orga880b08" class="outline-3">
<h3 id="orga880b08"><span class="section-number-3">4.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3>
<div class="outline-text-3" id="text-4-1">
<p>
We first extract the stiffness and mass matrices.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K = extractMatrix('piezo_amplified_IFF_K.txt');
M = extractMatrix('piezo_amplified_IFF_M.txt');
</pre>
</div>
<p>
Then, we extract the coordinates of the interface nodes.
</p>
<div class="org-src-container">
<pre class="src src-matlab">[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('piezo_amplified_IFF.txt');
</pre>
</div>
</div>
</div>
<div id="outline-container-org4520a0d" class="outline-3">
<h3 id="org4520a0d"><span class="section-number-3">4.2</span> IFF Plant</h3>
<div class="outline-text-3" id="text-4-2">
<p>
The transfer function from the force actuator to the force sensor is identified and shown in Figure <a href="#orgc710f0f">17</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">Kiff = tf(0);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">m = 0;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">%% Name of the Simulink File
mdl = 'piezo_amplified_IFF';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/Kiff'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/G'], 1, 'openoutput'); io_i = io_i + 1;
Gf = linearize(mdl, io);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">m = 10;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Gfm = linearize(mdl, io);
</pre>
</div>
<div id="orgc710f0f" class="figure">
<p><img src="figs/piezo_amplified_iff_plant.png" alt="piezo_amplified_iff_plant.png" />
</p>
<p><span class="figure-number">Figure 17: </span>IFF Plant</p>
</div>
</div>
</div>
<div id="outline-container-orge7a688b" class="outline-3">
<h3 id="orge7a688b"><span class="section-number-3">4.3</span> IFF controller</h3>
<div class="outline-text-3" id="text-4-3">
<p>
The controller is defined and the loop gain is shown in Figure <a href="#org69cf7eb">18</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">Kiff = -1e12/s;
</pre>
</div>
<div id="org69cf7eb" class="figure">
<p><img src="figs/piezo_amplified_iff_loop_gain.png" alt="piezo_amplified_iff_loop_gain.png" />
</p>
<p><span class="figure-number">Figure 18: </span>IFF Loop Gain</p>
</div>
</div>
</div>
<div id="outline-container-org0515ee4" class="outline-3">
<h3 id="org0515ee4"><span class="section-number-3">4.4</span> Closed Loop System</h3>
<div class="outline-text-3" id="text-4-4">
<div class="org-src-container">
<pre class="src src-matlab">m = 10;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Kiff = -1e12/s;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">%% Name of the Simulink File
mdl = 'piezo_amplified_IFF';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/Dw'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/Fd'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/d'], 1, 'openoutput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/G'], 1, 'output'); io_i = io_i + 1;
Giff = linearize(mdl, io);
Giff.InputName = {'w', 'f', 'F'};
Giff.OutputName = {'x1', 'Fs'};
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Kiff = tf(0);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">G = linearize(mdl, io);
G.InputName = {'w', 'f', 'F'};
G.OutputName = {'x1', 'Fs'};
</pre>
</div>
<div id="org24fd69b" class="figure">
<p><img src="figs/piezo_amplified_iff_comp.png" alt="piezo_amplified_iff_comp.png" />
</p>
<p><span class="figure-number">Figure 19: </span>OL and CL transfer functions</p>
</div>
<div id="org58e1871" class="figure">
<p><img src="figs/souleille18_results.png" alt="souleille18_results.png" />
</p>
<p><span class="figure-number">Figure 20: </span>Results obtained in <a class='org-ref-reference' href="#souleille18_concep_activ_mount_space_applic">souleille18_concep_activ_mount_space_applic</a></p>
</div>
</div>
</div>
</div>
<p>
</p>
<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>Fleming, Andrew J., and Kam K. Leang. 2014. <i>Design, Modeling and Control of Nanopositioning Systems</i>. Advances in Industrial Control. Springer International Publishing. <a href="https://doi.org/10.1007/978-3-319-06617-2">https://doi.org/10.1007/978-3-319-06617-2</a>.</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 id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-08-04 mar. 12:14</p>
</div>
</body>
</html>