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 11:54:32 +02:00
<!-- 2020 - 08 - 04 mar. 11:53 -->
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 > M a t h J a x = {
tex: {
tags: 'ams',
macros: {bm: ["\\boldsymbol{#1}",1],}
}
};
< / script >
< script type = "text/javascript" src = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js" > < / script >
< / head >
< body >
< div id = "org-div-home-and-up" >
< a accesskey = "h" href = "./index.html" > UP < / a >
|
< a accesskey = "H" href = "./index.html" > HOME < / a >
< / div > < div id = "content" >
< h1 class = "title" > Finite Element Model with Simscape< / h1 >
< div id = "table-of-contents" >
< h2 > Table of Contents< / h2 >
< div id = "text-table-of-contents" >
< ul >
2020-08-04 11:54:32 +02:00
< li > < a href = "#org4f0b86a" > 1. Amplified Piezoelectric Actuator - 3D elements< / a >
2020-06-14 12:23:45 +02:00
< ul >
2020-08-04 11:54:32 +02:00
< li > < a href = "#org15fc227" > 1.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates< / a > < / li >
< li > < a href = "#orgd262dde" > 1.2. Output parameters< / a > < / li >
< li > < a href = "#org6aafed9" > 1.3. Piezoelectric parameters< / a > < / li >
< li > < a href = "#orge996914" > 1.4. Identification of the Dynamics< / a > < / li >
< li > < a href = "#orgff6331a" > 1.5. Comparison with Ansys< / a > < / li >
< li > < a href = "#org9bf2a27" > 1.6. Force Sensor< / a > < / li >
< li > < a href = "#org06d3501" > 1.7. Distributed Actuator< / a > < / li >
< li > < a href = "#org324bb60" > 1.8. Distributed Actuator and Force Sensor< / a > < / li >
< li > < a href = "#org5840571" > 1.9. Dynamics from input voltage to displacement< / a > < / li >
< li > < a href = "#org7061a42" > 1.10. Dynamics from input voltage to output voltage< / a > < / li >
2020-06-15 09:13:55 +02:00
< / ul >
< / li >
2020-08-04 11:54:32 +02:00
< li > < a href = "#org4785733" > 2. APA300ML< / a >
2020-06-15 09:13:55 +02:00
< ul >
2020-08-04 11:54:32 +02:00
< li > < a href = "#orgc8b6c2f" > 2.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates< / a > < / li >
< li > < a href = "#org4f8843c" > 2.2. Output parameters< / a > < / li >
< li > < a href = "#org7dc97c1" > 2.3. Piezoelectric parameters< / a > < / li >
< li > < a href = "#orgf91f943" > 2.4. Identification of the APA Characteristics< / a >
2020-08-03 15:37:17 +02:00
< ul >
2020-08-04 11:54:32 +02:00
< li > < a href = "#orgcb12518" > 2.4.1. Stiffness< / a > < / li >
< li > < a href = "#org43f261c" > 2.4.2. Resonance Frequency< / a > < / li >
< li > < a href = "#org38ca11e" > 2.4.3. Amplification factor< / a > < / li >
< li > < a href = "#org227839d" > 2.4.4. Stroke< / a > < / li >
2020-08-03 15:37:17 +02:00
< / ul >
< / li >
2020-08-04 11:54:32 +02:00
< li > < a href = "#orgfeabffd" > 2.5. Identification of the Dynamics< / a > < / li >
< li > < a href = "#orga13ac6b" > 2.6. IFF< / a > < / li >
< li > < a href = "#org5ed7231" > 2.7. DVF< / a > < / li >
< li > < a href = "#org7e2be0e" > 2.8. Identification for a simpler model< / a > < / li >
2020-08-03 15:37:17 +02:00
< / ul >
< / li >
2020-08-04 11:54:32 +02:00
< li > < a href = "#org0fc361f" > 3. Flexible Joint< / a >
2020-08-03 15:37:17 +02:00
< ul >
2020-08-04 11:54:32 +02:00
< li > < a href = "#orgf82cf1b" > 3.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates< / a > < / li >
< li > < a href = "#orgc3419f4" > 3.2. Output parameters< / a > < / li >
< li > < a href = "#org60de458" > 3.3. Flexible Joint Characteristics< / a > < / li >
< li > < a href = "#orgcd8bc89" > 3.4. Identification< / a > < / li >
2020-08-03 15:37:17 +02:00
< / ul >
< / li >
2020-08-04 11:54:32 +02:00
< li > < a href = "#org258adf3" > 4. Integral Force Feedback with Amplified Piezo< / a >
2020-08-03 15:37:17 +02:00
< ul >
2020-08-04 11:54:32 +02:00
< li > < a href = "#org3e49415" > 4.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates< / a > < / li >
< li > < a href = "#org690b14e" > 4.2. IFF Plant< / a > < / li >
< li > < a href = "#orga83d461" > 4.3. IFF controller< / a > < / li >
< li > < a href = "#org1fd0639" > 4.4. Closed Loop System< / a > < / li >
2020-06-14 12:23:45 +02:00
< / ul >
< / li >
< / ul >
< / div >
< / div >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org4f0b86a" class = "outline-2" >
< h2 id = "org4f0b86a" > < 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org15fc227" class = "outline-3" >
< h3 id = "org15fc227" > < 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-orgd262dde" class = "outline-3" >
< h3 id = "orgd262dde" > < 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 >
2020-08-04 11:54:32 +02:00
< div id = "org5e22c17" 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org6aafed9" class = "outline-3" >
< h3 id = "org6aafed9" > < 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-orge996914" class = "outline-3" >
< h3 id = "orge996914" > < 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 >
2020-08-04 11:54:32 +02:00
The two identified dynamics are compared in Figure < a href = "#org9bccbed" > 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 >
2020-08-04 11:54:32 +02:00
< div id = "org9bccbed" 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-orgff6331a" class = "outline-3" >
< h3 id = "orgff6331a" > < 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’ 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 >
2020-08-04 11:54:32 +02:00
The obtained dynamics from the Simscape model and from the Ansys analysis are compare in Figure < a href = "#orgbddd59a" > 3< / a > .
2020-06-14 12:31:03 +02:00
< / p >
2020-06-14 12:23:45 +02:00
2020-08-04 11:54:32 +02:00
< div id = "orgbddd59a" 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org9bf2a27" class = "outline-3" >
< h3 id = "org9bf2a27" > < 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 >
2020-08-04 11:54:32 +02:00
The obtained dynamics is shown in Figure < a href = "#org32d2842" > 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 >
2020-08-04 11:54:32 +02:00
< div id = "org32d2842" 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
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org06d3501" class = "outline-3" >
< h3 id = "org06d3501" > < 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org324bb60" class = "outline-3" >
< h3 id = "org324bb60" > < 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org5840571" class = "outline-3" >
< h3 id = "org5840571" > < 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 >
2020-08-04 11:54:32 +02:00
The two identified dynamics are compared in Figure < a href = "#org9bccbed" > 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
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org7061a42" class = "outline-3" >
< h3 id = "org7061a42" > < 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org4785733" class = "outline-2" >
< h2 id = "org4785733" > < 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
2020-08-04 11:54:32 +02:00
< div id = "orgbae0d7b" 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-orgc8b6c2f" class = "outline-3" >
< h3 id = "orgc8b6c2f" > < 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
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org4f8843c" class = "outline-3" >
< h3 id = "org4f8843c" > < 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org7dc97c1" class = "outline-3" >
< h3 id = "org7dc97c1" > < 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 >
2020-08-04 11:54:32 +02:00
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" >
2020-08-04 11:54:32 +02:00
< 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" >
2020-08-04 11:54:32 +02:00
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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-orgf91f943" class = "outline-3" >
< h3 id = "orgf91f943" > < 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-orgcb12518" class = "outline-4" >
< h4 id = "orgcb12518" > < 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org43f261c" class = "outline-4" >
< h4 id = "org43f261c" > < 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.
2020-08-04 11:54:32 +02:00
This is also the case for the FEM model (Figure < a href = "#org51e1766" > 6< / a > ).
2020-08-03 15:37:17 +02:00
< / p >
2020-08-04 11:54:32 +02:00
< div id = "org51e1766" 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org38ca11e" class = "outline-4" >
< h4 id = "org38ca11e" > < 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org227839d" class = "outline-4" >
< h4 id = "org227839d" > < 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-orgfeabffd" class = "outline-3" >
< h3 id = "orgfeabffd" > < 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 >
2020-08-04 11:54:32 +02:00
< div id = "orgb3bcc13" 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-orga13ac6b" class = "outline-3" >
< h3 id = "orga13ac6b" > < 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’ s use 2 stacks as actuators and 1 stack as force sensor.
< / p >
< p >
2020-08-04 11:54:32 +02:00
The transfer function from actuator to sensors is identified and shown in Figure < a href = "#org3cf9aa1" > 8< / a > .
2020-08-03 15:37:17 +02:00
< / p >
2020-08-04 11:54:32 +02:00
< div id = "org3cf9aa1" 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 >
2020-08-04 11:54:32 +02:00
For root locus corresponding to IFF is shown in Figure < a href = "#org876e0f8" > 9< / a > .
2020-08-03 15:37:17 +02:00
< / p >
2020-08-04 11:54:32 +02:00
< div id = "org876e0f8" 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org5ed7231" class = "outline-3" >
< h3 id = "org5ed7231" > < 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 >
2020-08-04 11:54:32 +02:00
Now the dynamics from the stack actuator to the relative motion sensor is identified and shown in Figure < a href = "#org6126c83" > 10< / a > .
2020-08-03 15:37:17 +02:00
< / p >
2020-08-04 11:54:32 +02:00
< div id = "org6126c83" 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 >
2020-08-04 11:54:32 +02:00
The root locus for DVF is shown in Figure < a href = "#org01f9702" > 11< / a > .
2020-08-03 15:37:17 +02:00
< / p >
2020-08-04 11:54:32 +02:00
< div id = "org01f9702" 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org7e2be0e" class = "outline-3" >
< h3 id = "org7e2be0e" > < 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 = "#org60372a9" > 12< / a > ).
The parameters are shown in the table below.
< / p >
< div id = "org60372a9" 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" >   < / 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" >   < / 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 = "org67c5104" 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org0fc361f" class = "outline-2" >
< h2 id = "org0fc361f" > < 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" >
2020-08-03 15:46:35 +02:00
2020-08-04 11:54:32 +02:00
< div id = "orgd9dc946" class = "figure" >
2020-08-03 15:46:35 +02:00
< p > < img src = "figs/flexor_id16_screenshot.png" alt = "flexor_id16_screenshot.png" / >
< / p >
2020-08-04 11:54:32 +02:00
< 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
2020-08-04 11:54:32 +02:00
< div id = "outline-container-orgf82cf1b" class = "outline-3" >
< h3 id = "orgf82cf1b" > < 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-orgc3419f4" class = "outline-3" >
< h3 id = "orgc3419f4" > < 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" >
2020-08-04 11:54:32 +02:00
< 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" >
2020-08-04 11:54:32 +02:00
< 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" >
2020-08-04 11:54:32 +02:00
< 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org60de458" class = "outline-3" >
< h3 id = "org60de458" > < 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" >
< 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-orgcd8bc89" class = "outline-3" >
< h3 id = "orgcd8bc89" > < span class = "section-number-3" > 3.4< / span > Identification< / h3 >
2020-08-03 15:37:17 +02:00
< div class = "outline-text-3" id = "text-3-4" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > m = 10;
< / 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 = 'flexor_ID16';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/T'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/D'], 1, 'openoutput'); io_i = io_i + 1;
G = linearize(mdl, io);
< / pre >
< / div >
< 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" > 34< / td >
< / tr >
< tr >
< td class = "org-left" > Bending Stiffness Ry [Nm/rad]< / td >
< td class = "org-right" > 33< / td >
< td class = "org-right" > 126< / td >
< / tr >
< tr >
< td class = "org-left" > Torsion Stiffness Rz [Nm/rad]< / td >
< td class = "org-right" > 236< / td >
< td class = "org-right" > 238< / td >
< / tr >
< / tbody >
< / table >
< / div >
< / div >
< / div >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org258adf3" class = "outline-2" >
< h2 id = "org258adf3" > < 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
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org3e49415" class = "outline-3" >
< h3 id = "org3e49415" > < 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 >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org690b14e" class = "outline-3" >
< h3 id = "org690b14e" > < 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 >
2020-08-04 11:54:32 +02:00
The transfer function from the force actuator to the force sensor is identified and shown in Figure < a href = "#org1ed2b1f" > 15< / 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 >
2020-08-04 11:54:32 +02:00
< div id = "org1ed2b1f" 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 >
2020-08-04 11:54:32 +02:00
< p > < span class = "figure-number" > Figure 15: < / span > IFF Plant< / p >
2020-08-03 15:37:17 +02:00
< / div >
< / div >
< / div >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-orga83d461" class = "outline-3" >
< h3 id = "orga83d461" > < 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 >
2020-08-04 11:54:32 +02:00
The controller is defined and the loop gain is shown in Figure < a href = "#org6eddfbc" > 16< / 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 >
2020-08-04 11:54:32 +02:00
< div id = "org6eddfbc" 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 >
2020-08-04 11:54:32 +02:00
< p > < span class = "figure-number" > Figure 16: < / span > IFF Loop Gain< / p >
2020-08-03 15:37:17 +02:00
< / div >
< / div >
< / div >
2020-08-04 11:54:32 +02:00
< div id = "outline-container-org1fd0639" class = "outline-3" >
< h3 id = "org1fd0639" > < 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 >
2020-08-04 11:54:32 +02:00
< div id = "org136372a" 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 >
2020-08-04 11:54:32 +02:00
< p > < span class = "figure-number" > Figure 17: < / span > OL and CL transfer functions< / p >
2020-08-03 15:37:17 +02:00
< / div >
2020-08-04 11:54:32 +02:00
< div id = "orgccbb8ba" class = "figure" >
2020-08-03 15:37:17 +02:00
< p > < img src = "figs/souleille18_results.png" alt = "souleille18_results.png" / >
< / p >
2020-08-04 11:54:32 +02:00
< p > < span class = "figure-number" > Figure 18: < / 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.5 em ; margin-left : 1.5 em ; } < / 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:157– 65.< / div >
2020-06-14 12:23:45 +02:00
< / div >
< / div >
< div id = "postamble" class = "status" >
< p class = "author" > Author: Dehaeze Thomas< / p >
2020-08-04 11:54:32 +02:00
< p class = "date" > Created: 2020-08-04 mar. 11:53< / p >
2020-06-14 12:23:45 +02:00
< / div >
< / body >
< / html >