1602 lines
62 KiB
HTML
1602 lines
62 KiB
HTML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||
<head>
|
||
<!-- 2021-05-06 jeu. 16:16 -->
|
||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||
<title>Amplifier Piezoelectric Actuator APA300ML - Test Bench</title>
|
||
<meta name="author" content="Dehaeze Thomas" />
|
||
<meta name="generator" content="Org Mode" />
|
||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||
<script>
|
||
MathJax = {
|
||
svg: {
|
||
scale: 1,
|
||
fontCache: "global"
|
||
},
|
||
tex: {
|
||
tags: "ams",
|
||
multlineWidth: "%MULTLINEWIDTH",
|
||
tagSide: "right",
|
||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||
tagIndent: ".8em"
|
||
}
|
||
};
|
||
</script>
|
||
<script id="MathJax-script" async
|
||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.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">Amplifier Piezoelectric Actuator APA300ML - Test Bench</h1>
|
||
<div id="table-of-contents">
|
||
<h2>Table of Contents</h2>
|
||
<div id="text-table-of-contents">
|
||
<ul>
|
||
<li><a href="#orgc94275a">1. Model of an Amplified Piezoelectric Actuator and Sensor</a></li>
|
||
<li><a href="#org2c0ea5d">2. Geometrical Measurements</a>
|
||
<ul>
|
||
<li><a href="#org084d956">2.1. Measurement Setup</a></li>
|
||
<li><a href="#org6068d02">2.2. Measurement Results</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#org9c78f15">3. Electrical Measurements</a></li>
|
||
<li><a href="#org9ad1426">4. Stiffness measurement</a>
|
||
<ul>
|
||
<li><a href="#org4ce0f01">4.1. APA test</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#org7bb6f12">5. Stroke measurement</a>
|
||
<ul>
|
||
<li><a href="#orgc1429fa">5.1. Voltage applied on one stack</a></li>
|
||
<li><a href="#orgea6ba6b">5.2. Voltage applied on two stacks</a></li>
|
||
<li><a href="#orge9126b8">5.3. Voltage applied on all three stacks</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#orgaed4286">6. Test-Bench Description</a></li>
|
||
<li><a href="#org5833a92">7. Measurement Procedure</a>
|
||
<ul>
|
||
<li><a href="#org6a46893">7.1. Stroke Measurement</a></li>
|
||
<li><a href="#orgbd4b4d5">7.2. Stiffness Measurement</a></li>
|
||
<li><a href="#org9ad673f">7.3. Hysteresis measurement</a></li>
|
||
<li><a href="#org0cf0807">7.4. Piezoelectric Actuator Constant</a></li>
|
||
<li><a href="#orgf85e1d8">7.5. Piezoelectric Sensor Constant</a></li>
|
||
<li><a href="#org145f68e">7.6. Capacitance Measurement</a></li>
|
||
<li><a href="#orga7cc107">7.7. Dynamical Behavior</a></li>
|
||
<li><a href="#org2f1f3cd">7.8. Compare the results obtained for all 7 APA300ML</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#orgfa86e80">8. Measurement Results</a></li>
|
||
<li><a href="#org00950eb">9. Test Bench APA300ML - Simscape Model</a>
|
||
<ul>
|
||
<li><a href="#org0a412ce">9.1. Introduction</a></li>
|
||
<li><a href="#org85e8799">9.2. Nano Hexapod object</a>
|
||
<ul>
|
||
<li><a href="#org53dfde2">9.2.1. APA - 2 DoF</a></li>
|
||
<li><a href="#org9811887">9.2.2. APA - Flexible Frame</a></li>
|
||
<li><a href="#org9d8ceb3">9.2.3. APA - Fully Flexible</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#orgf71036e">9.3. Identification</a></li>
|
||
<li><a href="#org469dc6d">9.4. Compare 2-DoF with flexible</a>
|
||
<ul>
|
||
<li><a href="#org15e5208">9.4.1. APA - 2 DoF</a></li>
|
||
<li><a href="#orgb255466">9.4.2. APA - Fully Flexible</a></li>
|
||
<li><a href="#org54e85ec">9.4.3. Comparison</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#org4dfbd46">10. Test Bench Struts - Simscape Model</a>
|
||
<ul>
|
||
<li><a href="#orgadae31a">10.1. Introduction</a></li>
|
||
<li><a href="#org3bea7d1">10.2. Nano Hexapod object</a>
|
||
<ul>
|
||
<li><a href="#orgb32ee83">10.2.1. Flexible Joint - Bot</a></li>
|
||
<li><a href="#org69d46ec">10.2.2. Flexible Joint - Top</a></li>
|
||
<li><a href="#org93825eb">10.2.3. APA - 2 DoF</a></li>
|
||
<li><a href="#org4a752f7">10.2.4. APA - Flexible Frame</a></li>
|
||
<li><a href="#orgca6a4d6">10.2.5. APA - Fully Flexible</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#org4f10f6f">10.3. Identification</a></li>
|
||
<li><a href="#org4772b0f">10.4. Compare flexible joints</a>
|
||
<ul>
|
||
<li><a href="#orgc8b315e">10.4.1. Perfect</a></li>
|
||
<li><a href="#org98bf1e5">10.4.2. Top Flexible</a></li>
|
||
<li><a href="#orgff88bc7">10.4.3. Bottom Flexible</a></li>
|
||
<li><a href="#orga9d536f">10.4.4. Both Flexible</a></li>
|
||
<li><a href="#org0b21aca">10.4.5. Comparison</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#orgcac0e39">11. Resonance frequencies - APA300ML</a>
|
||
<ul>
|
||
<li><a href="#org7d96cee">11.1. Introduction</a></li>
|
||
<li><a href="#org942c4ee">11.2. Setup</a></li>
|
||
<li><a href="#org8e95287">11.3. Bending - X</a></li>
|
||
<li><a href="#orgc2fbc2f">11.4. Bending - Y</a></li>
|
||
<li><a href="#org414727b">11.5. Torsion - Z</a></li>
|
||
<li><a href="#org42c859e">11.6. Compare</a></li>
|
||
<li><a href="#org775e49f">11.7. Conclusion</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<hr>
|
||
<p>This report is also available as a <a href="./test-bench-apa300ml.pdf">pdf</a>.</p>
|
||
<hr>
|
||
|
||
<p>
|
||
The goal of this test bench is to extract all the important parameters of the Amplified Piezoelectric Actuator APA300ML.
|
||
</p>
|
||
|
||
<p>
|
||
This include:
|
||
</p>
|
||
<ul class="org-ul">
|
||
<li>Stroke</li>
|
||
<li>Stiffness</li>
|
||
<li>Hysteresis</li>
|
||
<li>Gain from the applied voltage \(V_a\) to the generated Force \(F_a\)</li>
|
||
<li>Gain from the sensor stack strain \(\delta L\) to the generated voltage \(V_s\)</li>
|
||
<li>Dynamical behavior</li>
|
||
</ul>
|
||
|
||
|
||
<div id="org17016e5" class="figure">
|
||
<p><img src="figs/apa300ML.png" alt="apa300ML.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 1: </span>Picture of the APA300ML</p>
|
||
</div>
|
||
|
||
<div id="outline-container-orgc94275a" class="outline-2">
|
||
<h2 id="orgc94275a"><span class="section-number-2">1</span> Model of an Amplified Piezoelectric Actuator and Sensor</h2>
|
||
<div class="outline-text-2" id="text-1">
|
||
<p>
|
||
Consider a schematic of the Amplified Piezoelectric Actuator in Figure <a href="#org492fa23">2</a>.
|
||
</p>
|
||
|
||
|
||
<div id="org492fa23" class="figure">
|
||
<p><img src="figs/apa_model_schematic.png" alt="apa_model_schematic.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 2: </span>Amplified Piezoelectric Actuator Schematic</p>
|
||
</div>
|
||
|
||
<p>
|
||
A voltage \(V_a\) applied to the actuator stacks will induce an actuator force \(F_a\):
|
||
</p>
|
||
\begin{equation}
|
||
F_a = g_a \cdot V_a
|
||
\end{equation}
|
||
|
||
<p>
|
||
A change of length \(dl\) of the sensor stack will induce a voltage \(V_s\):
|
||
</p>
|
||
\begin{equation}
|
||
V_s = g_s \cdot dl
|
||
\end{equation}
|
||
|
||
<p>
|
||
We wish here to experimental measure \(g_a\) and \(g_s\).
|
||
</p>
|
||
|
||
<p>
|
||
The block-diagram model of the piezoelectric actuator is then as shown in Figure <a href="#org068ffb5">3</a>.
|
||
</p>
|
||
|
||
|
||
<div id="org068ffb5" class="figure">
|
||
<p><img src="figs/apa-model-simscape-schematic.png" alt="apa-model-simscape-schematic.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 3: </span>Model of the APA with Simscape/Simulink</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org2c0ea5d" class="outline-2">
|
||
<h2 id="org2c0ea5d"><span class="section-number-2">2</span> Geometrical Measurements</h2>
|
||
<div class="outline-text-2" id="text-2">
|
||
<p>
|
||
The received APA are shown in Figure <a href="#org075350a">4</a>.
|
||
</p>
|
||
|
||
|
||
<div id="org075350a" class="figure">
|
||
<p><img src="figs/IMG_20210224_143500.jpg" alt="IMG_20210224_143500.jpg" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 4: </span>Received APA</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org084d956" class="outline-3">
|
||
<h3 id="org084d956"><span class="section-number-3">2.1</span> Measurement Setup</h3>
|
||
<div class="outline-text-3" id="text-2-1">
|
||
<p>
|
||
The flatness corresponding to the two interface planes are measured as shown in Figure <a href="#orgdd802b8">5</a>.
|
||
</p>
|
||
|
||
|
||
<div id="orgdd802b8" class="figure">
|
||
<p><img src="figs/IMG_20210224_143809.jpg" alt="IMG_20210224_143809.jpg" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 5: </span>Measurement Setup</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org6068d02" class="outline-3">
|
||
<h3 id="org6068d02"><span class="section-number-3">2.2</span> Measurement Results</h3>
|
||
<div class="outline-text-3" id="text-2-2">
|
||
<p>
|
||
The height (Z) measurements at the 8 locations (4 points by plane) are defined below.
|
||
</p>
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">apa1 = 1e<span class="org-type">-</span>6<span class="org-type">*</span>[0, <span class="org-type">-</span>0.5 , 3.5 , 3.5 , 42 , 45.5, 52.5 , 46];
|
||
apa2 = 1e<span class="org-type">-</span>6<span class="org-type">*</span>[0, <span class="org-type">-</span>2.5 , <span class="org-type">-</span>3 , 0 , <span class="org-type">-</span>1.5 , 1 , <span class="org-type">-</span>2 , <span class="org-type">-</span>4];
|
||
apa3 = 1e<span class="org-type">-</span>6<span class="org-type">*</span>[0, <span class="org-type">-</span>1.5 , 15 , 17.5 , 6.5 , 6.5 , 21 , 23];
|
||
apa4 = 1e<span class="org-type">-</span>6<span class="org-type">*</span>[0, 6.5 , 14.5 , 9 , 16 , 22 , 29.5 , 21];
|
||
apa5 = 1e<span class="org-type">-</span>6<span class="org-type">*</span>[0, <span class="org-type">-</span>12.5, 16.5 , 28.5 , <span class="org-type">-</span>43 , <span class="org-type">-</span>52 , <span class="org-type">-</span>22.5, <span class="org-type">-</span>13.5];
|
||
apa6 = 1e<span class="org-type">-</span>6<span class="org-type">*</span>[0, <span class="org-type">-</span>8 , <span class="org-type">-</span>2 , 5 , <span class="org-type">-</span>57.5, <span class="org-type">-</span>62 , <span class="org-type">-</span>55.5, <span class="org-type">-</span>52.5];
|
||
apa7 = 1e<span class="org-type">-</span>6<span class="org-type">*</span>[0, 19.5 , <span class="org-type">-</span>8 , <span class="org-type">-</span>29.5, 75 , 97.5, 70 , 48];
|
||
apa7b = 1e<span class="org-type">-</span>6<span class="org-type">*</span>[0, 9 , <span class="org-type">-</span>18.5, <span class="org-type">-</span>30 , 31 , 46.5, 16.5 , 7.5];
|
||
apa = {apa1, apa2, apa3, apa4, apa5, apa6, apa7b};
|
||
</pre>
|
||
</div>
|
||
|
||
<p>
|
||
The X/Y Positions of the 8 measurement points are defined below.
|
||
</p>
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">W = 20e<span class="org-type">-</span>3; <span class="org-comment">% Width [m]</span>
|
||
L = 61e<span class="org-type">-</span>3; <span class="org-comment">% Length [m]</span>
|
||
d = 1e<span class="org-type">-</span>3; <span class="org-comment">% Distance from border [m]</span>
|
||
l = 15.5e<span class="org-type">-</span>3; <span class="org-comment">% [m]</span>
|
||
|
||
pos = [[<span class="org-type">-</span>L<span class="org-type">/</span>2 <span class="org-type">+</span> d; W<span class="org-type">/</span>2 <span class="org-type">-</span> d], [<span class="org-type">-</span>L<span class="org-type">/</span>2 <span class="org-type">+</span> l <span class="org-type">-</span> d; W<span class="org-type">/</span>2 <span class="org-type">-</span> d], [<span class="org-type">-</span>L<span class="org-type">/</span>2 <span class="org-type">+</span> l <span class="org-type">-</span> d; <span class="org-type">-</span>W<span class="org-type">/</span>2 <span class="org-type">+</span> d], [<span class="org-type">-</span>L<span class="org-type">/</span>2 <span class="org-type">+</span> d; <span class="org-type">-</span>W<span class="org-type">/</span>2 <span class="org-type">+</span> d], [L<span class="org-type">/</span>2 <span class="org-type">-</span> l <span class="org-type">+</span> d; W<span class="org-type">/</span>2 <span class="org-type">-</span> d], [L<span class="org-type">/</span>2 <span class="org-type">-</span> d; W<span class="org-type">/</span>2 <span class="org-type">-</span> d], [L<span class="org-type">/</span>2 <span class="org-type">-</span> d; <span class="org-type">-</span>W<span class="org-type">/</span>2 <span class="org-type">+</span> d], [L<span class="org-type">/</span>2 <span class="org-type">-</span> l <span class="org-type">+</span> d; <span class="org-type">-</span>W<span class="org-type">/</span>2 <span class="org-type">+</span> d]];
|
||
</pre>
|
||
</div>
|
||
|
||
<p>
|
||
Finally, the flatness is estimated by fitting a plane through the 8 points using the <code>fminsearch</code> command.
|
||
</p>
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">apa_d = zeros(1, 7);
|
||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:7</span>
|
||
fun = @(x)max(abs(([pos; apa{<span class="org-constant">i</span>}]<span class="org-type">-</span>[0;0;x(1)])<span class="org-type">'*</span>([x(2<span class="org-type">:</span>3);1]<span class="org-type">/</span>norm([x(2<span class="org-type">:</span>3);1]))));
|
||
x0 = [0;0;0];
|
||
[x, min_d] = fminsearch(fun,x0);
|
||
apa_d(<span class="org-constant">i</span>) = min_d;
|
||
<span class="org-keyword">end</span>
|
||
</pre>
|
||
</div>
|
||
|
||
<p>
|
||
The obtained flatness are shown in Table <a href="#org180c115">1</a>.
|
||
</p>
|
||
|
||
<table id="org180c115" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||
<caption class="t-above"><span class="table-number">Table 1:</span> Estimated flatness</caption>
|
||
|
||
<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"><b>Flatness</b> \([\mu m]\)</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td class="org-left">APA 1</td>
|
||
<td class="org-right">8.9</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 2</td>
|
||
<td class="org-right">3.1</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 3</td>
|
||
<td class="org-right">9.1</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 4</td>
|
||
<td class="org-right">3.0</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 5</td>
|
||
<td class="org-right">1.9</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 6</td>
|
||
<td class="org-right">7.1</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 7</td>
|
||
<td class="org-right">18.7</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org9c78f15" class="outline-2">
|
||
<h2 id="org9c78f15"><span class="section-number-2">3</span> Electrical Measurements</h2>
|
||
<div class="outline-text-2" id="text-3">
|
||
<div class="note" id="org6b3b797">
|
||
<p>
|
||
The capacitance of the stacks is measure with the <a href="https://www.gwinstek.com/en-global/products/detail/LCR-800">LCR-800 Meter</a> (<a href="doc/DS_LCR-800_Series_V2_E.pdf">doc</a>)
|
||
</p>
|
||
|
||
</div>
|
||
|
||
|
||
<div id="org8ed0c9a" class="figure">
|
||
<p><img src="figs/IMG_20210312_120337.jpg" alt="IMG_20210312_120337.jpg" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 6: </span>LCR Meter used for the measurements</p>
|
||
</div>
|
||
|
||
<p>
|
||
The excitation frequency is set to be 1kHz.
|
||
</p>
|
||
|
||
<table id="org89b4ba6" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||
<caption class="t-above"><span class="table-number">Table 2:</span> Capacitance measured with the LCR meter. The excitation signal is a sinus at 1kHz</caption>
|
||
|
||
<colgroup>
|
||
<col class="org-left" />
|
||
|
||
<col class="org-right" />
|
||
|
||
<col class="org-right" />
|
||
</colgroup>
|
||
<thead>
|
||
<tr>
|
||
<th scope="col" class="org-left"> </th>
|
||
<th scope="col" class="org-right"><b>Sensor Stack</b></th>
|
||
<th scope="col" class="org-right"><b>Actuator Stacks</b></th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td class="org-left">APA 1</td>
|
||
<td class="org-right">5.10</td>
|
||
<td class="org-right">10.03</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 2</td>
|
||
<td class="org-right">4.99</td>
|
||
<td class="org-right">9.85</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 3</td>
|
||
<td class="org-right">1.72</td>
|
||
<td class="org-right">5.18</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 4</td>
|
||
<td class="org-right">4.94</td>
|
||
<td class="org-right">9.82</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 5</td>
|
||
<td class="org-right">4.90</td>
|
||
<td class="org-right">9.66</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 6</td>
|
||
<td class="org-right">4.99</td>
|
||
<td class="org-right">9.91</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 7</td>
|
||
<td class="org-right">4.85</td>
|
||
<td class="org-right">9.85</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<div class="warning" id="org7818d9b">
|
||
<p>
|
||
There is clearly a problem with APA300ML number 3
|
||
</p>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org9ad1426" class="outline-2">
|
||
<h2 id="org9ad1426"><span class="section-number-2">4</span> Stiffness measurement</h2>
|
||
<div class="outline-text-2" id="text-4">
|
||
</div>
|
||
<div id="outline-container-org4ce0f01" class="outline-3">
|
||
<h3 id="org4ce0f01"><span class="section-number-3">4.1</span> APA test</h3>
|
||
<div class="outline-text-3" id="text-4-1">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">load(<span class="org-string">'meas_stiff_apa_1_x.mat'</span>, <span class="org-string">'t'</span>, <span class="org-string">'F'</span>, <span class="org-string">'d'</span>);
|
||
</pre>
|
||
</div>
|
||
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||
plot(t, F)
|
||
</pre>
|
||
</div>
|
||
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Automatic Zero of the force</span></span>
|
||
F = F <span class="org-type">-</span> mean(F(t <span class="org-type">></span> 0.1 <span class="org-type">&</span> t <span class="org-type"><</span> 0.3));
|
||
|
||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Start measurement at t = 0.2 s</span></span>
|
||
d = d(t <span class="org-type">></span> 0.2);
|
||
F = F(t <span class="org-type">></span> 0.2);
|
||
t = t(t <span class="org-type">></span> 0.2); t = t <span class="org-type">-</span> t(1);
|
||
</pre>
|
||
</div>
|
||
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">i_l_start = find(F <span class="org-type">></span> 0.3, 1, <span class="org-string">'first'</span>);
|
||
[<span class="org-type">~</span>, i_l_stop] = max(F);
|
||
</pre>
|
||
</div>
|
||
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">F_l = F(i_l_start<span class="org-type">:</span>i_l_stop);
|
||
d_l = d(i_l_start<span class="org-type">:</span>i_l_stop);
|
||
</pre>
|
||
</div>
|
||
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">fit_l = polyfit(F_l, d_l, 1);
|
||
|
||
<span class="org-comment">% %% Reset displacement based on fit</span>
|
||
<span class="org-comment">% d = d - fit_l(2);</span>
|
||
<span class="org-comment">% fit_s(2) = fit_s(2) - fit_l(2);</span>
|
||
<span class="org-comment">% fit_l(2) = 0;</span>
|
||
|
||
<span class="org-comment">% %% Estimated Stroke</span>
|
||
<span class="org-comment">% F_max = fit_s(2)/(fit_l(1) - fit_s(1));</span>
|
||
<span class="org-comment">% d_max = fit_l(1)*F_max;</span>
|
||
</pre>
|
||
</div>
|
||
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">h<span class="org-type">^</span>2<span class="org-type">/</span>fit_l(1)
|
||
</pre>
|
||
</div>
|
||
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||
hold on;
|
||
plot(F,d,<span class="org-string">'k'</span>)
|
||
plot(F_l, d_l)
|
||
plot(F_l, F_l<span class="org-type">*</span>fit_l(1) <span class="org-type">+</span> fit_l(2), <span class="org-string">'--'</span>)
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="outline-container-org7bb6f12" class="outline-2">
|
||
<h2 id="org7bb6f12"><span class="section-number-2">5</span> Stroke measurement</h2>
|
||
<div class="outline-text-2" id="text-5">
|
||
<p>
|
||
We here wish to estimate the stroke of the APA.
|
||
</p>
|
||
|
||
<p>
|
||
To do so, one side of the APA is fixed, and a displacement probe is located on the other side as shown in Figure <a href="#org1b19be0">7</a>.
|
||
</p>
|
||
|
||
<p>
|
||
Then, a voltage is applied on either one or two stacks using a DAC and a voltage amplifier.
|
||
</p>
|
||
|
||
<div class="note" id="org21182e1">
|
||
<p>
|
||
Here are the documentation of the equipment used for this test bench:
|
||
</p>
|
||
<ul class="org-ul">
|
||
<li><b>Voltage Amplifier</b>: <a href="doc/PD200-V7-R1.pdf">PD200</a> with a gain of 20</li>
|
||
<li><b>16bits DAC</b>: <a href="doc/IO131-OEM-Datasheet.pdf">IO313 Speedgoat card</a></li>
|
||
<li><b>Displacement Probe</b>: <a href="doc/Millimar--3723046--BA--C1208-C1216-C1240--FR--2016-11-08.pdf">Millimar C1216 electronics</a> and <a href="doc/tmp3m0cvmue_7888038c-cdc8-48d8-a837-35de02760685.pdf">Millimar 1318 probe</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
|
||
|
||
<div id="org1b19be0" class="figure">
|
||
<p><img src="figs/CE0EF55E-07B7-461B-8CDB-98590F68D15B.jpeg" alt="CE0EF55E-07B7-461B-8CDB-98590F68D15B.jpeg" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 7: </span>Bench to measured the APA stroke</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-orgc1429fa" class="outline-3">
|
||
<h3 id="orgc1429fa"><span class="section-number-3">5.1</span> Voltage applied on one stack</h3>
|
||
<div class="outline-text-3" id="text-5-1">
|
||
<p>
|
||
Let’s first look at the relation between the voltage applied to <b>one</b> stack to the displacement of the APA as measured by the displacement probe.
|
||
</p>
|
||
|
||
<p>
|
||
The applied voltage is shown in Figure <a href="#org6699256">8</a>.
|
||
</p>
|
||
|
||
|
||
<div id="org6699256" class="figure">
|
||
<p><img src="figs/apa_stroke_voltage_time.png" alt="apa_stroke_voltage_time.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 8: </span>Applied voltage as a function of time</p>
|
||
</div>
|
||
|
||
<p>
|
||
The obtained displacement is shown in Figure <a href="#org5cb41fe">9</a>.
|
||
The displacement is set to zero at initial time when the voltage applied is -20V.
|
||
</p>
|
||
|
||
|
||
<div id="org5cb41fe" class="figure">
|
||
<p><img src="figs/apa_stroke_time_1s.png" alt="apa_stroke_time_1s.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 9: </span>Displacement as a function of time for all the APA300ML</p>
|
||
</div>
|
||
|
||
<p>
|
||
Finally, the displacement is shown as a function of the applied voltage in Figure <a href="#orgb42b660">10</a>.
|
||
We can clearly see that there is a problem with the APA 3.
|
||
Also, there is a large hysteresis.
|
||
</p>
|
||
|
||
|
||
<div id="orgb42b660" class="figure">
|
||
<p><img src="figs/apa_d_vs_V_1s.png" alt="apa_d_vs_V_1s.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 10: </span>Displacement as a function of the applied voltage</p>
|
||
</div>
|
||
|
||
<div class="important" id="org186483c">
|
||
<p>
|
||
We can clearly see from Figure <a href="#orgb42b660">10</a> that there is a problem with the APA number 3.
|
||
</p>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-orgea6ba6b" class="outline-3">
|
||
<h3 id="orgea6ba6b"><span class="section-number-3">5.2</span> Voltage applied on two stacks</h3>
|
||
<div class="outline-text-3" id="text-5-2">
|
||
<p>
|
||
Now look at the relation between the voltage applied to the <b>two</b> other stacks to the displacement of the APA as measured by the displacement probe.
|
||
</p>
|
||
|
||
<p>
|
||
The obtained displacement is shown in Figure <a href="#orgeb9dcdb">11</a>.
|
||
The displacement is set to zero at initial time when the voltage applied is -20V.
|
||
</p>
|
||
|
||
|
||
<div id="orgeb9dcdb" class="figure">
|
||
<p><img src="figs/apa_stroke_time_2s.png" alt="apa_stroke_time_2s.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 11: </span>Displacement as a function of time for all the APA300ML</p>
|
||
</div>
|
||
|
||
<p>
|
||
Finally, the displacement is shown as a function of the applied voltage in Figure <a href="#org9ea657d">12</a>.
|
||
We can clearly see that there is a problem with the APA 3.
|
||
Also, there is a large hysteresis.
|
||
</p>
|
||
|
||
|
||
<div id="org9ea657d" class="figure">
|
||
<p><img src="figs/apa_d_vs_V_2s.png" alt="apa_d_vs_V_2s.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 12: </span>Displacement as a function of the applied voltage</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-orge9126b8" class="outline-3">
|
||
<h3 id="orge9126b8"><span class="section-number-3">5.3</span> Voltage applied on all three stacks</h3>
|
||
<div class="outline-text-3" id="text-5-3">
|
||
<p>
|
||
Finally, we can combine the two measurements to estimate the relation between the displacement and the voltage applied to the <b>three</b> stacks (Figure <a href="#org6277595">13</a>).
|
||
</p>
|
||
|
||
|
||
<div id="org6277595" class="figure">
|
||
<p><img src="figs/apa_d_vs_V_3s.png" alt="apa_d_vs_V_3s.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 13: </span>Displacement as a function of the applied voltage</p>
|
||
</div>
|
||
|
||
<p>
|
||
The obtained maximum stroke for all the APA are summarized in Table <a href="#orgd3deb06">3</a>.
|
||
</p>
|
||
|
||
<table id="orgd3deb06" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||
<caption class="t-above"><span class="table-number">Table 3:</span> Measured maximum stroke</caption>
|
||
|
||
<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"><b>Stroke</b> \([\mu m]\)</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td class="org-left">APA 1</td>
|
||
<td class="org-right">373.2</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 2</td>
|
||
<td class="org-right">365.5</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 3</td>
|
||
<td class="org-right">181.7</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 4</td>
|
||
<td class="org-right">359.7</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 5</td>
|
||
<td class="org-right">361.5</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 6</td>
|
||
<td class="org-right">363.9</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">APA 7</td>
|
||
<td class="org-right">358.4</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-orgaed4286" class="outline-2">
|
||
<h2 id="orgaed4286"><span class="section-number-2">6</span> Test-Bench Description</h2>
|
||
<div class="outline-text-2" id="text-6">
|
||
<div class="note" id="org433a399">
|
||
<p>
|
||
Here are the documentation of the equipment used for this test bench:
|
||
</p>
|
||
<ul class="org-ul">
|
||
<li>Voltage Amplifier: <a href="doc/PD200-V7-R1.pdf">PD200</a></li>
|
||
<li>Amplified Piezoelectric Actuator: <a href="doc/APA300ML.pdf">APA300ML</a></li>
|
||
<li>DAC/ADC: Speedgoat <a href="doc/IO131-OEM-Datasheet.pdf">IO313</a></li>
|
||
<li>Encoder: <a href="doc/L-9517-9678-05-A_Data_sheet_VIONiC_series_en.pdf">Renishaw Vionic</a> and used <a href="doc/L-9517-9862-01-C_Data_sheet_RKLC_EN.pdf">Ruler</a></li>
|
||
<li>Interferometer: <a href="https://www.attocube.com/en/products/laser-displacement-sensor/displacement-measuring-interferometer">Attocube IDS3010</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
|
||
|
||
<div id="org784e59a" class="figure">
|
||
<p><img src="figs/test_bench_apa_alone.png" alt="test_bench_apa_alone.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 14: </span>Schematic of the Test Bench</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org5833a92" class="outline-2">
|
||
<h2 id="org5833a92"><span class="section-number-2">7</span> Measurement Procedure</h2>
|
||
<div class="outline-text-2" id="text-7">
|
||
</div>
|
||
<div id="outline-container-org6a46893" class="outline-3">
|
||
<h3 id="org6a46893"><span class="section-number-3">7.1</span> Stroke Measurement</h3>
|
||
<div class="outline-text-3" id="text-7-1">
|
||
<p>
|
||
Using the PD200 amplifier, output a voltage:
|
||
\[ V_a = 65 + 85 \sin(2\pi \cdot t) \]
|
||
To have a quasi-static excitation between -20 and 150V.
|
||
</p>
|
||
|
||
<p>
|
||
As the gain of the PD200 amplifier is 20, the DAC output voltage should be:
|
||
\[ V_{dac}(t) = 3.25 + 4.25\sin(2\pi \cdot t) \]
|
||
</p>
|
||
|
||
<p>
|
||
Verify that the voltage offset of the PD200 is zero!
|
||
</p>
|
||
|
||
<p>
|
||
Measure the output vertical displacement \(d\) using the interferometer.
|
||
</p>
|
||
|
||
<p>
|
||
Then, plot \(d\) as a function of \(V_a\), and perform a linear regression.
|
||
Conclude on the obtained stroke.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-orgbd4b4d5" class="outline-3">
|
||
<h3 id="orgbd4b4d5"><span class="section-number-3">7.2</span> Stiffness Measurement</h3>
|
||
<div class="outline-text-3" id="text-7-2">
|
||
<p>
|
||
Add some (known) weight \(\delta m g\) on the suspended mass and measure the deflection \(\delta d\).
|
||
This can be tested when the piezoelectric stacks are open-circuit.
|
||
</p>
|
||
|
||
<p>
|
||
As the stiffness will be around \(k \approx 10^6 N/m\), an added mass of \(m \approx 100g\) will induce a static deflection of \(\approx 1\mu m\) which should be large enough for a precise measurement using the interferometer.
|
||
</p>
|
||
|
||
<p>
|
||
Then the obtained stiffness is:
|
||
</p>
|
||
\begin{equation}
|
||
k = \frac{\delta m g}{\delta d}
|
||
\end{equation}
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org9ad673f" class="outline-3">
|
||
<h3 id="org9ad673f"><span class="section-number-3">7.3</span> Hysteresis measurement</h3>
|
||
<div class="outline-text-3" id="text-7-3">
|
||
<p>
|
||
Supply a quasi static sinusoidal excitation \(V_a\) at different voltages.
|
||
</p>
|
||
|
||
<p>
|
||
The offset should be 65V, and the sin amplitude can range from 1V up to 85V.
|
||
</p>
|
||
|
||
<p>
|
||
For each excitation amplitude, the vertical displacement \(d\) of the mass is measured.
|
||
</p>
|
||
|
||
<p>
|
||
Then, \(d\) is plotted as a function of \(V_a\) for all the amplitudes.
|
||
</p>
|
||
|
||
|
||
<div id="orgb9e6491" class="figure">
|
||
<p><img src="figs/expected_hysteresis.png" alt="expected_hysteresis.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 15: </span>Expected Hysteresis (<a class='org-ref-reference' href="#poel10_explor_activ_hard_mount_vibrat">poel10_explor_activ_hard_mount_vibrat</a>)</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org0cf0807" class="outline-3">
|
||
<h3 id="org0cf0807"><span class="section-number-3">7.4</span> Piezoelectric Actuator Constant</h3>
|
||
<div class="outline-text-3" id="text-7-4">
|
||
<p>
|
||
Using the measurement test-bench, it is rather easy the determine the static gain between the applied voltage \(V_a\) to the induced displacement \(d\).
|
||
Use a quasi static (1Hz) excitation signal \(V_a\) on the piezoelectric stack and measure the vertical displacement \(d\).
|
||
Perform a linear regression to obtain:
|
||
</p>
|
||
\begin{equation}
|
||
d = g_{d/V_a} \cdot V_a
|
||
\end{equation}
|
||
|
||
<p>
|
||
Using the Simscape model of the APA, it is possible to determine the static gain between the actuator force \(F_a\) to the induced displacement \(d\):
|
||
</p>
|
||
\begin{equation}
|
||
d = g_{d/F_a} \cdot F_a
|
||
\end{equation}
|
||
|
||
<p>
|
||
From the two gains, it is then easy to determine \(g_a\):
|
||
</p>
|
||
\begin{equation}
|
||
g_a = \frac{F_a}{V_a} = \frac{F_a}{d} \cdot \frac{d}{V_a} = \frac{g_{d/V_a}}{g_{d/F_a}}
|
||
\end{equation}
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-orgf85e1d8" class="outline-3">
|
||
<h3 id="orgf85e1d8"><span class="section-number-3">7.5</span> Piezoelectric Sensor Constant</h3>
|
||
<div class="outline-text-3" id="text-7-5">
|
||
<p>
|
||
From a quasi static excitation of the piezoelectric stack, measure the gain from \(V_a\) to \(V_s\):
|
||
</p>
|
||
\begin{equation}
|
||
V_s = g_{V_s/V_a} V_a
|
||
\end{equation}
|
||
|
||
<p>
|
||
Note here that there is an high pass filter formed by the piezo capacitor and parallel resistor.
|
||
The excitation frequency should then be in between the cut-off frequency of this high pass filter and the first resonance.
|
||
</p>
|
||
|
||
<p>
|
||
Alternatively, the gain can be computed from the dynamical identification and taking the gain at the wanted frequency.
|
||
</p>
|
||
|
||
<p>
|
||
Using the simscape model, compute the static gain from the actuator force \(F_a\) to the strain of the sensor stack \(dl\):
|
||
</p>
|
||
\begin{equation}
|
||
dl = g_{dl/F_a} F_a
|
||
\end{equation}
|
||
|
||
<p>
|
||
Then, the static gain from the sensor stack strain \(dl\) to the general voltage \(V_s\) is:
|
||
</p>
|
||
\begin{equation}
|
||
g_s = \frac{V_s}{dl} = \frac{V_s}{V_a} \cdot \frac{V_a}{F_a} \cdot \frac{F_a}{dl} = \frac{g_{V_s/V_a}}{g_a \cdot g_{dl/F_a}}
|
||
\end{equation}
|
||
|
||
<p>
|
||
Alternatively, we could impose an external force to add strain in the APA that should be equally present in all the 3 stacks and equal to 1/5 of the vertical strain.
|
||
This external force can be some weight added, or a piezo in parallel.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org145f68e" class="outline-3">
|
||
<h3 id="org145f68e"><span class="section-number-3">7.6</span> Capacitance Measurement</h3>
|
||
<div class="outline-text-3" id="text-7-6">
|
||
<p>
|
||
Measure the capacitance of the 3 stacks individually using a precise multi-meter.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-orga7cc107" class="outline-3">
|
||
<h3 id="orga7cc107"><span class="section-number-3">7.7</span> Dynamical Behavior</h3>
|
||
<div class="outline-text-3" id="text-7-7">
|
||
<p>
|
||
Perform a system identification from \(V_a\) to the measured displacement \(d\) by the interferometer and by the encoder, and to the generated voltage \(V_s\).
|
||
</p>
|
||
|
||
<p>
|
||
This can be performed using different excitation signals.
|
||
</p>
|
||
|
||
<p>
|
||
This can also be performed with and without the encoder fixed to the APA.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org2f1f3cd" class="outline-3">
|
||
<h3 id="org2f1f3cd"><span class="section-number-3">7.8</span> Compare the results obtained for all 7 APA300ML</h3>
|
||
<div class="outline-text-3" id="text-7-8">
|
||
<p>
|
||
Compare all the obtained parameters for all the test APA.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-orgfa86e80" class="outline-2">
|
||
<h2 id="orgfa86e80"><span class="section-number-2">8</span> Measurement Results</h2>
|
||
</div>
|
||
|
||
<div id="outline-container-org00950eb" class="outline-2">
|
||
<h2 id="org00950eb"><span class="section-number-2">9</span> Test Bench APA300ML - Simscape Model</h2>
|
||
<div class="outline-text-2" id="text-9">
|
||
</div>
|
||
<div id="outline-container-org0a412ce" class="outline-3">
|
||
<h3 id="org0a412ce"><span class="section-number-3">9.1</span> Introduction</h3>
|
||
</div>
|
||
<div id="outline-container-org85e8799" class="outline-3">
|
||
<h3 id="org85e8799"><span class="section-number-3">9.2</span> Nano Hexapod object</h3>
|
||
<div class="outline-text-3" id="text-9-2">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">n_hexapod = struct();
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org53dfde2" class="outline-4">
|
||
<h4 id="org53dfde2"><span class="section-number-4">9.2.1</span> APA - 2 DoF</h4>
|
||
<div class="outline-text-4" id="text-9-2-1">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">n_hexapod.actuator = struct();
|
||
|
||
n_hexapod.actuator.type = 1;
|
||
|
||
n_hexapod.actuator.k = ones(6,1)<span class="org-type">*</span>0.35e6; <span class="org-comment">% [N/m]</span>
|
||
n_hexapod.actuator.ke = ones(6,1)<span class="org-type">*</span>1.5e6; <span class="org-comment">% [N/m]</span>
|
||
n_hexapod.actuator.ka = ones(6,1)<span class="org-type">*</span>43e6; <span class="org-comment">% [N/m]</span>
|
||
|
||
n_hexapod.actuator.c = ones(6,1)<span class="org-type">*</span>3e1; <span class="org-comment">% [N/(m/s)]</span>
|
||
n_hexapod.actuator.ce = ones(6,1)<span class="org-type">*</span>1e1; <span class="org-comment">% [N/(m/s)]</span>
|
||
n_hexapod.actuator.ca = ones(6,1)<span class="org-type">*</span>1e1; <span class="org-comment">% [N/(m/s)]</span>
|
||
|
||
n_hexapod.actuator.Leq = ones(6,1)<span class="org-type">*</span>0.056; <span class="org-comment">% [m]</span>
|
||
|
||
n_hexapod.actuator.Ga = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Actuator gain [N/V]</span>
|
||
n_hexapod.actuator.Gs = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Sensor gain [V/m]</span>
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org9811887" class="outline-4">
|
||
<h4 id="org9811887"><span class="section-number-4">9.2.2</span> APA - Flexible Frame</h4>
|
||
<div class="outline-text-4" id="text-9-2-2">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">n_hexapod.actuator.type = 2;
|
||
|
||
n_hexapod.actuator.K = readmatrix(<span class="org-string">'APA300ML_b_mat_K.CSV'</span>); <span class="org-comment">% Stiffness Matrix</span>
|
||
n_hexapod.actuator.M = readmatrix(<span class="org-string">'APA300ML_b_mat_M.CSV'</span>); <span class="org-comment">% Mass Matrix</span>
|
||
n_hexapod.actuator.xi = 0.01; <span class="org-comment">% Damping ratio</span>
|
||
n_hexapod.actuator.P = extractNodes(<span class="org-string">'APA300ML_b_out_nodes_3D.txt'</span>); <span class="org-comment">% Node coordinates [m]</span>
|
||
|
||
n_hexapod.actuator.ks = 235e6; <span class="org-comment">% Stiffness of one stack [N/m]</span>
|
||
n_hexapod.actuator.cs = 1e1; <span class="org-comment">% Stiffness of one stack [N/m]</span>
|
||
|
||
n_hexapod.actuator.Ga = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Actuator gain [N/V]</span>
|
||
n_hexapod.actuator.Gs = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Sensor gain [V/m]</span>
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org9d8ceb3" class="outline-4">
|
||
<h4 id="org9d8ceb3"><span class="section-number-4">9.2.3</span> APA - Fully Flexible</h4>
|
||
<div class="outline-text-4" id="text-9-2-3">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">n_hexapod.actuator.type = 3;
|
||
|
||
n_hexapod.actuator.K = readmatrix(<span class="org-string">'APA300ML_full_mat_K.CSV'</span>); <span class="org-comment">% Stiffness Matrix</span>
|
||
n_hexapod.actuator.M = readmatrix(<span class="org-string">'APA300ML_full_mat_M.CSV'</span>); <span class="org-comment">% Mass Matrix</span>
|
||
n_hexapod.actuator.xi = 0.01; <span class="org-comment">% Damping ratio</span>
|
||
n_hexapod.actuator.P = extractNodes(<span class="org-string">'APA300ML_full_out_nodes_3D.txt'</span>); <span class="org-comment">% Node coordiantes [m]</span>
|
||
|
||
n_hexapod.actuator.Ga = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Actuator gain [N/V]</span>
|
||
n_hexapod.actuator.Gs = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Sensor gain [V/m]</span>
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-orgf71036e" class="outline-3">
|
||
<h3 id="orgf71036e"><span class="section-number-3">9.3</span> Identification</h3>
|
||
<div class="outline-text-3" id="text-9-3">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
||
options = linearizeOptions;
|
||
options.SampleTime = 0;
|
||
|
||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||
mdl = <span class="org-string">'test_bench_apa300ml'</span>;
|
||
|
||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||
clear io; io_i = 1;
|
||
io(io_i) = linio([mdl, <span class="org-string">'/Va'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Actuator Voltage</span>
|
||
io(io_i) = linio([mdl, <span class="org-string">'/Vs'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Sensor Voltage</span>
|
||
io(io_i) = linio([mdl, <span class="org-string">'/dL'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Relative Motion Outputs</span>
|
||
io(io_i) = linio([mdl, <span class="org-string">'/z'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Vertical Motion</span>
|
||
|
||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||
Ga = linearize(mdl, io, 0.0, options);
|
||
Ga.InputName = {<span class="org-string">'Va'</span>};
|
||
Ga.OutputName = {<span class="org-string">'Vs'</span>, <span class="org-string">'dL'</span>, <span class="org-string">'z'</span>};
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org469dc6d" class="outline-3">
|
||
<h3 id="org469dc6d"><span class="section-number-3">9.4</span> Compare 2-DoF with flexible</h3>
|
||
<div class="outline-text-3" id="text-9-4">
|
||
</div>
|
||
<div id="outline-container-org15e5208" class="outline-4">
|
||
<h4 id="org15e5208"><span class="section-number-4">9.4.1</span> APA - 2 DoF</h4>
|
||
<div class="outline-text-4" id="text-9-4-1">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">n_hexapod = struct();
|
||
|
||
n_hexapod.actuator = struct();
|
||
|
||
n_hexapod.actuator.type = 1;
|
||
|
||
n_hexapod.actuator.k = ones(6,1)<span class="org-type">*</span>0.35e6; <span class="org-comment">% [N/m]</span>
|
||
n_hexapod.actuator.ke = ones(6,1)<span class="org-type">*</span>1.5e6; <span class="org-comment">% [N/m]</span>
|
||
n_hexapod.actuator.ka = ones(6,1)<span class="org-type">*</span>43e6; <span class="org-comment">% [N/m]</span>
|
||
|
||
n_hexapod.actuator.c = ones(6,1)<span class="org-type">*</span>3e1; <span class="org-comment">% [N/(m/s)]</span>
|
||
n_hexapod.actuator.ce = ones(6,1)<span class="org-type">*</span>1e1; <span class="org-comment">% [N/(m/s)]</span>
|
||
n_hexapod.actuator.ca = ones(6,1)<span class="org-type">*</span>1e1; <span class="org-comment">% [N/(m/s)]</span>
|
||
|
||
n_hexapod.actuator.Leq = ones(6,1)<span class="org-type">*</span>0.056; <span class="org-comment">% [m]</span>
|
||
|
||
n_hexapod.actuator.Ga = ones(6,1)<span class="org-type">*-</span>2.15; <span class="org-comment">% Actuator gain [N/V]</span>
|
||
n_hexapod.actuator.Gs = ones(6,1)<span class="org-type">*</span>2.305e<span class="org-type">-</span>08; <span class="org-comment">% Sensor gain [V/m]</span>
|
||
</pre>
|
||
</div>
|
||
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">G_2dof = linearize(mdl, io, 0.0, options);
|
||
G_2dof.InputName = {<span class="org-string">'Va'</span>};
|
||
G_2dof.OutputName = {<span class="org-string">'Vs'</span>, <span class="org-string">'dL'</span>, <span class="org-string">'z'</span>};
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-orgb255466" class="outline-4">
|
||
<h4 id="orgb255466"><span class="section-number-4">9.4.2</span> APA - Fully Flexible</h4>
|
||
<div class="outline-text-4" id="text-9-4-2">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">n_hexapod = struct();
|
||
|
||
n_hexapod.actuator.type = 3;
|
||
|
||
n_hexapod.actuator.K = readmatrix(<span class="org-string">'APA300ML_full_mat_K.CSV'</span>); <span class="org-comment">% Stiffness Matrix</span>
|
||
n_hexapod.actuator.M = readmatrix(<span class="org-string">'APA300ML_full_mat_M.CSV'</span>); <span class="org-comment">% Mass Matrix</span>
|
||
n_hexapod.actuator.xi = 0.01; <span class="org-comment">% Damping ratio</span>
|
||
n_hexapod.actuator.P = extractNodes(<span class="org-string">'APA300ML_full_out_nodes_3D.txt'</span>); <span class="org-comment">% Node coordiantes [m]</span>
|
||
|
||
n_hexapod.actuator.Ga = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Actuator gain [N/V]</span>
|
||
n_hexapod.actuator.Gs = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Sensor gain [V/m]</span>
|
||
</pre>
|
||
</div>
|
||
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">G_flex = linearize(mdl, io, 0.0, options);
|
||
G_flex.InputName = {<span class="org-string">'Va'</span>};
|
||
G_flex.OutputName = {<span class="org-string">'Vs'</span>, <span class="org-string">'dL'</span>, <span class="org-string">'z'</span>};
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org54e85ec" class="outline-4">
|
||
<h4 id="org54e85ec"><span class="section-number-4">9.4.3</span> Comparison</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org4dfbd46" class="outline-2">
|
||
<h2 id="org4dfbd46"><span class="section-number-2">10</span> Test Bench Struts - Simscape Model</h2>
|
||
<div class="outline-text-2" id="text-10">
|
||
</div>
|
||
<div id="outline-container-orgadae31a" class="outline-3">
|
||
<h3 id="orgadae31a"><span class="section-number-3">10.1</span> Introduction</h3>
|
||
</div>
|
||
<div id="outline-container-org3bea7d1" class="outline-3">
|
||
<h3 id="org3bea7d1"><span class="section-number-3">10.2</span> Nano Hexapod object</h3>
|
||
<div class="outline-text-3" id="text-10-2">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">n_hexapod = struct();
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-orgb32ee83" class="outline-4">
|
||
<h4 id="orgb32ee83"><span class="section-number-4">10.2.1</span> Flexible Joint - Bot</h4>
|
||
<div class="outline-text-4" id="text-10-2-1">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">n_hexapod.flex_bot = struct();
|
||
|
||
n_hexapod.flex_bot.type = 1; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
|
||
|
||
n_hexapod.flex_bot.kRx = ones(6,1)<span class="org-type">*</span>5; <span class="org-comment">% X bending stiffness [Nm/rad]</span>
|
||
n_hexapod.flex_bot.kRy = ones(6,1)<span class="org-type">*</span>5; <span class="org-comment">% Y bending stiffness [Nm/rad]</span>
|
||
n_hexapod.flex_bot.kRz = ones(6,1)<span class="org-type">*</span>260; <span class="org-comment">% Torsionnal stiffness [Nm/rad]</span>
|
||
n_hexapod.flex_bot.kz = ones(6,1)<span class="org-type">*</span>1e8; <span class="org-comment">% Axial stiffness [N/m]</span>
|
||
|
||
n_hexapod.flex_bot.cRx = ones(6,1)<span class="org-type">*</span>0.1; <span class="org-comment">% [Nm/(rad/s)]</span>
|
||
n_hexapod.flex_bot.cRy = ones(6,1)<span class="org-type">*</span>0.1; <span class="org-comment">% [Nm/(rad/s)]</span>
|
||
n_hexapod.flex_bot.cRz = ones(6,1)<span class="org-type">*</span>0.1; <span class="org-comment">% [Nm/(rad/s)]</span>
|
||
n_hexapod.flex_bot.cz = ones(6,1)<span class="org-type">*</span>1e2; <span class="org-comment">%[N/(m/s)]</span>
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org69d46ec" class="outline-4">
|
||
<h4 id="org69d46ec"><span class="section-number-4">10.2.2</span> Flexible Joint - Top</h4>
|
||
<div class="outline-text-4" id="text-10-2-2">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">n_hexapod.flex_top = struct();
|
||
|
||
n_hexapod.flex_top.type = 2; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
|
||
|
||
n_hexapod.flex_top.kRx = ones(6,1)<span class="org-type">*</span>5; <span class="org-comment">% X bending stiffness [Nm/rad]</span>
|
||
n_hexapod.flex_top.kRy = ones(6,1)<span class="org-type">*</span>5; <span class="org-comment">% Y bending stiffness [Nm/rad]</span>
|
||
n_hexapod.flex_top.kRz = ones(6,1)<span class="org-type">*</span>260; <span class="org-comment">% Torsionnal stiffness [Nm/rad]</span>
|
||
n_hexapod.flex_top.kz = ones(6,1)<span class="org-type">*</span>1e8; <span class="org-comment">% Axial stiffness [N/m]</span>
|
||
|
||
n_hexapod.flex_top.cRx = ones(6,1)<span class="org-type">*</span>0.1; <span class="org-comment">% [Nm/(rad/s)]</span>
|
||
n_hexapod.flex_top.cRy = ones(6,1)<span class="org-type">*</span>0.1; <span class="org-comment">% [Nm/(rad/s)]</span>
|
||
n_hexapod.flex_top.cRz = ones(6,1)<span class="org-type">*</span>0.1; <span class="org-comment">% [Nm/(rad/s)]</span>
|
||
n_hexapod.flex_top.cz = ones(6,1)<span class="org-type">*</span>1e2; <span class="org-comment">%[N/(m/s)]</span>
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org93825eb" class="outline-4">
|
||
<h4 id="org93825eb"><span class="section-number-4">10.2.3</span> APA - 2 DoF</h4>
|
||
<div class="outline-text-4" id="text-10-2-3">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">n_hexapod.actuator = struct();
|
||
|
||
n_hexapod.actuator.type = 1;
|
||
|
||
n_hexapod.actuator.k = ones(6,1)<span class="org-type">*</span>0.35e6; <span class="org-comment">% [N/m]</span>
|
||
n_hexapod.actuator.ke = ones(6,1)<span class="org-type">*</span>1.5e6; <span class="org-comment">% [N/m]</span>
|
||
n_hexapod.actuator.ka = ones(6,1)<span class="org-type">*</span>43e6; <span class="org-comment">% [N/m]</span>
|
||
|
||
n_hexapod.actuator.c = ones(6,1)<span class="org-type">*</span>3e1; <span class="org-comment">% [N/(m/s)]</span>
|
||
n_hexapod.actuator.ce = ones(6,1)<span class="org-type">*</span>1e1; <span class="org-comment">% [N/(m/s)]</span>
|
||
n_hexapod.actuator.ca = ones(6,1)<span class="org-type">*</span>1e1; <span class="org-comment">% [N/(m/s)]</span>
|
||
|
||
n_hexapod.actuator.Leq = ones(6,1)<span class="org-type">*</span>0.056; <span class="org-comment">% [m]</span>
|
||
|
||
n_hexapod.actuator.Ga = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Actuator gain [N/V]</span>
|
||
n_hexapod.actuator.Gs = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Sensor gain [V/m]</span>
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org4a752f7" class="outline-4">
|
||
<h4 id="org4a752f7"><span class="section-number-4">10.2.4</span> APA - Flexible Frame</h4>
|
||
<div class="outline-text-4" id="text-10-2-4">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">n_hexapod.actuator.type = 2;
|
||
|
||
n_hexapod.actuator.K = readmatrix(<span class="org-string">'APA300ML_b_mat_K.CSV'</span>); <span class="org-comment">% Stiffness Matrix</span>
|
||
n_hexapod.actuator.M = readmatrix(<span class="org-string">'APA300ML_b_mat_M.CSV'</span>); <span class="org-comment">% Mass Matrix</span>
|
||
n_hexapod.actuator.xi = 0.01; <span class="org-comment">% Damping ratio</span>
|
||
n_hexapod.actuator.P = extractNodes(<span class="org-string">'APA300ML_b_out_nodes_3D.txt'</span>); <span class="org-comment">% Node coordinates [m]</span>
|
||
|
||
n_hexapod.actuator.ks = 235e6; <span class="org-comment">% Stiffness of one stack [N/m]</span>
|
||
n_hexapod.actuator.cs = 1e1; <span class="org-comment">% Stiffness of one stack [N/m]</span>
|
||
|
||
n_hexapod.actuator.Ga = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Actuator gain [N/V]</span>
|
||
n_hexapod.actuator.Gs = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Sensor gain [V/m]</span>
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-orgca6a4d6" class="outline-4">
|
||
<h4 id="orgca6a4d6"><span class="section-number-4">10.2.5</span> APA - Fully Flexible</h4>
|
||
<div class="outline-text-4" id="text-10-2-5">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">n_hexapod.actuator.type = 3;
|
||
|
||
n_hexapod.actuator.K = readmatrix(<span class="org-string">'APA300ML_full_mat_K.CSV'</span>); <span class="org-comment">% Stiffness Matrix</span>
|
||
n_hexapod.actuator.M = readmatrix(<span class="org-string">'APA300ML_full_mat_M.CSV'</span>); <span class="org-comment">% Mass Matrix</span>
|
||
n_hexapod.actuator.xi = 0.01; <span class="org-comment">% Damping ratio</span>
|
||
n_hexapod.actuator.P = extractNodes(<span class="org-string">'APA300ML_full_out_nodes_3D.txt'</span>); <span class="org-comment">% Node coordiantes [m]</span>
|
||
|
||
n_hexapod.actuator.Ga = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Actuator gain [N/V]</span>
|
||
n_hexapod.actuator.Gs = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Sensor gain [V/m]</span>
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div id="outline-container-org4f10f6f" class="outline-3">
|
||
<h3 id="org4f10f6f"><span class="section-number-3">10.3</span> Identification</h3>
|
||
<div class="outline-text-3" id="text-10-3">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
||
options = linearizeOptions;
|
||
options.SampleTime = 0;
|
||
|
||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||
mdl = <span class="org-string">'test_bench_struts'</span>;
|
||
|
||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||
clear io; io_i = 1;
|
||
io(io_i) = linio([mdl, <span class="org-string">'/Va'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Actuator Voltage</span>
|
||
io(io_i) = linio([mdl, <span class="org-string">'/Vs'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Sensor Voltage</span>
|
||
io(io_i) = linio([mdl, <span class="org-string">'/dL'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Relative Motion Outputs</span>
|
||
io(io_i) = linio([mdl, <span class="org-string">'/z'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Vertical Motion</span>
|
||
|
||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||
Gs = linearize(mdl, io, 0.0, options);
|
||
Gs.InputName = {<span class="org-string">'Va'</span>};
|
||
Gs.OutputName = {<span class="org-string">'Vs'</span>, <span class="org-string">'dL'</span>, <span class="org-string">'z'</span>};
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org4772b0f" class="outline-3">
|
||
<h3 id="org4772b0f"><span class="section-number-3">10.4</span> Compare flexible joints</h3>
|
||
<div class="outline-text-3" id="text-10-4">
|
||
</div>
|
||
<div id="outline-container-orgc8b315e" class="outline-4">
|
||
<h4 id="orgc8b315e"><span class="section-number-4">10.4.1</span> Perfect</h4>
|
||
<div class="outline-text-4" id="text-10-4-1">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">n_hexapod.flex_bot.type = 1; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
|
||
n_hexapod.flex_top.type = 2; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
|
||
</pre>
|
||
</div>
|
||
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">Gp = linearize(mdl, io, 0.0, options);
|
||
Gp.InputName = {<span class="org-string">'Va'</span>};
|
||
Gp.OutputName = {<span class="org-string">'Vs'</span>, <span class="org-string">'dL'</span>, <span class="org-string">'z'</span>};
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org98bf1e5" class="outline-4">
|
||
<h4 id="org98bf1e5"><span class="section-number-4">10.4.2</span> Top Flexible</h4>
|
||
<div class="outline-text-4" id="text-10-4-2">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">n_hexapod.flex_bot.type = 1; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
|
||
n_hexapod.flex_top.type = 3; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
|
||
</pre>
|
||
</div>
|
||
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">Gt = linearize(mdl, io, 0.0, options);
|
||
Gt.InputName = {<span class="org-string">'Va'</span>};
|
||
Gt.OutputName = {<span class="org-string">'Vs'</span>, <span class="org-string">'dL'</span>, <span class="org-string">'z'</span>};
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-orgff88bc7" class="outline-4">
|
||
<h4 id="orgff88bc7"><span class="section-number-4">10.4.3</span> Bottom Flexible</h4>
|
||
<div class="outline-text-4" id="text-10-4-3">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">n_hexapod.flex_bot.type = 3; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
|
||
n_hexapod.flex_top.type = 2; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
|
||
</pre>
|
||
</div>
|
||
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">Gb = linearize(mdl, io, 0.0, options);
|
||
Gb.InputName = {<span class="org-string">'Va'</span>};
|
||
Gb.OutputName = {<span class="org-string">'Vs'</span>, <span class="org-string">'dL'</span>, <span class="org-string">'z'</span>};
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-orga9d536f" class="outline-4">
|
||
<h4 id="orga9d536f"><span class="section-number-4">10.4.4</span> Both Flexible</h4>
|
||
<div class="outline-text-4" id="text-10-4-4">
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">n_hexapod.flex_bot.type = 3; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
|
||
n_hexapod.flex_top.type = 3; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
|
||
</pre>
|
||
</div>
|
||
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">Gf = linearize(mdl, io, 0.0, options);
|
||
Gf.InputName = {<span class="org-string">'Va'</span>};
|
||
Gf.OutputName = {<span class="org-string">'Vs'</span>, <span class="org-string">'dL'</span>, <span class="org-string">'z'</span>};
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org0b21aca" class="outline-4">
|
||
<h4 id="org0b21aca"><span class="section-number-4">10.4.5</span> Comparison</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="outline-container-orgcac0e39" class="outline-2">
|
||
<h2 id="orgcac0e39"><span class="section-number-2">11</span> Resonance frequencies - APA300ML</h2>
|
||
<div class="outline-text-2" id="text-11">
|
||
</div>
|
||
<div id="outline-container-org7d96cee" class="outline-3">
|
||
<h3 id="org7d96cee"><span class="section-number-3">11.1</span> Introduction</h3>
|
||
<div class="outline-text-3" id="text-11-1">
|
||
<p>
|
||
Three main resonances are foreseen to be problematic for the control of the APA300ML:
|
||
</p>
|
||
<ul class="org-ul">
|
||
<li>Mode in X-bending at 189Hz (Figure <a href="#org89e68b5">16</a>)</li>
|
||
<li>Mode in Y-bending at 285Hz (Figure <a href="#org64bca6f">17</a>)</li>
|
||
<li>Mode in Z-torsion at 400Hz (Figure <a href="#org9b7907a">18</a>)</li>
|
||
</ul>
|
||
|
||
|
||
<div id="org89e68b5" class="figure">
|
||
<p><img src="figs/mode_bending_x.gif" alt="mode_bending_x.gif" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 16: </span>X-bending mode (189Hz)</p>
|
||
</div>
|
||
|
||
|
||
<div id="org64bca6f" class="figure">
|
||
<p><img src="figs/mode_bending_y.gif" alt="mode_bending_y.gif" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 17: </span>Y-bending mode (285Hz)</p>
|
||
</div>
|
||
|
||
|
||
<div id="org9b7907a" class="figure">
|
||
<p><img src="figs/mode_torsion_z.gif" alt="mode_torsion_z.gif" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 18: </span>Z-torsion mode (400Hz)</p>
|
||
</div>
|
||
|
||
<p>
|
||
These modes are present when flexible joints are fixed to the ends of the APA300ML.
|
||
</p>
|
||
|
||
<p>
|
||
In this section, we try to find the resonance frequency of these modes when one end of the APA is fixed and the other is free.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org942c4ee" class="outline-3">
|
||
<h3 id="org942c4ee"><span class="section-number-3">11.2</span> Setup</h3>
|
||
<div class="outline-text-3" id="text-11-2">
|
||
<p>
|
||
The measurement setup is shown in Figure <a href="#orga792666">19</a>.
|
||
A Laser vibrometer is measuring the difference of motion of two points.
|
||
The APA is excited with an instrumented hammer and the transfer function from the hammer to the measured rotation is computed.
|
||
</p>
|
||
|
||
<div class="note" id="orgb66c945">
|
||
<ul class="org-ul">
|
||
<li>Laser Doppler Vibrometer Polytec OFV512</li>
|
||
<li>Instrumented hammer</li>
|
||
</ul>
|
||
|
||
</div>
|
||
|
||
|
||
<div id="orga792666" class="figure">
|
||
<p><img src="figs/measurement_setup_torsion.png" alt="measurement_setup_torsion.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 19: </span>Measurement setup with a Laser Doppler Vibrometer and one instrumental hammer</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org8e95287" class="outline-3">
|
||
<h3 id="org8e95287"><span class="section-number-3">11.3</span> Bending - X</h3>
|
||
<div class="outline-text-3" id="text-11-3">
|
||
<p>
|
||
The setup to measure the X-bending motion is shown in Figure <a href="#org927800f">20</a>.
|
||
The APA is excited with an instrumented hammer having a solid metallic tip.
|
||
The impact point is on the back-side of the APA aligned with the top measurement point.
|
||
</p>
|
||
|
||
|
||
<div id="org927800f" class="figure">
|
||
<p><img src="figs/measurement_setup_X_bending.png" alt="measurement_setup_X_bending.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 20: </span>X-Bending measurement setup</p>
|
||
</div>
|
||
|
||
<p>
|
||
The data is loaded.
|
||
</p>
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">bending_X = load(<span class="org-string">'apa300ml_bending_X_top.mat'</span>)
|
||
</pre>
|
||
</div>
|
||
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">Ts = bending_X.Track1_X_Resolution; <span class="org-comment">% Sampling frequency [Hz]</span>
|
||
</pre>
|
||
</div>
|
||
|
||
<p>
|
||
The transfer function from the input force to the output “rotation” (difference between the two measured distances).
|
||
</p>
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">win = hann(ceil(1<span class="org-type">/</span>Ts));
|
||
[G_bending_X, f] = tfestimate(bending_X.Track1, bending_X.Track2, win, [], [], 1<span class="org-type">/</span>Ts);
|
||
</pre>
|
||
</div>
|
||
|
||
<p>
|
||
The result is shown in Figure <a href="#org5c2ecf6">21</a>.
|
||
</p>
|
||
|
||
<p>
|
||
The can clearly observe a nice peak at 280Hz, and then peaks at the odd “harmonics” (third “harmonic” at 840Hz, and fifth “harmonic” at 1400Hz).
|
||
</p>
|
||
|
||
<div id="org5c2ecf6" class="figure">
|
||
<p><img src="figs/apa300ml_meas_freq_bending_x.png" alt="apa300ml_meas_freq_bending_x.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 21: </span>Obtained FRF for the X-bending</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-orgc2fbc2f" class="outline-3">
|
||
<h3 id="orgc2fbc2f"><span class="section-number-3">11.4</span> Bending - Y</h3>
|
||
<div class="outline-text-3" id="text-11-4">
|
||
<p>
|
||
The setup to measure the Y-bending is shown in Figure <a href="#orgd2764fc">22</a>.
|
||
</p>
|
||
|
||
<p>
|
||
The impact point of the instrumented hammer is located on the back surface of the top interface (on the back of the 2 measurements points).
|
||
</p>
|
||
|
||
|
||
<div id="orgd2764fc" class="figure">
|
||
<p><img src="figs/measurement_setup_Y_bending.png" alt="measurement_setup_Y_bending.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 22: </span>Y-Bending measurement setup</p>
|
||
</div>
|
||
|
||
<p>
|
||
The data is loaded, and the transfer function from the force to the measured rotation is computed.
|
||
</p>
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">bending_Y = load(<span class="org-string">'apa300ml_bending_Y_top.mat'</span>)
|
||
[G_bending_Y, <span class="org-type">~</span>] = tfestimate(bending_Y.Track1, bending_Y.Track2, win, [], [], 1<span class="org-type">/</span>Ts);
|
||
</pre>
|
||
</div>
|
||
|
||
<p>
|
||
The results are shown in Figure <a href="#orgf8b4934">23</a>.
|
||
The main resonance is at 412Hz, and we also see the third “harmonic” at 1220Hz.
|
||
</p>
|
||
|
||
|
||
<div id="orgf8b4934" class="figure">
|
||
<p><img src="figs/apa300ml_meas_freq_bending_y.png" alt="apa300ml_meas_freq_bending_y.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 23: </span>Obtained FRF for the Y-bending</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org414727b" class="outline-3">
|
||
<h3 id="org414727b"><span class="section-number-3">11.5</span> Torsion - Z</h3>
|
||
<div class="outline-text-3" id="text-11-5">
|
||
<p>
|
||
Finally, we measure the Z-torsion resonance as shown in Figure <a href="#org72d95ec">24</a>.
|
||
</p>
|
||
|
||
<p>
|
||
The excitation is shown on the other side of the APA, on the side to excite the torsion motion.
|
||
</p>
|
||
|
||
|
||
<div id="org72d95ec" class="figure">
|
||
<p><img src="figs/measurement_setup_torsion_bis.png" alt="measurement_setup_torsion_bis.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 24: </span>Z-Torsion measurement setup</p>
|
||
</div>
|
||
|
||
<p>
|
||
The data is loaded, and the transfer function computed.
|
||
</p>
|
||
<div class="org-src-container">
|
||
<pre class="src src-matlab">torsion = load(<span class="org-string">'apa300ml_torsion_left.mat'</span>)
|
||
[G_torsion, <span class="org-type">~</span>] = tfestimate(torsion_left.Track1, torsion_left.Track2, win, [], [], 1<span class="org-type">/</span>Ts);
|
||
</pre>
|
||
</div>
|
||
|
||
<p>
|
||
The results are shown in Figure <a href="#org81da726">25</a>.
|
||
We observe a first peak at 267Hz, which corresponds to the X-bending mode that was measured at 280Hz.
|
||
And then a second peak at 415Hz, which corresponds to the X-bending mode that was measured at 412Hz.
|
||
The mode in pure torsion is probably at higher frequency (peak around 1kHz?).
|
||
</p>
|
||
|
||
<div id="org81da726" class="figure">
|
||
<p><img src="figs/apa300ml_meas_freq_torsion_z.png" alt="apa300ml_meas_freq_torsion_z.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 25: </span>Obtained FRF for the Z-torsion</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org42c859e" class="outline-3">
|
||
<h3 id="org42c859e"><span class="section-number-3">11.6</span> Compare</h3>
|
||
<div class="outline-text-3" id="text-11-6">
|
||
<p>
|
||
The three measurements are shown in Figure <a href="#orgd28ffbb">26</a>.
|
||
</p>
|
||
|
||
<div id="orgd28ffbb" class="figure">
|
||
<p><img src="figs/apa300ml_meas_freq_compare.png" alt="apa300ml_meas_freq_compare.png" />
|
||
</p>
|
||
<p><span class="figure-number">Figure 26: </span>Obtained FRF - Comparison</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outline-container-org775e49f" class="outline-3">
|
||
<h3 id="org775e49f"><span class="section-number-3">11.7</span> Conclusion</h3>
|
||
<div class="outline-text-3" id="text-11-7">
|
||
<table id="org51c3fab" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||
<caption class="t-above"><span class="table-number">Table 4:</span> Measured frequency of the modes</caption>
|
||
|
||
<colgroup>
|
||
<col class="org-left" />
|
||
|
||
<col class="org-left" />
|
||
</colgroup>
|
||
<thead>
|
||
<tr>
|
||
<th scope="col" class="org-left">Mode</th>
|
||
<th scope="col" class="org-left">Measured Frequency</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td class="org-left">X-Bending</td>
|
||
<td class="org-left">280Hz</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">Y-Bending</td>
|
||
<td class="org-left">410Hz</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="org-left">Z-Torsion</td>
|
||
<td class="org-left">?</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><h2 class='citeproc-org-bib-h2'>Bibliography</h2>
|
||
<div class="csl-bib-body">
|
||
<div class="csl-entry"><a name="citeproc_bib_item_1"></a>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>
|
||
</div>
|
||
</div>
|
||
<div id="postamble" class="status">
|
||
<p class="author">Author: Dehaeze Thomas</p>
|
||
<p class="date">Created: 2021-05-06 jeu. 16:16</p>
|
||
</div>
|
||
</body>
|
||
</html>
|