<?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-05-20 mer. 16:56 --> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>Amplified Piezoelectric Stack Actuator</title> <meta name="generator" content="Org mode" /> <meta name="author" content="Dehaeze Thomas" /> <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> <script src="./js/jquery.min.js"></script> <script src="./js/bootstrap.min.js"></script> <script src="./js/jquery.stickytableheaders.min.js"></script> <script src="./js/readtheorg.js"></script> <script>MathJax = { tex: { tags: 'ams', macros: {bm: ["\\boldsymbol{#1}",1],} } }; </script> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> </head> <body> <div id="org-div-home-and-up"> <a accesskey="h" href="./index.html"> UP </a> | <a accesskey="H" href="./index.html"> HOME </a> </div><div id="content"> <h1 class="title">Amplified Piezoelectric Stack Actuator</h1> <div id="table-of-contents"> <h2>Table of Contents</h2> <div id="text-table-of-contents"> <ul> <li><a href="#org996fd7c">1. Simplified Model</a> <ul> <li><a href="#org1e2b26f">1.1. Parameters</a></li> <li><a href="#orgac18acf">1.2. Identification</a></li> <li><a href="#orgd6c324c">1.3. Root Locus</a></li> </ul> </li> <li><a href="#orgf1a765f">2. Rotating X-Y platform</a> <ul> <li><a href="#orgd4866c5">2.1. Parameters</a></li> <li><a href="#orgcfc57a7">2.2. Identification</a></li> <li><a href="#org8d3f9bd">2.3. Root Locus</a></li> <li><a href="#org069f401">2.4. Analysis</a></li> </ul> </li> <li><a href="#org3c74f7f">3. Stewart Platform with Amplified Actuators</a> <ul> <li><a href="#org5a7c6dc">3.1. Initialization</a></li> <li><a href="#orgf0cb0e7">3.2. Identification</a></li> <li><a href="#org14c7063">3.3. Controller Design</a></li> <li><a href="#org043ce40">3.4. Effect of the Low Authority Control on the Primary Plant</a></li> <li><a href="#orgbc2f246">3.5. Effect of the Low Authority Control on the Sensibility to Disturbances</a></li> </ul> </li> </ul> </div> </div> <p> The presented model is based on <a class='org-ref-reference' href="#souleille18_concep_activ_mount_space_applic">souleille18_concep_activ_mount_space_applic</a>. </p> <p> The model represents the amplified piezo APA100M from Cedrat-Technologies (Figure <a href="#orgb707bbd">1</a>). The parameters are shown in the table below. </p> <div id="orgb707bbd" class="figure"> <p><img src="./figs/souleille18_model_piezo.png" alt="souleille18_model_piezo.png" /> </p> <p><span class="figure-number">Figure 1: </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 1:</span> Parameters used for the model of the APA 100M</caption> <colgroup> <col class="org-left" /> <col class="org-left" /> <col class="org-left" /> </colgroup> <thead> <tr> <th scope="col" class="org-left"> </th> <th scope="col" class="org-left">Value</th> <th scope="col" class="org-left">Meaning</th> </tr> </thead> <tbody> <tr> <td class="org-left">\(m\)</td> <td class="org-left">\(1\,[kg]\)</td> <td class="org-left">Payload mass</td> </tr> <tr> <td class="org-left">\(k_e\)</td> <td class="org-left">\(4.8\,[N/\mu m]\)</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">\(0.96\,[N/\mu m]\)</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">\(65\,[N/\mu m]\)</td> <td class="org-left">Stiffness of the actuator</td> </tr> <tr> <td class="org-left">\(c_1\)</td> <td class="org-left">\(10\,[N/(m/s)]\)</td> <td class="org-left">Added viscous damping</td> </tr> </tbody> </table> <div id="outline-container-org996fd7c" class="outline-2"> <h2 id="org996fd7c"><span class="section-number-2">1</span> Simplified Model</h2> <div class="outline-text-2" id="text-1"> </div> <div id="outline-container-org1e2b26f" class="outline-3"> <h3 id="org1e2b26f"><span class="section-number-3">1.1</span> Parameters</h3> <div class="outline-text-3" id="text-1-1"> <div class="org-src-container"> <pre class="src src-matlab">m = 1; % [kg] ke = 4.8e6; % [N/m] ce = 5; % [N/(m/s)] me = 0.001; % [kg] k1 = 0.96e6; % [N/m] c1 = 10; % [N/(m/s)] ka = 65e6; % [N/m] ca = 5; % [N/(m/s)] ma = 0.001; % [kg] h = 0.2; % [m] </pre> </div> <p> IFF Controller: </p> <div class="org-src-container"> <pre class="src src-matlab">Kiff = -8000/s; </pre> </div> </div> </div> <div id="outline-container-orgac18acf" class="outline-3"> <h3 id="orgac18acf"><span class="section-number-3">1.2</span> Identification</h3> <div class="outline-text-3" id="text-1-2"> <p> Identification in open-loop. </p> <div class="org-src-container"> <pre class="src src-matlab">%% Name of the Simulink File mdl = 'amplified_piezo_model'; %% Input/Output definition clear io; io_i = 1; io(io_i) = linio([mdl, '/w'], 1, 'openinput'); io_i = io_i + 1; % Base Motion io(io_i) = linio([mdl, '/f'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1; % External Force io(io_i) = linio([mdl, '/Fs'], 3, 'openoutput'); io_i = io_i + 1; % Force Sensors io(io_i) = linio([mdl, '/x1'], 1, 'openoutput'); io_i = io_i + 1; % Mass displacement G = linearize(mdl, io, 0); G.InputName = {'w', 'f', 'F'}; G.OutputName = {'Fs', 'x1'}; </pre> </div> <p> Identification in closed-loop. </p> <div class="org-src-container"> <pre class="src src-matlab">%% Name of the Simulink File mdl = 'amplified_piezo_model'; %% Input/Output definition clear io; io_i = 1; io(io_i) = linio([mdl, '/w'], 1, 'input'); io_i = io_i + 1; % Base Motion io(io_i) = linio([mdl, '/f'], 1, 'input'); io_i = io_i + 1; % Actuator Inputs io(io_i) = linio([mdl, '/F'], 1, 'input'); io_i = io_i + 1; % External Force io(io_i) = linio([mdl, '/Fs'], 3, 'output'); io_i = io_i + 1; % Force Sensors io(io_i) = linio([mdl, '/x1'], 1, 'output'); io_i = io_i + 1; % Mass displacement Giff = linearize(mdl, io, 0); Giff.InputName = {'w', 'f', 'F'}; Giff.OutputName = {'Fs', 'x1'}; </pre> </div> <div id="org55d1535" class="figure"> <p><img src="figs/amplified_piezo_tf_ol_and_cl.png" alt="amplified_piezo_tf_ol_and_cl.png" /> </p> <p><span class="figure-number">Figure 2: </span>Matrix of transfer functions from input to output in open loop (blue) and closed loop (red)</p> </div> </div> </div> <div id="outline-container-orgd6c324c" class="outline-3"> <h3 id="orgd6c324c"><span class="section-number-3">1.3</span> Root Locus</h3> <div class="outline-text-3" id="text-1-3"> <div id="org85cd6e5" class="figure"> <p><img src="figs/amplified_piezo_root_locus.png" alt="amplified_piezo_root_locus.png" /> </p> <p><span class="figure-number">Figure 3: </span>Root Locus</p> </div> </div> </div> </div> <div id="outline-container-orgf1a765f" class="outline-2"> <h2 id="orgf1a765f"><span class="section-number-2">2</span> Rotating X-Y platform</h2> <div class="outline-text-2" id="text-2"> </div> <div id="outline-container-orgd4866c5" class="outline-3"> <h3 id="orgd4866c5"><span class="section-number-3">2.1</span> Parameters</h3> <div class="outline-text-3" id="text-2-1"> <div class="org-src-container"> <pre class="src src-matlab">m = 1; % [kg] ke = 4.8e6; % [N/m] ce = 5; % [N/(m/s)] me = 0.001; % [kg] k1 = 0.96e6; % [N/m] c1 = 10; % [N/(m/s)] ka = 65e6; % [N/m] ca = 5; % [N/(m/s)] ma = 0.001; % [kg] h = 0.2; % [m] </pre> </div> <div class="org-src-container"> <pre class="src src-matlab">Kiff = tf(0); </pre> </div> </div> </div> <div id="outline-container-orgcfc57a7" class="outline-3"> <h3 id="orgcfc57a7"><span class="section-number-3">2.2</span> Identification</h3> <div class="outline-text-3" id="text-2-2"> <p> Rotating speed in rad/s: </p> <div class="org-src-container"> <pre class="src src-matlab">Ws = 2*pi*[0, 1, 10, 100]; </pre> </div> <div class="org-src-container"> <pre class="src src-matlab">Gs = {zeros(length(Ws), 1)}; </pre> </div> <p> Identification in open-loop. </p> <div class="org-src-container"> <pre class="src src-matlab">%% Name of the Simulink File mdl = 'amplified_piezo_xy_rotating_stage'; %% Input/Output definition clear io; io_i = 1; io(io_i) = linio([mdl, '/fx'], 1, 'openinput'); io_i = io_i + 1; io(io_i) = linio([mdl, '/fy'], 1, 'openinput'); io_i = io_i + 1; io(io_i) = linio([mdl, '/Fs'], 1, 'openoutput'); io_i = io_i + 1; io(io_i) = linio([mdl, '/Fs'], 2, 'openoutput'); io_i = io_i + 1; for i = 1:length(Ws) ws = Ws(i); G = linearize(mdl, io, 0); G.InputName = {'fx', 'fy'}; G.OutputName = {'Fsx', 'Fsy'}; Gs(i) = {G}; end </pre> </div> <div id="orga4fc975" class="figure"> <p><img src="figs/amplitifed_piezo_xy_rotation_plant_iff.png" alt="amplitifed_piezo_xy_rotation_plant_iff.png" /> </p> <p><span class="figure-number">Figure 4: </span>Transfer function matrix from forces to force sensors for multiple rotation speed</p> </div> </div> </div> <div id="outline-container-org8d3f9bd" class="outline-3"> <h3 id="org8d3f9bd"><span class="section-number-3">2.3</span> Root Locus</h3> <div class="outline-text-3" id="text-2-3"> <div id="orgccd3396" class="figure"> <p><img src="figs/amplified_piezo_xy_rotation_root_locus.png" alt="amplified_piezo_xy_rotation_root_locus.png" /> </p> <p><span class="figure-number">Figure 5: </span>Root locus for 3 rotating speed</p> </div> </div> </div> <div id="outline-container-org069f401" class="outline-3"> <h3 id="org069f401"><span class="section-number-3">2.4</span> Analysis</h3> <div class="outline-text-3" id="text-2-4"> <p> The negative stiffness induced by the rotation is equal to \(m \omega_0^2\). Thus, the maximum rotation speed where IFF can be applied is: \[ \omega_\text{max} = \sqrt{\frac{k_1}{m}} \approx 156\,[Hz] \] </p> <p> Let’s verify that. </p> <div class="org-src-container"> <pre class="src src-matlab">Ws = 2*pi*[140, 160]; </pre> </div> <p> Identification </p> <div class="org-src-container"> <pre class="src src-matlab">%% Name of the Simulink File mdl = 'amplified_piezo_xy_rotating_stage'; %% Input/Output definition clear io; io_i = 1; io(io_i) = linio([mdl, '/fx'], 1, 'openinput'); io_i = io_i + 1; io(io_i) = linio([mdl, '/fy'], 1, 'openinput'); io_i = io_i + 1; io(io_i) = linio([mdl, '/Fs'], 1, 'openoutput'); io_i = io_i + 1; io(io_i) = linio([mdl, '/Fs'], 2, 'openoutput'); io_i = io_i + 1; for i = 1:length(Ws) ws = Ws(i); G = linearize(mdl, io, 0); G.InputName = {'fx', 'fy'}; G.OutputName = {'Fsx', 'Fsy'}; Gs(i) = {G}; end </pre> </div> <div id="orgca23612" class="figure"> <p><img src="figs/amplified_piezo_xy_rotating_unstable_root_locus.png" alt="amplified_piezo_xy_rotating_unstable_root_locus.png" /> </p> <p><span class="figure-number">Figure 6: </span>Root Locus for the two considered rotation speed. For the red curve, the system is unstable.</p> </div> </div> </div> </div> <div id="outline-container-org3c74f7f" class="outline-2"> <h2 id="org3c74f7f"><span class="section-number-2">3</span> Stewart Platform with Amplified Actuators</h2> <div class="outline-text-2" id="text-3"> </div> <div id="outline-container-org5a7c6dc" class="outline-3"> <h3 id="org5a7c6dc"><span class="section-number-3">3.1</span> Initialization</h3> <div class="outline-text-3" id="text-3-1"> <div class="org-src-container"> <pre class="src src-matlab">initializeGround(); initializeGranite(); initializeTy(); initializeRy(); initializeRz(); initializeMicroHexapod(); initializeAxisc(); initializeMirror(); initializeSimscapeConfiguration(); initializeDisturbances('enable', false); initializeLoggingConfiguration('log', 'none'); initializeController('type', 'hac-iff'); </pre> </div> <p> We set the stiffness of the payload fixation: </p> <div class="org-src-container"> <pre class="src src-matlab">Kp = 1e8; % [N/m] </pre> </div> </div> </div> <div id="outline-container-orgf0cb0e7" class="outline-3"> <h3 id="orgf0cb0e7"><span class="section-number-3">3.2</span> Identification</h3> <div class="outline-text-3" id="text-3-2"> <div class="org-src-container"> <pre class="src src-matlab">K = tf(zeros(6)); Kiff = tf(zeros(6)); </pre> </div> <p> We identify the system for the following payload masses: </p> <div class="org-src-container"> <pre class="src src-matlab">Ms = [1, 10, 50]; </pre> </div> <p> The nano-hexapod has the following leg’s stiffness and damping. </p> <div class="org-src-container"> <pre class="src src-matlab">initializeNanoHexapod('actuator', 'amplified'); </pre> </div> </div> </div> <div id="outline-container-org14c7063" class="outline-3"> <h3 id="org14c7063"><span class="section-number-3">3.3</span> Controller Design</h3> <div class="outline-text-3" id="text-3-3"> <div id="org0e2911a" class="figure"> <p><img src="figs/amplified_piezo_iff_loop_gain.png" alt="amplified_piezo_iff_loop_gain.png" /> </p> <p><span class="figure-number">Figure 7: </span>Dynamics for the Integral Force Feedback for three payload masses</p> </div> <div id="org5d7f6d3" class="figure"> <p><img src="figs/amplified_piezo_iff_root_locus.png" alt="amplified_piezo_iff_root_locus.png" /> </p> <p><span class="figure-number">Figure 8: </span>Root Locus for the IFF control for three payload masses</p> </div> <p> Damping as function of the gain </p> <div id="org4743c83" class="figure"> <p><img src="figs/amplified_piezo_iff_damping_gain.png" alt="amplified_piezo_iff_damping_gain.png" /> </p> <p><span class="figure-number">Figure 9: </span>Damping ratio of the poles as a function of the IFF gain</p> </div> <p> Finally, we use the following controller for the Decentralized Direct Velocity Feedback: </p> <div class="org-src-container"> <pre class="src src-matlab">Kiff = -1e4/s*eye(6); </pre> </div> </div> </div> <div id="outline-container-org043ce40" class="outline-3"> <h3 id="org043ce40"><span class="section-number-3">3.4</span> Effect of the Low Authority Control on the Primary Plant</h3> <div class="outline-text-3" id="text-3-4"> <div id="org904efc3" class="figure"> <p><img src="figs/amplified_piezo_iff_plant_damped_X.png" alt="amplified_piezo_iff_plant_damped_X.png" /> </p> <p><span class="figure-number">Figure 10: </span>Primary plant in the task space with (dashed) and without (solid) IFF</p> </div> <div id="orgddf3013" class="figure"> <p><img src="figs/amplified_piezo_iff_damped_plant_L.png" alt="amplified_piezo_iff_damped_plant_L.png" /> </p> <p><span class="figure-number">Figure 11: </span>Primary plant in the space of the legs with (dashed) and without (solid) IFF</p> </div> <div id="orgd940ce9" class="figure"> <p><img src="figs/amplified_piezo_iff_damped_coupling_X.png" alt="amplified_piezo_iff_damped_coupling_X.png" /> </p> <p><span class="figure-number">Figure 12: </span>Coupling in the primary plant in the task with (dashed) and without (solid) IFF</p> </div> <div id="org4278690" class="figure"> <p><img src="figs/amplified_piezo_iff_damped_coupling_L.png" alt="amplified_piezo_iff_damped_coupling_L.png" /> </p> <p><span class="figure-number">Figure 13: </span>Coupling in the primary plant in the space of the legs with (dashed) and without (solid) IFF</p> </div> </div> </div> <div id="outline-container-orgbc2f246" class="outline-3"> <h3 id="orgbc2f246"><span class="section-number-3">3.5</span> Effect of the Low Authority Control on the Sensibility to Disturbances</h3> <div class="outline-text-3" id="text-3-5"> <div id="org56179cd" class="figure"> <p><img src="figs/amplified_piezo_iff_disturbances.png" alt="amplified_piezo_iff_disturbances.png" /> </p> <p><span class="figure-number">Figure 14: </span>Norm of the transfer function from vertical disturbances to vertical position error with (dashed) and without (solid) Integral Force Feedback applied</p> </div> <div class="important"> </div> </div> </div> </div> </div> <div id="postamble" class="status"> <p class="author">Author: Dehaeze Thomas</p> <p class="date">Created: 2020-05-20 mer. 16:56</p> </div> </body> </html>