dcm-metrology/dcm_metrology.html

593 lines
19 KiB
HTML
Raw Normal View History

2022-01-05 10:29:06 +01:00
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2022-01-05 mer. 10:28 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>ESRF Double Crystal Monochromator - Metrology</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" class="content">
<h1 class="title">ESRF Double Crystal Monochromator - Metrology</h1>
<div id="table-of-contents" role="doc-toc">
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#org5fb9a5d">1. Metrology Concept</a>
<ul>
<li><a href="#orgdfefe6f">1.1. Sensor Topology</a></li>
<li><a href="#orgcd986be">1.2. Crystal&rsquo;s motion computation</a></li>
</ul>
</li>
<li><a href="#org1756962">2. Deformations of the Metrology Frame</a>
<ul>
<li><a href="#org7ca31a3">2.1. Measurement Setup</a></li>
<li><a href="#org7a8ddda">2.2. Simulations</a></li>
<li><a href="#org29e69e6">2.3. Comparison</a></li>
</ul>
</li>
<li><a href="#orgc6a0286">3. Attocube - Periodic Non-Linearity</a>
<ul>
<li><a href="#orgd22a8f7">3.1. Simulations</a></li>
</ul>
</li>
</ul>
</div>
</div>
<hr>
<p>This report is also available as a <a href="./dcm_metrology.pdf">pdf</a>.</p>
<hr>
<div id="outline-container-org5fb9a5d" class="outline-2">
<h2 id="org5fb9a5d"><span class="section-number-2">1.</span> Metrology Concept</h2>
<div class="outline-text-2" id="text-1">
<p>
The goal of the metrology system is to measure the distance and default of parallelism orientation between the first and second crystals
</p>
<p>
Only 3 degrees of freedom are of interest:
</p>
<ul class="org-ul">
<li>\(d_z\)</li>
<li>\(r_y\)</li>
<li>\(r_x\)</li>
</ul>
</div>
<div id="outline-container-orgdfefe6f" class="outline-3">
<h3 id="orgdfefe6f"><span class="section-number-3">1.1.</span> Sensor Topology</h3>
<div class="outline-text-3" id="text-1-1">
<p>
In order to measure the relative pose of the two crystals, instead of performing a direct measurement which is complicated, the pose of the two crystals are measured from a metrology frame.
Three interferometers are used to measured the 3dof of interest for each crystals.
Three additional interferometers are used to measured the relative motion of the metrology frame.
</p>
<table id="org63eb22c" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 1:</span> Notations for the metrology frame</caption>
<colgroup>
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Notation</th>
<th scope="col" class="org-left">Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left"><code>d</code></td>
<td class="org-left">&ldquo;Downstream&rdquo;: Positive X</td>
</tr>
<tr>
<td class="org-left"><code>u</code></td>
<td class="org-left">&ldquo;Upstream&rdquo;: Negative X</td>
</tr>
<tr>
<td class="org-left"><code>h</code></td>
<td class="org-left">&ldquo;Hall&rdquo;: Positive Y</td>
</tr>
<tr>
<td class="org-left"><code>r</code></td>
<td class="org-left">&ldquo;Ring&rdquo;: Negative Y</td>
</tr>
<tr>
<td class="org-left"><code>f</code></td>
<td class="org-left">&ldquo;Frame&rdquo;</td>
</tr>
<tr>
<td class="org-left"><code>1</code></td>
<td class="org-left">&ldquo;First Crystals&rdquo;</td>
</tr>
<tr>
<td class="org-left"><code>2</code></td>
<td class="org-left">&ldquo;Second Crystals&rdquo;</td>
</tr>
</tbody>
</table>
<div id="org830789b" class="figure">
<p><img src="figs/metrology_schematic.png" alt="metrology_schematic.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Schematic of the Metrology System</p>
</div>
</div>
</div>
<div id="outline-container-orgcd986be" class="outline-3">
<h3 id="orgcd986be"><span class="section-number-3">1.2.</span> Crystal&rsquo;s motion computation</h3>
<div class="outline-text-3" id="text-1-2">
<p>
From the raw interferometric measurements, the pose between the first and second crystals can be computed.
</p>
<p>
First, Jacobian matrices can be used to convert raw interferometer measurements to axial displacement and orientation of the crystals and metrology frame.
</p>
<p>
For the 311 crystals:
</p>
<table id="org5eec403" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 2:</span> Table caption</caption>
<colgroup>
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Notation</th>
<th scope="col" class="org-left">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left"><code>um</code></td>
<td class="org-left">Metrology Frame - Upstream</td>
</tr>
<tr>
<td class="org-left"><code>dhm</code></td>
<td class="org-left">Metrology Frame - Downstream Hall</td>
</tr>
<tr>
<td class="org-left"><code>drm</code></td>
<td class="org-left">Metrology Frame - Downstream Ring</td>
</tr>
</tbody>
<tbody>
<tr>
<td class="org-left"><code>ur1</code></td>
<td class="org-left">First Crystal - Upstream Ring</td>
</tr>
<tr>
<td class="org-left"><code>h1</code></td>
<td class="org-left">First Crystal - Hall</td>
</tr>
<tr>
<td class="org-left"><code>dr1</code></td>
<td class="org-left">First Crystal - Downstream Ring</td>
</tr>
</tbody>
<tbody>
<tr>
<td class="org-left"><code>ur2</code></td>
<td class="org-left">First Crystal - Upstream Ring</td>
</tr>
<tr>
<td class="org-left"><code>h2</code></td>
<td class="org-left">First Crystal - Hall</td>
</tr>
<tr>
<td class="org-left"><code>dr2</code></td>
<td class="org-left">First Crystal - Downstream Ring</td>
</tr>
</tbody>
</table>
<table id="org9cbd4a3" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 3:</span> Table caption</caption>
<colgroup>
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Notation</th>
<th scope="col" class="org-left">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left"><code>dzm</code></td>
<td class="org-left">Positive: increase of distance</td>
</tr>
<tr>
<td class="org-left"><code>rym</code></td>
<td class="org-left">&#xa0;</td>
</tr>
<tr>
<td class="org-left"><code>rxm</code></td>
<td class="org-left">&#xa0;</td>
</tr>
</tbody>
<tbody>
<tr>
<td class="org-left"><code>dz1</code></td>
<td class="org-left">Positive: decrease of distance</td>
</tr>
<tr>
<td class="org-left"><code>ry1</code></td>
<td class="org-left">&#xa0;</td>
</tr>
<tr>
<td class="org-left"><code>rx1</code></td>
<td class="org-left">&#xa0;</td>
</tr>
</tbody>
<tbody>
<tr>
<td class="org-left"><code>dz2</code></td>
<td class="org-left">Positive: increase of distance</td>
</tr>
<tr>
<td class="org-left"><code>ry2</code></td>
<td class="org-left">&#xa0;</td>
</tr>
<tr>
<td class="org-left"><code>rx2</code></td>
<td class="org-left">&#xa0;</td>
</tr>
</tbody>
</table>
<div id="org211c039" class="figure">
<p><img src="figs/schematic_sensor_jacobian_forward_kinematics_m.png" alt="schematic_sensor_jacobian_forward_kinematics_m.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Forward Kinematics for the Metrology frame</p>
</div>
<div id="org567b707" class="figure">
<p><img src="figs/schematic_sensor_jacobian_forward_kinematics_1.png" alt="schematic_sensor_jacobian_forward_kinematics_1.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Forward Kinematics for the 1st crystal</p>
</div>
<div id="orgb30fa3c" class="figure">
<p><img src="figs/schematic_sensor_jacobian_forward_kinematics_2.png" alt="schematic_sensor_jacobian_forward_kinematics_2.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Forward Kinematics for the 2nd crystal</p>
</div>
<p>
Then, the displacement and orientations can be combined as follows:
</p>
\begin{align}
d_{z} &= + d_{z1} - d_{z2} + d_{zm} \\
d_{r_y} &= - r_{y1} + r_{y2} - r_{ym} \\
d_{r_x} &= - r_{x1} + r_{x2} - r_{xm}
\end{align}
<p>
Therefore:
</p>
<ul class="org-ul">
<li>\(d_z\) represents the distance between the two crystals</li>
<li>\(d_{r_y}\) represents the rotation of the second crystal w.r.t. the first crystal around \(y\) axis</li>
<li>\(d_{r_x}\) represents the rotation of the second crystal w.r.t. the first crystal around \(x\) axis</li>
</ul>
<p>
If \(d_{r_y}\) is positive, the second crystal has a positive rotation around \(y\) w.r.t. the first crystal.
Therefore, the second crystal should be actuated such that it is making a negative rotation around \(y\) w.r.t. metrology frame.
</p>
<p>
The Jacobian matrices are defined as follow:
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Sensor Jacobian matrix for the metrology frame</span>
J_m = [1, 0.102, 0
1, <span class="org-builtin">-</span>0.088, 0.1275
1, <span class="org-builtin">-</span>0.088, <span class="org-builtin">-</span>0.1275];
<span class="org-matlab-cellbreak">%% Sensor Jacobian matrix for 1st "111" crystal</span>
J_s_111_1 = [<span class="org-builtin">-</span>1, <span class="org-builtin">-</span>0.036, <span class="org-builtin">-</span>0.015
<span class="org-builtin">-</span>1, 0, 0.015
<span class="org-builtin">-</span>1, 0.036, <span class="org-builtin">-</span>0.015];
<span class="org-matlab-cellbreak">%% Sensor Jacobian matrix for 2nd "111" crystal</span>
J_s_111_2 = [1, 0.07, 0.015
1, 0, <span class="org-builtin">-</span>0.015
1, <span class="org-builtin">-</span>0.07, 0.015];
</pre>
</div>
<p>
Therefore, the matrix that gives the relative pose of the crystal from the 9 interferometers is:
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Compute the transformation matrix</span>
G_111_t = [<span class="org-builtin">-</span>inv(J_s_111_1), inv(J_s_111_2), <span class="org-builtin">-</span>inv(J_m)];
<span class="org-comment-delimiter">% </span><span class="org-comment">Sign convention for the axial motion</span>
G_111_t(1,<span class="org-builtin">:</span>) = <span class="org-builtin">-</span>G_111_t(1,<span class="org-builtin">:</span>);
</pre>
</div>
<table id="orgd7b23bf" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 4:</span> Transformation Matrix</caption>
<colgroup>
<col class="org-left" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-right"><code>ur1</code> [nm]</th>
<th scope="col" class="org-right"><code>h1</code> [nm]</th>
<th scope="col" class="org-right"><code>dr1</code> [nm]</th>
<th scope="col" class="org-right"><code>ur2</code> [nm]</th>
<th scope="col" class="org-right"><code>h2</code> [nm]</th>
<th scope="col" class="org-right"><code>dr1</code> [nm]</th>
<th scope="col" class="org-right"><code>um</code> [nm]</th>
<th scope="col" class="org-right"><code>dhm</code> [nm]</th>
<th scope="col" class="org-right"><code>drm</code> [nm]</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left"><code>dz</code> [nm]</td>
<td class="org-right">-0.25</td>
<td class="org-right">-0.5</td>
<td class="org-right">-0.25</td>
<td class="org-right">-0.25</td>
<td class="org-right">-0.5</td>
<td class="org-right">-0.25</td>
<td class="org-right">0.463</td>
<td class="org-right">0.268</td>
<td class="org-right">0.268</td>
</tr>
<tr>
<td class="org-left"><code>rx</code> [nrad]</td>
<td class="org-right">13.889</td>
<td class="org-right">0.0</td>
<td class="org-right">-13.889</td>
<td class="org-right">7.143</td>
<td class="org-right">0.0</td>
<td class="org-right">-7.143</td>
<td class="org-right">-5.263</td>
<td class="org-right">2.632</td>
<td class="org-right">2.632</td>
</tr>
<tr>
<td class="org-left"><code>ry</code> [nrad]</td>
<td class="org-right">16.667</td>
<td class="org-right">-33.333</td>
<td class="org-right">16.667</td>
<td class="org-right">16.667</td>
<td class="org-right">-33.333</td>
<td class="org-right">16.667</td>
<td class="org-right">0.0</td>
<td class="org-right">-3.922</td>
<td class="org-right">3.922</td>
</tr>
</tbody>
</table>
<p>
From table <a href="#orgb30fa3c">4</a>, we can determine the effect of each interferometer on the estimated relative pose between the crystals.
For instance, an error on <code>dr1</code> will have much greater impact on <code>ry</code> than an error on <code>drm</code>.
</p>
</div>
</div>
</div>
<div id="outline-container-org1756962" class="outline-2">
<h2 id="org1756962"><span class="section-number-2">2.</span> Deformations of the Metrology Frame</h2>
<div class="outline-text-2" id="text-2">
<p>
The transformation matrix in Table <a href="#orgb30fa3c">4</a> is valid only if the metrology frames are solid bodies.
</p>
<p>
The metrology frame itself is experiencing some deformations due to the gravity.
When the bragg axis is scanned, the effect of gravity on the metrology frame is changing and this introduce some measurement errors.
</p>
<p>
This can be calibrated.
</p>
</div>
<div id="outline-container-org7ca31a3" class="outline-3">
<h3 id="org7ca31a3"><span class="section-number-3">2.1.</span> Measurement Setup</h3>
<div class="outline-text-3" id="text-2-1">
<p>
Two beam viewers:
</p>
<ul class="org-ul">
<li>one close to the DCM to measure position of the beam</li>
<li>one far away to the DCM to measure orientation of the beam</li>
</ul>
<p>
For each Bragg angle, the Fast Jacks are actuated to that the beam is at the center of the beam viewer.
Then, then position of the crystals as measured by the interferometers is recorded.
This position is the wanted position for a given Bragg angle.
</p>
</div>
</div>
<div id="outline-container-org7a8ddda" class="outline-3">
<h3 id="org7a8ddda"><span class="section-number-3">2.2.</span> Simulations</h3>
<div class="outline-text-3" id="text-2-2">
<p>
The deformations of the metrology frame and therefore the expected interferometric measurements can be computed as a function of the Bragg angle.
This may be done using FE software.
</p>
</div>
</div>
<div id="outline-container-org29e69e6" class="outline-3">
<h3 id="org29e69e6"><span class="section-number-3">2.3.</span> Comparison</h3>
</div>
</div>
<div id="outline-container-orgc6a0286" class="outline-2">
<h2 id="orgc6a0286"><span class="section-number-2">3.</span> Attocube - Periodic Non-Linearity</h2>
<div class="outline-text-2" id="text-3">
<p>
<a id="org4b25b3a"></a>
</p>
<p>
The idea is to calibrate the periodic non-linearity of the interferometers, a known displacement must be imposed and the interferometer output compared to this displacement.
This should be performed over several periods in order to characterize the error.
</p>
<p>
We here suppose that we are already in the frame of the Attocube (the fast-jack displacements are converted to Attocube displacement using the transformation matrices).
We also suppose that we are at a certain Bragg angle, and that the stepper motors are not moving: only the piezoelectric actuators are used.
</p>
<p>
The setup is schematically with the block diagram in Figure <a href="#org2796bae">5</a>.
The signals are:
</p>
<ul class="org-ul">
<li>\(u\): Actuator Signal (position where we wish to go)</li>
<li>\(d\): Disturbances affecting the signal</li>
<li>\(y\): Displacement of the crystal</li>
<li>\(y_g\): Measurement of the crystal motion by the strain gauge with some noise \(n_g\)</li>
<li>\(y_a\): Measurement of the crystal motion by the interferometer with some noise \(n_a\)</li>
</ul>
<div id="org2796bae" class="figure">
<p><img src="figs/block_diagram_lut_attocube.png" alt="block_diagram_lut_attocube.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Block Diagram schematic of the setup used to measure the periodic non-linearity of the Attocube</p>
</div>
<p>
The problem is to estimate the periodic non-linearity of the Attocube from the imperfect measurements \(y_a\) and \(y_g\).
</p>
<p>
The wavelength of the Attocube is 1530nm, therefore the non-linearity has a period of 765nm.
The amplitude of the non-linearity can vary from one unit to the other (and maybe from one experimental condition to the other).
It is typically between 5nm peak to peak and 20nm peak to peak.
</p>
</div>
<div id="outline-container-orgd22a8f7" class="outline-3">
<h3 id="orgd22a8f7"><span class="section-number-3">3.1.</span> Simulations</h3>
<div class="outline-text-3" id="text-3-1">
<p>
We have some constrains on the way the motion is imposed and measured:
</p>
<ul class="org-ul">
<li>We want the frequency content of the imposed motion to be at low frequency in order not to induce vibrations of the structure.
We have to make sure the forces applied by the piezoelectric actuator only moves the crystal and not the fast jack below.
Therefore, we have to move much slower than the first resonance frequency in the system.</li>
<li>As both \(y_a\) and \(y_g\) should have rather small noise, we have to filter them with low pass filters.
The cut-off frequency of the low pass filter should be high as compared to the motion (to not induce any distortion) but still reducing sufficiently the noise.
Let&rsquo;s say we want the noise to be less than 1nm (\(6 \sigma\)).</li>
</ul>
<p>
Suppose we have the power spectral density (PSD) of both \(n_a\) and \(n_g\).
</p>
<ul class="org-ul">
<li class="off"><code>[&#xa0;]</code> Take the PSD of the Attocube</li>
<li class="off"><code>[&#xa0;]</code> Take the PSD of the strain gauge</li>
<li class="off"><code>[&#xa0;]</code> Using 2nd order low pass filter, estimate the required low pass filter cut-off frequency to have sufficiently low noise</li>
</ul>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2022-01-05 mer. 10:28</p>
</div>
</body>
</html>