phd-nass-fem/index.html

2702 lines
72 KiB
HTML
Raw Normal View History

2020-06-14 12:23:45 +02:00
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-08-04 mar. 12:14 -->
2020-06-14 12:23:45 +02:00
<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>
2020-06-14 12:23:45 +02:00
<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>
2020-06-15 09:13:55 +02:00
</ul>
</li>
<li><a href="#orgb41a9c6">2. APA300ML</a>
2020-06-15 09:13:55 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
</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>
2020-08-03 15:37:17 +02:00
</ul>
</li>
<li><a href="#org302c208">3. Flexible Joint</a>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
</ul>
</li>
<li><a href="#org91af791">4. Integral Force Feedback with Amplified Piezo</a>
2020-08-03 15:37:17 +02:00
<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>
2020-06-14 12:23:45 +02:00
</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>
2020-06-14 12:23:45 +02:00
<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>
2020-06-14 12:23:45 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>
2020-06-14 12:23:45 +02:00
<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">
2020-06-14 12:23:45 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-1-4">
2020-06-14 12:23:45 +02:00
<p>
The flexible element is imported using the <code>Reduced Order Flexible Solid</code> simscape block.
</p>
<p>
2020-06-14 12:31:03 +02:00
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.
2020-06-14 12:23:45 +02:00
</p>
<p>
2020-06-14 12:31:03 +02:00
One mass is fixed at one end of the piezo-electric stack actuator, the other end is fixed to the world frame.
2020-06-14 12:23:45 +02:00
</p>
<p>
We first set the mass to be zero.
</p>
<div class="org-src-container">
2020-08-03 15:37:17 +02:00
<pre class="src src-matlab">m = 0.01;
2020-06-14 12:23:45 +02:00
</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;
2020-08-03 15:37:17 +02:00
Gh = -linearize(mdl, io);
2020-06-14 12:23:45 +02:00
</pre>
</div>
<p>
Then, we add 10Kg of mass:
</p>
<div class="org-src-container">
2020-08-03 15:37:17 +02:00
<pre class="src src-matlab">m = 5;
2020-06-14 12:23:45 +02:00
</pre>
</div>
<p>
And the dynamics is identified.
</p>
<p>
The two identified dynamics are compared in Figure <a href="#orga651bf2">2</a>.
2020-06-14 12:23:45 +02:00
</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;
2020-08-03 15:37:17 +02:00
Ghm = -linearize(mdl, io);
2020-06-14 12:23:45 +02:00
</pre>
</div>
<div id="orga651bf2" class="figure">
2020-06-14 12:23:45 +02:00
<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>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-1-5">
2020-06-14 12:23:45 +02:00
<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>
2020-06-14 12:31:03 +02:00
<p>
The obtained dynamics from the Simscape model and from the Ansys analysis are compare in Figure <a href="#orgf1820ec">3</a>.
2020-06-14 12:31:03 +02:00
</p>
2020-06-14 12:23:45 +02:00
<div id="orgf1820ec" class="figure">
2020-06-14 12:23:45 +02:00
<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>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-1-6">
2020-06-14 12:31:03 +02:00
<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>.
2020-06-14 12:31:03 +02:00
</p>
2020-06-14 12:23:45 +02:00
<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">
2020-06-14 12:23:45 +02:00
<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>
2020-06-15 09:13:55 +02:00
<div id="outline-container-orge78d6e7" class="outline-3">
<h3 id="orge78d6e7"><span class="section-number-3">1.7</span> Distributed Actuator</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-1-7">
2020-06-15 09:13:55 +02:00
<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>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-1-8">
2020-06-15 09:13:55 +02:00
<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>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-1-9">
2020-06-15 09:13:55 +02:00
<div class="org-src-container">
2020-08-03 15:37:17 +02:00
<pre class="src src-matlab">m = 5;
2020-06-15 09:13:55 +02:00
</pre>
</div>
<p>
2020-08-03 15:37:17 +02:00
And the dynamics is identified.
2020-06-15 09:13:55 +02:00
</p>
<p>
The two identified dynamics are compared in Figure <a href="#orga651bf2">2</a>.
2020-06-15 09:13:55 +02:00
</p>
<div class="org-src-container">
<pre class="src src-matlab">%% Name of the Simulink File
2020-08-03 15:37:17 +02:00
mdl = 'piezo_amplified_3d';
2020-06-15 09:13:55 +02:00
%% Input/Output definition
clear io; io_i = 1;
2020-08-03 15:37:17 +02:00
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;
2020-06-15 09:13:55 +02:00
2020-08-03 15:37:17 +02:00
G = -linearize(mdl, io);
2020-06-15 09:13:55 +02:00
</pre>
</div>
<div class="org-src-container">
2020-08-03 15:37:17 +02:00
<pre class="src src-matlab">save('../test-bench-apa/mat/fem_model_5kg.mat', 'G')
2020-06-15 09:13:55 +02:00
</pre>
</div>
2020-08-03 15:37:17 +02:00
</div>
</div>
2020-06-15 09:13:55 +02:00
<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>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-1-10">
2020-06-15 09:13:55 +02:00
<div class="org-src-container">
2020-08-03 15:37:17 +02:00
<pre class="src src-matlab">m = 5;
2020-06-15 09:13:55 +02:00
</pre>
</div>
2020-08-03 15:37:17 +02:00
<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;
2020-06-15 09:13:55 +02:00
2020-08-03 15:37:17 +02:00
G = -linearize(mdl, io);
</pre>
2020-06-15 09:13:55 +02:00
</div>
</div>
</div>
</div>
<div id="outline-container-orgb41a9c6" class="outline-2">
<h2 id="orgb41a9c6"><span class="section-number-2">2</span> APA300ML</h2>
2020-08-03 15:37:17 +02:00
<div class="outline-text-2" id="text-2">
2020-06-15 09:13:55 +02:00
<div id="orgaa4b384" class="figure">
2020-08-03 15:37:17 +02:00
<p><img src="figs/apa300ml_ansys.jpg" alt="apa300ml_ansys.jpg" />
2020-06-15 09:13:55 +02:00
</p>
2020-08-03 15:37:17 +02:00
<p><span class="figure-number">Figure 5: </span>Ansys FEM of the APA300ML</p>
2020-06-15 09:13:55 +02:00
</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>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-2-1">
<p>
We first extract the stiffness and mass matrices.
</p>
2020-06-15 09:13:55 +02:00
<div class="org-src-container">
2020-08-03 15:37:17 +02:00
<pre class="src src-matlab">K = extractMatrix('mat_K-48modes-7MDoF.matrix');
M = extractMatrix('mat_M-48modes-7MDoF.matrix');
2020-06-15 09:13:55 +02:00
</pre>
</div>
<div class="org-src-container">
2020-08-03 15:37:17 +02:00
<pre class="src src-matlab">K = extractMatrix('mat_K-80modes-7MDoF.matrix');
M = extractMatrix('mat_M-80modes-7MDoF.matrix');
2020-06-15 09:13:55 +02:00
</pre>
</div>
2020-08-03 15:37:17 +02:00
<p>
Then, we extract the coordinates of the interface nodes.
</p>
2020-06-15 09:13:55 +02:00
<div class="org-src-container">
2020-08-03 15:37:17 +02:00
<pre class="src src-matlab">[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('Nodes_MDoF_NLIST_MLIST.txt');
2020-06-15 09:13:55 +02:00
</pre>
</div>
<div class="org-src-container">
2020-08-03 15:37:17 +02:00
<pre class="src src-matlab">save('./mat/APA300ML.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
2020-06-15 09:13:55 +02:00
</pre>
</div>
2020-08-03 15:37:17 +02:00
</div>
</div>
2020-06-15 09:13:55 +02:00
<div id="outline-container-org85fa434" class="outline-3">
<h3 id="org85fa434"><span class="section-number-3">2.2</span> Output parameters</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-2-2">
2020-06-15 09:13:55 +02:00
<div class="org-src-container">
2020-08-03 15:37:17 +02:00
<pre class="src src-matlab">load('./mat/APA300ML.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
2020-06-15 09:13:55 +02:00
</pre>
</div>
2020-08-03 15:37:17 +02:00
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
2020-06-15 09:13:55 +02:00
2020-08-03 15:37:17 +02:00
<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>
2020-06-15 09:13:55 +02:00
2020-08-03 15:37:17 +02:00
<tr>
<td class="org-left">Number of Modes</td>
<td class="org-right">6</td>
</tr>
2020-06-15 09:13:55 +02:00
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-2-3">
<p>
Parameters for the APA300ML:
2020-08-03 15:37:17 +02:00
</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
2020-08-03 15:37:17 +02:00
</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
2020-08-03 15:37:17 +02:00
</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>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>).
2020-08-03 15:37:17 +02:00
</p>
<div id="org56f7212" class="figure">
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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">
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>.
2020-08-03 15:37:17 +02:00
</p>
<div id="orgf24b637" class="figure">
2020-08-03 15:37:17 +02:00
<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>.
2020-08-03 15:37:17 +02:00
</p>
<div id="org9ea7c48" class="figure">
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>.
2020-08-03 15:37:17 +02:00
</p>
<div id="org65217e1" class="figure">
2020-08-03 15:37:17 +02:00
<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>.
2020-08-03 15:37:17 +02:00
</p>
<div id="org19d561b" class="figure">
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
</div>
<div id="outline-container-org302c208" class="outline-2">
<h2 id="org302c208"><span class="section-number-2">3</span> Flexible Joint</h2>
2020-08-03 15:37:17 +02:00
<div class="outline-text-2" id="text-3">
<p>
The flexor in Figure <a href="#orgad78691">14</a> is studied with a FEM.
</p>
2020-08-03 15:46:35 +02:00
<div id="orgad78691" class="figure">
2020-08-03 15:46:35 +02:00
<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>
2020-08-03 15:46:35 +02:00
</div>
2020-08-03 15:37:17 +02:00
</div>
2020-08-03 15:46:35 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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.
2020-08-03 15:37:17 +02:00
</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>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
<td class="org-left">Bending Stiffness Ry [Nm/rad]</td>
<td class="org-right">33</td>
<td class="org-right">33</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
<td class="org-left">Torsion Stiffness Rz [Nm/rad]</td>
<td class="org-right">236</td>
<td class="org-right">236</td>
2020-08-03 15:37:17 +02:00
</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>
2020-08-03 15:37:17 +02:00
</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>
2020-08-03 15:37:17 +02:00
<div class="outline-text-2" id="text-4">
2020-08-03 15:46:35 +02:00
<p>
In this section, we try to replicate the results obtained in (<a href="#citeproc_bib_item_2">Souleille et al. 2018</a>).
</p>
2020-08-03 15:37:17 +02:00
</div>
2020-08-03 15:46:35 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<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>.
2020-08-03 15:37:17 +02:00
</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">
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
</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>
2020-08-03 15:37:17 +02:00
<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>.
2020-08-03 15:37:17 +02:00
</p>
<div class="org-src-container">
<pre class="src src-matlab">Kiff = -1e12/s;
</pre>
</div>
<div id="org69cf7eb" class="figure">
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
</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>
2020-08-03 15:37:17 +02:00
<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">
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
</div>
<div id="org58e1871" class="figure">
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:46:35 +02:00
</div>
</div>
2020-08-03 15:37:17 +02:00
</div>
2020-08-03 15:46:35 +02:00
</div>
<p>
</p>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:46:35 +02:00
<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>
2020-06-14 12:23:45 +02:00
</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>
2020-06-14 12:23:45 +02:00
</div>
</body>
</html>