996 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			996 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <?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-06-15 lun. 09:13 -->
 | |
| <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="#org46300bd">1. Amplified Piezoelectric Actuator - 3D elements</a>
 | |
| <ul>
 | |
| <li><a href="#org87ff1d9">1.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
 | |
| <li><a href="#org9fde833">1.2. Identification of the Dynamics</a></li>
 | |
| <li><a href="#org6745ee9">1.3. Comparison with Ansys</a></li>
 | |
| <li><a href="#orgdaa4dfc">1.4. Force Sensor</a></li>
 | |
| <li><a href="#orgfea0789">1.5. Distributed Actuator</a></li>
 | |
| <li><a href="#org7530c95">1.6. Distributed Actuator and Force Sensor</a></li>
 | |
| </ul>
 | |
| </li>
 | |
| <li><a href="#orge246070">2. Integral Force Feedback with Amplified Piezo</a>
 | |
| <ul>
 | |
| <li><a href="#orgd04c610">2.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
 | |
| <li><a href="#org53d6187">2.2. IFF Plant</a></li>
 | |
| <li><a href="#org6249549">2.3. IFF controller</a></li>
 | |
| <li><a href="#org3796517">2.4. Closed Loop System</a></li>
 | |
| </ul>
 | |
| </li>
 | |
| </ul>
 | |
| </div>
 | |
| </div>
 | |
| 
 | |
| <div id="outline-container-org46300bd" class="outline-2">
 | |
| <h2 id="org46300bd"><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-org87ff1d9" class="outline-3">
 | |
| <h3 id="org87ff1d9"><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>
 | |
| 
 | |
| <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="org7c56900" 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-org9fde833" class="outline-3">
 | |
| <h3 id="org9fde833"><span class="section-number-3">1.2</span> Identification of the Dynamics</h3>
 | |
| <div class="outline-text-3" id="text-1-2">
 | |
| <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;
 | |
| </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 = 10;
 | |
| </pre>
 | |
| </div>
 | |
| 
 | |
| <p>
 | |
| And the dynamics is identified.
 | |
| </p>
 | |
| 
 | |
| <p>
 | |
| The two identified dynamics are compared in Figure <a href="#org99c1d63">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="org99c1d63" 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-org6745ee9" class="outline-3">
 | |
| <h3 id="org6745ee9"><span class="section-number-3">1.3</span> Comparison with Ansys</h3>
 | |
| <div class="outline-text-3" id="text-1-3">
 | |
| <p>
 | |
| Let’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="#org317c4e0">3</a>.
 | |
| </p>
 | |
| 
 | |
| 
 | |
| <div id="org317c4e0" 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-orgdaa4dfc" class="outline-3">
 | |
| <h3 id="orgdaa4dfc"><span class="section-number-3">1.4</span> Force Sensor</h3>
 | |
| <div class="outline-text-3" id="text-1-4">
 | |
| <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="#org3803b79">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="org3803b79" 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-orgfea0789" class="outline-3">
 | |
| <h3 id="orgfea0789"><span class="section-number-3">1.5</span> Distributed Actuator</h3>
 | |
| <div class="outline-text-3" id="text-1-5">
 | |
| <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-org7530c95" class="outline-3">
 | |
| <h3 id="org7530c95"><span class="section-number-3">1.6</span> Distributed Actuator and Force Sensor</h3>
 | |
| <div class="outline-text-3" id="text-1-6">
 | |
| <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>
 | |
| 
 | |
| <div id="outline-container-orge246070" class="outline-2">
 | |
| <h2 id="orge246070"><span class="section-number-2">2</span> Integral Force Feedback with Amplified Piezo</h2>
 | |
| <div class="outline-text-2" id="text-2">
 | |
| </div>
 | |
| <div id="outline-container-orgd04c610" class="outline-3">
 | |
| <h3 id="orgd04c610"><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('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-org53d6187" class="outline-3">
 | |
| <h3 id="org53d6187"><span class="section-number-3">2.2</span> IFF Plant</h3>
 | |
| <div class="outline-text-3" id="text-2-2">
 | |
| <p>
 | |
| The transfer function from the force actuator to the force sensor is identified and shown in Figure <a href="#orgdb6f163">5</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="orgdb6f163" class="figure">
 | |
| <p><img src="figs/piezo_amplified_iff_plant.png" alt="piezo_amplified_iff_plant.png" />
 | |
| </p>
 | |
| <p><span class="figure-number">Figure 5: </span>IFF Plant</p>
 | |
| </div>
 | |
| </div>
 | |
| </div>
 | |
| 
 | |
| <div id="outline-container-org6249549" class="outline-3">
 | |
| <h3 id="org6249549"><span class="section-number-3">2.3</span> IFF controller</h3>
 | |
| <div class="outline-text-3" id="text-2-3">
 | |
| <p>
 | |
| The controller is defined and the loop gain is shown in Figure <a href="#orgf044cb4">6</a>.
 | |
| </p>
 | |
| <div class="org-src-container">
 | |
| <pre class="src src-matlab">Kiff = -1e12/s;
 | |
| </pre>
 | |
| </div>
 | |
| 
 | |
| 
 | |
| <div id="orgf044cb4" 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 6: </span>IFF Loop Gain</p>
 | |
| </div>
 | |
| </div>
 | |
| </div>
 | |
| 
 | |
| <div id="outline-container-org3796517" class="outline-3">
 | |
| <h3 id="org3796517"><span class="section-number-3">2.4</span> Closed Loop System</h3>
 | |
| <div class="outline-text-3" id="text-2-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="org7291d4e" class="figure">
 | |
| <p><img src="figs/piezo_amplified_iff_comp.png" alt="piezo_amplified_iff_comp.png" />
 | |
| </p>
 | |
| <p><span class="figure-number">Figure 7: </span>OL and CL transfer functions</p>
 | |
| </div>
 | |
| 
 | |
| 
 | |
| 
 | |
| <div id="orgd423aa7" class="figure">
 | |
| <p><img src="figs/souleille18_results.png" alt="souleille18_results.png" />
 | |
| </p>
 | |
| <p><span class="figure-number">Figure 8: </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>
 | |
| </div>
 | |
| <div id="postamble" class="status">
 | |
| <p class="author">Author: Dehaeze Thomas</p>
 | |
| <p class="date">Created: 2020-06-15 lun. 09:13</p>
 | |
| </div>
 | |
| </body>
 | |
| </html>
 |