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