Commit b1a51192 authored by Thomas Dehaeze's avatar Thomas Dehaeze
Browse files

Initial Commit

parents
.ob-jupyter/
auto/
*.tex
*.blg
*-blx.bib
*.bbl
*.aux
*.bcf
*.fdb_latexmk
*.log
*.out
*.pyg
*.toc
*.fls
*.synctex.gz
.auctex-auto/
_minted*
# Emacs
auto/
# Simulink Real Time
*bio.m
*pt.m
*ref.m
*ri.m
*xcp.m
*.mldatx
*.slxc
*.xml
*_slrt_rtw/
# data
data/
# Windows default autosave extension
*.asv
# OSX / *nix default autosave extension
*.m~
# Compiled MEX binaries (all platforms)
*.mex*
# Packaged app and toolbox files
*.mlappinstall
*.mltbx
# Generated helpsearch folders
helpsearch*/
# Simulink code generation folders
slprj/
sccprj/
# Matlab code generation folders
codegen/
# Simulink autosave extension
*.autosave
# Octave session info
octave-workspace
<?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-06-02 Thu 18:41 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>DCM - User Guide</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">DCM - User Guide</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="#org62dd823">1. Hardware</a>
<ul>
<li><a href="#org03a16b1">1.1. Interferometers</a></li>
<li><a href="#org2dd2e23">1.2. PEPU</a></li>
<li><a href="#orge42df78">1.3. IcePAP</a></li>
<li><a href="#org8df34c5">1.4. Aerotech</a></li>
<li><a href="#org954eb02">1.5. SSI2V</a></li>
<li><a href="#orgce2f9ef">1.6. Piezoelectric Amplifier</a></li>
<li><a href="#orgc4f75c6">1.7. Speedgoat</a></li>
</ul>
</li>
<li><a href="#org34547c0">2. Setup Procedure</a>
<ul>
<li><a href="#orgd0befd6">2.1. Turning on the Hardware</a></li>
<li><a href="#org5327e8f">2.2. Turning on the Speedgoat Server</a></li>
<li><a href="#orgceb9bc7">2.3. Running the Speedgoat program</a></li>
<li><a href="#orgaf433a7">2.4. First interferometer reset to be able to use mode B and C</a></li>
<li><a href="#org7f0d2f6">2.5. Metrology Frame Deformations - Calibration</a></li>
<li><a href="#org8bbb1d6">2.6. Ensure crystal relative pose</a>
<ul>
<li><a href="#orgfecba53">2.6.1. Rocking curve to find \(y\) crystal parallelism</a></li>
<li><a href="#orgf4ae640">2.6.2. Bragg scan to find \(x\) crystal parallelism</a></li>
<li><a href="#org8bb9dfa">2.6.3. Bragg scan to find the distance between the crystals</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#orgb0b3dac">3. Power Off Procedure</a></li>
<li><a href="#orgee8d5bf">4. Bliss</a></li>
</ul>
</div>
</div>
<hr>
<p>This report is also available as a <a href="./dcm-user-guide.pdf">pdf</a>.</p>
<hr>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-right"><code>id21</code></th>
<th scope="col" class="org-right"><code>id24</code></th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Ring</td>
<td class="org-right">311</td>
<td class="org-right">111</td>
</tr>
<tr>
<td class="org-left">Hall</td>
<td class="org-right">111</td>
<td class="org-right">311</td>
</tr>
</tbody>
</table>
<div id="outline-container-org62dd823" class="outline-2">
<h2 id="org62dd823"><span class="section-number-2">1.</span> Hardware</h2>
<div class="outline-text-2" id="text-1">
<p>
<a id="orge8a6f91"></a>
</p>
</div>
<div id="outline-container-org03a16b1" class="outline-3">
<h3 id="org03a16b1"><span class="section-number-3">1.1.</span> Interferometers</h3>
<div class="outline-text-3" id="text-1-1">
<p>
<a id="org0143aeb"></a>
</p>
<p>
Each interferometer &ldquo;box&rdquo; (either Attocube or QuDIS) has 3 measurement channels.
As 15 distances have to be measured, 5 interferometer &ldquo;boxes&rdquo; are used.
</p>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Description</th>
<th scope="col" class="org-left"><code>id21</code></th>
<th scope="col" class="org-left"><code>id24</code></th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Xtal 1 hall</td>
<td class="org-left"><code>attodcm4</code></td>
<td class="org-left"><code>attoid24dcm1</code></td>
</tr>
<tr>
<td class="org-left">Xtal 1 ring</td>
<td class="org-left"><code>attodcm1</code></td>
<td class="org-left"><code>attoid24dcm2</code></td>
</tr>
<tr>
<td class="org-left">Xtal 2 hall</td>
<td class="org-left"><code>QuDIS</code></td>
<td class="org-left"><code>attoid24dcm3</code></td>
</tr>
<tr>
<td class="org-left">Xtal 2 ring</td>
<td class="org-left"><code>attodcm3</code></td>
<td class="org-left"><code>attonass2</code></td>
</tr>
<tr>
<td class="org-left">Metrology</td>
<td class="org-left"><code>attodcm5</code></td>
<td class="org-left"><code>attodcm2</code></td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-org2dd2e23" class="outline-3">
<h3 id="org2dd2e23"><span class="section-number-3">1.2.</span> PEPU</h3>
<div class="outline-text-3" id="text-1-2">
<p>
<a id="org70d2d86"></a>
</p>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-left"><code>id21</code></th>
<th scope="col" class="org-left"><code>id24</code></th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Bragg Encoders (vacuum)</td>
<td class="org-left"><code>pepudcm1</code></td>
<td class="org-left">&#xa0;</td>
</tr>
<tr>
<td class="org-left">Bragg Encoders (air)</td>
<td class="org-left"><code>pepu1</code></td>
<td class="org-left">&#xa0;</td>
</tr>
<tr>
<td class="org-left">Interferometers (1-4)</td>
<td class="org-left"><code>pepudcm2</code></td>
<td class="org-left">&#xa0;</td>
</tr>
<tr>
<td class="org-left">Interferometers (5-8)</td>
<td class="org-left"><code>pepudcm3</code></td>
<td class="org-left">&#xa0;</td>
</tr>
<tr>
<td class="org-left">Interferometers (9-12)</td>
<td class="org-left"><code>pepudcm4</code></td>
<td class="org-left">&#xa0;</td>
</tr>
<tr>
<td class="org-left">Interferometers (13-15)</td>
<td class="org-left"><code>pepudcm5</code></td>
<td class="org-left">&#xa0;</td>
</tr>
<tr>
<td class="org-left">FastJack</td>
<td class="org-left"><code>pepumel1</code></td>
<td class="org-left">&#xa0;</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-orge42df78" class="outline-3">
<h3 id="orge42df78"><span class="section-number-3">1.3.</span> IcePAP</h3>
<div class="outline-text-3" id="text-1-3">
<p>
<a id="org2a31fe3"></a>
</p>
<p>
To run IcePAP CMS (for ID21):
</p>
<div class="org-src-container">
<pre class="src src-bash">ssh -X blissadm@lid21nano
</pre>
</div>
<p>
Then <code>icepapcms</code>.
</p>
</div>
</div>
<div id="outline-container-org8df34c5" class="outline-3">
<h3 id="org8df34c5"><span class="section-number-3">1.4.</span> Aerotech</h3>
<div class="outline-text-3" id="text-1-4">
<p>
<a id="org984d612"></a>
An aerotech controller is used to control the Bragg axis.
</p>
</div>
</div>
<div id="outline-container-org954eb02" class="outline-3">
<h3 id="org954eb02"><span class="section-number-3">1.5.</span> SSI2V</h3>
<div class="outline-text-3" id="text-1-5">
<p>
<a id="orgcc3d71e"></a>
</p>
<p>
Three SSI2V configure in unipolar mode (output from 0V to 10.24V).
</p>
</div>
</div>
<div id="outline-container-orgce2f9ef" class="outline-3">
<h3 id="orgce2f9ef"><span class="section-number-3">1.6.</span> Piezoelectric Amplifier</h3>
<div class="outline-text-3" id="text-1-6">
<p>
<a id="org02817e8"></a>
PI amplifier
</p>
</div>
</div>
<div id="outline-container-orgc4f75c6" class="outline-3">
<h3 id="orgc4f75c6"><span class="section-number-3">1.7.</span> Speedgoat</h3>
<div class="outline-text-3" id="text-1-7">
<p>
<a id="org5b65cd0"></a>
</p>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-left"><code>id21</code></th>
<th scope="col" class="org-left"><code>id24</code></th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Speedgoat Server Computer</td>
<td class="org-left"><code>wid21speedgoat1</code></td>
<td class="org-left"><code>wid24speedgoat1</code></td>
</tr>
<tr>
<td class="org-left">Speedgota Target Machine</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">&#xa0;</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div id="outline-container-org34547c0" class="outline-2">
<h2 id="org34547c0"><span class="section-number-2">2.</span> Setup Procedure</h2>
<div class="outline-text-2" id="text-2">
<p>
<a id="org8cf56a9"></a>
</p>
<ul class="org-ul">
<li>Power on the hardware</li>
<li>Start the speedgoat program</li>
<li>Rocking Curve</li>
<li>Reset interferometers</li>
<li></li>
</ul>
</div>
<div id="outline-container-orgd0befd6" class="outline-3">
<h3 id="orgd0befd6"><span class="section-number-3">2.1.</span> Turning on the Hardware</h3>
<div class="outline-text-3" id="text-2-1">
<ul class="org-ul">
<li>Interferometers</li>
<li>PEPU</li>
<li>IcePAP</li>
<li>Speedgoat</li>
</ul>
<p>
Verify that everything is working.
</p>
</div>
</div>
<div id="outline-container-org5327e8f" class="outline-3">
<h3 id="org5327e8f"><span class="section-number-3">2.2.</span> Turning on the Speedgoat Server</h3>
<div class="outline-text-3" id="text-2-2">
<p>
Connect to the Speedgoat server computer (see Section <a href="#org5b65cd0">1.7</a>) and run the <code>BLISS SPEEDGOAT SERVER</code> program on the desktop.
</p>
<p>
A terminal window should be displayed, with the last line being:
</p>
<blockquote>
<p>
Serving XPC speedgoat on tcp://0.0.0.0:8200
</p>
</blockquote>
<p>
This means the server is correctly launched.
</p>
</div>
</div>
<div id="outline-container-orgceb9bc7" class="outline-3">
<h3 id="orgceb9bc7"><span class="section-number-3">2.3.</span> Running the Speedgoat program</h3>
</div>
<div id="outline-container-orgaf433a7" class="outline-3">
<h3 id="orgaf433a7"><span class="section-number-3">2.4.</span> First interferometer reset to be able to use mode B and C</h3>
<div class="outline-text-3" id="text-2-4">
<p>
After homing all fast jacks, perform an interferometer reset such that \(r_x = 0\), \(r_y = 0\) and \(d_z = \frac{d_{\text{off}}}{2 \cos \theta}\) (i.e. the distance between the crystals is following the theoretical value).
</p>
<p>
Then, make a LUT over the full stroke.
</p>
<p>
And verify that the feedback regulator is working over the full stroke.
</p>
</div>
</div>
<div id="outline-container-org7f0d2f6" class="outline-3">
<h3 id="org7f0d2f6"><span class="section-number-3">2.5.</span> Metrology Frame Deformations - Calibration</h3>
<div class="outline-text-3" id="text-2-5">
<div class="note" id="org4ae1033">
<p>
<b>Hardware used</b>:
</p>
<ul class="org-ul">
<li>Position sensor far way from the DCM.
An angular sensor may be used instead.
The sensor should have high bandwidth</li>
</ul>
</div>
<p>
Using a position sensor far away from the DCM (ideally a quadrant photodiode with high measurement bandwidth).
</p>
</div>
</div>
<div id="outline-container-org8bbb1d6" class="outline-3">
<h3 id="org8bbb1d6"><span class="section-number-3">2.6.</span> Ensure crystal relative pose</h3>
<div class="outline-text-3" id="text-2-6">
<p>
Interferometers are only measuring relative displacement.
Therefore, it is important to correctly initialize them.
</p>
<p>
They should be initialize in such a way that:
</p>
<ul class="org-ul">
<li>\(r_x = 0\) and \(r_y = 0\) when the two crystallographic planes are parallel</li>
<li>measured \(d_z\) is indeed equal to the distance between the crystallographic planes.</li>
</ul>
<p>
The main issue is therefore to determine when the planes are parallel and to know the distance between the crystals with an external metrology.
</p>
<p>
Note that the interferometers should not be reset the same way for the two pairs of crystals as their crystallographic planes are not parallel.
</p>
<p>
All the following should be performed in mode C for better results.
</p>
</div>
<div id="outline-container-orgfecba53" class="outline-4">
<h4 id="orgfecba53"><span class="section-number-4">2.6.1.</span> Rocking curve to find \(y\) crystal parallelism</h4>
<div class="outline-text-4" id="text-2-6-1">
<p>
Perform a rocking curve to find the maximum output beam intensity.
At the maximum intensity, the two crystals are parallel and the interferometers can be reset in such a way that \(r_y = 0\).
</p>
</div>
</div>
<div id="outline-container-orgf4ae640" class="outline-4">
<h4 id="orgf4ae640"><span class="section-number-4">2.6.2.</span> Bragg scan to find \(x\) crystal parallelism</h4>
<div class="outline-text-4" id="text-2-6-2">
<p>
Measure the rotation of the output beam along the \(z\) axis.
This can be performed by using a position sensor positioned away from the DCM or using an angular metrology (lens + position sensor at the focal plane).
</p>
<p>
Perform a scan in mode C (i.e. closed loop, \(r_x \approx 0\) during the scan), and measure simultaneously the \(R_z\) motion of the output beam.
</p>
<p>
The \(r_x\) offset can be estimated from the data.
This offset is then included in the interferometer data as an offset.
</p>
</div>
</div>
<div id="outline-container-org8bb9dfa" class="outline-4">
<h4 id="org8bb9dfa"><span class="section-number-4">2.6.3.</span> Bragg scan to find the distance between the crystals</h4>
<div class="outline-text-4" id="text-2-6-3">
<p>
Consider:
</p>
<ul class="org-ul">
<li>\(\epsilon_{d_z}\) an error in the distance estimation between the crystals</li>
<li>\(\theta\) the Bragg angle</li>
<li>\(\epsilon_z(\theta)\) the vertical motion of the output</li>
</ul>
<p>
It can be shown that:
</p>
\begin{equation}
\boxed{\epsilon_z(\theta) = \epsilon_{d_z} \cdot 2 \cos \theta}
\end{equation}
<div class="org-src-container">
<pre class="src src-matlab">e_dz = 0.1e<span class="org-builtin">-</span>3;
e_dz = 1;
thetas = 0<span class="org-builtin">:</span>1<span class="org-builtin">:</span>90;
e_z = e_dz<span class="org-builtin">*</span>2<span class="org-builtin">*</span>cos(thetas<span class="org-builtin">*</span><span class="org-matlab-math">pi</span><span class="org-builtin">/</span>180);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-builtin">figure</span>;
<span class="org-builtin">plot</span>(thetas, e_z)
<span class="org-builtin">xlabel</span>(<span class="org-string">'Bragg Angle [deg]'</span>);
<span class="org-builtin">ylabel</span>(<span class="org-string">'Beam Z-offset [$\mu$m]'</span>);
</pre>
</div>
<p>
The cosine function can be fitted from the data and the distance offset can be estimated.
</p>
<p>
The accuracy of the results depends on:
</p>
<ul class="org-ul">
<li>how well the metrology deformations are calibrated</li>
<li>How close the sensor is from the DCM and how well is the y parallelism between the crystals.</li>
<li>How sensitive and accurate is the sensor</li>
</ul>
<p>
If a quadrant photodiode is used, a feedback loop may be performed between the measured \(z\) motion by the photodiode and the vertical \(z\) motion of the piezoelectric actuators.
This means that:
</p>
<ul class="org-ul">
<li>\(r_x\) and \(r_y\) are regulated from the interferometers</li>
<li>\(d_z\) is regulated from the photodiodes</li>
</ul>
<p>
Then, by plotting the measured \(z\) motion of the crystals by the interferometers as a function of the Bragg angle, it should be possible to estimate the offset between the crystals.
</p>
</div>
</div>
</div>
</div>
<div id="outline-container-orgb0b3dac" class="outline-2">
<h2 id="orgb0b3dac"><span class="section-number-2">3.</span> Power Off Procedure</h2>
<div class="outline-text-2" id="text-3">
<p>
<a id="org941a2f7"></a>
</p>
<