Optimal stiffness / OL budget error analysis
BIN
docs/figs/effect_feedback_disturbance_diagram.pdf
Normal file
BIN
docs/figs/effect_feedback_disturbance_diagram.png
Normal file
After Width: | Height: | Size: 8.5 KiB |
BIN
docs/figs/opt_stiff_cas_dz_gm.pdf
Normal file
BIN
docs/figs/opt_stiff_cas_dz_gm.png
Normal file
After Width: | Height: | Size: 124 KiB |
BIN
docs/figs/opt_stiff_cas_dz_rz.pdf
Normal file
BIN
docs/figs/opt_stiff_cas_dz_rz.png
Normal file
After Width: | Height: | Size: 146 KiB |
BIN
docs/figs/opt_stiff_cas_dz_tot.pdf
Normal file
BIN
docs/figs/opt_stiff_cas_dz_tot.png
Normal file
After Width: | Height: | Size: 152 KiB |
BIN
docs/figs/opt_stiff_psd_dz_gm.pdf
Normal file
BIN
docs/figs/opt_stiff_psd_dz_gm.png
Normal file
After Width: | Height: | Size: 167 KiB |
BIN
docs/figs/opt_stiff_psd_dz_rz.pdf
Normal file
BIN
docs/figs/opt_stiff_psd_dz_rz.png
Normal file
After Width: | Height: | Size: 177 KiB |
BIN
docs/figs/opt_stiff_psd_dz_tot.pdf
Normal file
BIN
docs/figs/opt_stiff_psd_dz_tot.png
Normal file
After Width: | Height: | Size: 183 KiB |
BIN
docs/figs/psd_change_tf.pdf
Normal file
BIN
docs/figs/psd_change_tf.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
docs/figs/psd_change_tf_multiple_pert.pdf
Normal file
BIN
docs/figs/psd_change_tf_multiple_pert.png
Normal file
After Width: | Height: | Size: 8.3 KiB |
@ -4,7 +4,7 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-04-07 mar. 17:10 -->
|
<!-- 2020-04-07 mar. 19:33 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title>Determination of the optimal nano-hexapod’s stiffness for reducing the effect of disturbances</title>
|
<title>Determination of the optimal nano-hexapod’s stiffness for reducing the effect of disturbances</title>
|
||||||
@ -257,7 +257,7 @@
|
|||||||
<li><a href="#org78dd34d">2.3. Sensitivity to Stages vibration (Filtering)</a></li>
|
<li><a href="#org78dd34d">2.3. Sensitivity to Stages vibration (Filtering)</a></li>
|
||||||
<li><a href="#orgd4ea2f4">2.4. Effect of Ground motion (Transmissibility).</a></li>
|
<li><a href="#orgd4ea2f4">2.4. Effect of Ground motion (Transmissibility).</a></li>
|
||||||
<li><a href="#org0448746">2.5. Direct Forces (Compliance).</a></li>
|
<li><a href="#org0448746">2.5. Direct Forces (Compliance).</a></li>
|
||||||
<li><a href="#orge0160c0">2.6. Conclusion</a></li>
|
<li><a href="#orga29f90b">2.6. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org6527e58">3. Effect of granite stiffness</a>
|
<li><a href="#org6527e58">3. Effect of granite stiffness</a>
|
||||||
@ -270,23 +270,24 @@
|
|||||||
</li>
|
</li>
|
||||||
<li><a href="#org9215f81">3.2. Soft Granite</a></li>
|
<li><a href="#org9215f81">3.2. Soft Granite</a></li>
|
||||||
<li><a href="#org8878556">3.3. Effect of the Granite transfer function</a></li>
|
<li><a href="#org8878556">3.3. Effect of the Granite transfer function</a></li>
|
||||||
<li><a href="#orgb756362">3.4. Conclusion</a></li>
|
<li><a href="#org6362e01">3.4. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org8a88fb0">4. Open Loop Budget Error</a>
|
<li><a href="#org8a88fb0">4. Open Loop Budget Error</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org2ee8120">4.1. Load of the identified disturbances and transfer functions</a></li>
|
<li><a href="#org6bd588f">4.1. Noise Budgeting - Theory</a></li>
|
||||||
<li><a href="#orgb1a3177">4.2. Equations</a></li>
|
<li><a href="#orgcc86f59">4.2. Power Spectral Densities</a></li>
|
||||||
<li><a href="#org63eade9">4.3. Results</a></li>
|
<li><a href="#orgef96b89">4.3. Cumulative Amplitude Spectrum</a></li>
|
||||||
<li><a href="#orgef96b89">4.4. Cumulative Amplitude Spectrum</a></li>
|
<li><a href="#org2852fc6">4.4. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org34c0f38">5. Closed Loop Budget Error</a>
|
<li><a href="#org34c0f38">5. Closed Loop Budget Error</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgf2d36a1">5.1. Reduction thanks to feedback - Required bandwidth</a></li>
|
<li><a href="#orgdfef0eb">5.1. Approximation of the effect of feedback on the motion error</a></li>
|
||||||
|
<li><a href="#orgf2d36a1">5.2. Reduction thanks to feedback - Required bandwidth</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orga29f90b">6. Conclusion</a></li>
|
<li><a href="#orge784867">6. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -496,8 +497,8 @@ The effect of direct forces/torques applied on the sample (cable forces for inst
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge0160c0" class="outline-3">
|
<div id="outline-container-orga29f90b" class="outline-3">
|
||||||
<h3 id="orge0160c0"><span class="section-number-3">2.6</span> Conclusion</h3>
|
<h3 id="orga29f90b"><span class="section-number-3">2.6</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-2-6">
|
<div class="outline-text-3" id="text-2-6">
|
||||||
<div class="important">
|
<div class="important">
|
||||||
<p>
|
<p>
|
||||||
@ -677,8 +678,8 @@ From Figures <a href="#orgc4c14fb">11</a> and <a href="#org533cc4b">12</a>, we s
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb756362" class="outline-3">
|
<div id="outline-container-org6362e01" class="outline-3">
|
||||||
<h3 id="orgb756362"><span class="section-number-3">3.4</span> Conclusion</h3>
|
<h3 id="org6362e01"><span class="section-number-3">3.4</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-3-4">
|
<div class="outline-text-3" id="text-3-4">
|
||||||
<div class="important">
|
<div class="important">
|
||||||
<p>
|
<p>
|
||||||
@ -696,27 +697,130 @@ Having a soft granite suspension could greatly improve the sensitivity the groun
|
|||||||
<p>
|
<p>
|
||||||
<a id="org5d05990"></a>
|
<a id="org5d05990"></a>
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
Now that the frequency content of disturbances have been estimated (Section <a href="#org17d3d6a">1</a>) and the transfer functions from disturbances to the position error of the sample have been identified (Section <a href="#orgf9e4300">2</a>), we can compute the level of sample vibration due to the disturbances.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
We then can conclude and the nano-hexapod stiffness that will lower the sample position error.
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org2ee8120" class="outline-3">
|
<div id="outline-container-org6bd588f" class="outline-3">
|
||||||
<h3 id="org2ee8120"><span class="section-number-3">4.1</span> Load of the identified disturbances and transfer functions</h3>
|
<h3 id="org6bd588f"><span class="section-number-3">4.1</span> Noise Budgeting - Theory</h3>
|
||||||
<div class="outline-text-3" id="text-4-1">
|
<div class="outline-text-3" id="text-4-1">
|
||||||
<div class="org-src-container">
|
<p>
|
||||||
<pre class="src src-matlab">load(<span class="org-string">'./mat/dist_psd.mat'</span>, <span class="org-string">'dist_f'</span>);
|
Let’s consider Figure <a href="#org7ff50a0">13</a> there \(G_d(s)\) is the transfer function from a signal \(d\) (the perturbation) to a signal \(y\) (the sample’s position error).
|
||||||
load(<span class="org-string">'./mat/opt_stiffness_disturbances.mat'</span>, <span class="org-string">'Gd'</span>)
|
</p>
|
||||||
</pre>
|
|
||||||
|
|
||||||
|
<div id="org7ff50a0" class="figure">
|
||||||
|
<p><img src="figs/psd_change_tf.png" alt="psd_change_tf.png" />
|
||||||
|
</p>
|
||||||
|
<p><span class="figure-number">Figure 13: </span>Figure caption</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
We can compute the Power Spectral Density (PSD) of signal \(y\) from the PSD of \(d\) and the norm of \(G_d(s)\):
|
||||||
|
</p>
|
||||||
|
\begin{equation}
|
||||||
|
S_{y}(\omega) = \left|G_d(j\omega)\right|^2 S_{d}(\omega) \label{eq:psd_transfer_function}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
<p>
|
||||||
|
If we now consider multiple disturbances \(d_1, \dots, d_n\) as shown in Figure <a href="#orgc24bdf6">14</a>, we have that:
|
||||||
|
</p>
|
||||||
|
\begin{equation}
|
||||||
|
S_{y}(\omega) = \left|G_{d_1}(j\omega)\right|^2 S_{d_1}(\omega) + \dots + \left|G_{d_n}(j\omega)\right|^2 S_{d_n}(\omega) \label{eq:sum_psd}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Sometimes, we prefer to compute the <b>Amplitude</b> Spectral Density (ASD) which is related to the PSD by:
|
||||||
|
\[ \Gamma_y(\omega) = \sqrt{S_y(\omega)} \]
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="orgc24bdf6" class="figure">
|
||||||
|
<p><img src="figs/psd_change_tf_multiple_pert.png" alt="psd_change_tf_multiple_pert.png" />
|
||||||
|
</p>
|
||||||
|
<p><span class="figure-number">Figure 14: </span>Figure caption</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The Cumulative Power Spectrum (CPS) is here defined as:
|
||||||
|
</p>
|
||||||
|
\begin{equation}
|
||||||
|
\Phi_y(\omega) = \int_\omega^\infty S_y(\nu) d\nu
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
<p>
|
||||||
|
And the Cumulative Amplitude Spectrum (CAS):
|
||||||
|
</p>
|
||||||
|
\begin{equation}
|
||||||
|
\Psi(\omega) = \sqrt{\Phi(\omega)} = \sqrt{\int_\omega^\infty S_y(\nu) d\nu}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The CAS evaluation for all frequency corresponds to the rms value of the considered quantity:
|
||||||
|
\[ y_{\text{rms}} = \Psi(\omega = 0) = \sqrt{\int_0^\infty S_y(\nu) d\nu} \]
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-orgcc86f59" class="outline-3">
|
||||||
|
<h3 id="orgcc86f59"><span class="section-number-3">4.2</span> Power Spectral Densities</h3>
|
||||||
|
<div class="outline-text-3" id="text-4-2">
|
||||||
|
<p>
|
||||||
|
We compute the effect of perturbations on the motion error thanks to Eq. \eqref{eq:psd_transfer_function}.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The result is shown in:
|
||||||
|
</p>
|
||||||
|
<ul class="org-ul">
|
||||||
|
<li>Figure <a href="#orgd3d7b28">15</a>: PSD of the vertical sample’s motion error due to vertical ground motion</li>
|
||||||
|
<li>Figure <a href="#orgd8e87cd">16</a>: PSD of the vertical sample’s motion error due to vertical vibrations of the Spindle</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="orgd3d7b28" class="figure">
|
||||||
|
<p><img src="figs/opt_stiff_psd_dz_gm.png" alt="opt_stiff_psd_dz_gm.png" />
|
||||||
|
</p>
|
||||||
|
<p><span class="figure-number">Figure 15: </span>Amplitude Spectral Density of the Sample vertical position error due to Ground motion for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_psd_dz_gm.png">png</a>, <a href="./figs/opt_stiff_psd_dz_gm.pdf">pdf</a>)</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="orgd8e87cd" class="figure">
|
||||||
|
<p><img src="figs/opt_stiff_psd_dz_rz.png" alt="opt_stiff_psd_dz_rz.png" />
|
||||||
|
</p>
|
||||||
|
<p><span class="figure-number">Figure 16: </span>Amplitude Spectral Density of the Sample vertical position error due to Vertical vibration of the Spindle for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_psd_dz_rz.png">png</a>, <a href="./figs/opt_stiff_psd_dz_rz.pdf">pdf</a>)</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
We compute the effect of all perturbations on the vertical position error using Eq. \eqref{eq:sum_psd} and the resulting PSD is shown in Figure <a href="#orgdbfb5e0">17</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div id="orgdbfb5e0" class="figure">
|
||||||
|
<p><img src="figs/opt_stiff_psd_dz_tot.png" alt="opt_stiff_psd_dz_tot.png" />
|
||||||
|
</p>
|
||||||
|
<p><span class="figure-number">Figure 17: </span>Amplitude Spectral Density of the Sample vertical position error due to all considered perturbations for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_psd_dz_tot.png">png</a>, <a href="./figs/opt_stiff_psd_dz_tot.pdf">pdf</a>)</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb1a3177" class="outline-3">
|
<div id="outline-container-orgef96b89" class="outline-3">
|
||||||
<h3 id="orgb1a3177"><span class="section-number-3">4.2</span> Equations</h3>
|
<h3 id="orgef96b89"><span class="section-number-3">4.3</span> Cumulative Amplitude Spectrum</h3>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="outline-container-org63eade9" class="outline-3">
|
|
||||||
<h3 id="org63eade9"><span class="section-number-3">4.3</span> Results</h3>
|
|
||||||
<div class="outline-text-3" id="text-4-3">
|
<div class="outline-text-3" id="text-4-3">
|
||||||
<p>
|
<p>
|
||||||
Effect of all disturbances
|
Similarly, the Cumulative Amplitude Spectrum of the sample vibrations are shown:
|
||||||
|
</p>
|
||||||
|
<ul class="org-ul">
|
||||||
|
<li>Figure <a href="#org488d65f">18</a>: due to vertical ground motion</li>
|
||||||
|
<li>Figure <a href="#orge5458c6">19</a>: due to vertical vibrations of the Spindle</li>
|
||||||
|
<li>Figure <a href="#orgf6888f0">20</a>: due to all considered perturbations</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The black dashed line corresponds to the performance objective of a sample vibration equal to \(10\ nm [rms]\).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
@ -725,39 +829,25 @@ Effect of all disturbances
|
|||||||
<span class="org-type">figure</span>;
|
<span class="org-type">figure</span>;
|
||||||
hold on;
|
hold on;
|
||||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:length(Ks)</span>
|
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:length(Ks)</span>
|
||||||
plot(freqs, sqrt(dist_f.psd_rz)<span class="org-type">.*</span>abs(squeeze(freqresp(Gd{<span class="org-constant">i</span>}(<span class="org-string">'Ez'</span>, <span class="org-string">'Frz_z'</span>), freqs, <span class="org-string">'Hz'</span>))));
|
plot(freqs, sqrt(flip(<span class="org-type">-</span>cumtrapz(flip(freqs), flip(dist_f.psd_gm<span class="org-type">.*</span>abs(squeeze(freqresp(Gd{<span class="org-constant">i</span>}(<span class="org-string">'Ez'</span>, <span class="org-string">'Dwz'</span>), freqs, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2)))), <span class="org-string">'-'</span>, ...
|
||||||
<span class="org-keyword">end</span>
|
|
||||||
hold off;
|
|
||||||
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'xscale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'yscale'</span>, <span class="org-string">'log'</span>);
|
|
||||||
xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="org-string">'ASD $\left[\frac{m}{\sqrt{Hz}}\right]$'</span>)
|
|
||||||
legend(<span class="org-string">'Location'</span>, <span class="org-string">'southwest'</span>);
|
|
||||||
xlim([2, 500]);
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="outline-container-orgef96b89" class="outline-3">
|
|
||||||
<h3 id="orgef96b89"><span class="section-number-3">4.4</span> Cumulative Amplitude Spectrum</h3>
|
|
||||||
<div class="outline-text-3" id="text-4-4">
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">freqs = dist_f.f;
|
|
||||||
|
|
||||||
<span class="org-type">figure</span>;
|
|
||||||
hold on;
|
|
||||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:length(Ks)</span>
|
|
||||||
plot(freqs, sqrt(flip(<span class="org-type">-</span>cumtrapz(flip(freqs), flip(dist_f.psd_ty<span class="org-type">.*</span>abs(squeeze(freqresp(Gd{<span class="org-constant">i</span>}(<span class="org-string">'Ez'</span>, <span class="org-string">'Fty_z'</span>), freqs, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2)))), <span class="org-string">'-'</span>, ...
|
|
||||||
<span class="org-string">'DisplayName'</span>, sprintf(<span class="org-string">'$k = %.0g$ [N/m]'</span>, Ks(<span class="org-constant">i</span>)));
|
<span class="org-string">'DisplayName'</span>, sprintf(<span class="org-string">'$k = %.0g$ [N/m]'</span>, Ks(<span class="org-constant">i</span>)));
|
||||||
<span class="org-keyword">end</span>
|
<span class="org-keyword">end</span>
|
||||||
plot([freqs(1) freqs(end)], [10e<span class="org-type">-</span>9 10e<span class="org-type">-</span>9], <span class="org-string">'k--'</span>, <span class="org-string">'HandleVisibility'</span>, <span class="org-string">'off'</span>);
|
plot([freqs(1) freqs(end)], [10e<span class="org-type">-</span>9 10e<span class="org-type">-</span>9], <span class="org-string">'k--'</span>, <span class="org-string">'HandleVisibility'</span>, <span class="org-string">'off'</span>);
|
||||||
hold off;
|
hold off;
|
||||||
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'xscale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'yscale'</span>, <span class="org-string">'log'</span>);
|
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'xscale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'yscale'</span>, <span class="org-string">'log'</span>);
|
||||||
xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="org-string">'CAS $[m]$'</span>)
|
xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="org-string">'CAS $E_y$ $[m]$'</span>)
|
||||||
legend(<span class="org-string">'Location'</span>, <span class="org-string">'southwest'</span>);
|
legend(<span class="org-string">'Location'</span>, <span class="org-string">'northeast'</span>);
|
||||||
xlim([2, 500]); ylim([1e<span class="org-type">-</span>10 1e<span class="org-type">-</span>6]);
|
xlim([1, 500]); ylim([1e<span class="org-type">-</span>10 1e<span class="org-type">-</span>6]);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="org488d65f" class="figure">
|
||||||
|
<p><img src="figs/opt_stiff_cas_dz_gm.png" alt="opt_stiff_cas_dz_gm.png" />
|
||||||
|
</p>
|
||||||
|
<p><span class="figure-number">Figure 18: </span>Cumulative Amplitude Spectrum of the Sample vertical position error due to Ground motion for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_cas_dz_gm.png">png</a>, <a href="./figs/opt_stiff_cas_dz_gm.pdf">pdf</a>)</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">freqs = dist_f.f;
|
<pre class="src src-matlab">freqs = dist_f.f;
|
||||||
|
|
||||||
@ -772,79 +862,15 @@ hold off;
|
|||||||
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'xscale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'yscale'</span>, <span class="org-string">'log'</span>);
|
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'xscale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'yscale'</span>, <span class="org-string">'log'</span>);
|
||||||
xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="org-string">'CAS $[m]$'</span>)
|
xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="org-string">'CAS $[m]$'</span>)
|
||||||
legend(<span class="org-string">'Location'</span>, <span class="org-string">'southwest'</span>);
|
legend(<span class="org-string">'Location'</span>, <span class="org-string">'southwest'</span>);
|
||||||
xlim([2, 500]); ylim([1e<span class="org-type">-</span>10 1e<span class="org-type">-</span>6]);
|
xlim([1, 500]); ylim([1e<span class="org-type">-</span>10 1e<span class="org-type">-</span>6]);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
|
||||||
Ground motion
|
<div id="orge5458c6" class="figure">
|
||||||
|
<p><img src="figs/opt_stiff_cas_dz_rz.png" alt="opt_stiff_cas_dz_rz.png" />
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<p><span class="figure-number">Figure 19: </span>Cumulative Amplitude Spectrum of the Sample vertical position error due to Vertical vibration of the Spindle for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_cas_dz_rz.png">png</a>, <a href="./figs/opt_stiff_cas_dz_rz.pdf">pdf</a>)</p>
|
||||||
<pre class="src src-matlab">freqs = dist_f.f;
|
|
||||||
|
|
||||||
<span class="org-type">figure</span>;
|
|
||||||
hold on;
|
|
||||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:length(Ks)</span>
|
|
||||||
plot(freqs, sqrt(flip(<span class="org-type">-</span>cumtrapz(flip(freqs), flip(dist_f.psd_gm<span class="org-type">.*</span>abs(squeeze(freqresp(Gd{<span class="org-constant">i</span>}(<span class="org-string">'Ez'</span>, <span class="org-string">'Dwz'</span>), freqs, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2)))), <span class="org-string">'-'</span>, ...
|
|
||||||
<span class="org-string">'DisplayName'</span>, sprintf(<span class="org-string">'$k = %.0g$ [N/m]'</span>, Ks(<span class="org-constant">i</span>)));
|
|
||||||
<span class="org-keyword">end</span>
|
|
||||||
plot([freqs(1) freqs(end)], [10e<span class="org-type">-</span>9 10e<span class="org-type">-</span>9], <span class="org-string">'k--'</span>, <span class="org-string">'HandleVisibility'</span>, <span class="org-string">'off'</span>);
|
|
||||||
hold off;
|
|
||||||
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'xscale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'yscale'</span>, <span class="org-string">'log'</span>);
|
|
||||||
xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="org-string">'CAS $E_y$ $[m]$'</span>)
|
|
||||||
legend(<span class="org-string">'Location'</span>, <span class="org-string">'northeast'</span>);
|
|
||||||
xlim([2, 500]); ylim([1e<span class="org-type">-</span>10 1e<span class="org-type">-</span>6]);
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">freqs = dist_f.f;
|
|
||||||
|
|
||||||
<span class="org-type">figure</span>;
|
|
||||||
hold on;
|
|
||||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:length(Ks)</span>
|
|
||||||
plot(freqs, sqrt(flip(<span class="org-type">-</span>cumtrapz(flip(freqs), flip(dist_f.psd_gm<span class="org-type">.*</span>abs(squeeze(freqresp(Gd{<span class="org-constant">i</span>}(<span class="org-string">'Ex'</span>, <span class="org-string">'Dwx'</span>), freqs, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2)))), <span class="org-string">'-'</span>, ...
|
|
||||||
<span class="org-string">'DisplayName'</span>, sprintf(<span class="org-string">'$k = %.0g$ [N/m]'</span>, Ks(<span class="org-constant">i</span>)));
|
|
||||||
<span class="org-keyword">end</span>
|
|
||||||
plot([freqs(1) freqs(end)], [10e<span class="org-type">-</span>9 10e<span class="org-type">-</span>9], <span class="org-string">'k--'</span>, <span class="org-string">'HandleVisibility'</span>, <span class="org-string">'off'</span>);
|
|
||||||
hold off;
|
|
||||||
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'xscale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'yscale'</span>, <span class="org-string">'lin'</span>);
|
|
||||||
xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="org-string">'CAS $E_y$ $[m]$'</span>)
|
|
||||||
legend(<span class="org-string">'Location'</span>, <span class="org-string">'northeast'</span>);
|
|
||||||
xlim([2, 500]);
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">freqs = dist_f.f;
|
|
||||||
|
|
||||||
<span class="org-type">figure</span>;
|
|
||||||
hold on;
|
|
||||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:length(Ks)</span>
|
|
||||||
plot(freqs, sqrt(flip(<span class="org-type">-</span>cumtrapz(flip(freqs), flip(dist_f.psd_gm<span class="org-type">.*</span>abs(squeeze(freqresp(Gd{<span class="org-constant">i</span>}(<span class="org-string">'Ey'</span>, <span class="org-string">'Dwy'</span>), freqs, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2)))), <span class="org-string">'-'</span>, ...
|
|
||||||
<span class="org-string">'DisplayName'</span>, sprintf(<span class="org-string">'$k = %.0g$ [N/m]'</span>, Ks(<span class="org-constant">i</span>)));
|
|
||||||
<span class="org-keyword">end</span>
|
|
||||||
plot([freqs(1) freqs(end)], [10e<span class="org-type">-</span>9 10e<span class="org-type">-</span>9], <span class="org-string">'k--'</span>, <span class="org-string">'HandleVisibility'</span>, <span class="org-string">'off'</span>);
|
|
||||||
hold off;
|
|
||||||
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'xscale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'yscale'</span>, <span class="org-string">'lin'</span>);
|
|
||||||
xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="org-string">'CAS $E_y$ $[m]$'</span>)
|
|
||||||
legend(<span class="org-string">'Location'</span>, <span class="org-string">'northeast'</span>);
|
|
||||||
xlim([2, 500]);
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Sum of all perturbations
|
|
||||||
</p>
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">psd_tot = zeros(length(freqs), length(Ks));
|
|
||||||
|
|
||||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:length(Ks)</span>
|
|
||||||
psd_tot(<span class="org-type">:</span>,<span class="org-constant">i</span>) = dist_f.psd_gm<span class="org-type">.*</span>abs(squeeze(freqresp(Gd{<span class="org-constant">i</span>}(<span class="org-string">'Ez'</span>, <span class="org-string">'Dwz'</span> ), freqs, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2 <span class="org-type">+</span> ...
|
|
||||||
dist_f.psd_ty<span class="org-type">.*</span>abs(squeeze(freqresp(Gd{<span class="org-constant">i</span>}(<span class="org-string">'Ez'</span>, <span class="org-string">'Fty_z'</span>), freqs, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2 <span class="org-type">+</span> ...
|
|
||||||
dist_f.psd_rz<span class="org-type">.*</span>abs(squeeze(freqresp(Gd{<span class="org-constant">i</span>}(<span class="org-string">'Ez'</span>, <span class="org-string">'Frz_z'</span>), freqs, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2;
|
|
||||||
<span class="org-keyword">end</span>
|
|
||||||
</pre>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
@ -864,6 +890,25 @@ legend(<span class="org-string">'Location'</span>, <span class="org-string">'nor
|
|||||||
xlim([1, 500]); ylim([1e<span class="org-type">-</span>10 1e<span class="org-type">-</span>6]);
|
xlim([1, 500]); ylim([1e<span class="org-type">-</span>10 1e<span class="org-type">-</span>6]);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="orgf6888f0" class="figure">
|
||||||
|
<p><img src="figs/opt_stiff_cas_dz_tot.png" alt="opt_stiff_cas_dz_tot.png" />
|
||||||
|
</p>
|
||||||
|
<p><span class="figure-number">Figure 20: </span>Cumulative Amplitude Spectrum of the Sample vertical position error due to all considered perturbations for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_cas_dz_tot.png">png</a>, <a href="./figs/opt_stiff_cas_dz_tot.pdf">pdf</a>)</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-org2852fc6" class="outline-3">
|
||||||
|
<h3 id="org2852fc6"><span class="section-number-3">4.4</span> Conclusion</h3>
|
||||||
|
<div class="outline-text-3" id="text-4-4">
|
||||||
|
<div class="important">
|
||||||
|
<p>
|
||||||
|
From Figure <a href="#orgf6888f0">20</a>, we can see that a soft nano-hexapod \(k<10^6\ [N/m]\) significantly reduces the effect of perturbations from 20Hz to 300Hz.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -875,9 +920,45 @@ xlim([1, 500]); ylim([1e<span class="org-type">-</span>10 1e<span class="org-typ
|
|||||||
<a id="orgd3503fb"></a>
|
<a id="orgd3503fb"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgf2d36a1" class="outline-3">
|
<div id="outline-container-orgdfef0eb" class="outline-3">
|
||||||
<h3 id="orgf2d36a1"><span class="section-number-3">5.1</span> Reduction thanks to feedback - Required bandwidth</h3>
|
<h3 id="orgdfef0eb"><span class="section-number-3">5.1</span> Approximation of the effect of feedback on the motion error</h3>
|
||||||
<div class="outline-text-3" id="text-5-1">
|
<div class="outline-text-3" id="text-5-1">
|
||||||
|
<p>
|
||||||
|
Let’s consider Figure <a href="#org6308d80">21</a> where a controller \(K\) is used to reduce the effect of the disturbance \(d\) on the position error \(y\).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="org6308d80" class="figure">
|
||||||
|
<p><img src="figs/effect_feedback_disturbance_diagram.png" alt="effect_feedback_disturbance_diagram.png" />
|
||||||
|
</p>
|
||||||
|
<p><span class="figure-number">Figure 21: </span>Feedback System</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The reduction of the impact of \(d\) on \(y\) thanks to feedback is described by the following equation:
|
||||||
|
</p>
|
||||||
|
\begin{equation}
|
||||||
|
\frac{y}{d} = \frac{G_d}{1 + KG}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
|
||||||
|
<p>
|
||||||
|
As a first approximation, we can consider that the controller is designed in such a way that the loop gain \(KG\) is a pure integrator:
|
||||||
|
\[ L_1(s) = K_1(s) G(s) = \frac{\omega_c}{s} \]
|
||||||
|
where \(\omega_c\) is the crossover frequency.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p>
|
||||||
|
We may then consider another controller in such a way that the loop gain corresponds to a double integrator with a lead centered with the crossover frequency \(\omega_c\):
|
||||||
|
\[ L_2(s) = K_2(s) G(s) = \left( \frac{\omega_c}{s} \right)^2 \cdot \frac{1 + \frac{s}{\omega_c/2}}{1 + \frac{s}{2\omega_c}} \]
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-orgf2d36a1" class="outline-3">
|
||||||
|
<h3 id="orgf2d36a1"><span class="section-number-3">5.2</span> Reduction thanks to feedback - Required bandwidth</h3>
|
||||||
|
<div class="outline-text-3" id="text-5-2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">wc = 1<span class="org-type">*</span>2<span class="org-type">*</span><span class="org-constant">pi</span>; <span class="org-comment">% [rad/s]</span>
|
<pre class="src src-matlab">wc = 1<span class="org-type">*</span>2<span class="org-type">*</span><span class="org-constant">pi</span>; <span class="org-comment">% [rad/s]</span>
|
||||||
xic = 0.5;
|
xic = 0.5;
|
||||||
@ -966,13 +1047,13 @@ xlim([1, 500]);
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orga29f90b" class="outline-2">
|
<div id="outline-container-orge784867" class="outline-2">
|
||||||
<h2 id="orga29f90b"><span class="section-number-2">6</span> Conclusion</h2>
|
<h2 id="orge784867"><span class="section-number-2">6</span> Conclusion</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<p class="author">Author: Dehaeze Thomas</p>
|
||||||
<p class="date">Created: 2020-04-07 mar. 17:10</p>
|
<p class="date">Created: 2020-04-07 mar. 19:33</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
BIN
mat/stages.mat
@ -74,11 +74,6 @@ The level of these disturbances has been identified form experiments which are d
|
|||||||
simulinkproject('../');
|
simulinkproject('../');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab
|
|
||||||
load('mat/conf_simulink.mat');
|
|
||||||
|
|
||||||
open('nass_model.slx')
|
|
||||||
#+end_src
|
|
||||||
** Plots :ignore:
|
** Plots :ignore:
|
||||||
The measured Amplitude Spectral Densities (ASD) of these forces are shown in Figures [[fig:opt_stiff_dist_gm]] and [[fig:opt_stiff_dist_fty_frz]].
|
The measured Amplitude Spectral Densities (ASD) of these forces are shown in Figures [[fig:opt_stiff_dist_gm]] and [[fig:opt_stiff_dist_fty_frz]].
|
||||||
|
|
||||||
@ -149,9 +144,9 @@ We do that for a wide range of nano-hexapod stiffnesses and we compare the obtai
|
|||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
load('mat/conf_simulink.mat');
|
load('mat/conf_simulink.mat');
|
||||||
|
|
||||||
open('nass_model.slx')
|
open('nass_model.slx')
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Initialization
|
** Initialization
|
||||||
We initialize all the stages with the default parameters.
|
We initialize all the stages with the default parameters.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
@ -399,6 +394,19 @@ The effect of direct forces/torques applied on the sample (cable forces for inst
|
|||||||
** Introduction :ignore:
|
** Introduction :ignore:
|
||||||
In this section, we wish to see if a soft granite suspension could help in reducing the effect of disturbances on the position error of the sample.
|
In this section, we wish to see if a soft granite suspension could help in reducing the effect of disturbances on the position error of the sample.
|
||||||
|
|
||||||
|
** Matlab Init :noexport:ignore:
|
||||||
|
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||||
|
<<matlab-dir>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none :results silent :noweb yes
|
||||||
|
<<matlab-init>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :tangle no
|
||||||
|
simulinkproject('../');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** Analytical Analysis
|
** Analytical Analysis
|
||||||
*** Simple mass-spring-damper model
|
*** Simple mass-spring-damper model
|
||||||
Let's consider the system shown in Figure [[fig:2dof_system_granite_stiffness]] consisting of two stacked mass-spring-damper systems.
|
Let's consider the system shown in Figure [[fig:2dof_system_granite_stiffness]] consisting of two stacked mass-spring-damper systems.
|
||||||
@ -691,6 +699,10 @@ From Figures [[fig:opt_stiff_soft_granite_Frz]] and [[fig:opt_stiff_soft_granite
|
|||||||
* Open Loop Budget Error
|
* Open Loop Budget Error
|
||||||
<<sec:open_loop_budget_error>>
|
<<sec:open_loop_budget_error>>
|
||||||
** Introduction :ignore:
|
** Introduction :ignore:
|
||||||
|
Now that the frequency content of disturbances have been estimated (Section [[sec:psd_disturbances]]) and the transfer functions from disturbances to the position error of the sample have been identified (Section [[sec:effect_disturbances]]), we can compute the level of sample vibration due to the disturbances.
|
||||||
|
|
||||||
|
We then can conclude and the nano-hexapod stiffness that will lower the sample position error.
|
||||||
|
|
||||||
** Matlab Init :noexport:ignore:
|
** Matlab Init :noexport:ignore:
|
||||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||||
<<matlab-dir>>
|
<<matlab-dir>>
|
||||||
@ -704,30 +716,120 @@ From Figures [[fig:opt_stiff_soft_granite_Frz]] and [[fig:opt_stiff_soft_granite
|
|||||||
simulinkproject('../');
|
simulinkproject('../');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab
|
** Noise Budgeting - Theory
|
||||||
load('mat/conf_simulink.mat');
|
Let's consider Figure [[fig:psd_change_tf]] there $G_d(s)$ is the transfer function from a signal $d$ (the perturbation) to a signal $y$ (the sample's position error).
|
||||||
|
|
||||||
open('nass_model.slx')
|
#+begin_src latex :file psd_change_tf.pdf
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\node[block] (G) at (0, 0) {$G_d(s)$};
|
||||||
|
|
||||||
|
\draw[<-] (G.west) -- ++(-1, 0) node[above right]{$d$};
|
||||||
|
\draw[->] (G.east) -- ++( 1, 0) node[above left ]{$y$};
|
||||||
|
\end{tikzpicture}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Load of the identified disturbances and transfer functions
|
#+name: fig:psd_change_tf
|
||||||
#+begin_src matlab
|
#+caption: Figure caption
|
||||||
|
#+RESULTS:
|
||||||
|
[[file:figs/psd_change_tf.png]]
|
||||||
|
|
||||||
|
We can compute the Power Spectral Density (PSD) of signal $y$ from the PSD of $d$ and the norm of $G_d(s)$:
|
||||||
|
\begin{equation}
|
||||||
|
S_{y}(\omega) = \left|G_d(j\omega)\right|^2 S_{d}(\omega) \label{eq:psd_transfer_function}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
If we now consider multiple disturbances $d_1, \dots, d_n$ as shown in Figure [[fig:psd_change_tf_multiple_pert]], we have that:
|
||||||
|
\begin{equation}
|
||||||
|
S_{y}(\omega) = \left|G_{d_1}(j\omega)\right|^2 S_{d_1}(\omega) + \dots + \left|G_{d_n}(j\omega)\right|^2 S_{d_n}(\omega) \label{eq:sum_psd}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
Sometimes, we prefer to compute the *Amplitude* Spectral Density (ASD) which is related to the PSD by:
|
||||||
|
\[ \Gamma_y(\omega) = \sqrt{S_y(\omega)} \]
|
||||||
|
|
||||||
|
#+begin_src latex :file psd_change_tf_multiple_pert.pdf
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\node[block] (Gm) at (0, 0) {$\dots$};
|
||||||
|
\draw[<-] (Gm.west) -- ++(-1, 0);
|
||||||
|
|
||||||
|
\node[block, above=0.5 of Gm] (G1) {$G_{d_1}(s)$};
|
||||||
|
\draw[<-] (G1.west) -- ++(-1, 0) node[above right]{$d_1$};
|
||||||
|
|
||||||
|
\node[block, below=0.5 of Gm] (Gn) {$G_{d_n}(s)$};
|
||||||
|
\draw[<-] (Gn.west) -- ++(-1, 0) node[above right]{$d_n$};
|
||||||
|
|
||||||
|
\node[addb, right= of Gm] (add) {};
|
||||||
|
|
||||||
|
\draw[->] (G1.east) -| (add.north);
|
||||||
|
\draw[->] (Gm.east) -- (add.west);
|
||||||
|
\draw[->] (Gn.east) -| (add.south);
|
||||||
|
|
||||||
|
\draw[->] (add) -- ++( 1, 0) node[above left]{$y$};
|
||||||
|
\end{tikzpicture}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+name: fig:psd_change_tf_multiple_pert
|
||||||
|
#+caption: Figure caption
|
||||||
|
#+RESULTS:
|
||||||
|
[[file:figs/psd_change_tf_multiple_pert.png]]
|
||||||
|
|
||||||
|
The Cumulative Power Spectrum (CPS) is here defined as:
|
||||||
|
\begin{equation}
|
||||||
|
\Phi_y(\omega) = \int_\omega^\infty S_y(\nu) d\nu
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
And the Cumulative Amplitude Spectrum (CAS):
|
||||||
|
\begin{equation}
|
||||||
|
\Psi(\omega) = \sqrt{\Phi(\omega)} = \sqrt{\int_\omega^\infty S_y(\nu) d\nu}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
The CAS evaluation for all frequency corresponds to the rms value of the considered quantity:
|
||||||
|
\[ y_{\text{rms}} = \Psi(\omega = 0) = \sqrt{\int_0^\infty S_y(\nu) d\nu} \]
|
||||||
|
|
||||||
|
** Power Spectral Densities
|
||||||
|
We compute the effect of perturbations on the motion error thanks to Eq. eqref:eq:psd_transfer_function.
|
||||||
|
|
||||||
|
The result is shown in:
|
||||||
|
- Figure [[fig:opt_stiff_psd_dz_gm]]: PSD of the vertical sample's motion error due to vertical ground motion
|
||||||
|
- Figure [[fig:opt_stiff_psd_dz_rz]]: PSD of the vertical sample's motion error due to vertical vibrations of the Spindle
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none
|
||||||
load('./mat/dist_psd.mat', 'dist_f');
|
load('./mat/dist_psd.mat', 'dist_f');
|
||||||
load('./mat/opt_stiffness_disturbances.mat', 'Gd')
|
load('./mat/opt_stiffness_disturbances.mat', 'Gd')
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Equations
|
#+begin_src matlab :exports none
|
||||||
|
|
||||||
** Results
|
|
||||||
Effect of all disturbances
|
|
||||||
|
|
||||||
#+begin_src matlab
|
|
||||||
freqs = dist_f.f;
|
freqs = dist_f.f;
|
||||||
|
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
for i = 1:length(Ks)
|
for i = 1:length(Ks)
|
||||||
plot(freqs, sqrt(dist_f.psd_rz).*abs(squeeze(freqresp(Gd{i}('Ez', 'Frz_z'), freqs, 'Hz'))));
|
plot(freqs, sqrt(dist_f.psd_gm).*abs(squeeze(freqresp(Gd{i}('Ez', 'Dwz'), freqs, 'Hz'))), '-', ...
|
||||||
|
'DisplayName', sprintf('$k = %.0g$ [N/m]', Ks(i)));
|
||||||
|
end
|
||||||
|
hold off;
|
||||||
|
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('ASD $\left[\frac{m}{\sqrt{Hz}}\right]$')
|
||||||
|
legend('location', 'southwest');
|
||||||
|
xlim([1, 500]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+header: :tangle no :exports results :results none :noweb yes
|
||||||
|
#+begin_src matlab :var filepath="figs/opt_stiff_psd_dz_gm.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||||
|
<<plt-matlab>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+name: fig:opt_stiff_psd_dz_gm
|
||||||
|
#+caption: Amplitude Spectral Density of the Sample vertical position error due to Ground motion for multiple nano-hexapod stiffnesses ([[./figs/opt_stiff_psd_dz_gm.png][png]], [[./figs/opt_stiff_psd_dz_gm.pdf][pdf]])
|
||||||
|
[[file:figs/opt_stiff_psd_dz_gm.png]]
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none
|
||||||
|
freqs = dist_f.f;
|
||||||
|
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
for i = 1:length(Ks)
|
||||||
|
plot(freqs, sqrt(dist_f.psd_rz).*abs(squeeze(freqresp(Gd{i}('Ez', 'Frz_z'), freqs, 'Hz'))), '-', ...
|
||||||
|
'DisplayName', sprintf('$k = %.0g$ [N/m]', Ks(i)));
|
||||||
end
|
end
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||||
@ -736,24 +838,85 @@ Effect of all disturbances
|
|||||||
xlim([2, 500]);
|
xlim([2, 500]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+header: :tangle no :exports results :results none :noweb yes
|
||||||
|
#+begin_src matlab :var filepath="figs/opt_stiff_psd_dz_rz.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||||
|
<<plt-matlab>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+name: fig:opt_stiff_psd_dz_rz
|
||||||
|
#+caption: Amplitude Spectral Density of the Sample vertical position error due to Vertical vibration of the Spindle for multiple nano-hexapod stiffnesses ([[./figs/opt_stiff_psd_dz_rz.png][png]], [[./figs/opt_stiff_psd_dz_rz.pdf][pdf]])
|
||||||
|
[[file:figs/opt_stiff_psd_dz_rz.png]]
|
||||||
|
|
||||||
|
We compute the effect of all perturbations on the vertical position error using Eq. eqref:eq:sum_psd and the resulting PSD is shown in Figure [[fig:opt_stiff_psd_dz_tot]].
|
||||||
|
#+begin_src matlab :exports none
|
||||||
|
psd_tot = zeros(length(freqs), length(Ks));
|
||||||
|
|
||||||
|
for i = 1:length(Ks)
|
||||||
|
psd_tot(:,i) = dist_f.psd_gm.*abs(squeeze(freqresp(Gd{i}('Ez', 'Dwz' ), freqs, 'Hz'))).^2 + ...
|
||||||
|
dist_f.psd_ty.*abs(squeeze(freqresp(Gd{i}('Ez', 'Fty_z'), freqs, 'Hz'))).^2 + ...
|
||||||
|
dist_f.psd_rz.*abs(squeeze(freqresp(Gd{i}('Ez', 'Frz_z'), freqs, 'Hz'))).^2;
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none
|
||||||
|
freqs = dist_f.f;
|
||||||
|
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
for i = 1:length(Ks)
|
||||||
|
plot(freqs, sqrt(psd_tot(:,i)), '-', ...
|
||||||
|
'DisplayName', sprintf('$k = %.0g$ [N/m]', Ks(i)));
|
||||||
|
end
|
||||||
|
hold off;
|
||||||
|
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('ASD $\left[\frac{m}{\sqrt{Hz}}\right]$')
|
||||||
|
legend('location', 'southwest')
|
||||||
|
xlim([1, 500]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+header: :tangle no :exports results :results none :noweb yes
|
||||||
|
#+begin_src matlab :var filepath="figs/opt_stiff_psd_dz_tot.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||||
|
<<plt-matlab>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+name: fig:opt_stiff_psd_dz_tot
|
||||||
|
#+caption: Amplitude Spectral Density of the Sample vertical position error due to all considered perturbations for multiple nano-hexapod stiffnesses ([[./figs/opt_stiff_psd_dz_tot.png][png]], [[./figs/opt_stiff_psd_dz_tot.pdf][pdf]])
|
||||||
|
[[file:figs/opt_stiff_psd_dz_tot.png]]
|
||||||
|
|
||||||
** Cumulative Amplitude Spectrum
|
** Cumulative Amplitude Spectrum
|
||||||
|
Similarly, the Cumulative Amplitude Spectrum of the sample vibrations are shown:
|
||||||
|
- Figure [[fig:opt_stiff_cas_dz_gm]]: due to vertical ground motion
|
||||||
|
- Figure [[fig:opt_stiff_cas_dz_rz]]: due to vertical vibrations of the Spindle
|
||||||
|
- Figure [[fig:opt_stiff_cas_dz_tot]]: due to all considered perturbations
|
||||||
|
|
||||||
|
The black dashed line corresponds to the performance objective of a sample vibration equal to $10\ nm [rms]$.
|
||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
freqs = dist_f.f;
|
freqs = dist_f.f;
|
||||||
|
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
for i = 1:length(Ks)
|
for i = 1:length(Ks)
|
||||||
plot(freqs, sqrt(flip(-cumtrapz(flip(freqs), flip(dist_f.psd_ty.*abs(squeeze(freqresp(Gd{i}('Ez', 'Fty_z'), freqs, 'Hz'))).^2)))), '-', ...
|
plot(freqs, sqrt(flip(-cumtrapz(flip(freqs), flip(dist_f.psd_gm.*abs(squeeze(freqresp(Gd{i}('Ez', 'Dwz'), freqs, 'Hz'))).^2)))), '-', ...
|
||||||
'DisplayName', sprintf('$k = %.0g$ [N/m]', Ks(i)));
|
'DisplayName', sprintf('$k = %.0g$ [N/m]', Ks(i)));
|
||||||
end
|
end
|
||||||
plot([freqs(1) freqs(end)], [10e-9 10e-9], 'k--', 'HandleVisibility', 'off');
|
plot([freqs(1) freqs(end)], [10e-9 10e-9], 'k--', 'HandleVisibility', 'off');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||||
xlabel('Frequency [Hz]'); ylabel('CAS $[m]$')
|
xlabel('Frequency [Hz]'); ylabel('CAS $E_y$ $[m]$')
|
||||||
legend('Location', 'southwest');
|
legend('Location', 'northeast');
|
||||||
xlim([2, 500]); ylim([1e-10 1e-6]);
|
xlim([1, 500]); ylim([1e-10 1e-6]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+header: :tangle no :exports results :results none :noweb yes
|
||||||
|
#+begin_src matlab :var filepath="figs/opt_stiff_cas_dz_gm.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||||
|
<<plt-matlab>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+name: fig:opt_stiff_cas_dz_gm
|
||||||
|
#+caption: Cumulative Amplitude Spectrum of the Sample vertical position error due to Ground motion for multiple nano-hexapod stiffnesses ([[./figs/opt_stiff_cas_dz_gm.png][png]], [[./figs/opt_stiff_cas_dz_gm.pdf][pdf]])
|
||||||
|
[[file:figs/opt_stiff_cas_dz_gm.png]]
|
||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
freqs = dist_f.f;
|
freqs = dist_f.f;
|
||||||
|
|
||||||
@ -768,71 +931,17 @@ Effect of all disturbances
|
|||||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||||
xlabel('Frequency [Hz]'); ylabel('CAS $[m]$')
|
xlabel('Frequency [Hz]'); ylabel('CAS $[m]$')
|
||||||
legend('Location', 'southwest');
|
legend('Location', 'southwest');
|
||||||
xlim([2, 500]); ylim([1e-10 1e-6]);
|
xlim([1, 500]); ylim([1e-10 1e-6]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Ground motion
|
#+header: :tangle no :exports results :results none :noweb yes
|
||||||
#+begin_src matlab
|
#+begin_src matlab :var filepath="figs/opt_stiff_cas_dz_rz.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||||
freqs = dist_f.f;
|
<<plt-matlab>>
|
||||||
|
|
||||||
figure;
|
|
||||||
hold on;
|
|
||||||
for i = 1:length(Ks)
|
|
||||||
plot(freqs, sqrt(flip(-cumtrapz(flip(freqs), flip(dist_f.psd_gm.*abs(squeeze(freqresp(Gd{i}('Ez', 'Dwz'), freqs, 'Hz'))).^2)))), '-', ...
|
|
||||||
'DisplayName', sprintf('$k = %.0g$ [N/m]', Ks(i)));
|
|
||||||
end
|
|
||||||
plot([freqs(1) freqs(end)], [10e-9 10e-9], 'k--', 'HandleVisibility', 'off');
|
|
||||||
hold off;
|
|
||||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
|
||||||
xlabel('Frequency [Hz]'); ylabel('CAS $E_y$ $[m]$')
|
|
||||||
legend('Location', 'northeast');
|
|
||||||
xlim([2, 500]); ylim([1e-10 1e-6]);
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab
|
#+name: fig:opt_stiff_cas_dz_rz
|
||||||
freqs = dist_f.f;
|
#+caption: Cumulative Amplitude Spectrum of the Sample vertical position error due to Vertical vibration of the Spindle for multiple nano-hexapod stiffnesses ([[./figs/opt_stiff_cas_dz_rz.png][png]], [[./figs/opt_stiff_cas_dz_rz.pdf][pdf]])
|
||||||
|
[[file:figs/opt_stiff_cas_dz_rz.png]]
|
||||||
figure;
|
|
||||||
hold on;
|
|
||||||
for i = 1:length(Ks)
|
|
||||||
plot(freqs, sqrt(flip(-cumtrapz(flip(freqs), flip(dist_f.psd_gm.*abs(squeeze(freqresp(Gd{i}('Ex', 'Dwx'), freqs, 'Hz'))).^2)))), '-', ...
|
|
||||||
'DisplayName', sprintf('$k = %.0g$ [N/m]', Ks(i)));
|
|
||||||
end
|
|
||||||
plot([freqs(1) freqs(end)], [10e-9 10e-9], 'k--', 'HandleVisibility', 'off');
|
|
||||||
hold off;
|
|
||||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'lin');
|
|
||||||
xlabel('Frequency [Hz]'); ylabel('CAS $E_y$ $[m]$')
|
|
||||||
legend('Location', 'northeast');
|
|
||||||
xlim([2, 500]);
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src matlab
|
|
||||||
freqs = dist_f.f;
|
|
||||||
|
|
||||||
figure;
|
|
||||||
hold on;
|
|
||||||
for i = 1:length(Ks)
|
|
||||||
plot(freqs, sqrt(flip(-cumtrapz(flip(freqs), flip(dist_f.psd_gm.*abs(squeeze(freqresp(Gd{i}('Ey', 'Dwy'), freqs, 'Hz'))).^2)))), '-', ...
|
|
||||||
'DisplayName', sprintf('$k = %.0g$ [N/m]', Ks(i)));
|
|
||||||
end
|
|
||||||
plot([freqs(1) freqs(end)], [10e-9 10e-9], 'k--', 'HandleVisibility', 'off');
|
|
||||||
hold off;
|
|
||||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'lin');
|
|
||||||
xlabel('Frequency [Hz]'); ylabel('CAS $E_y$ $[m]$')
|
|
||||||
legend('Location', 'northeast');
|
|
||||||
xlim([2, 500]);
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Sum of all perturbations
|
|
||||||
#+begin_src matlab
|
|
||||||
psd_tot = zeros(length(freqs), length(Ks));
|
|
||||||
|
|
||||||
for i = 1:length(Ks)
|
|
||||||
psd_tot(:,i) = dist_f.psd_gm.*abs(squeeze(freqresp(Gd{i}('Ez', 'Dwz' ), freqs, 'Hz'))).^2 + ...
|
|
||||||
dist_f.psd_ty.*abs(squeeze(freqresp(Gd{i}('Ez', 'Fty_z'), freqs, 'Hz'))).^2 + ...
|
|
||||||
dist_f.psd_rz.*abs(squeeze(freqresp(Gd{i}('Ez', 'Frz_z'), freqs, 'Hz'))).^2;
|
|
||||||
end
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
freqs = dist_f.f;
|
freqs = dist_f.f;
|
||||||
@ -851,9 +960,77 @@ Sum of all perturbations
|
|||||||
xlim([1, 500]); ylim([1e-10 1e-6]);
|
xlim([1, 500]); ylim([1e-10 1e-6]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+header: :tangle no :exports results :results none :noweb yes
|
||||||
|
#+begin_src matlab :var filepath="figs/opt_stiff_cas_dz_tot.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||||
|
<<plt-matlab>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+name: fig:opt_stiff_cas_dz_tot
|
||||||
|
#+caption: Cumulative Amplitude Spectrum of the Sample vertical position error due to all considered perturbations for multiple nano-hexapod stiffnesses ([[./figs/opt_stiff_cas_dz_tot.png][png]], [[./figs/opt_stiff_cas_dz_tot.pdf][pdf]])
|
||||||
|
[[file:figs/opt_stiff_cas_dz_tot.png]]
|
||||||
|
|
||||||
|
** Conclusion
|
||||||
|
#+begin_important
|
||||||
|
From Figure [[fig:opt_stiff_cas_dz_tot]], we can see that a soft nano-hexapod $k<10^6\ [N/m]$ significantly reduces the effect of perturbations from 20Hz to 300Hz.
|
||||||
|
#+end_important
|
||||||
|
|
||||||
* Closed Loop Budget Error
|
* Closed Loop Budget Error
|
||||||
<<sec:closed_loop_budget_error>>
|
<<sec:closed_loop_budget_error>>
|
||||||
** Introduction :ignore:
|
** Introduction :ignore:
|
||||||
|
** Matlab Init :noexport:ignore:
|
||||||
|
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||||
|
<<matlab-dir>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none :results silent :noweb yes
|
||||||
|
<<matlab-init>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :tangle no
|
||||||
|
simulinkproject('../');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Approximation of the effect of feedback on the motion error
|
||||||
|
Let's consider Figure [[fig:effect_feedback_disturbance_diagram]] where a controller $K$ is used to reduce the effect of the disturbance $d$ on the position error $y$.
|
||||||
|
|
||||||
|
#+begin_src latex :file effect_feedback_disturbance_diagram.pdf
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\node[addb={+}{}{}{}{-}] (addfb) at (0, 0){};
|
||||||
|
\node[block, right=0.6 of addfb] (K){$K$};
|
||||||
|
\node[block, right=0.6 of K] (G){$G$};
|
||||||
|
\node[addb={+}{}{}{}{}, right=0.6 of G] (adddy){};
|
||||||
|
\node[block, above=0.6 of adddy] (Gd){$G_d$};
|
||||||
|
|
||||||
|
\draw[<-] (addfb.west) -- ++(-0.6, 0) node[above right]{$r$};
|
||||||
|
\draw[->] (addfb.east) -- (K.west);
|
||||||
|
\draw[->] (K.east) -- (G.west) node[above left]{$u$};
|
||||||
|
\draw[->] (G.east) -- (adddy.west);
|
||||||
|
\draw[->] (adddy.east) -- ++(1, 0) node[above left]{$y$};
|
||||||
|
\draw[->] ($(adddy.east)+(0.6, 0)$) node[branch]{} -- ++(0, -1) -| (addfb.south);
|
||||||
|
\draw[<-] (Gd.north) -- ++(0, 0.6) node[below right]{$d$};
|
||||||
|
\draw[->] (Gd.south) -- (adddy.north);
|
||||||
|
\end{tikzpicture}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+name: fig:effect_feedback_disturbance_diagram
|
||||||
|
#+caption: Feedback System
|
||||||
|
#+RESULTS:
|
||||||
|
[[file:figs/effect_feedback_disturbance_diagram.png]]
|
||||||
|
|
||||||
|
The reduction of the impact of $d$ on $y$ thanks to feedback is described by the following equation:
|
||||||
|
\begin{equation}
|
||||||
|
\frac{y}{d} = \frac{G_d}{1 + KG}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
|
||||||
|
As a first approximation, we can consider that the controller is designed in such a way that the loop gain $KG$ is a pure integrator:
|
||||||
|
\[ L_1(s) = K_1(s) G(s) = \frac{\omega_c}{s} \]
|
||||||
|
where $\omega_c$ is the crossover frequency.
|
||||||
|
|
||||||
|
|
||||||
|
We may then consider another controller in such a way that the loop gain corresponds to a double integrator with a lead centered with the crossover frequency $\omega_c$:
|
||||||
|
\[ L_2(s) = K_2(s) G(s) = \left( \frac{\omega_c}{s} \right)^2 \cdot \frac{1 + \frac{s}{\omega_c/2}}{1 + \frac{s}{2\omega_c}} \]
|
||||||
|
|
||||||
** Reduction thanks to feedback - Required bandwidth
|
** Reduction thanks to feedback - Required bandwidth
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
wc = 1*2*pi; % [rad/s]
|
wc = 1*2*pi; % [rad/s]
|
||||||
|