merge
46
.gitignore
vendored
@ -2,3 +2,49 @@ auto/
|
||||
*.tex
|
||||
**/figs/*.pdf
|
||||
**/figs/*.svg
|
||||
=======
|
||||
# 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
|
||||
|
BIN
disturbance-measurement/disturbance_measurement.slx
Normal file
405
disturbance-measurement/index.html
Normal file
@ -0,0 +1,405 @@
|
||||
<?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>
|
||||
<!-- 2019-05-02 jeu. 14:11 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Measurement of the sample vibrations when rotating the Spindle</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Thomas Dehaeze" />
|
||||
<style type="text/css">
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
.title { text-align: center;
|
||||
margin-bottom: .2em; }
|
||||
.subtitle { text-align: center;
|
||||
font-size: medium;
|
||||
font-weight: bold;
|
||||
margin-top:0; }
|
||||
.todo { font-family: monospace; color: red; }
|
||||
.done { font-family: monospace; color: green; }
|
||||
.priority { font-family: monospace; color: orange; }
|
||||
.tag { background-color: #eee; font-family: monospace;
|
||||
padding: 2px; font-size: 80%; font-weight: normal; }
|
||||
.timestamp { color: #bebebe; }
|
||||
.timestamp-kwd { color: #5f9ea0; }
|
||||
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
|
||||
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
|
||||
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
|
||||
.underline { text-decoration: underline; }
|
||||
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
||||
p.verse { margin-left: 3%; }
|
||||
pre {
|
||||
border: 1px solid #ccc;
|
||||
box-shadow: 3px 3px 3px #eee;
|
||||
padding: 8pt;
|
||||
font-family: monospace;
|
||||
overflow: auto;
|
||||
margin: 1.2em;
|
||||
}
|
||||
pre.src {
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
padding-top: 1.2em;
|
||||
}
|
||||
pre.src:before {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: white;
|
||||
top: -10px;
|
||||
right: 10px;
|
||||
padding: 3px;
|
||||
border: 1px solid black;
|
||||
}
|
||||
pre.src:hover:before { display: inline;}
|
||||
/* Languages per Org manual */
|
||||
pre.src-asymptote:before { content: 'Asymptote'; }
|
||||
pre.src-awk:before { content: 'Awk'; }
|
||||
pre.src-C:before { content: 'C'; }
|
||||
/* pre.src-C++ doesn't work in CSS */
|
||||
pre.src-clojure:before { content: 'Clojure'; }
|
||||
pre.src-css:before { content: 'CSS'; }
|
||||
pre.src-D:before { content: 'D'; }
|
||||
pre.src-ditaa:before { content: 'ditaa'; }
|
||||
pre.src-dot:before { content: 'Graphviz'; }
|
||||
pre.src-calc:before { content: 'Emacs Calc'; }
|
||||
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
||||
pre.src-fortran:before { content: 'Fortran'; }
|
||||
pre.src-gnuplot:before { content: 'gnuplot'; }
|
||||
pre.src-haskell:before { content: 'Haskell'; }
|
||||
pre.src-hledger:before { content: 'hledger'; }
|
||||
pre.src-java:before { content: 'Java'; }
|
||||
pre.src-js:before { content: 'Javascript'; }
|
||||
pre.src-latex:before { content: 'LaTeX'; }
|
||||
pre.src-ledger:before { content: 'Ledger'; }
|
||||
pre.src-lisp:before { content: 'Lisp'; }
|
||||
pre.src-lilypond:before { content: 'Lilypond'; }
|
||||
pre.src-lua:before { content: 'Lua'; }
|
||||
pre.src-matlab:before { content: 'MATLAB'; }
|
||||
pre.src-mscgen:before { content: 'Mscgen'; }
|
||||
pre.src-ocaml:before { content: 'Objective Caml'; }
|
||||
pre.src-octave:before { content: 'Octave'; }
|
||||
pre.src-org:before { content: 'Org mode'; }
|
||||
pre.src-oz:before { content: 'OZ'; }
|
||||
pre.src-plantuml:before { content: 'Plantuml'; }
|
||||
pre.src-processing:before { content: 'Processing.js'; }
|
||||
pre.src-python:before { content: 'Python'; }
|
||||
pre.src-R:before { content: 'R'; }
|
||||
pre.src-ruby:before { content: 'Ruby'; }
|
||||
pre.src-sass:before { content: 'Sass'; }
|
||||
pre.src-scheme:before { content: 'Scheme'; }
|
||||
pre.src-screen:before { content: 'Gnu Screen'; }
|
||||
pre.src-sed:before { content: 'Sed'; }
|
||||
pre.src-sh:before { content: 'shell'; }
|
||||
pre.src-sql:before { content: 'SQL'; }
|
||||
pre.src-sqlite:before { content: 'SQLite'; }
|
||||
/* additional languages in org.el's org-babel-load-languages alist */
|
||||
pre.src-forth:before { content: 'Forth'; }
|
||||
pre.src-io:before { content: 'IO'; }
|
||||
pre.src-J:before { content: 'J'; }
|
||||
pre.src-makefile:before { content: 'Makefile'; }
|
||||
pre.src-maxima:before { content: 'Maxima'; }
|
||||
pre.src-perl:before { content: 'Perl'; }
|
||||
pre.src-picolisp:before { content: 'Pico Lisp'; }
|
||||
pre.src-scala:before { content: 'Scala'; }
|
||||
pre.src-shell:before { content: 'Shell Script'; }
|
||||
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
|
||||
/* additional language identifiers per "defun org-babel-execute"
|
||||
in ob-*.el */
|
||||
pre.src-cpp:before { content: 'C++'; }
|
||||
pre.src-abc:before { content: 'ABC'; }
|
||||
pre.src-coq:before { content: 'Coq'; }
|
||||
pre.src-groovy:before { content: 'Groovy'; }
|
||||
/* additional language identifiers from org-babel-shell-names in
|
||||
ob-shell.el: ob-shell is the only babel language using a lambda to put
|
||||
the execution function name together. */
|
||||
pre.src-bash:before { content: 'bash'; }
|
||||
pre.src-csh:before { content: 'csh'; }
|
||||
pre.src-ash:before { content: 'ash'; }
|
||||
pre.src-dash:before { content: 'dash'; }
|
||||
pre.src-ksh:before { content: 'ksh'; }
|
||||
pre.src-mksh:before { content: 'mksh'; }
|
||||
pre.src-posh:before { content: 'posh'; }
|
||||
/* Additional Emacs modes also supported by the LaTeX listings package */
|
||||
pre.src-ada:before { content: 'Ada'; }
|
||||
pre.src-asm:before { content: 'Assembler'; }
|
||||
pre.src-caml:before { content: 'Caml'; }
|
||||
pre.src-delphi:before { content: 'Delphi'; }
|
||||
pre.src-html:before { content: 'HTML'; }
|
||||
pre.src-idl:before { content: 'IDL'; }
|
||||
pre.src-mercury:before { content: 'Mercury'; }
|
||||
pre.src-metapost:before { content: 'MetaPost'; }
|
||||
pre.src-modula-2:before { content: 'Modula-2'; }
|
||||
pre.src-pascal:before { content: 'Pascal'; }
|
||||
pre.src-ps:before { content: 'PostScript'; }
|
||||
pre.src-prolog:before { content: 'Prolog'; }
|
||||
pre.src-simula:before { content: 'Simula'; }
|
||||
pre.src-tcl:before { content: 'tcl'; }
|
||||
pre.src-tex:before { content: 'TeX'; }
|
||||
pre.src-plain-tex:before { content: 'Plain TeX'; }
|
||||
pre.src-verilog:before { content: 'Verilog'; }
|
||||
pre.src-vhdl:before { content: 'VHDL'; }
|
||||
pre.src-xml:before { content: 'XML'; }
|
||||
pre.src-nxml:before { content: 'XML'; }
|
||||
/* add a generic configuration mode; LaTeX export needs an additional
|
||||
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
|
||||
pre.src-conf:before { content: 'Configuration File'; }
|
||||
|
||||
table { border-collapse:collapse; }
|
||||
caption.t-above { caption-side: top; }
|
||||
caption.t-bottom { caption-side: bottom; }
|
||||
td, th { vertical-align:top; }
|
||||
th.org-right { text-align: center; }
|
||||
th.org-left { text-align: center; }
|
||||
th.org-center { text-align: center; }
|
||||
td.org-right { text-align: right; }
|
||||
td.org-left { text-align: left; }
|
||||
td.org-center { text-align: center; }
|
||||
dt { font-weight: bold; }
|
||||
.footpara { display: inline; }
|
||||
.footdef { margin-bottom: 1em; }
|
||||
.figure { padding: 1em; }
|
||||
.figure p { text-align: center; }
|
||||
.equation-container {
|
||||
display: table;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
.equation {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.equation-label {
|
||||
display: table-cell;
|
||||
text-align: right;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.inlinetask {
|
||||
padding: 10px;
|
||||
border: 2px solid gray;
|
||||
margin: 10px;
|
||||
background: #ffffcc;
|
||||
}
|
||||
#org-div-home-and-up
|
||||
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
||||
textarea { overflow-x: auto; }
|
||||
.linenr { font-size: smaller }
|
||||
.code-highlighted { background-color: #ffff00; }
|
||||
.org-info-js_info-navigation { border-style: none; }
|
||||
#org-info-js_console-label
|
||||
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
||||
.org-info-js_search-highlight
|
||||
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
||||
.org-svg { width: 90%; }
|
||||
/*]]>*/-->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../css/zenburn.css"/>
|
||||
<script type="text/javascript" src="../js/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="../js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript" src="../js/jquery.stickytableheaders.min.js"></script>
|
||||
<script type="text/javascript" src="../js/readtheorg.js"></script>
|
||||
<script type="text/javascript">
|
||||
/*
|
||||
@licstart The following is the entire license notice for the
|
||||
JavaScript code in this tag.
|
||||
|
||||
Copyright (C) 2012-2019 Free Software Foundation, Inc.
|
||||
|
||||
The JavaScript code in this tag is free software: you can
|
||||
redistribute it and/or modify it under the terms of the GNU
|
||||
General Public License (GNU GPL) as published by the Free Software
|
||||
Foundation, either version 3 of the License, or (at your option)
|
||||
any later version. The code is distributed WITHOUT ANY WARRANTY;
|
||||
without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
|
||||
|
||||
As additional permission under GNU GPL version 3 section 7, you
|
||||
may distribute non-source (e.g., minimized or compacted) forms of
|
||||
that code without the copy of the GNU GPL normally required by
|
||||
section 4, provided you include this license notice and a URL
|
||||
through which recipients can access the Corresponding Source.
|
||||
|
||||
|
||||
@licend The above is the entire license notice
|
||||
for the JavaScript code in this tag.
|
||||
*/
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
function CodeHighlightOn(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(null != target) {
|
||||
elem.cacheClassElem = elem.className;
|
||||
elem.cacheClassTarget = target.className;
|
||||
target.className = "code-highlighted";
|
||||
elem.className = "code-highlighted";
|
||||
}
|
||||
}
|
||||
function CodeHighlightOff(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(elem.cacheClassElem)
|
||||
elem.className = elem.cacheClassElem;
|
||||
if(elem.cacheClassTarget)
|
||||
target.className = elem.cacheClassTarget;
|
||||
}
|
||||
/*]]>*///-->
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="content">
|
||||
<h1 class="title">Measurement of the sample vibrations when rotating the Spindle</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgdf465ae">1. Signal Processing</a>
|
||||
<ul>
|
||||
<li><a href="#org4996901">1.1. Load Data</a></li>
|
||||
<li><a href="#org533857f">1.2. Pre-processing</a></li>
|
||||
<li><a href="#org7af64b7">1.3. Time domain Data</a></li>
|
||||
<li><a href="#orga48afa8">1.4. ASD and Frequency domain data</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdf465ae" class="outline-2">
|
||||
<h2 id="orgdf465ae"><span class="section-number-2">1</span> Signal Processing</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
</div>
|
||||
<div id="outline-container-org4996901" class="outline-3">
|
||||
<h3 id="org4996901"><span class="section-number-3">1.1</span> Load Data</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<p>
|
||||
Measurement <code>data_001.mat</code> corresponds to a measurement where the spindle is not turning and <code>data_002.mat</code> where the spindle is turning at 1rpm.
|
||||
<code>x1</code> is the signal coming from the geophone located on the marble and <code>x2</code> is the signal from the geophone located on the sample station.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">data1 = load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_001.mat', 't', 'x1', 'x2'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
data2 = load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_002.mat', 't', 'x1', 'x2'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org533857f" class="outline-3">
|
||||
<h3 id="org533857f"><span class="section-number-3">1.2</span> Pre-processing</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">imax = min<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span>length<span class="org-rainbow-delimiters-depth-3">(</span>data1.t<span class="org-rainbow-delimiters-depth-3">)</span>, length<span class="org-rainbow-delimiters-depth-3">(</span>data2.t<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
|
||||
data1.t = data1.t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span>imax<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
data1.x1 = data1.x1<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span>imax<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
data1.x2 = data1.x2<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span>imax<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
|
||||
data2.t = data2.t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span>imax<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
data2.x1 = data2.x1<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span>imax<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
data2.x2 = data2.x2<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span>imax<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7af64b7" class="outline-3">
|
||||
<h3 id="org7af64b7"><span class="section-number-3">1.3</span> Time domain Data</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
hold on;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>data1.t, data1.x1<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>data2.t, data2.x1<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
hold off;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
hold on;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>data1.t, data1.x2<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>data2.t, data2.x2<span class="org-rainbow-delimiters-depth-1">)</span>
|
||||
hold off;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga48afa8" class="outline-3">
|
||||
<h3 id="orga48afa8"><span class="section-number-3">1.4</span> ASD and Frequency domain data</h3>
|
||||
<div class="outline-text-3" id="text-1-4">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">dt = data1.t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-1">)</span> <span class="org-type">-</span> data1.t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Fs = <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span>dt;
|
||||
windows_psd = hanning<span class="org-rainbow-delimiters-depth-1">(</span>ceil<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">10</span><span class="org-type">/</span>dt<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>pxx1m, f<span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>data1.x1, windows_psd, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-rainbow-delimiters-depth-1">[</span>pxx1h, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>data1.x2, windows_psd, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
|
||||
<span class="org-rainbow-delimiters-depth-1">[</span>pxx2m, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>data2.x1, windows_psd, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-rainbow-delimiters-depth-1">[</span>pxx2h, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>data2.x2, windows_psd, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
hold on;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx1m<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx2m<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
hold off;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'yscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'PSD </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">m/s/sqrt</span><span class="org-string"><span class="org-rainbow-delimiters-depth-3">(</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-3">)</span></span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
hold on;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx1h<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx2h<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
hold off;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'yscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'PSD </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">m/s/sqrt</span><span class="org-string"><span class="org-rainbow-delimiters-depth-3">(</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-3">)</span></span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
hold on;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx2m<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx2h<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
hold off;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'yscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'PSD </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">m/s/sqrt</span><span class="org-string"><span class="org-rainbow-delimiters-depth-3">(</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-3">)</span></span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
hold on;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, cumtrapz<span class="org-rainbow-delimiters-depth-2">(</span>f, pxx1m<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, cumtrapz<span class="org-rainbow-delimiters-depth-2">(</span>f, pxx2m<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'XScale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'CAS </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">m</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Thomas Dehaeze</p>
|
||||
<p class="date">Created: 2019-05-02 jeu. 14:11</p>
|
||||
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
196
disturbance-measurement/index.org
Normal file
@ -0,0 +1,196 @@
|
||||
#+TITLE:Measurement of the sample vibrations when rotating the Spindle
|
||||
:DRAWER:
|
||||
#+STARTUP: overview
|
||||
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/zenburn.css"/>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="../js/jquery.min.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="../js/bootstrap.min.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="../js/jquery.stickytableheaders.min.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="../js/readtheorg.js"></script>
|
||||
|
||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||
#+PROPERTY: header-args:matlab+ :comments org
|
||||
#+PROPERTY: header-args:matlab+ :results output
|
||||
#+PROPERTY: header-args:matlab+ :exports both
|
||||
#+PROPERTY: header-args:matlab+ :eval no-export
|
||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||
:END:
|
||||
|
||||
* Experimental Setup
|
||||
|
||||
* Signal Processing
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
** Load Data
|
||||
Measurement =data_001.mat= corresponds to a measurement where the spindle is not turning and =data_002.mat= where the spindle is turning at 1rpm.
|
||||
=x1= is the signal coming from the geophone located on the marble and =x2= is the signal from the geophone located on the sample station.
|
||||
|
||||
#+begin_src matlab :results none
|
||||
data1 = load('mat/data_001.mat', 't', 'x1', 'x2');
|
||||
data2 = load('mat/data_002.mat', 't', 'x1', 'x2');
|
||||
#+end_src
|
||||
|
||||
** Time domain Data
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(data1.t, data1.x1);
|
||||
plot(data2.t, data2.x1);
|
||||
hold off;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(data1.t, data1.x2);
|
||||
plot(data2.t, data2.x2)
|
||||
hold off;
|
||||
#+end_src
|
||||
|
||||
** ASD and Frequency domain data
|
||||
#+begin_src matlab :results none
|
||||
dt = data1.t(2) - data1.t(1);
|
||||
Fs = 1/dt;
|
||||
|
||||
windows_psd = hanning(ceil(10*Fs));
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
[pxx1m, f] = pwelch(data1.x1, windows_psd, [], [], Fs); f(1) = []; pxx1m(1) = [];
|
||||
[pxx1h, ~] = pwelch(data1.x2, windows_psd, [], [], Fs); pxx1h(1) = [];
|
||||
|
||||
[pxx2m, ~] = pwelch(data2.x1, windows_psd, [], [], Fs); pxx2m(1) = [];
|
||||
[pxx2h, ~] = pwelch(data2.x2, windows_psd, [], [], Fs); pxx2h(1) = [];
|
||||
#+end_src
|
||||
|
||||
** Some plots
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(pxx1m));
|
||||
plot(f, sqrt(pxx2m));
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log');
|
||||
set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('PSD [m/s/sqrt(Hz)]')
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(pxx1h));
|
||||
plot(f, sqrt(pxx2h));
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log');
|
||||
set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('PSD [m/s/sqrt(Hz)]')
|
||||
#+end_src
|
||||
|
||||
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(pxx2m));
|
||||
plot(f, sqrt(pxx2h));
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log');
|
||||
set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('PSD [m/s/sqrt(Hz)]')
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, cumtrapz(f, pxx1m))
|
||||
plot(f, cumtrapz(f, pxx2m))
|
||||
set(gca, 'XScale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('CAS [m]')
|
||||
#+end_src
|
||||
|
||||
** Scaling to take into account the sensibility of the geophone and the voltage amplifier
|
||||
The Geophone used are L22. Their sensibility is shown on figure [[fig:geophone_sensibility]].
|
||||
|
||||
#+begin_src matlab :results none
|
||||
S0 = 88; % Sensitivity [V/(m/s)]
|
||||
f0 = 2; % Cut-off frequnecy [Hz]
|
||||
|
||||
S = S0*(s/2/pi/f0)/(1+s/2/pi/f0);
|
||||
#+end_src
|
||||
|
||||
We also take into account the gain of the electronics which is here set to be $60dB$.
|
||||
|
||||
#+begin_src matlab :results none
|
||||
G0_db = 60; % [dB]
|
||||
|
||||
G0 = 10^(60/G0_db); % [abs]
|
||||
#+end_src
|
||||
|
||||
We divide the ASD measured (in $\text{V}/\sqrt{\text{Hz}}$) by the gain of the voltage amplifier to obtain the ASD of the voltage across the geophone.
|
||||
We further divide the result by the sensibility of the Geophone to obtain the ASD of the velocity in $m/s/\sqrt{Hz}$.
|
||||
|
||||
#+begin_src matlab :results none
|
||||
scaling = 1./squeeze(abs(freqresp(G0*S, f, 'Hz'))); scaling(1) = 0;
|
||||
#+end_src
|
||||
|
||||
** Computation of the ASD of the velocity
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(pxx1h).*scaling);
|
||||
plot(f, sqrt(pxx2h).*scaling);
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log');
|
||||
set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('ASD of the measured Velocity $\left[\frac{m/s}{\sqrt{Hz}}\right]$')
|
||||
xlim([0.1, 500]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, (sqrt(pxx1).*scaling)./(2*pi*f));
|
||||
plot(f, (sqrt(pxx2).*scaling)./(2*pi*f));
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('ASD of the displacement $\left[\frac{m}{\sqrt{Hz}}\right]$')
|
||||
xlim([0.1, 500]);
|
||||
#+end_src
|
||||
|
||||
** RMS value of the difference between the two geophones
|
||||
We also compute the Power Spectral Density of the difference between the two geophones. This is done in order to estimate the relative displacement of the sample with respect to the granite.
|
||||
#+begin_src matlab :results none
|
||||
[pxxd1, ~] = pwelch(data1.x2-data1.x1, windows_psd, [], [], Fs); pxxd1(1) = [];
|
||||
[pxxd2, ~] = pwelch(data2.x2-data2.x1, windows_psd, [], [], Fs); pxxd2(1) = [];
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, (sqrt(pxxd1).*scaling)./(2*pi*f));
|
||||
plot(f, (sqrt(pxxd2).*scaling)./(2*pi*f));
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('ASD of the displacement $\left[\frac{m}{\sqrt{Hz}}\right]$')
|
||||
xlim([0.1, 500]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
psd_d1 = ((sqrt(pxxd1).*scaling)./(2*pi*f)).^2;
|
||||
psd_d2 = ((sqrt(pxxd2).*scaling)./(2*pi*f)).^2;
|
||||
|
||||
df = f(2) - f(1);
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(cumsum(df.*psd_d1, 'reverse')));
|
||||
plot(f, sqrt(cumsum(df.*psd_d2, 'reverse')));
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('CAS $\left[m\right]$')
|
||||
xlim([0.1, 500]);
|
||||
#+end_src
|
BIN
disturbance-measurement/mat/data_001.mat
Normal file
BIN
disturbance-measurement/mat/data_002.mat
Normal file
12
disturbance-measurement/readme.org
Normal file
@ -0,0 +1,12 @@
|
||||
#+TITLE:Measurement of the sample vibrations when rotating the Spindle
|
||||
|
||||
Measurement:
|
||||
- one geophone on the marble
|
||||
- one geophone at the sample position
|
||||
|
||||
Every stage is powered on.
|
||||
|
||||
| Data file | Description |
|
||||
|--------------+----------------------------|
|
||||
| data_001.mat | nothing is turning |
|
||||
| data_002.mat | spindle is turning at 1rpm |
|
53
disturbance-measurement/run_test.m
Normal file
@ -0,0 +1,53 @@
|
||||
%%
|
||||
Tsim = 100; % [s]
|
||||
|
||||
%%
|
||||
tg = slrt;
|
||||
|
||||
%% TODO - Build this application if updated
|
||||
|
||||
%%
|
||||
if tg.Connected == "Yes"
|
||||
if tg.Status == "running"
|
||||
disp('Target is Running, Stopping...');
|
||||
tg.stop;
|
||||
while tg.Status == "running"
|
||||
pause(1);
|
||||
end
|
||||
disp('Target is Stopped');
|
||||
end
|
||||
if tg.Status == "stopped"
|
||||
disp('Load the Application');
|
||||
tg.load('disturbance_measurement');
|
||||
|
||||
%% Run the application
|
||||
disp('Starting the Application');
|
||||
tg.start;
|
||||
pause(Tsim);
|
||||
tg.stop;
|
||||
end
|
||||
else
|
||||
error("The target computer is not connected");
|
||||
end
|
||||
|
||||
%%
|
||||
f = SimulinkRealTime.openFTP(tg);
|
||||
cd(f, 'data/disturbance_measurement/');
|
||||
mget(f, 'data_001.dat', 'data');
|
||||
close(f);
|
||||
|
||||
data = SimulinkRealTime.utils.getFileScopeData('data/data_001.dat').data;
|
||||
|
||||
%%
|
||||
n = 17;
|
||||
|
||||
while isfile(['mat/data_', num2str(n, '%03d'), '.mat'])
|
||||
disp('File exists.');
|
||||
if input(['Are you sure you want to override the file ', 'mat/data_', ...
|
||||
num2str(n, '%03d'), '.mat', ' ? [Y/n]']) == 'Y'
|
||||
break;
|
||||
end
|
||||
n = input('What should be the measurement number?');
|
||||
end
|
||||
|
||||
save(['mat/data_', num2str(n, '%03d'), '.mat'], 'data');
|
0
disturbance-measurement/setup.m
Normal file
BIN
equipment/documents/dlpva_datasheet.pdf
Normal file
311
equipment/equipment.html
Normal file
@ -0,0 +1,311 @@
|
||||
<?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>
|
||||
<!-- 2019-05-02 jeu. 15:17 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Equipment used to make the measurements</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Thomas Dehaeze" />
|
||||
<style type="text/css">
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
.title { text-align: center;
|
||||
margin-bottom: .2em; }
|
||||
.subtitle { text-align: center;
|
||||
font-size: medium;
|
||||
font-weight: bold;
|
||||
margin-top:0; }
|
||||
.todo { font-family: monospace; color: red; }
|
||||
.done { font-family: monospace; color: green; }
|
||||
.priority { font-family: monospace; color: orange; }
|
||||
.tag { background-color: #eee; font-family: monospace;
|
||||
padding: 2px; font-size: 80%; font-weight: normal; }
|
||||
.timestamp { color: #bebebe; }
|
||||
.timestamp-kwd { color: #5f9ea0; }
|
||||
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
|
||||
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
|
||||
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
|
||||
.underline { text-decoration: underline; }
|
||||
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
||||
p.verse { margin-left: 3%; }
|
||||
pre {
|
||||
border: 1px solid #ccc;
|
||||
box-shadow: 3px 3px 3px #eee;
|
||||
padding: 8pt;
|
||||
font-family: monospace;
|
||||
overflow: auto;
|
||||
margin: 1.2em;
|
||||
}
|
||||
pre.src {
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
padding-top: 1.2em;
|
||||
}
|
||||
pre.src:before {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: white;
|
||||
top: -10px;
|
||||
right: 10px;
|
||||
padding: 3px;
|
||||
border: 1px solid black;
|
||||
}
|
||||
pre.src:hover:before { display: inline;}
|
||||
/* Languages per Org manual */
|
||||
pre.src-asymptote:before { content: 'Asymptote'; }
|
||||
pre.src-awk:before { content: 'Awk'; }
|
||||
pre.src-C:before { content: 'C'; }
|
||||
/* pre.src-C++ doesn't work in CSS */
|
||||
pre.src-clojure:before { content: 'Clojure'; }
|
||||
pre.src-css:before { content: 'CSS'; }
|
||||
pre.src-D:before { content: 'D'; }
|
||||
pre.src-ditaa:before { content: 'ditaa'; }
|
||||
pre.src-dot:before { content: 'Graphviz'; }
|
||||
pre.src-calc:before { content: 'Emacs Calc'; }
|
||||
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
||||
pre.src-fortran:before { content: 'Fortran'; }
|
||||
pre.src-gnuplot:before { content: 'gnuplot'; }
|
||||
pre.src-haskell:before { content: 'Haskell'; }
|
||||
pre.src-hledger:before { content: 'hledger'; }
|
||||
pre.src-java:before { content: 'Java'; }
|
||||
pre.src-js:before { content: 'Javascript'; }
|
||||
pre.src-latex:before { content: 'LaTeX'; }
|
||||
pre.src-ledger:before { content: 'Ledger'; }
|
||||
pre.src-lisp:before { content: 'Lisp'; }
|
||||
pre.src-lilypond:before { content: 'Lilypond'; }
|
||||
pre.src-lua:before { content: 'Lua'; }
|
||||
pre.src-matlab:before { content: 'MATLAB'; }
|
||||
pre.src-mscgen:before { content: 'Mscgen'; }
|
||||
pre.src-ocaml:before { content: 'Objective Caml'; }
|
||||
pre.src-octave:before { content: 'Octave'; }
|
||||
pre.src-org:before { content: 'Org mode'; }
|
||||
pre.src-oz:before { content: 'OZ'; }
|
||||
pre.src-plantuml:before { content: 'Plantuml'; }
|
||||
pre.src-processing:before { content: 'Processing.js'; }
|
||||
pre.src-python:before { content: 'Python'; }
|
||||
pre.src-R:before { content: 'R'; }
|
||||
pre.src-ruby:before { content: 'Ruby'; }
|
||||
pre.src-sass:before { content: 'Sass'; }
|
||||
pre.src-scheme:before { content: 'Scheme'; }
|
||||
pre.src-screen:before { content: 'Gnu Screen'; }
|
||||
pre.src-sed:before { content: 'Sed'; }
|
||||
pre.src-sh:before { content: 'shell'; }
|
||||
pre.src-sql:before { content: 'SQL'; }
|
||||
pre.src-sqlite:before { content: 'SQLite'; }
|
||||
/* additional languages in org.el's org-babel-load-languages alist */
|
||||
pre.src-forth:before { content: 'Forth'; }
|
||||
pre.src-io:before { content: 'IO'; }
|
||||
pre.src-J:before { content: 'J'; }
|
||||
pre.src-makefile:before { content: 'Makefile'; }
|
||||
pre.src-maxima:before { content: 'Maxima'; }
|
||||
pre.src-perl:before { content: 'Perl'; }
|
||||
pre.src-picolisp:before { content: 'Pico Lisp'; }
|
||||
pre.src-scala:before { content: 'Scala'; }
|
||||
pre.src-shell:before { content: 'Shell Script'; }
|
||||
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
|
||||
/* additional language identifiers per "defun org-babel-execute"
|
||||
in ob-*.el */
|
||||
pre.src-cpp:before { content: 'C++'; }
|
||||
pre.src-abc:before { content: 'ABC'; }
|
||||
pre.src-coq:before { content: 'Coq'; }
|
||||
pre.src-groovy:before { content: 'Groovy'; }
|
||||
/* additional language identifiers from org-babel-shell-names in
|
||||
ob-shell.el: ob-shell is the only babel language using a lambda to put
|
||||
the execution function name together. */
|
||||
pre.src-bash:before { content: 'bash'; }
|
||||
pre.src-csh:before { content: 'csh'; }
|
||||
pre.src-ash:before { content: 'ash'; }
|
||||
pre.src-dash:before { content: 'dash'; }
|
||||
pre.src-ksh:before { content: 'ksh'; }
|
||||
pre.src-mksh:before { content: 'mksh'; }
|
||||
pre.src-posh:before { content: 'posh'; }
|
||||
/* Additional Emacs modes also supported by the LaTeX listings package */
|
||||
pre.src-ada:before { content: 'Ada'; }
|
||||
pre.src-asm:before { content: 'Assembler'; }
|
||||
pre.src-caml:before { content: 'Caml'; }
|
||||
pre.src-delphi:before { content: 'Delphi'; }
|
||||
pre.src-html:before { content: 'HTML'; }
|
||||
pre.src-idl:before { content: 'IDL'; }
|
||||
pre.src-mercury:before { content: 'Mercury'; }
|
||||
pre.src-metapost:before { content: 'MetaPost'; }
|
||||
pre.src-modula-2:before { content: 'Modula-2'; }
|
||||
pre.src-pascal:before { content: 'Pascal'; }
|
||||
pre.src-ps:before { content: 'PostScript'; }
|
||||
pre.src-prolog:before { content: 'Prolog'; }
|
||||
pre.src-simula:before { content: 'Simula'; }
|
||||
pre.src-tcl:before { content: 'tcl'; }
|
||||
pre.src-tex:before { content: 'TeX'; }
|
||||
pre.src-plain-tex:before { content: 'Plain TeX'; }
|
||||
pre.src-verilog:before { content: 'Verilog'; }
|
||||
pre.src-vhdl:before { content: 'VHDL'; }
|
||||
pre.src-xml:before { content: 'XML'; }
|
||||
pre.src-nxml:before { content: 'XML'; }
|
||||
/* add a generic configuration mode; LaTeX export needs an additional
|
||||
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
|
||||
pre.src-conf:before { content: 'Configuration File'; }
|
||||
|
||||
table { border-collapse:collapse; }
|
||||
caption.t-above { caption-side: top; }
|
||||
caption.t-bottom { caption-side: bottom; }
|
||||
td, th { vertical-align:top; }
|
||||
th.org-right { text-align: center; }
|
||||
th.org-left { text-align: center; }
|
||||
th.org-center { text-align: center; }
|
||||
td.org-right { text-align: right; }
|
||||
td.org-left { text-align: left; }
|
||||
td.org-center { text-align: center; }
|
||||
dt { font-weight: bold; }
|
||||
.footpara { display: inline; }
|
||||
.footdef { margin-bottom: 1em; }
|
||||
.figure { padding: 1em; }
|
||||
.figure p { text-align: center; }
|
||||
.equation-container {
|
||||
display: table;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
.equation {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.equation-label {
|
||||
display: table-cell;
|
||||
text-align: right;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.inlinetask {
|
||||
padding: 10px;
|
||||
border: 2px solid gray;
|
||||
margin: 10px;
|
||||
background: #ffffcc;
|
||||
}
|
||||
#org-div-home-and-up
|
||||
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
||||
textarea { overflow-x: auto; }
|
||||
.linenr { font-size: smaller }
|
||||
.code-highlighted { background-color: #ffff00; }
|
||||
.org-info-js_info-navigation { border-style: none; }
|
||||
#org-info-js_console-label
|
||||
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
||||
.org-info-js_search-highlight
|
||||
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
||||
.org-svg { width: 90%; }
|
||||
/*]]>*/-->
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
/*
|
||||
@licstart The following is the entire license notice for the
|
||||
JavaScript code in this tag.
|
||||
|
||||
Copyright (C) 2012-2019 Free Software Foundation, Inc.
|
||||
|
||||
The JavaScript code in this tag is free software: you can
|
||||
redistribute it and/or modify it under the terms of the GNU
|
||||
General Public License (GNU GPL) as published by the Free Software
|
||||
Foundation, either version 3 of the License, or (at your option)
|
||||
any later version. The code is distributed WITHOUT ANY WARRANTY;
|
||||
without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
|
||||
|
||||
As additional permission under GNU GPL version 3 section 7, you
|
||||
may distribute non-source (e.g., minimized or compacted) forms of
|
||||
that code without the copy of the GNU GPL normally required by
|
||||
section 4, provided you include this license notice and a URL
|
||||
through which recipients can access the Corresponding Source.
|
||||
|
||||
|
||||
@licend The above is the entire license notice
|
||||
for the JavaScript code in this tag.
|
||||
*/
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
function CodeHighlightOn(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(null != target) {
|
||||
elem.cacheClassElem = elem.className;
|
||||
elem.cacheClassTarget = target.className;
|
||||
target.className = "code-highlighted";
|
||||
elem.className = "code-highlighted";
|
||||
}
|
||||
}
|
||||
function CodeHighlightOff(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(elem.cacheClassElem)
|
||||
elem.className = elem.cacheClassElem;
|
||||
if(elem.cacheClassTarget)
|
||||
target.className = elem.cacheClassTarget;
|
||||
}
|
||||
/*]]>*///-->
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="content">
|
||||
<h1 class="title">Equipment used to make the measurements</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org2520b2b">1. Geophone</a></li>
|
||||
<li><a href="#org71c6afc">2. Speedgoat</a></li>
|
||||
<li><a href="#orgf2655b5">3. Voltage amplifier</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2520b2b" class="outline-2">
|
||||
<h2 id="org2520b2b"><span class="section-number-2">1</span> Geophone</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
L22
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org71c6afc" class="outline-2">
|
||||
<h2 id="org71c6afc"><span class="section-number-2">2</span> Speedgoat</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
ADC and DAC:
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf2655b5" class="outline-2">
|
||||
<h2 id="orgf2655b5"><span class="section-number-2">3</span> Voltage amplifier</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
|
||||
<div id="orgcd950e8" class="figure">
|
||||
<p><img src="./img/DLPVA_W_R2.jpg" alt="DLPVA_W_R2.jpg" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Picture of the voltage amplifier DLPVA</p>
|
||||
</div>
|
||||
|
||||
|
||||
<p>
|
||||
<b>Specifications</b>:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Switchable gain up to 100 dB (x 100,000)</li>
|
||||
<li>Bandwidth DC to 100 kHz</li>
|
||||
<li>DC-drift 0.6 µV/°C</li>
|
||||
<li>Input noise down to 0.4 nV/√Hz</li>
|
||||
<li>Switchable AC/DC-coupling</li>
|
||||
<li>Local and remote control</li>
|
||||
<li>Input impedance up to 1 TΩ</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
The documentation of the voltage amplifier is accessible <a href="https://www.femto.de/en/products/voltage-amplifiers/variable-gain-100-khz-dlpva.html">here</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Thomas Dehaeze</p>
|
||||
<p class="date">Created: 2019-05-02 jeu. 15:17</p>
|
||||
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
28
equipment/equipment.org
Normal file
@ -0,0 +1,28 @@
|
||||
#+TITLE: Equipment used to make the measurements
|
||||
|
||||
* Geophone
|
||||
L22
|
||||
|
||||
* Speedgoat
|
||||
ADC and DAC:
|
||||
|
||||
* Voltage amplifier
|
||||
|
||||
#+name: fig:voltage_amplifier
|
||||
#+caption: Picture of the voltage amplifier DLPVA
|
||||
#+attr_latex: :scale 1
|
||||
[[file:./img/DLPVA_W_R2.jpg]]
|
||||
|
||||
|
||||
*Specifications*:
|
||||
- Switchable gain up to 100 dB (x 100,000)
|
||||
- Bandwidth DC to 100 kHz
|
||||
- DC-drift 0.6 µV/°C
|
||||
- Input noise down to 0.4 nV/√Hz
|
||||
- Switchable AC/DC-coupling
|
||||
- Local and remote control
|
||||
- Input impedance up to 1 TΩ
|
||||
|
||||
The documentation of the voltage amplifier is accessible [[file:documents/dlpva_datasheet.pdf][here]].
|
||||
|
||||
The exact model is DLPVA-100-B-D
|
BIN
equipment/img/DLPVA_W_R2.jpg
Normal file
After Width: | Height: | Size: 36 KiB |
81
huddle-test-geophones/compare_axis.m
Normal file
@ -0,0 +1,81 @@
|
||||
% Matlab Init :noexport:ignore:
|
||||
|
||||
clear; close all; clc;
|
||||
|
||||
%% Intialize Laplace variable
|
||||
s = zpk('s');
|
||||
|
||||
%% Initialize ans with org-babel
|
||||
ans = 0;
|
||||
|
||||
% Load data
|
||||
% We first load the data for the three axis.
|
||||
|
||||
z = load('mat/data_001.mat', 't', 'x1', 'x2');
|
||||
east = load('mat/data_002.mat', 't', 'x1', 'x2');
|
||||
north = load('mat/data_003.mat', 't', 'x1', 'x2');
|
||||
|
||||
% Compare PSD
|
||||
% The PSD for each axis of the two geophones are computed.
|
||||
|
||||
[pz1, fz] = pwelch(z.x1, hanning(ceil(length(z.x1)/100)), [], [], 1/(z.t(2)-z.t(1)));
|
||||
[pz2, ~] = pwelch(z.x2, hanning(ceil(length(z.x2)/100)), [], [], 1/(z.t(2)-z.t(1)));
|
||||
|
||||
[pe1, fe] = pwelch(east.x1, hanning(ceil(length(east.x1)/100)), [], [], 1/(east.t(2)-east.t(1)));
|
||||
[pe2, ~] = pwelch(east.x2, hanning(ceil(length(east.x2)/100)), [], [], 1/(east.t(2)-east.t(1)));
|
||||
|
||||
[pn1, fn] = pwelch(north.x1, hanning(ceil(length(north.x1)/100)), [], [], 1/(north.t(2)-north.t(1)));
|
||||
[pn2, ~] = pwelch(north.x2, hanning(ceil(length(north.x2)/100)), [], [], 1/(north.t(2)-north.t(1)));
|
||||
|
||||
|
||||
|
||||
% We compare them. The result is shown on figure [[fig:compare_axis_psd]].
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(fz, sqrt(pz1), '-', 'Color', [0 0.4470 0.7410], 'DisplayName', 'z');
|
||||
plot(fz, sqrt(pz2), '--', 'Color', [0 0.4470 0.7410], 'HandleVisibility', 'off');
|
||||
plot(fe, sqrt(pe1), '-', 'Color', [0.8500 0.3250 0.0980], 'DisplayName', 'east');
|
||||
plot(fe, sqrt(pe2), '--', 'Color', [0.8500 0.3250 0.0980], 'HandleVisibility', 'off');
|
||||
plot(fn, sqrt(pn1), '-', 'Color', [0.9290 0.6940 0.1250], 'DisplayName', 'north');
|
||||
plot(fn, sqrt(pn2), '--', 'Color', [0.9290 0.6940 0.1250], 'HandleVisibility', 'off');
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('PSD [m/s/sqrt(Hz)]');
|
||||
legend('Location', 'northeast');
|
||||
xlim([0, 500]);
|
||||
|
||||
% Compare TF
|
||||
% The transfer functions from one geophone to the other are also computed for each axis.
|
||||
% The result is shown on figure [[fig:compare_tf_axis]].
|
||||
|
||||
|
||||
[Tz, fz] = tfestimate(z.x1, z.x2, hanning(ceil(length(z.x1)/100)), [], [], 1/(z.t(2)-z.t(1)));
|
||||
[Te, fe] = tfestimate(east.x1, east.x2, hanning(ceil(length(east.x1)/100)), [], [], 1/(east.t(2)-east.t(1)));
|
||||
[Tn, fn] = tfestimate(north.x1, north.x2, hanning(ceil(length(north.x1)/100)), [], [], 1/(north.t(2)-north.t(1)));
|
||||
|
||||
figure;
|
||||
ax1 = subplot(2, 1, 1);
|
||||
hold on;
|
||||
plot(fz, abs(Tz), 'DisplayName', 'z');
|
||||
plot(fe, abs(Te), 'DisplayName', 'east');
|
||||
plot(fn, abs(Tn), 'DisplayName', 'north');
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
set(gca, 'XTickLabel',[]);
|
||||
ylabel('Magnitude');
|
||||
legend('Location', 'southwest');
|
||||
|
||||
ax2 = subplot(2, 1, 2);
|
||||
hold on;
|
||||
plot(fz, mod(180+180/pi*phase(Tz), 360)-180);
|
||||
plot(fe, mod(180+180/pi*phase(Te), 360)-180);
|
||||
plot(fn, mod(180+180/pi*phase(Tn), 360)-180);
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log');
|
||||
ylim([-180, 180]);
|
||||
yticks([-180, -90, 0, 90, 180]);
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([1, 500]);
|
3
huddle-test-geophones/figs/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
*.svg
|
||||
*.pdf
|
||||
*.tex
|
BIN
huddle-test-geophones/figs/asd_displacement.png
Normal file
After Width: | Height: | Size: 142 KiB |
BIN
huddle-test-geophones/figs/asd_voltage.png
Normal file
After Width: | Height: | Size: 134 KiB |
BIN
huddle-test-geophones/figs/coh_geophones.png
Normal file
After Width: | Height: | Size: 55 KiB |
BIN
huddle-test-geophones/figs/comp_coherence_formula.png
Normal file
After Width: | Height: | Size: 65 KiB |
BIN
huddle-test-geophones/figs/compare_axis_psd.png
Normal file
After Width: | Height: | Size: 180 KiB |
BIN
huddle-test-geophones/figs/compare_tf_axis.png
Normal file
After Width: | Height: | Size: 142 KiB |
BIN
huddle-test-geophones/figs/data_time_domain.png
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
huddle-test-geophones/figs/data_time_domain_zoom.png
Normal file
After Width: | Height: | Size: 47 KiB |
BIN
huddle-test-geophones/figs/geophone_sensibility.png
Normal file
After Width: | Height: | Size: 55 KiB |
BIN
huddle-test-geophones/figs/geophones.jpg
Normal file
After Width: | Height: | Size: 3.7 MiB |
BIN
huddle-test-geophones/figs/huddle-test.png
Normal file
After Width: | Height: | Size: 8.3 KiB |
BIN
huddle-test-geophones/figs/huddle_test_results.png
Normal file
After Width: | Height: | Size: 142 KiB |
BIN
huddle-test-geophones/figs/intrumental_noise_V.png
Normal file
After Width: | Height: | Size: 169 KiB |
BIN
huddle-test-geophones/figs/intrumental_noise_velocity.png
Normal file
After Width: | Height: | Size: 153 KiB |
BIN
huddle-test-geophones/figs/psd_velocity.png
Normal file
After Width: | Height: | Size: 136 KiB |
BIN
huddle-test-geophones/figs/setup.jpg
Normal file
After Width: | Height: | Size: 3.8 MiB |
BIN
huddle-test-geophones/figs/tf_geophones.png
Normal file
After Width: | Height: | Size: 99 KiB |
BIN
huddle-test-geophones/huddle_test.slx
Normal file
873
huddle-test-geophones/index.html
Normal file
@ -0,0 +1,873 @@
|
||||
<?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>
|
||||
<!-- 2019-05-03 ven. 11:32 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Huddle Test of the L22 Geophones</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Thomas Dehaeze" />
|
||||
<style type="text/css">
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
.title { text-align: center;
|
||||
margin-bottom: .2em; }
|
||||
.subtitle { text-align: center;
|
||||
font-size: medium;
|
||||
font-weight: bold;
|
||||
margin-top:0; }
|
||||
.todo { font-family: monospace; color: red; }
|
||||
.done { font-family: monospace; color: green; }
|
||||
.priority { font-family: monospace; color: orange; }
|
||||
.tag { background-color: #eee; font-family: monospace;
|
||||
padding: 2px; font-size: 80%; font-weight: normal; }
|
||||
.timestamp { color: #bebebe; }
|
||||
.timestamp-kwd { color: #5f9ea0; }
|
||||
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
|
||||
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
|
||||
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
|
||||
.underline { text-decoration: underline; }
|
||||
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
||||
p.verse { margin-left: 3%; }
|
||||
pre {
|
||||
border: 1px solid #ccc;
|
||||
box-shadow: 3px 3px 3px #eee;
|
||||
padding: 8pt;
|
||||
font-family: monospace;
|
||||
overflow: auto;
|
||||
margin: 1.2em;
|
||||
}
|
||||
pre.src {
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
padding-top: 1.2em;
|
||||
}
|
||||
pre.src:before {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: white;
|
||||
top: -10px;
|
||||
right: 10px;
|
||||
padding: 3px;
|
||||
border: 1px solid black;
|
||||
}
|
||||
pre.src:hover:before { display: inline;}
|
||||
/* Languages per Org manual */
|
||||
pre.src-asymptote:before { content: 'Asymptote'; }
|
||||
pre.src-awk:before { content: 'Awk'; }
|
||||
pre.src-C:before { content: 'C'; }
|
||||
/* pre.src-C++ doesn't work in CSS */
|
||||
pre.src-clojure:before { content: 'Clojure'; }
|
||||
pre.src-css:before { content: 'CSS'; }
|
||||
pre.src-D:before { content: 'D'; }
|
||||
pre.src-ditaa:before { content: 'ditaa'; }
|
||||
pre.src-dot:before { content: 'Graphviz'; }
|
||||
pre.src-calc:before { content: 'Emacs Calc'; }
|
||||
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
||||
pre.src-fortran:before { content: 'Fortran'; }
|
||||
pre.src-gnuplot:before { content: 'gnuplot'; }
|
||||
pre.src-haskell:before { content: 'Haskell'; }
|
||||
pre.src-hledger:before { content: 'hledger'; }
|
||||
pre.src-java:before { content: 'Java'; }
|
||||
pre.src-js:before { content: 'Javascript'; }
|
||||
pre.src-latex:before { content: 'LaTeX'; }
|
||||
pre.src-ledger:before { content: 'Ledger'; }
|
||||
pre.src-lisp:before { content: 'Lisp'; }
|
||||
pre.src-lilypond:before { content: 'Lilypond'; }
|
||||
pre.src-lua:before { content: 'Lua'; }
|
||||
pre.src-matlab:before { content: 'MATLAB'; }
|
||||
pre.src-mscgen:before { content: 'Mscgen'; }
|
||||
pre.src-ocaml:before { content: 'Objective Caml'; }
|
||||
pre.src-octave:before { content: 'Octave'; }
|
||||
pre.src-org:before { content: 'Org mode'; }
|
||||
pre.src-oz:before { content: 'OZ'; }
|
||||
pre.src-plantuml:before { content: 'Plantuml'; }
|
||||
pre.src-processing:before { content: 'Processing.js'; }
|
||||
pre.src-python:before { content: 'Python'; }
|
||||
pre.src-R:before { content: 'R'; }
|
||||
pre.src-ruby:before { content: 'Ruby'; }
|
||||
pre.src-sass:before { content: 'Sass'; }
|
||||
pre.src-scheme:before { content: 'Scheme'; }
|
||||
pre.src-screen:before { content: 'Gnu Screen'; }
|
||||
pre.src-sed:before { content: 'Sed'; }
|
||||
pre.src-sh:before { content: 'shell'; }
|
||||
pre.src-sql:before { content: 'SQL'; }
|
||||
pre.src-sqlite:before { content: 'SQLite'; }
|
||||
/* additional languages in org.el's org-babel-load-languages alist */
|
||||
pre.src-forth:before { content: 'Forth'; }
|
||||
pre.src-io:before { content: 'IO'; }
|
||||
pre.src-J:before { content: 'J'; }
|
||||
pre.src-makefile:before { content: 'Makefile'; }
|
||||
pre.src-maxima:before { content: 'Maxima'; }
|
||||
pre.src-perl:before { content: 'Perl'; }
|
||||
pre.src-picolisp:before { content: 'Pico Lisp'; }
|
||||
pre.src-scala:before { content: 'Scala'; }
|
||||
pre.src-shell:before { content: 'Shell Script'; }
|
||||
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
|
||||
/* additional language identifiers per "defun org-babel-execute"
|
||||
in ob-*.el */
|
||||
pre.src-cpp:before { content: 'C++'; }
|
||||
pre.src-abc:before { content: 'ABC'; }
|
||||
pre.src-coq:before { content: 'Coq'; }
|
||||
pre.src-groovy:before { content: 'Groovy'; }
|
||||
/* additional language identifiers from org-babel-shell-names in
|
||||
ob-shell.el: ob-shell is the only babel language using a lambda to put
|
||||
the execution function name together. */
|
||||
pre.src-bash:before { content: 'bash'; }
|
||||
pre.src-csh:before { content: 'csh'; }
|
||||
pre.src-ash:before { content: 'ash'; }
|
||||
pre.src-dash:before { content: 'dash'; }
|
||||
pre.src-ksh:before { content: 'ksh'; }
|
||||
pre.src-mksh:before { content: 'mksh'; }
|
||||
pre.src-posh:before { content: 'posh'; }
|
||||
/* Additional Emacs modes also supported by the LaTeX listings package */
|
||||
pre.src-ada:before { content: 'Ada'; }
|
||||
pre.src-asm:before { content: 'Assembler'; }
|
||||
pre.src-caml:before { content: 'Caml'; }
|
||||
pre.src-delphi:before { content: 'Delphi'; }
|
||||
pre.src-html:before { content: 'HTML'; }
|
||||
pre.src-idl:before { content: 'IDL'; }
|
||||
pre.src-mercury:before { content: 'Mercury'; }
|
||||
pre.src-metapost:before { content: 'MetaPost'; }
|
||||
pre.src-modula-2:before { content: 'Modula-2'; }
|
||||
pre.src-pascal:before { content: 'Pascal'; }
|
||||
pre.src-ps:before { content: 'PostScript'; }
|
||||
pre.src-prolog:before { content: 'Prolog'; }
|
||||
pre.src-simula:before { content: 'Simula'; }
|
||||
pre.src-tcl:before { content: 'tcl'; }
|
||||
pre.src-tex:before { content: 'TeX'; }
|
||||
pre.src-plain-tex:before { content: 'Plain TeX'; }
|
||||
pre.src-verilog:before { content: 'Verilog'; }
|
||||
pre.src-vhdl:before { content: 'VHDL'; }
|
||||
pre.src-xml:before { content: 'XML'; }
|
||||
pre.src-nxml:before { content: 'XML'; }
|
||||
/* add a generic configuration mode; LaTeX export needs an additional
|
||||
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
|
||||
pre.src-conf:before { content: 'Configuration File'; }
|
||||
|
||||
table { border-collapse:collapse; }
|
||||
caption.t-above { caption-side: top; }
|
||||
caption.t-bottom { caption-side: bottom; }
|
||||
td, th { vertical-align:top; }
|
||||
th.org-right { text-align: center; }
|
||||
th.org-left { text-align: center; }
|
||||
th.org-center { text-align: center; }
|
||||
td.org-right { text-align: right; }
|
||||
td.org-left { text-align: left; }
|
||||
td.org-center { text-align: center; }
|
||||
dt { font-weight: bold; }
|
||||
.footpara { display: inline; }
|
||||
.footdef { margin-bottom: 1em; }
|
||||
.figure { padding: 1em; }
|
||||
.figure p { text-align: center; }
|
||||
.equation-container {
|
||||
display: table;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
.equation {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.equation-label {
|
||||
display: table-cell;
|
||||
text-align: right;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.inlinetask {
|
||||
padding: 10px;
|
||||
border: 2px solid gray;
|
||||
margin: 10px;
|
||||
background: #ffffcc;
|
||||
}
|
||||
#org-div-home-and-up
|
||||
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
||||
textarea { overflow-x: auto; }
|
||||
.linenr { font-size: smaller }
|
||||
.code-highlighted { background-color: #ffff00; }
|
||||
.org-info-js_info-navigation { border-style: none; }
|
||||
#org-info-js_console-label
|
||||
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
||||
.org-info-js_search-highlight
|
||||
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
||||
.org-svg { width: 90%; }
|
||||
/*]]>*/-->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../css/zenburn.css"/>
|
||||
<script type="text/javascript" src="../js/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="../js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript" src="../js/jquery.stickytableheaders.min.js"></script>
|
||||
<script type="text/javascript" src="../js/readtheorg.js"></script>
|
||||
<script type="text/javascript">
|
||||
/*
|
||||
@licstart The following is the entire license notice for the
|
||||
JavaScript code in this tag.
|
||||
|
||||
Copyright (C) 2012-2019 Free Software Foundation, Inc.
|
||||
|
||||
The JavaScript code in this tag is free software: you can
|
||||
redistribute it and/or modify it under the terms of the GNU
|
||||
General Public License (GNU GPL) as published by the Free Software
|
||||
Foundation, either version 3 of the License, or (at your option)
|
||||
any later version. The code is distributed WITHOUT ANY WARRANTY;
|
||||
without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
|
||||
|
||||
As additional permission under GNU GPL version 3 section 7, you
|
||||
may distribute non-source (e.g., minimized or compacted) forms of
|
||||
that code without the copy of the GNU GPL normally required by
|
||||
section 4, provided you include this license notice and a URL
|
||||
through which recipients can access the Corresponding Source.
|
||||
|
||||
|
||||
@licend The above is the entire license notice
|
||||
for the JavaScript code in this tag.
|
||||
*/
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
function CodeHighlightOn(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(null != target) {
|
||||
elem.cacheClassElem = elem.className;
|
||||
elem.cacheClassTarget = target.className;
|
||||
target.className = "code-highlighted";
|
||||
elem.className = "code-highlighted";
|
||||
}
|
||||
}
|
||||
function CodeHighlightOff(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(elem.cacheClassElem)
|
||||
elem.className = elem.cacheClassElem;
|
||||
if(elem.cacheClassTarget)
|
||||
target.className = elem.cacheClassTarget;
|
||||
}
|
||||
/*]]>*///-->
|
||||
</script>
|
||||
<script type="text/x-mathjax-config">
|
||||
MathJax.Hub.Config({
|
||||
displayAlign: "center",
|
||||
displayIndent: "0em",
|
||||
|
||||
"HTML-CSS": { scale: 100,
|
||||
linebreaks: { automatic: "false" },
|
||||
webFont: "TeX"
|
||||
},
|
||||
SVG: {scale: 100,
|
||||
linebreaks: { automatic: "false" },
|
||||
font: "TeX"},
|
||||
NativeMML: {scale: 100},
|
||||
TeX: { equationNumbers: {autoNumber: "AMS"},
|
||||
MultLineWidth: "85%",
|
||||
TagSide: "right",
|
||||
TagIndent: ".8em"
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript"
|
||||
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="content">
|
||||
<h1 class="title">Huddle Test of the L22 Geophones</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org446511b">1. Experimental Setup</a></li>
|
||||
<li><a href="#org0689ed7">2. Signal Processing</a>
|
||||
<ul>
|
||||
<li><a href="#org34a2d4c">2.1. Load data</a></li>
|
||||
<li><a href="#org28e8648">2.2. Time Domain Data</a></li>
|
||||
<li><a href="#org910f3e4">2.3. Computation of the ASD of the measured voltage</a></li>
|
||||
<li><a href="#org4e984e1">2.4. Scaling to take into account the sensibility of the geophone and the voltage amplifier</a></li>
|
||||
<li><a href="#org607752b">2.5. Computation of the ASD of the velocity</a></li>
|
||||
<li><a href="#org0a07c74">2.6. Transfer function between the two geophones</a></li>
|
||||
<li><a href="#orgdc03acb">2.7. Estimation of the sensor noise</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org58e6c46">3. Compare axis</a>
|
||||
<ul>
|
||||
<li><a href="#org8f74945">3.1. Load data</a></li>
|
||||
<li><a href="#orgf13f88e">3.2. Compare PSD</a></li>
|
||||
<li><a href="#orgf389e18">3.3. Compare TF</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org1ca0f74">4. Appendix</a>
|
||||
<ul>
|
||||
<li><a href="#org9faefb2">4.1. Computation of coherence from PSD and CSD</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org446511b" class="outline-2">
|
||||
<h2 id="org446511b"><span class="section-number-2">1</span> Experimental Setup</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
Two L22 geophones are used.
|
||||
They are placed on the ID31 granite.
|
||||
They are leveled.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The signals are amplified using voltage amplifier with a gain of 60dB.
|
||||
The voltage amplifiers include a low pass filter with a cut-off frequency at 1kHz.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgeab8098" class="figure">
|
||||
<p><img src="./figs/setup.jpg" alt="setup.jpg" width="500px" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Setup</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgdadbe53" class="figure">
|
||||
<p><img src="./figs/geophones.jpg" alt="geophones.jpg" width="500px" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Geophones</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0689ed7" class="outline-2">
|
||||
<h2 id="org0689ed7"><span class="section-number-2">2</span> Signal Processing</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
The Matlab computing file for this part is accessible <a href="signal_processing.m">here</a>.
|
||||
The <code>mat</code> file containing the measurement data is accessible <a href="mat/data_001.mat">here</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org34a2d4c" class="outline-3">
|
||||
<h3 id="org34a2d4c"><span class="section-number-3">2.1</span> Load data</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<p>
|
||||
We load the data of the z axis of two geophones.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_001.mat', 't', 'x1', 'x2'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
dt = t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-1">)</span> <span class="org-type">-</span> t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org28e8648" class="outline-3">
|
||||
<h3 id="org28e8648"><span class="section-number-3">2.2</span> Time Domain Data</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
hold on;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>t, x1<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>t, x2<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
hold off;
|
||||
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Time </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">s</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
ylabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Voltage </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">V</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span>t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span>, t<span class="org-rainbow-delimiters-depth-3">(</span>end<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgbc90092" class="figure">
|
||||
<p><img src="figs/data_time_domain.png" alt="data_time_domain.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Time domain Data</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
hold on;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>t, x1<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>t, x2<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
hold off;
|
||||
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Time </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">s</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
ylabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Voltage </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">V</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">0</span> <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgbb22470" class="figure">
|
||||
<p><img src="figs/data_time_domain_zoom.png" alt="data_time_domain_zoom.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Time domain Data - Zoom</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org910f3e4" class="outline-3">
|
||||
<h3 id="org910f3e4"><span class="section-number-3">2.3</span> Computation of the ASD of the measured voltage</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<p>
|
||||
We first define the parameters for the frequency domain analysis.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Fs = <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span>dt; <span class="org-comment">% [Hz]</span>
|
||||
|
||||
win = hanning<span class="org-rainbow-delimiters-depth-1">(</span>ceil<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">10</span><span class="org-type">*</span>Fs<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Then we compute the Power Spectral Density using <code>pwelch</code> function.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>pxx1, f<span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>x1, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-rainbow-delimiters-depth-1">[</span>pxx2, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>x2, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
And we plot the result on figure <a href="#orgbf77081">5</a>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
hold on;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx1<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx2<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
hold off;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'yscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'</span>ASD of the measured Voltage $<span class="org-type">\</span>left<span class="org-rainbow-delimiters-depth-2">[</span><span class="org-type">\</span>frac<span class="org-rainbow-delimiters-depth-3">{</span>V<span class="org-rainbow-delimiters-depth-3">}{</span><span class="org-type">\</span>sqrt<span class="org-rainbow-delimiters-depth-4">{</span>Hz<span class="org-rainbow-delimiters-depth-4">}</span><span class="org-rainbow-delimiters-depth-3">}</span><span class="org-type">\</span>right<span class="org-rainbow-delimiters-depth-2">]</span>$'<span class="org-rainbow-delimiters-depth-1">)</span>
|
||||
xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">500</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgbf77081" class="figure">
|
||||
<p><img src="figs/asd_voltage.png" alt="asd_voltage.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Amplitude Spectral Density of the measured voltage</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4e984e1" class="outline-3">
|
||||
<h3 id="org4e984e1"><span class="section-number-3">2.4</span> Scaling to take into account the sensibility of the geophone and the voltage amplifier</h3>
|
||||
<div class="outline-text-3" id="text-2-4">
|
||||
<p>
|
||||
The Geophone used are L22. Their sensibility is shown on figure <a href="#org0a867d9">6</a>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">S0 = <span class="org-highlight-numbers-number">88</span>; <span class="org-comment">% Sensitivity [V/(m/s)]</span>
|
||||
f0 = <span class="org-highlight-numbers-number">2</span>; <span class="org-comment">% Cut-off frequnecy [Hz]</span>
|
||||
|
||||
S = S0<span class="org-type">*</span><span class="org-rainbow-delimiters-depth-1">(</span>s<span class="org-type">/</span><span class="org-highlight-numbers-number">2</span><span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">/</span>f0<span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">+</span>s<span class="org-type">/</span><span class="org-highlight-numbers-number">2</span><span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">/</span>f0<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org0a867d9" class="figure">
|
||||
<p><img src="figs/geophone_sensibility.png" alt="geophone_sensibility.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Sensibility of the Geophone</p>
|
||||
</div>
|
||||
|
||||
|
||||
<p>
|
||||
We also take into account the gain of the electronics which is here set to be \(60dB\).
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">G0_db = <span class="org-highlight-numbers-number">60</span>; <span class="org-comment">% [dB]</span>
|
||||
|
||||
G0 = <span class="org-highlight-numbers-number">10</span><span class="org-type">^</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">60</span><span class="org-type">/</span>G0_db<span class="org-rainbow-delimiters-depth-1">)</span>; <span class="org-comment">% [abs]</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We divide the ASD measured (in \(\text{V}/\sqrt{\text{Hz}}\)) by the gain of the voltage amplifier to obtain the ASD of the voltage across the geophone.
|
||||
We further divide the result by the sensibility of the Geophone to obtain the ASD of the velocity in \(m/s/\sqrt{Hz}\).
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">scaling = <span class="org-highlight-numbers-number">1</span><span class="org-type">./</span>squeeze<span class="org-rainbow-delimiters-depth-1">(</span>abs<span class="org-rainbow-delimiters-depth-2">(</span>freqresp<span class="org-rainbow-delimiters-depth-3">(</span>G0<span class="org-type">*</span>S, f, <span class="org-string">'Hz'</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org607752b" class="outline-3">
|
||||
<h3 id="org607752b"><span class="section-number-3">2.5</span> Computation of the ASD of the velocity</h3>
|
||||
<div class="outline-text-3" id="text-2-5">
|
||||
<p>
|
||||
The ASD of the measured velocity is shown on figure <a href="#orgd9a4009">7</a>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
hold on;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx1<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">.*</span>scaling<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx2<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">.*</span>scaling<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
hold off;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'yscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'</span>ASD of the measured Velocity $<span class="org-type">\</span>left<span class="org-rainbow-delimiters-depth-2">[</span><span class="org-type">\</span>frac<span class="org-rainbow-delimiters-depth-3">{</span>m<span class="org-type">/</span>s<span class="org-rainbow-delimiters-depth-3">}{</span><span class="org-type">\</span>sqrt<span class="org-rainbow-delimiters-depth-4">{</span>Hz<span class="org-rainbow-delimiters-depth-4">}</span><span class="org-rainbow-delimiters-depth-3">}</span><span class="org-type">\</span>right<span class="org-rainbow-delimiters-depth-2">]</span>$'<span class="org-rainbow-delimiters-depth-1">)</span>
|
||||
xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">500</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgd9a4009" class="figure">
|
||||
<p><img src="figs/psd_velocity.png" alt="psd_velocity.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Amplitude Spectral Density of the Velocity</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We also plot the ASD in displacement (figure <a href="#orgc0b2ca5">8</a>);
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
hold on;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, <span class="org-rainbow-delimiters-depth-2">(</span>sqrt<span class="org-rainbow-delimiters-depth-3">(</span>pxx1<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">.*</span>scaling<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span><span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">2</span><span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>f<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, <span class="org-rainbow-delimiters-depth-2">(</span>sqrt<span class="org-rainbow-delimiters-depth-3">(</span>pxx2<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">.*</span>scaling<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span><span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">2</span><span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>f<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
hold off;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; set</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">gca, 'yscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'</span>ASD of the displacement $<span class="org-type">\</span>left<span class="org-rainbow-delimiters-depth-2">[</span><span class="org-type">\</span>frac<span class="org-rainbow-delimiters-depth-3">{</span>m<span class="org-rainbow-delimiters-depth-3">}{</span><span class="org-type">\</span>sqrt<span class="org-rainbow-delimiters-depth-4">{</span>Hz<span class="org-rainbow-delimiters-depth-4">}</span><span class="org-rainbow-delimiters-depth-3">}</span><span class="org-type">\</span>right<span class="org-rainbow-delimiters-depth-2">]</span>$'<span class="org-rainbow-delimiters-depth-1">)</span>
|
||||
xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">500</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgc0b2ca5" class="figure">
|
||||
<p><img src="figs/asd_displacement.png" alt="asd_displacement.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Amplitude Spectral Density of the Displacement</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0a07c74" class="outline-3">
|
||||
<h3 id="org0a07c74"><span class="section-number-3">2.6</span> Transfer function between the two geophones</h3>
|
||||
<div class="outline-text-3" id="text-2-6">
|
||||
<p>
|
||||
We here compute the transfer function from one geophone to the other.
|
||||
The result is shown on figure <a href="#org7d8ea2b">9</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We also compute the coherence between the two signals (figure <a href="#org628544f">10</a>).
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>T12, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = tfestimate<span class="org-rainbow-delimiters-depth-1">(</span>x1, x2, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org7d8ea2b" class="figure">
|
||||
<p><img src="figs/tf_geophones.png" alt="tf_geophones.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Estimated transfer function between the two geophones</p>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>coh12, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = mscohere<span class="org-rainbow-delimiters-depth-1">(</span>x1, x2, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org628544f" class="figure">
|
||||
<p><img src="figs/coh_geophones.png" alt="coh_geophones.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Cohererence between the signals of the two geophones</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdc03acb" class="outline-3">
|
||||
<h3 id="orgdc03acb"><span class="section-number-3">2.7</span> Estimation of the sensor noise</h3>
|
||||
<div class="outline-text-3" id="text-2-7">
|
||||
<p>
|
||||
The technique to estimate the sensor noise is taken from <a class='org-ref-reference' href="#barzilai98_techn_measur_noise_sensor_presen">barzilai98_techn_measur_noise_sensor_presen</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The coherence between signals \(X\) and \(Y\) is defined as follow
|
||||
\[ \gamma^2_{XY}(\omega) = \frac{|G_{XY}(\omega)|^2}{|G_{X}(\omega)| |G_{Y}(\omega)|} \]
|
||||
where \(|G_X(\omega)|\) is the output Power Spectral Density (PSD) of signal \(X\) and \(|G_{XY}(\omega)|\) is the Cross Spectral Density (CSD) of signal \(X\) and \(Y\).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The PSD and CSD are defined as follow:
|
||||
</p>
|
||||
\begin{align}
|
||||
|G_X(\omega)| &= \frac{2}{n_d T} \sum^{n_d}_{n=1} \left| X_k(\omega, T) \right|^2 \\
|
||||
|G_{XY}(\omega)| &= \frac{2}{n_d T} \sum^{n_d}_{n=1} [ X_k^*(\omega, T) ] [ Y_k(\omega, T) ]
|
||||
\end{align}
|
||||
<p>
|
||||
where:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>\(n_d\) is the number for records averaged</li>
|
||||
<li>\(T\) is the length of each record</li>
|
||||
<li>\(X_k(\omega, T)\) is the finite Fourier transform of the kth record</li>
|
||||
<li>\(X_k^*(\omega, T)\) is its complex conjugate</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
The <code>mscohere</code> function is compared with this formula on Appendix (section <a href="#orgc9ed210">4.1</a>), it is shown that it is identical.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Figure <a href="#org9b31b02">11</a> illustrate a block diagram model of the system used to determine the sensor noise of the geophone.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Two geophones are mounted side by side to ensure that they are exposed by the same motion input \(U\).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Each sensor has noise \(N\) and \(M\).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org9b31b02" class="figure">
|
||||
<p><img src="figs/huddle-test.png" alt="huddle-test.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 11: </span>Huddle test block diagram</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We here assume that each sensor has the same magnitude of instrumental noise (\(N = M\)).
|
||||
We also assume that \(S_1 = S_2 = 1\).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We then obtain:
|
||||
</p>
|
||||
\begin{equation}
|
||||
\label{orgf197c52}
|
||||
\gamma_{XY}^2(\omega) = \frac{1}{1 + 2 \left( \frac{|G_N(\omega)|}{|G_U(\omega)|} \right) + \left( \frac{|G_N(\omega)|}{|G_U(\omega)|} \right)^2}
|
||||
\end{equation}
|
||||
|
||||
<p>
|
||||
Since the input signal \(U\) and the instrumental noise \(N\) are incoherent:
|
||||
</p>
|
||||
\begin{equation}
|
||||
\label{org845ba9b}
|
||||
|G_X(\omega)| = |G_N(\omega)| + |G_U(\omega)|
|
||||
\end{equation}
|
||||
|
||||
<p>
|
||||
From equations \eqref{orgf197c52} and \eqref{org845ba9b}, we finally obtain
|
||||
</p>
|
||||
<div class="important">
|
||||
\begin{equation}
|
||||
\label{org0941f4e}
|
||||
|G_N(\omega)| = |G_X(\omega)| \left( 1 - \sqrt{\gamma_{XY}^2(\omega)} \right)
|
||||
\end{equation}
|
||||
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The instrumental noise is computed below. The result in V<sup>2</sup>/Hz is shown on figure <a href="#orged7b0f2">12</a>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">pxxN = pxx1<span class="org-type">.*</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span> <span class="org-type">-</span> coh12<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
hold on;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, pxx1, <span class="org-string">'-'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, pxx2, <span class="org-string">'-'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, pxxN, <span class="org-string">'k--'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
hold off;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; set</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">gca, 'yscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'</span>PSD of the measured Voltage $<span class="org-type">\</span>left<span class="org-rainbow-delimiters-depth-2">[</span><span class="org-type">\</span>frac<span class="org-rainbow-delimiters-depth-3">{</span>V<span class="org-type">^</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">}{</span>Hz<span class="org-rainbow-delimiters-depth-3">}</span><span class="org-type">\</span>right<span class="org-rainbow-delimiters-depth-2">]</span>$'<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">500</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orged7b0f2" class="figure">
|
||||
<p><img src="figs/intrumental_noise_V.png" alt="intrumental_noise_V.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 12: </span>Instrumental Noise and Measurement in \(V^2/Hz\)</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
This is then further converted into velocity and compared with the ground velocity measurement. (figure <a href="#org3b9b556">13</a>)
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
hold on;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx1<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">.*</span>scaling, <span class="org-string">'-'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx2<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">.*</span>scaling, <span class="org-string">'-'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxxN<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">.*</span>scaling, <span class="org-string">'k--'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
hold off;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; set</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">gca, 'yscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'</span>ASD of the Velocity $<span class="org-type">\</span>left<span class="org-rainbow-delimiters-depth-2">[</span><span class="org-type">\</span>frac<span class="org-rainbow-delimiters-depth-3">{</span>m<span class="org-type">/</span>s<span class="org-rainbow-delimiters-depth-3">}{</span><span class="org-type">\</span>sqrt<span class="org-rainbow-delimiters-depth-4">{</span>Hz<span class="org-rainbow-delimiters-depth-4">}</span><span class="org-rainbow-delimiters-depth-3">}</span><span class="org-type">\</span>right<span class="org-rainbow-delimiters-depth-2">]</span>$'<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">500</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org3b9b556" class="figure">
|
||||
<p><img src="figs/intrumental_noise_velocity.png" alt="intrumental_noise_velocity.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 13: </span>Instrumental Noise and Measurement in \(m/s/\sqrt{Hz}\)</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org58e6c46" class="outline-2">
|
||||
<h2 id="org58e6c46"><span class="section-number-2">3</span> Compare axis</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
The Matlab computing file for this part is accessible <a href="compare_axis.m">here</a>.
|
||||
The <code>mat</code> files containing the measurement data are accessible with the following links:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>z axis: <a href="mat/data_001.mat">here</a>.</li>
|
||||
<li>east axis: <a href="mat/data_002.mat">here</a>.</li>
|
||||
<li>north axis: <a href="mat/data_003.mat">here</a>.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8f74945" class="outline-3">
|
||||
<h3 id="org8f74945"><span class="section-number-3">3.1</span> Load data</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
<p>
|
||||
We first load the data for the three axis.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">z = load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_001.mat', 't', 'x1', 'x2'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
east = load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_002.mat', 't', 'x1', 'x2'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
north = load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_003.mat', 't', 'x1', 'x2'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf13f88e" class="outline-3">
|
||||
<h3 id="orgf13f88e"><span class="section-number-3">3.2</span> Compare PSD</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
<p>
|
||||
The PSD for each axis of the two geophones are computed.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>pz1, fz<span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>z.x1, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>z.x1<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>z.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>z.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-rainbow-delimiters-depth-1">[</span>pz2, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>z.x2, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>z.x2<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>z.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>z.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
|
||||
<span class="org-rainbow-delimiters-depth-1">[</span>pe1, fe<span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>east.x1, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>east.x1<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>east.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>east.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-rainbow-delimiters-depth-1">[</span>pe2, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>east.x2, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>east.x2<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>east.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>east.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
|
||||
<span class="org-rainbow-delimiters-depth-1">[</span>pn1, fn<span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>north.x1, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>north.x1<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>north.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>north.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-rainbow-delimiters-depth-1">[</span>pn2, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>north.x2, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>north.x2<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>north.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>north.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We compare them. The result is shown on figure <a href="#orgdfcdc16">14</a>.
|
||||
</p>
|
||||
|
||||
<div id="orgdfcdc16" class="figure">
|
||||
<p><img src="figs/compare_axis_psd.png" alt="compare_axis_psd.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 14: </span>Compare the measure PSD of the two geophones for the three axis</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf389e18" class="outline-3">
|
||||
<h3 id="orgf389e18"><span class="section-number-3">3.3</span> Compare TF</h3>
|
||||
<div class="outline-text-3" id="text-3-3">
|
||||
<p>
|
||||
The transfer functions from one geophone to the other are also computed for each axis.
|
||||
The result is shown on figure <a href="#orgdd8cabb">15</a>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>Tz, fz<span class="org-rainbow-delimiters-depth-1">]</span> = tfestimate<span class="org-rainbow-delimiters-depth-1">(</span>z.x1, z.x2, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>z.x1<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>z.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>z.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-rainbow-delimiters-depth-1">[</span>Te, fe<span class="org-rainbow-delimiters-depth-1">]</span> = tfestimate<span class="org-rainbow-delimiters-depth-1">(</span>east.x1, east.x2, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>east.x1<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>east.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>east.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-rainbow-delimiters-depth-1">[</span>Tn, fn<span class="org-rainbow-delimiters-depth-1">]</span> = tfestimate<span class="org-rainbow-delimiters-depth-1">(</span>north.x1, north.x2, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>north.x1<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>north.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>north.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgdd8cabb" class="figure">
|
||||
<p><img src="figs/compare_tf_axis.png" alt="compare_tf_axis.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 15: </span>Compare the transfer function from one geophone to the other for the 3 axis</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1ca0f74" class="outline-2">
|
||||
<h2 id="org1ca0f74"><span class="section-number-2">4</span> Appendix</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
</div>
|
||||
<div id="outline-container-org9faefb2" class="outline-3">
|
||||
<h3 id="org9faefb2"><span class="section-number-3">4.1</span> Computation of coherence from PSD and CSD</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
<p>
|
||||
<a id="orgc9ed210"></a>
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_001.mat', 't', 'x1', 'x2'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
dt = t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-1">)</span> <span class="org-type">-</span> t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Fs = <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span>dt;
|
||||
win = hanning<span class="org-rainbow-delimiters-depth-1">(</span>ceil<span class="org-rainbow-delimiters-depth-2">(</span>length<span class="org-rainbow-delimiters-depth-3">(</span>x1<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">pxy = cpsd<span class="org-rainbow-delimiters-depth-1">(</span>x1, x2, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
pxx = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>x1, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
pyy = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>x2, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
coh = mscohere<span class="org-rainbow-delimiters-depth-1">(</span>x1, x2, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
hold on;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, abs<span class="org-rainbow-delimiters-depth-2">(</span>pxy<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">.^</span><span class="org-highlight-numbers-number">2</span><span class="org-type">./</span>abs<span class="org-rainbow-delimiters-depth-2">(</span>pxx<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>abs<span class="org-rainbow-delimiters-depth-2">(</span>pyy<span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'-'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, coh, <span class="org-string">'--'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
hold off;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'Coherence'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">500</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgea88bec" class="figure">
|
||||
<p><img src="figs/comp_coherence_formula.png" alt="comp_coherence_formula.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 16: </span>Comparison of <code>mscohere</code> and manual computation</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
|
||||
<h1 class='org-ref-bib-h1'>Bibliography</h1>
|
||||
<ul class='org-ref-bib'><li><a id="barzilai98_techn_measur_noise_sensor_presen">[barzilai98_techn_measur_noise_sensor_presen]</a> <a name="barzilai98_techn_measur_noise_sensor_presen"></a>Aaron Barzilai, Tom VanZandt & Tom Kenny, Technique for Measurement of the Noise of a Sensor in the Presence of Large Background Signals, <i>Review of Scientific Instruments</i>, <b>69(7)</b>, 2767-2772 (1998). <a href="https://doi.org/10.1063/1.1149013">link</a>. <a href="http://dx.doi.org/10.1063/1.1149013">doi</a>.</li>
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Thomas Dehaeze</p>
|
||||
<p class="date">Created: 2019-05-03 ven. 11:32</p>
|
||||
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
561
huddle-test-geophones/index.org
Normal file
@ -0,0 +1,561 @@
|
||||
#+TITLE:Huddle Test of the L22 Geophones
|
||||
:DRAWER:
|
||||
#+STARTUP: overview
|
||||
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/zenburn.css"/>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="../js/jquery.min.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="../js/bootstrap.min.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="../js/jquery.stickytableheaders.min.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="../js/readtheorg.js"></script>
|
||||
|
||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||
#+PROPERTY: header-args:matlab+ :comments org
|
||||
#+PROPERTY: header-args:matlab+ :results output
|
||||
#+PROPERTY: header-args:matlab+ :exports both
|
||||
#+PROPERTY: header-args:matlab+ :eval no-export
|
||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||
:END:
|
||||
|
||||
* Experimental Setup
|
||||
Two L22 geophones are used.
|
||||
They are placed on the ID31 granite.
|
||||
They are leveled.
|
||||
|
||||
The signals are amplified using voltage amplifier with a gain of 60dB.
|
||||
The voltage amplifiers include a low pass filter with a cut-off frequency at 1kHz.
|
||||
|
||||
#+name: fig:figure_name
|
||||
#+caption: Setup
|
||||
#+attr_html: :width 500px
|
||||
[[file:./figs/setup.jpg]]
|
||||
|
||||
#+name: fig:figure_name
|
||||
#+caption: Geophones
|
||||
#+attr_html: :width 500px
|
||||
[[file:./figs/geophones.jpg]]
|
||||
|
||||
* Signal Processing
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle signal_processing.m
|
||||
:header-args:matlab+: :comments org :mkdirp yes
|
||||
:END:
|
||||
The Matlab computing file for this part is accessible [[file:signal_processing.m][here]].
|
||||
The =mat= file containing the measurement data is accessible [[file:mat/data_001.mat][here]].
|
||||
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
** Load data
|
||||
We load the data of the z axis of two geophones.
|
||||
|
||||
#+begin_src matlab :results none
|
||||
load('mat/data_001.mat', 't', 'x1', 'x2');
|
||||
dt = t(2) - t(1);
|
||||
#+end_src
|
||||
|
||||
** Time Domain Data
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(t, x1);
|
||||
plot(t, x2);
|
||||
hold off;
|
||||
xlabel('Time [s]');
|
||||
ylabel('Voltage [V]');
|
||||
xlim([t(1), t(end)]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:data_time_domain
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/data_time_domain.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:data_time_domain
|
||||
#+CAPTION: Time domain Data
|
||||
#+RESULTS: fig:data_time_domain
|
||||
[[file:figs/data_time_domain.png]]
|
||||
|
||||
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(t, x1);
|
||||
plot(t, x2);
|
||||
hold off;
|
||||
xlabel('Time [s]');
|
||||
ylabel('Voltage [V]');
|
||||
xlim([0 1]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:data_time_domain_zoom
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/data_time_domain_zoom.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:data_time_domain_zoom
|
||||
#+CAPTION: Time domain Data - Zoom
|
||||
#+RESULTS: fig:data_time_domain_zoom
|
||||
[[file:figs/data_time_domain_zoom.png]]
|
||||
|
||||
** Computation of the ASD of the measured voltage
|
||||
We first define the parameters for the frequency domain analysis.
|
||||
#+begin_src matlab :results none
|
||||
Fs = 1/dt; % [Hz]
|
||||
|
||||
win = hanning(ceil(10*Fs));
|
||||
#+end_src
|
||||
|
||||
Then we compute the Power Spectral Density using =pwelch= function.
|
||||
#+begin_src matlab :results none
|
||||
[pxx1, f] = pwelch(x1, win, [], [], Fs);
|
||||
[pxx2, ~] = pwelch(x2, win, [], [], Fs);
|
||||
#+end_src
|
||||
|
||||
And we plot the result on figure [[fig:asd_voltage]].
|
||||
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(pxx1));
|
||||
plot(f, sqrt(pxx2));
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log');
|
||||
set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('ASD of the measured Voltage $\left[\frac{V}{\sqrt{Hz}}\right]$')
|
||||
xlim([0.1, 500]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:asd_voltage
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/asd_voltage.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:asd_voltage
|
||||
#+CAPTION: Amplitude Spectral Density of the measured voltage
|
||||
#+RESULTS: fig:asd_voltage
|
||||
[[file:figs/asd_voltage.png]]
|
||||
|
||||
** Scaling to take into account the sensibility of the geophone and the voltage amplifier
|
||||
The Geophone used are L22. Their sensibility is shown on figure [[fig:geophone_sensibility]].
|
||||
|
||||
#+begin_src matlab :results none
|
||||
S0 = 88; % Sensitivity [V/(m/s)]
|
||||
f0 = 2; % Cut-off frequnecy [Hz]
|
||||
|
||||
S = S0*(s/2/pi/f0)/(1+s/2/pi/f0);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none :exports none
|
||||
figure;
|
||||
bodeFig({S}, logspace(-1, 2, 1000));
|
||||
ylabel('Amplitude $\left[\frac{V}{m/s}\right]$')
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:geophone_sensibility
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/geophone_sensibility.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:geophone_sensibility
|
||||
#+CAPTION: Sensibility of the Geophone
|
||||
#+RESULTS: fig:geophone_sensibility
|
||||
[[file:figs/geophone_sensibility.png]]
|
||||
|
||||
|
||||
We also take into account the gain of the electronics which is here set to be $60dB$.
|
||||
|
||||
#+begin_src matlab :results none
|
||||
G0_db = 60; % [dB]
|
||||
|
||||
G0 = 10^(60/G0_db); % [abs]
|
||||
#+end_src
|
||||
|
||||
We divide the ASD measured (in $\text{V}/\sqrt{\text{Hz}}$) by the gain of the voltage amplifier to obtain the ASD of the voltage across the geophone.
|
||||
We further divide the result by the sensibility of the Geophone to obtain the ASD of the velocity in $m/s/\sqrt{Hz}$.
|
||||
|
||||
#+begin_src matlab :results none
|
||||
scaling = 1./squeeze(abs(freqresp(G0*S, f, 'Hz')));
|
||||
#+end_src
|
||||
|
||||
** Computation of the ASD of the velocity
|
||||
The ASD of the measured velocity is shown on figure [[fig:psd_velocity]].
|
||||
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(pxx1).*scaling);
|
||||
plot(f, sqrt(pxx2).*scaling);
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log');
|
||||
set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('ASD of the measured Velocity $\left[\frac{m/s}{\sqrt{Hz}}\right]$')
|
||||
xlim([0.1, 500]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:psd_velocity
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/psd_velocity.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:psd_velocity
|
||||
#+CAPTION: Amplitude Spectral Density of the Velocity
|
||||
#+RESULTS: fig:psd_velocity
|
||||
[[file:figs/psd_velocity.png]]
|
||||
|
||||
We also plot the ASD in displacement (figure [[fig:asd_displacement]]);
|
||||
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, (sqrt(pxx1).*scaling)./(2*pi*f));
|
||||
plot(f, (sqrt(pxx2).*scaling)./(2*pi*f));
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('ASD of the displacement $\left[\frac{m}{\sqrt{Hz}}\right]$')
|
||||
xlim([0.1, 500]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:asd_displacement
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/asd_displacement.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:asd_displacement
|
||||
#+CAPTION: Amplitude Spectral Density of the Displacement
|
||||
#+RESULTS: fig:asd_displacement
|
||||
[[file:figs/asd_displacement.png]]
|
||||
|
||||
** Transfer function between the two geophones
|
||||
We here compute the transfer function from one geophone to the other.
|
||||
The result is shown on figure [[fig:tf_geophones]].
|
||||
|
||||
We also compute the coherence between the two signals (figure [[fig:coh_geophones]]).
|
||||
|
||||
#+begin_src matlab :results none
|
||||
[T12, ~] = tfestimate(x1, x2, win, [], [], Fs);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none :exports none
|
||||
figure;
|
||||
ax1 = subplot(2, 1, 1);
|
||||
plot(f, abs(T12));
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
set(gca, 'XTickLabel',[]);
|
||||
ylabel('Magnitude');
|
||||
|
||||
ax2 = subplot(2, 1, 2);
|
||||
plot(f, mod(180+180/pi*phase(T12), 360)-180);
|
||||
set(gca, 'xscale', 'log');
|
||||
ylim([-180, 180]);
|
||||
yticks([-180, -90, 0, 90, 180]);
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([0.1, 500]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:tf_geophones
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/tf_geophones.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:tf_geophones
|
||||
#+CAPTION: Estimated transfer function between the two geophones
|
||||
#+RESULTS: fig:tf_geophones
|
||||
[[file:figs/tf_geophones.png]]
|
||||
|
||||
#+begin_src matlab :results none
|
||||
[coh12, ~] = mscohere(x1, x2, win, [], [], Fs);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none :exports none
|
||||
figure;
|
||||
plot(f, coh12);
|
||||
set(gca, 'xscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('Coherence');
|
||||
ylim([0,1]); xlim([0.1, 500]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:coh_geophones
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/coh_geophones.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:coh_geophones
|
||||
#+CAPTION: Cohererence between the signals of the two geophones
|
||||
#+RESULTS: fig:coh_geophones
|
||||
[[file:figs/coh_geophones.png]]
|
||||
|
||||
** Estimation of the sensor noise
|
||||
The technique to estimate the sensor noise is taken from cite:barzilai98_techn_measur_noise_sensor_presen.
|
||||
|
||||
The coherence between signals $X$ and $Y$ is defined as follow
|
||||
\[ \gamma^2_{XY}(\omega) = \frac{|G_{XY}(\omega)|^2}{|G_{X}(\omega)| |G_{Y}(\omega)|} \]
|
||||
where $|G_X(\omega)|$ is the output Power Spectral Density (PSD) of signal $X$ and $|G_{XY}(\omega)|$ is the Cross Spectral Density (CSD) of signal $X$ and $Y$.
|
||||
|
||||
The PSD and CSD are defined as follow:
|
||||
\begin{align}
|
||||
|G_X(\omega)| &= \frac{2}{n_d T} \sum^{n_d}_{n=1} \left| X_k(\omega, T) \right|^2 \\
|
||||
|G_{XY}(\omega)| &= \frac{2}{n_d T} \sum^{n_d}_{n=1} [ X_k^*(\omega, T) ] [ Y_k(\omega, T) ]
|
||||
\end{align}
|
||||
where:
|
||||
- $n_d$ is the number for records averaged
|
||||
- $T$ is the length of each record
|
||||
- $X_k(\omega, T)$ is the finite Fourier transform of the kth record
|
||||
- $X_k^*(\omega, T)$ is its complex conjugate
|
||||
|
||||
The =mscohere= function is compared with this formula on Appendix (section [[sec:coherence]]), it is shown that it is identical.
|
||||
|
||||
Figure [[fig:huddle_test]] illustrate a block diagram model of the system used to determine the sensor noise of the geophone.
|
||||
|
||||
Two geophones are mounted side by side to ensure that they are exposed by the same motion input $U$.
|
||||
|
||||
Each sensor has noise $N$ and $M$.
|
||||
|
||||
#+NAME: fig:huddle_test
|
||||
#+CAPTION: Huddle test block diagram
|
||||
[[file:figs/huddle-test.png]]
|
||||
|
||||
We here assume that each sensor has the same magnitude of instrumental noise ($N = M$).
|
||||
We also assume that $S_1 = S_2 = 1$.
|
||||
|
||||
We then obtain:
|
||||
#+NAME: eq:coh_bis
|
||||
\begin{equation}
|
||||
\gamma_{XY}^2(\omega) = \frac{1}{1 + 2 \left( \frac{|G_N(\omega)|}{|G_U(\omega)|} \right) + \left( \frac{|G_N(\omega)|}{|G_U(\omega)|} \right)^2}
|
||||
\end{equation}
|
||||
|
||||
Since the input signal $U$ and the instrumental noise $N$ are incoherent:
|
||||
#+NAME: eq:incoherent_noise
|
||||
\begin{equation}
|
||||
|G_X(\omega)| = |G_N(\omega)| + |G_U(\omega)|
|
||||
\end{equation}
|
||||
|
||||
From equations [[eq:coh_bis]] and [[eq:incoherent_noise]], we finally obtain
|
||||
#+begin_important
|
||||
#+NAME: eq:noise_psd
|
||||
\begin{equation}
|
||||
|G_N(\omega)| = |G_X(\omega)| \left( 1 - \sqrt{\gamma_{XY}^2(\omega)} \right)
|
||||
\end{equation}
|
||||
#+end_important
|
||||
|
||||
The instrumental noise is computed below. The result in V^2/Hz is shown on figure [[fig:intrumental_noise_V]].
|
||||
#+begin_src matlab :results none
|
||||
pxxN = pxx1.*(1 - coh12);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, pxx1, '-');
|
||||
plot(f, pxx2, '-');
|
||||
plot(f, pxxN, 'k--');
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('PSD of the measured Voltage $\left[\frac{V^2}{Hz}\right]$');
|
||||
xlim([0.1, 500]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:intrumental_noise_V
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/intrumental_noise_V.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:intrumental_noise_V
|
||||
#+CAPTION: Instrumental Noise and Measurement in $V^2/Hz$
|
||||
#+RESULTS: fig:intrumental_noise_V
|
||||
[[file:figs/intrumental_noise_V.png]]
|
||||
|
||||
This is then further converted into velocity and compared with the ground velocity measurement. (figure [[fig:intrumental_noise_velocity]])
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(pxx1).*scaling, '-');
|
||||
plot(f, sqrt(pxx2).*scaling, '-');
|
||||
plot(f, sqrt(pxxN).*scaling, 'k--');
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('ASD of the Velocity $\left[\frac{m/s}{\sqrt{Hz}}\right]$');
|
||||
xlim([0.1, 500]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:intrumental_noise_velocity
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/intrumental_noise_velocity.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:intrumental_noise_velocity
|
||||
#+CAPTION: Instrumental Noise and Measurement in $m/s/\sqrt{Hz}$
|
||||
#+RESULTS: fig:intrumental_noise_velocity
|
||||
[[file:figs/intrumental_noise_velocity.png]]
|
||||
|
||||
* Compare axis
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle compare_axis.m
|
||||
:header-args:matlab+: :comments org :mkdirp yes
|
||||
:END:
|
||||
The Matlab computing file for this part is accessible [[file:compare_axis.m][here]].
|
||||
The =mat= files containing the measurement data are accessible with the following links:
|
||||
- z axis: [[file:mat/data_001.mat][here]].
|
||||
- east axis: [[file:mat/data_002.mat][here]].
|
||||
- north axis: [[file:mat/data_003.mat][here]].
|
||||
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
** Load data
|
||||
We first load the data for the three axis.
|
||||
#+begin_src matlab :results none
|
||||
z = load('mat/data_001.mat', 't', 'x1', 'x2');
|
||||
east = load('mat/data_002.mat', 't', 'x1', 'x2');
|
||||
north = load('mat/data_003.mat', 't', 'x1', 'x2');
|
||||
#+end_src
|
||||
|
||||
** Compare PSD
|
||||
The PSD for each axis of the two geophones are computed.
|
||||
#+begin_src matlab :results none
|
||||
[pz1, fz] = pwelch(z.x1, hanning(ceil(length(z.x1)/100)), [], [], 1/(z.t(2)-z.t(1)));
|
||||
[pz2, ~] = pwelch(z.x2, hanning(ceil(length(z.x2)/100)), [], [], 1/(z.t(2)-z.t(1)));
|
||||
|
||||
[pe1, fe] = pwelch(east.x1, hanning(ceil(length(east.x1)/100)), [], [], 1/(east.t(2)-east.t(1)));
|
||||
[pe2, ~] = pwelch(east.x2, hanning(ceil(length(east.x2)/100)), [], [], 1/(east.t(2)-east.t(1)));
|
||||
|
||||
[pn1, fn] = pwelch(north.x1, hanning(ceil(length(north.x1)/100)), [], [], 1/(north.t(2)-north.t(1)));
|
||||
[pn2, ~] = pwelch(north.x2, hanning(ceil(length(north.x2)/100)), [], [], 1/(north.t(2)-north.t(1)));
|
||||
#+end_src
|
||||
|
||||
We compare them. The result is shown on figure [[fig:compare_axis_psd]].
|
||||
#+begin_src matlab :results none :exports none
|
||||
figure;
|
||||
hold on;
|
||||
plot(fz, sqrt(pz1), '-', 'Color', [0 0.4470 0.7410], 'DisplayName', 'z');
|
||||
plot(fz, sqrt(pz2), '--', 'Color', [0 0.4470 0.7410], 'HandleVisibility', 'off');
|
||||
plot(fe, sqrt(pe1), '-', 'Color', [0.8500 0.3250 0.0980], 'DisplayName', 'east');
|
||||
plot(fe, sqrt(pe2), '--', 'Color', [0.8500 0.3250 0.0980], 'HandleVisibility', 'off');
|
||||
plot(fn, sqrt(pn1), '-', 'Color', [0.9290 0.6940 0.1250], 'DisplayName', 'north');
|
||||
plot(fn, sqrt(pn2), '--', 'Color', [0.9290 0.6940 0.1250], 'HandleVisibility', 'off');
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('PSD [m/s/sqrt(Hz)]');
|
||||
legend('Location', 'northeast');
|
||||
xlim([0, 500]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:compare_axis_psd
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/compare_axis_psd.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:compare_axis_psd
|
||||
#+CAPTION: Compare the measure PSD of the two geophones for the three axis
|
||||
#+RESULTS: fig:compare_axis_psd
|
||||
[[file:figs/compare_axis_psd.png]]
|
||||
|
||||
** Compare TF
|
||||
The transfer functions from one geophone to the other are also computed for each axis.
|
||||
The result is shown on figure [[fig:compare_tf_axis]].
|
||||
|
||||
#+begin_src matlab :results none
|
||||
[Tz, fz] = tfestimate(z.x1, z.x2, hanning(ceil(length(z.x1)/100)), [], [], 1/(z.t(2)-z.t(1)));
|
||||
[Te, fe] = tfestimate(east.x1, east.x2, hanning(ceil(length(east.x1)/100)), [], [], 1/(east.t(2)-east.t(1)));
|
||||
[Tn, fn] = tfestimate(north.x1, north.x2, hanning(ceil(length(north.x1)/100)), [], [], 1/(north.t(2)-north.t(1)));
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none :exports none
|
||||
figure;
|
||||
ax1 = subplot(2, 1, 1);
|
||||
hold on;
|
||||
plot(fz, abs(Tz), 'DisplayName', 'z');
|
||||
plot(fe, abs(Te), 'DisplayName', 'east');
|
||||
plot(fn, abs(Tn), 'DisplayName', 'north');
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
set(gca, 'XTickLabel',[]);
|
||||
ylabel('Magnitude');
|
||||
legend('Location', 'southwest');
|
||||
|
||||
ax2 = subplot(2, 1, 2);
|
||||
hold on;
|
||||
plot(fz, mod(180+180/pi*phase(Tz), 360)-180);
|
||||
plot(fe, mod(180+180/pi*phase(Te), 360)-180);
|
||||
plot(fn, mod(180+180/pi*phase(Tn), 360)-180);
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log');
|
||||
ylim([-180, 180]);
|
||||
yticks([-180, -90, 0, 90, 180]);
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([1, 500]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:compare_tf_axis
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/compare_tf_axis.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:compare_tf_axis
|
||||
#+CAPTION: Compare the transfer function from one geophone to the other for the 3 axis
|
||||
#+RESULTS: fig:compare_tf_axis
|
||||
[[file:figs/compare_tf_axis.png]]
|
||||
|
||||
* Appendix
|
||||
** Computation of coherence from PSD and CSD
|
||||
<<sec:coherence>>
|
||||
#+begin_src matlab :results none
|
||||
load('mat/data_001.mat', 't', 'x1', 'x2');
|
||||
dt = t(2) - t(1);
|
||||
Fs = 1/dt;
|
||||
win = hanning(ceil(length(x1)/100));
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
pxy = cpsd(x1, x2, win, [], [], Fs);
|
||||
pxx = pwelch(x1, win, [], [], Fs);
|
||||
pyy = pwelch(x2, win, [], [], Fs);
|
||||
coh = mscohere(x1, x2, win, [], [], Fs);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, abs(pxy).^2./abs(pxx)./abs(pyy), '-');
|
||||
plot(f, coh, '--');
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log');
|
||||
xlabel('Frequency'); ylabel('Coherence');
|
||||
xlim([1, 500]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:comp_coherence_formula
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/comp_coherence_formula.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:comp_coherence_formula
|
||||
#+CAPTION: Comparison of =mscohere= and manual computation
|
||||
#+RESULTS: fig:comp_coherence_formula
|
||||
[[file:figs/comp_coherence_formula.png]]
|
||||
|
||||
* Bibliography :ignore:
|
||||
bibliographystyle:unsrt
|
||||
bibliography:ref.bib
|
BIN
huddle-test-geophones/mat/data_001.mat
Normal file
BIN
huddle-test-geophones/mat/data_002.mat
Normal file
BIN
huddle-test-geophones/mat/data_003.mat
Normal file
29
huddle-test-geophones/ref.bib
Normal file
@ -0,0 +1,29 @@
|
||||
@article{barzilai98_techn_measur_noise_sensor_presen,
|
||||
author = {Aaron Barzilai and Tom VanZandt and Tom Kenny},
|
||||
title = {Technique for Measurement of the Noise of a Sensor in the
|
||||
Presence of Large Background Signals},
|
||||
journal = {Review of Scientific Instruments},
|
||||
volume = 69,
|
||||
number = 7,
|
||||
pages = {2767-2772},
|
||||
year = 1998,
|
||||
doi = {10.1063/1.1149013},
|
||||
url = {https://doi.org/10.1063/1.1149013},
|
||||
}
|
||||
|
||||
|
||||
@article{kirchhoff17_huddl_test_measur_near_johns,
|
||||
author = {R. Kirchhoff and C. M. Mow-Lowry and V. B. Adya and G.
|
||||
Bergmann and S. Cooper and M. M. Hanke and P. Koch and S. M.
|
||||
K{\"o}hlenbeck and J. Lehmann and P. Oppermann and J.
|
||||
W{\"o}hler and D. S. Wu and H. L{\"u}ck and K. A. Strain},
|
||||
title = {Huddle Test Measurement of a Near Johnson Noise Limited
|
||||
Geophone},
|
||||
journal = {Review of Scientific Instruments},
|
||||
volume = 88,
|
||||
number = 11,
|
||||
pages = 115008,
|
||||
year = 2017,
|
||||
doi = {10.1063/1.5000592},
|
||||
url = {https://doi.org/10.1063/1.5000592},
|
||||
}
|
47
huddle-test-geophones/run_test.m
Normal file
@ -0,0 +1,47 @@
|
||||
tg = slrt;
|
||||
|
||||
%% TODO - Build this application if updated
|
||||
|
||||
%%
|
||||
if tg.Connected == "Yes"
|
||||
if tg.Status == "stopped"
|
||||
%% Load the application
|
||||
tg.load('test');
|
||||
|
||||
%% Run the application
|
||||
tg.start;
|
||||
pause(10);
|
||||
tg.stop;
|
||||
|
||||
%% Load the data
|
||||
f = SimulinkRealTime.openFTP(tg);
|
||||
mget(f, 'data/data_001.dat');
|
||||
close(f);
|
||||
end
|
||||
end
|
||||
|
||||
%% Convert the Data
|
||||
data = SimulinkRealTime.utils.getFileScopeData('data/data_001.dat').data;
|
||||
|
||||
t = data(:, end);
|
||||
x1 = data(:, 1);
|
||||
x2 = data(:, 2);
|
||||
|
||||
save('mat/data_003.mat', 't', 'x1', 'x2');
|
||||
|
||||
%% Plot the data
|
||||
figure;
|
||||
hold on;
|
||||
plot(t, x1);
|
||||
plot(t, x2);
|
||||
hold off
|
||||
xlabel('Time [s]');
|
||||
ylabel('Voltage [V]');
|
||||
|
||||
%% Compute the PSD
|
||||
dt = t(2)-t(1);
|
||||
|
||||
window_L = ceil(length(x1)/10);
|
||||
window_han = .5*(1 - cos(2*pi*(1:window_L)'/(window_L+1)));
|
||||
|
||||
[pxx, f] = pwelch(x1, window_han, 0, [], 1/dt);
|
1
huddle-test-geophones/setup.m
Normal file
@ -0,0 +1 @@
|
||||
Ts = 1e-3; % [s]
|
252
huddle-test-geophones/signal_processing.m
Normal file
@ -0,0 +1,252 @@
|
||||
% Matlab Init :noexport:ignore:
|
||||
|
||||
clear; close all; clc;
|
||||
|
||||
%% Intialize Laplace variable
|
||||
s = zpk('s');
|
||||
|
||||
%% Initialize ans with org-babel
|
||||
ans = 0;
|
||||
|
||||
% Load data
|
||||
% We load the data of the z axis of two geophones.
|
||||
|
||||
|
||||
load('mat/data_001.mat', 't', 'x1', 'x2');
|
||||
dt = t(2) - t(1);
|
||||
|
||||
% Time Domain Data
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(t, x1);
|
||||
plot(t, x2);
|
||||
hold off;
|
||||
xlabel('Time [s]');
|
||||
ylabel('Voltage [V]');
|
||||
xlim([t(1), t(end)]);
|
||||
|
||||
|
||||
|
||||
% #+NAME: fig:data_time_domain
|
||||
% #+CAPTION: Time domain Data
|
||||
% #+RESULTS: fig:data_time_domain
|
||||
% [[file:figs/data_time_domain.png]]
|
||||
|
||||
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(t, x1);
|
||||
plot(t, x2);
|
||||
hold off;
|
||||
xlabel('Time [s]');
|
||||
ylabel('Voltage [V]');
|
||||
xlim([0 1]);
|
||||
|
||||
% Computation of the ASD of the measured voltage
|
||||
% We first define the parameters for the frequency domain analysis.
|
||||
|
||||
win = hanning(ceil(length(x1)/100));
|
||||
Fs = 1/dt;
|
||||
|
||||
[pxx1, f] = pwelch(x1, win, [], [], Fs);
|
||||
[pxx2, ~] = pwelch(x2, win, [], [], Fs);
|
||||
|
||||
% Scaling to take into account the sensibility of the geophone and the voltage amplifier
|
||||
% The Geophone used are L22.
|
||||
% Their sensibility are shown on figure [[fig:geophone_sensibility]].
|
||||
|
||||
|
||||
S0 = 88; % Sensitivity [V/(m/s)]
|
||||
f0 = 2; % Cut-off frequnecy [Hz]
|
||||
S = (s/2/pi/f0)/(1+s/2/pi/f0);
|
||||
|
||||
figure;
|
||||
bodeFig({S});
|
||||
ylabel('Amplitude [V/(m/s)]')
|
||||
|
||||
|
||||
|
||||
% #+NAME: fig:geophone_sensibility
|
||||
% #+CAPTION: Sensibility of the Geophone
|
||||
% #+RESULTS: fig:geophone_sensibility
|
||||
% [[file:figs/geophone_sensibility.png]]
|
||||
|
||||
|
||||
% We also take into account the gain of the electronics which is here set to be $60dB$.
|
||||
% The amplifiers also include a low pass filter with a cut-off frequency set at 1kHz.
|
||||
|
||||
|
||||
G0 = 60; % [dB]
|
||||
|
||||
G = 10^(G0/20)/(1+s/2/pi/1000);
|
||||
|
||||
|
||||
|
||||
% We divide the ASD measured (in $\text{V}/\sqrt{\text{Hz}}$) by the transfer function of the voltage amplifier to obtain the ASD of the voltage across the geophone.
|
||||
% We further divide the result by the sensibility of the Geophone to obtain the ASD of the velocity in $m/s/\sqrt{Hz}$.
|
||||
|
||||
|
||||
scaling = 1./squeeze(abs(freqresp(G*S, f, 'Hz')));
|
||||
|
||||
% Computation of the ASD of the velocity
|
||||
% The ASD of the measured velocity is shown on figure [[fig:psd_velocity]].
|
||||
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(pxx1).*scaling);
|
||||
plot(f, sqrt(pxx2).*scaling);
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log');
|
||||
set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('PSD [m/s/sqrt(Hz)]')
|
||||
xlim([2, 500]);
|
||||
|
||||
|
||||
|
||||
% #+NAME: fig:psd_velocity
|
||||
% #+CAPTION: Spectral density of the velocity
|
||||
% #+RESULTS: fig:psd_velocity
|
||||
% [[file:figs/psd_velocity.png]]
|
||||
|
||||
% We also plot the ASD in displacement (figure [[fig:asd_displacement]]);
|
||||
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, (pxx1.*scaling./f).^2);
|
||||
plot(f, (pxx2.*scaling./f).^2);
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('PSD [m/s/sqrt(Hz)]')
|
||||
xlim([2, 500]);
|
||||
|
||||
% Transfer function between the two geophones
|
||||
% We here compute the transfer function from one geophone to the other.
|
||||
% The result is shown on figure [[fig:tf_geophones]].
|
||||
|
||||
% We also compute the coherence between the two signals (figure [[fig:coh_geophones]]).
|
||||
|
||||
|
||||
[T12, ~] = tfestimate(x1, x2, win, [], [], Fs);
|
||||
|
||||
figure;
|
||||
ax1 = subplot(2, 1, 1);
|
||||
plot(f, abs(T12));
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
set(gca, 'XTickLabel',[]);
|
||||
ylabel('Magnitude');
|
||||
|
||||
ax2 = subplot(2, 1, 2);
|
||||
plot(f, mod(180+180/pi*phase(T12), 360)-180);
|
||||
set(gca, 'xscale', 'log');
|
||||
ylim([-180, 180]);
|
||||
yticks([-180, -90, 0, 90, 180]);
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([1, 500]);
|
||||
|
||||
|
||||
|
||||
% #+NAME: fig:tf_geophones
|
||||
% #+CAPTION: Estimated transfer function between the two geophones
|
||||
% #+RESULTS: fig:tf_geophones
|
||||
% [[file:figs/tf_geophones.png]]
|
||||
|
||||
|
||||
[coh12, ~] = mscohere(x1, x2, win, [], [], Fs);
|
||||
|
||||
figure;
|
||||
plot(f, coh12);
|
||||
set(gca, 'xscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('Coherence');
|
||||
ylim([0,1]); xlim([1, 500]);
|
||||
|
||||
% Estimation of the sensor noise
|
||||
% The technique to estimate the sensor noise is taken from cite:barzilai98_techn_measur_noise_sensor_presen.
|
||||
|
||||
% The coherence between signals $X$ and $Y$ is defined as follow
|
||||
% \[ \gamma^2_{XY}(\omega) = \frac{|G_{XY}(\omega)|^2}{|G_{X}(\omega)| |G_{Y}(\omega)|} \]
|
||||
% where $|G_X(\omega)|$ is the output Power Spectral Density (PSD) of signal $X$ and $|G_{XY}(\omega)|$ is the Cross Spectral Density (CSD) of signal $X$ and $Y$.
|
||||
|
||||
% The PSD and CSD are defined as follow:
|
||||
% \begin{align}
|
||||
% |G_X(\omega)| &= \frac{2}{n_d T} \sum^{n_d}_{n=1} \left| X_k(\omega, T) \right|^2 \\
|
||||
% |G_{XY}(\omega)| &= \frac{2}{n_d T} \sum^{n_d}_{n=1} [ X_k^*(\omega, T) ] [ Y_k(\omega, T) ]
|
||||
% \end{align}
|
||||
% where:
|
||||
% - $n_d$ is the number for records averaged
|
||||
% - $T$ is the length of each record
|
||||
% - $X_k(\omega, T)$ is the finite Fourier transform of the kth record
|
||||
% - $X_k^*(\omega, T)$ is its complex conjugate
|
||||
|
||||
% The =mscohere= function is compared with this formula on Appendix (section [[sec:coherence]]), it is shown that it is identical.
|
||||
|
||||
% Figure [[fig:huddle_test]] illustrate a block diagram model of the system used to determine the sensor noise of the geophone.
|
||||
|
||||
% Two geophones are mounted side by side to ensure that they are exposed by the same motion input $U$.
|
||||
|
||||
% Each sensor has noise $N$ and $M$.
|
||||
|
||||
% #+NAME: fig:huddle_test
|
||||
% #+CAPTION: Huddle test block diagram
|
||||
% [[file:figs/huddle-test.png]]
|
||||
|
||||
% We here assume that each sensor has the same magnitude of instrumental noise ($N = M$).
|
||||
% We also assume that $H_1 = H_2 = 1$.
|
||||
|
||||
% We then obtain:
|
||||
% #+NAME: eq:coh_bis
|
||||
% \begin{equation}
|
||||
% \gamma_{XY}^2(\omega) = \frac{1}{1 + 2 \left( \frac{|G_N(\omega)|}{|G_U(\omega)|} \right) + \left( \frac{|G_N(\omega)|}{|G_U(\omega)|} \right)^2}
|
||||
% \end{equation}
|
||||
|
||||
% Since the input signal $U$ and the instrumental noise $N$ are incoherent:
|
||||
% #+NAME: eq:incoherent_noise
|
||||
% \begin{equation}
|
||||
% |G_X(\omega)| = |G_N(\omega)| + |G_U(\omega)|
|
||||
% \end{equation}
|
||||
|
||||
% From equations [[eq:coh_bis]] and [[eq:incoherent_noise]], we finally obtain
|
||||
% #+begin_important
|
||||
% #+NAME: eq:noise_psd
|
||||
% \begin{equation}
|
||||
% |G_N(\omega)| = |G_X(\omega)| \left( 1 - \sqrt{\gamma_{XY}^2(\omega)} \right)
|
||||
% \end{equation}
|
||||
% #+end_important
|
||||
|
||||
% The instrumental noise is computed below. The result in V^2/Hz is shown on figure [[fig:intrumental_noise_V]].
|
||||
|
||||
pxxN = pxx1.*(1 - coh12);
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, pxx1, '-');
|
||||
plot(f, pxx2, '-');
|
||||
plot(f, pxxN, 'k--');
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('PSD [$V^2/Hz$]');
|
||||
xlim([1, 500]);
|
||||
|
||||
|
||||
|
||||
% #+NAME: fig:intrumental_noise_V
|
||||
% #+CAPTION: Instrumental Noise and Measurement in $V^2/Hz$
|
||||
% #+RESULTS: fig:intrumental_noise_V
|
||||
% [[file:figs/intrumental_noise_V.png]]
|
||||
|
||||
% This is then further converted into velocity and compared with the ground velocity measurement. (figure [[fig:intrumental_noise_velocity]])
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(pxx1).*scaling, '-');
|
||||
plot(f, sqrt(pxx2).*scaling, '-');
|
||||
plot(f, sqrt(pxxN).*scaling, 'k--');
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('PSD [$m/s/\sqrt{Hz}$]');
|
||||
xlim([1, 500]);
|
251
index.html
@ -3,7 +3,7 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2019-03-20 mer. 15:20 -->
|
||||
<!-- 2019-05-10 ven. 09:12 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Measurement of the ID31 Micro-Station</title>
|
||||
@ -193,12 +193,13 @@
|
||||
.org-svg { width: 90%; }
|
||||
/*]]>*/-->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" href="css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="css/readtheorg.css"/>
|
||||
<script src="js/jquery.min.js"></script>
|
||||
<script src="js/bootstrap.min.js"></script>
|
||||
<script src="js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="js/readtheorg.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/zenburn.css"/>
|
||||
<script type="text/javascript" src="./js/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="./js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script type="text/javascript" src="./js/readtheorg.js"></script>
|
||||
<script type="text/javascript">
|
||||
/*
|
||||
@licstart The following is the entire license notice for the
|
||||
@ -253,41 +254,84 @@ for the JavaScript code in this tag.
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org6cfc943">1. Measurements of the dynamics of the station</a>
|
||||
<li><a href="#orgedddafa">1. Measurements of the dynamics of the station</a>
|
||||
<ul>
|
||||
<li><a href="#orge701320">1.1. Measurement 1</a></li>
|
||||
<li><a href="#org0aa014a">1.2. Measurement 2</a></li>
|
||||
<li><a href="#orgc919f50">1.3. Measurement 3</a></li>
|
||||
<li><a href="#orga36da1d">1.1. Measurement 1</a>
|
||||
<ul>
|
||||
<li><a href="#orge2e9aa5">1.1.1. Notes</a></li>
|
||||
<li><a href="#orgbf085fe">1.1.2. Goal</a></li>
|
||||
<li><a href="#orgb55b74a">1.1.3. Results</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgcc50077">2. Measurements of perturbations</a>
|
||||
<li><a href="#org4cbbced">1.2. Measurement 2</a>
|
||||
<ul>
|
||||
<li><a href="#org361950d">2.1. Noise coming from the control loop of each stage</a></li>
|
||||
<li><a href="#orge980293">2.2. Static guiding error estimation</a></li>
|
||||
<li><a href="#orge36b968">2.3. Ground motion measurements</a></li>
|
||||
<li><a href="#org4b8430a">2.4. Spindle Measurements</a></li>
|
||||
<li><a href="#org4f66738">1.2.1. Notes</a></li>
|
||||
<li><a href="#org35b1dd8">1.2.2. Goal</a></li>
|
||||
<li><a href="#org056f3eb">1.2.3. Results</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgb0ab8ae">3. Ressources</a></li>
|
||||
<li><a href="#org331b6c4">1.3. Measurement 3</a>
|
||||
<ul>
|
||||
<li><a href="#org8fff7d6">1.3.1. Notes</a></li>
|
||||
<li><a href="#orgd23abf3">1.3.2. Goal</a></li>
|
||||
<li><a href="#orgf4d1928">1.3.3. Results</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgde6e409">2. Measurements of perturbations</a>
|
||||
<ul>
|
||||
<li><a href="#org126095c">2.1. Noise coming from the control loop of each stage</a>
|
||||
<ul>
|
||||
<li><a href="#orgab096ae">2.1.1. Notes</a></li>
|
||||
<li><a href="#org47c2d2f">2.1.2. Goal</a></li>
|
||||
<li><a href="#org102801f">2.1.3. Results</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org923bfac">2.2. Static guiding error estimation</a>
|
||||
<ul>
|
||||
<li><a href="#orga84faec">2.2.1. Notes</a></li>
|
||||
<li><a href="#orgc8a8da3">2.2.2. Goal</a></li>
|
||||
<li><a href="#org8326f68">2.2.3. Results</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org2a30598">2.3. Ground motion measurements</a>
|
||||
<ul>
|
||||
<li><a href="#orgc95c429">2.3.1. Notes</a></li>
|
||||
<li><a href="#org6c05107">2.3.2. Goal</a></li>
|
||||
<li><a href="#org66c202c">2.3.3. Results</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org87d61e5">2.4. Spindle Measurements</a>
|
||||
<ul>
|
||||
<li><a href="#org80d690f">2.4.1. Notes</a></li>
|
||||
<li><a href="#orgc12a999">2.4.2. Goal</a></li>
|
||||
<li><a href="#org7394e45">2.4.3. Results</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org459eb97">3. Ressources</a></li>
|
||||
<li><a href="#orge49573f">4. Other measurements</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org6cfc943" class="outline-2">
|
||||
<h2 id="org6cfc943"><span class="section-number-2">1</span> Measurements of the dynamics of the station</h2>
|
||||
<div id="outline-container-orgedddafa" class="outline-2">
|
||||
<h2 id="orgedddafa"><span class="section-number-2">1</span> Measurements of the dynamics of the station</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
</div>
|
||||
<div id="outline-container-orge701320" class="outline-3">
|
||||
<h3 id="orge701320"><span class="section-number-3">1.1</span> Measurement 1</h3>
|
||||
<div id="outline-container-orga36da1d" class="outline-3">
|
||||
<h3 id="orga36da1d"><span class="section-number-3">1.1</span> Measurement 1</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<p>
|
||||
<a href="2017-11-17 - Marc/index.html">Link to the analysis</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0e68ec7" class="outline-4">
|
||||
<h4 id="org0e68ec7">Notes</h4>
|
||||
<div class="outline-text-4" id="text-org0e68ec7">
|
||||
<div id="outline-container-orge2e9aa5" class="outline-4">
|
||||
<h4 id="orge2e9aa5"><span class="section-number-4">1.1.1</span> Notes</h4>
|
||||
<div class="outline-text-4" id="text-1-1-1">
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
@ -325,18 +369,18 @@ Dynamics of the station is evaluated using instrumented hammer and accelerometer
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org66ede15" class="outline-4">
|
||||
<h4 id="org66ede15">Goal</h4>
|
||||
<div class="outline-text-4" id="text-org66ede15">
|
||||
<div id="outline-container-orgbf085fe" class="outline-4">
|
||||
<h4 id="orgbf085fe"><span class="section-number-4">1.1.2</span> Goal</h4>
|
||||
<div class="outline-text-4" id="text-1-1-2">
|
||||
<ul class="org-ul">
|
||||
<li>Obtain a first estimation of resonance frequencies</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org92c3b28" class="outline-4">
|
||||
<h4 id="org92c3b28">Results</h4>
|
||||
<div class="outline-text-4" id="text-org92c3b28">
|
||||
<div id="outline-container-orgb55b74a" class="outline-4">
|
||||
<h4 id="orgb55b74a"><span class="section-number-4">1.1.3</span> Results</h4>
|
||||
<div class="outline-text-4" id="text-1-1-3">
|
||||
<p>
|
||||
Resonances have been identified at 45Hz and 75Hz.
|
||||
However, the quality of the measurements are bad at low frequency.
|
||||
@ -346,17 +390,17 @@ New measurements should be done with Geophones.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0aa014a" class="outline-3">
|
||||
<h3 id="org0aa014a"><span class="section-number-3">1.2</span> Measurement 2</h3>
|
||||
<div id="outline-container-org4cbbced" class="outline-3">
|
||||
<h3 id="org4cbbced"><span class="section-number-3">1.2</span> Measurement 2</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<p>
|
||||
<a href="2018-01-12 - Marc/index.html">Link to the analysis</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9788024" class="outline-4">
|
||||
<h4 id="org9788024">Notes</h4>
|
||||
<div class="outline-text-4" id="text-org9788024">
|
||||
<div id="outline-container-org4f66738" class="outline-4">
|
||||
<h4 id="org4f66738"><span class="section-number-4">1.2.1</span> Notes</h4>
|
||||
<div class="outline-text-4" id="text-1-2-1">
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
@ -395,18 +439,18 @@ New measurements should be done with Geophones.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org42ddc37" class="outline-4">
|
||||
<h4 id="org42ddc37">Goal</h4>
|
||||
<div class="outline-text-4" id="text-org42ddc37">
|
||||
<div id="outline-container-org35b1dd8" class="outline-4">
|
||||
<h4 id="org35b1dd8"><span class="section-number-4">1.2.2</span> Goal</h4>
|
||||
<div class="outline-text-4" id="text-1-2-2">
|
||||
<p>
|
||||
Obtain better coherence at low frequency.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org51738ec" class="outline-4">
|
||||
<h4 id="org51738ec">Results</h4>
|
||||
<div class="outline-text-4" id="text-org51738ec">
|
||||
<div id="outline-container-org056f3eb" class="outline-4">
|
||||
<h4 id="org056f3eb"><span class="section-number-4">1.2.3</span> Results</h4>
|
||||
<div class="outline-text-4" id="text-1-2-3">
|
||||
<p>
|
||||
Resonances at 42Hz, 70Hz and 125Hz have been identified.
|
||||
The coherence is much better than when using accelerometers.
|
||||
@ -415,17 +459,17 @@ The coherence is much better than when using accelerometers.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc919f50" class="outline-3">
|
||||
<h3 id="orgc919f50"><span class="section-number-3">1.3</span> Measurement 3</h3>
|
||||
<div id="outline-container-org331b6c4" class="outline-3">
|
||||
<h3 id="org331b6c4"><span class="section-number-3">1.3</span> Measurement 3</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<p>
|
||||
<a href="2018-10-12 - Marc/index.html">Link to the analysis</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcfad1ec" class="outline-4">
|
||||
<h4 id="orgcfad1ec">Notes</h4>
|
||||
<div class="outline-text-4" id="text-orgcfad1ec">
|
||||
<div id="outline-container-org8fff7d6" class="outline-4">
|
||||
<h4 id="org8fff7d6"><span class="section-number-4">1.3.1</span> Notes</h4>
|
||||
<div class="outline-text-4" id="text-1-3-1">
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
@ -459,9 +503,9 @@ The coherence is much better than when using accelerometers.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb164f26" class="outline-4">
|
||||
<h4 id="orgb164f26">Goal</h4>
|
||||
<div class="outline-text-4" id="text-orgb164f26">
|
||||
<div id="outline-container-orgd23abf3" class="outline-4">
|
||||
<h4 id="orgd23abf3"><span class="section-number-4">1.3.2</span> Goal</h4>
|
||||
<div class="outline-text-4" id="text-1-3-2">
|
||||
<p>
|
||||
The station is now installed on the experimental hutch with a glued granite (final location).
|
||||
The station is identified again.
|
||||
@ -469,27 +513,27 @@ The station is identified again.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org36d9dac" class="outline-4">
|
||||
<h4 id="org36d9dac">Results</h4>
|
||||
<div id="outline-container-orgf4d1928" class="outline-4">
|
||||
<h4 id="orgf4d1928"><span class="section-number-4">1.3.3</span> Results</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcc50077" class="outline-2">
|
||||
<h2 id="orgcc50077"><span class="section-number-2">2</span> Measurements of perturbations</h2>
|
||||
<div id="outline-container-orgde6e409" class="outline-2">
|
||||
<h2 id="orgde6e409"><span class="section-number-2">2</span> Measurements of perturbations</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
</div>
|
||||
<div id="outline-container-org361950d" class="outline-3">
|
||||
<h3 id="org361950d"><span class="section-number-3">2.1</span> Noise coming from the control loop of each stage</h3>
|
||||
<div id="outline-container-org126095c" class="outline-3">
|
||||
<h3 id="org126095c"><span class="section-number-3">2.1</span> Noise coming from the control loop of each stage</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<p>
|
||||
<a href="2018-10-15 - Marc/index.html">Link to the analysis</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org84fe95c" class="outline-4">
|
||||
<h4 id="org84fe95c">Notes</h4>
|
||||
<div class="outline-text-4" id="text-org84fe95c">
|
||||
<div id="outline-container-orgab096ae" class="outline-4">
|
||||
<h4 id="orgab096ae"><span class="section-number-4">2.1.1</span> Notes</h4>
|
||||
<div class="outline-text-4" id="text-2-1-1">
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
@ -518,9 +562,9 @@ The station is identified again.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd2c9cc0" class="outline-4">
|
||||
<h4 id="orgd2c9cc0">Goal</h4>
|
||||
<div class="outline-text-4" id="text-orgd2c9cc0">
|
||||
<div id="outline-container-org47c2d2f" class="outline-4">
|
||||
<h4 id="org47c2d2f"><span class="section-number-4">2.1.2</span> Goal</h4>
|
||||
<div class="outline-text-4" id="text-2-1-2">
|
||||
<p>
|
||||
The objective is to estimate how much perturbation is injected in the system by the control systems of each stages of the micro station.
|
||||
</p>
|
||||
@ -533,9 +577,9 @@ The signals of the geophones are then compared when the stage is on and off.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2d2e023" class="outline-4">
|
||||
<h4 id="org2d2e023">Results</h4>
|
||||
<div class="outline-text-4" id="text-org2d2e023">
|
||||
<div id="outline-container-org102801f" class="outline-4">
|
||||
<h4 id="org102801f"><span class="section-number-4">2.1.3</span> Results</h4>
|
||||
<div class="outline-text-4" id="text-2-1-3">
|
||||
<ul class="org-ul">
|
||||
<li>The translation stage seems to have effect on the tilt stage at 20Hz.</li>
|
||||
<li>The Tilt stage and the Hexapod control systems have no effect on the motion of the other stages.</li>
|
||||
@ -545,17 +589,17 @@ The signals of the geophones are then compared when the stage is on and off.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge980293" class="outline-3">
|
||||
<h3 id="orge980293"><span class="section-number-3">2.2</span> Static guiding error estimation</h3>
|
||||
<div id="outline-container-org923bfac" class="outline-3">
|
||||
<h3 id="org923bfac"><span class="section-number-3">2.2</span> Static guiding error estimation</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<p>
|
||||
<a href="Static/index.html">Link to the analysis</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org315d127" class="outline-4">
|
||||
<h4 id="org315d127">Notes</h4>
|
||||
<div class="outline-text-4" id="text-org315d127">
|
||||
<div id="outline-container-orga84faec" class="outline-4">
|
||||
<h4 id="orga84faec"><span class="section-number-4">2.2.1</span> Notes</h4>
|
||||
<div class="outline-text-4" id="text-2-2-1">
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
@ -590,31 +634,31 @@ For each small displacement, the stage is stopped and the motion of the sample i
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc6d7758" class="outline-4">
|
||||
<h4 id="orgc6d7758">Goal</h4>
|
||||
<div class="outline-text-4" id="text-orgc6d7758">
|
||||
<div id="outline-container-orgc8a8da3" class="outline-4">
|
||||
<h4 id="orgc8a8da3"><span class="section-number-4">2.2.2</span> Goal</h4>
|
||||
<div class="outline-text-4" id="text-2-2-2">
|
||||
<p>
|
||||
The goal is to estimate the guiding errors of each stage.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org96cddfc" class="outline-4">
|
||||
<h4 id="org96cddfc">Results</h4>
|
||||
<div id="outline-container-org8326f68" class="outline-4">
|
||||
<h4 id="org8326f68"><span class="section-number-4">2.2.3</span> Results</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge36b968" class="outline-3">
|
||||
<h3 id="orge36b968"><span class="section-number-3">2.3</span> Ground motion measurements</h3>
|
||||
<div id="outline-container-org2a30598" class="outline-3">
|
||||
<h3 id="org2a30598"><span class="section-number-3">2.3</span> Ground motion measurements</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<p>
|
||||
<a href="Ground Motion/index.html">Link to the analysis</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org72d83c7" class="outline-4">
|
||||
<h4 id="org72d83c7">Notes</h4>
|
||||
<div class="outline-text-4" id="text-org72d83c7">
|
||||
<div id="outline-container-orgc95c429" class="outline-4">
|
||||
<h4 id="orgc95c429"><span class="section-number-4">2.3.1</span> Notes</h4>
|
||||
<div class="outline-text-4" id="text-2-3-1">
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
@ -643,31 +687,31 @@ The goal is to estimate the guiding errors of each stage.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8e77733" class="outline-4">
|
||||
<h4 id="org8e77733">Goal</h4>
|
||||
<div class="outline-text-4" id="text-org8e77733">
|
||||
<div id="outline-container-org6c05107" class="outline-4">
|
||||
<h4 id="org6c05107"><span class="section-number-4">2.3.2</span> Goal</h4>
|
||||
<div class="outline-text-4" id="text-2-3-2">
|
||||
<p>
|
||||
The objective is to obtain the Power Spectral Density of the ground motion at the ID31 floor.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org762ad60" class="outline-4">
|
||||
<h4 id="org762ad60">Results</h4>
|
||||
<div id="outline-container-org66c202c" class="outline-4">
|
||||
<h4 id="org66c202c"><span class="section-number-4">2.3.3</span> Results</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4b8430a" class="outline-3">
|
||||
<h3 id="org4b8430a"><span class="section-number-3">2.4</span> Spindle Measurements</h3>
|
||||
<div id="outline-container-org87d61e5" class="outline-3">
|
||||
<h3 id="org87d61e5"><span class="section-number-3">2.4</span> Spindle Measurements</h3>
|
||||
<div class="outline-text-3" id="text-2-4">
|
||||
<p>
|
||||
<a href="Spindle/index.html">Link to the analysis</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org33418cf" class="outline-4">
|
||||
<h4 id="org33418cf">Notes</h4>
|
||||
<div class="outline-text-4" id="text-org33418cf">
|
||||
<div id="outline-container-org80d690f" class="outline-4">
|
||||
<h4 id="org80d690f"><span class="section-number-4">2.4.1</span> Notes</h4>
|
||||
<div class="outline-text-4" id="text-2-4-1">
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
@ -691,33 +735,46 @@ The objective is to obtain the Power Spectral Density of the ground motion at th
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbd90070" class="outline-4">
|
||||
<h4 id="orgbd90070">Goal</h4>
|
||||
<div class="outline-text-4" id="text-orgbd90070">
|
||||
<div id="outline-container-orgc12a999" class="outline-4">
|
||||
<h4 id="orgc12a999"><span class="section-number-4">2.4.2</span> Goal</h4>
|
||||
<div class="outline-text-4" id="text-2-4-2">
|
||||
<p>
|
||||
The goal is to estimate all the error motions induced by the Spindle
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgff9b253" class="outline-4">
|
||||
<h4 id="orgff9b253">Results</h4>
|
||||
<div id="outline-container-org7394e45" class="outline-4">
|
||||
<h4 id="org7394e45"><span class="section-number-4">2.4.3</span> Results</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb0ab8ae" class="outline-2">
|
||||
<h2 id="orgb0ab8ae"><span class="section-number-2">3</span> Ressources</h2>
|
||||
<div id="outline-container-org459eb97" class="outline-2">
|
||||
<h2 id="org459eb97"><span class="section-number-2">3</span> Ressources</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
<a href="actuators-sensors/index.html">Actuators and Sensors</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge49573f" class="outline-2">
|
||||
<h2 id="orge49573f"><span class="section-number-2">4</span> Other measurements</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<ul class="org-ul">
|
||||
<li><a href="huddle-test-geophones/index.html">Huddle Test - Geophones</a></li>
|
||||
<li><a href="disturbance-measurement/index.html">Disturbance Measurement</a></li>
|
||||
<li><a href="slip-ring-test/index.html">Slip Ring - Noise measurement</a></li>
|
||||
<li><a href="static-measurements/index.html">Control System Measurement</a></li>
|
||||
<li><a href="equipment/equipment.html">Equipment used for the measurements</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Thomas Dehaeze</p>
|
||||
<p class="date">Created: 2019-03-20 mer. 15:20</p>
|
||||
<p class="date">Created: 2019-05-10 ven. 09:12</p>
|
||||
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
||||
</div>
|
||||
</body>
|
||||
|
34
index.org
@ -2,26 +2,13 @@
|
||||
:drawer:
|
||||
#+STARTUP: overview
|
||||
|
||||
#+OPTIONS: toc:2
|
||||
#+OPTIONS: num:2
|
||||
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="css/htmlize.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="css/readtheorg.css"/>
|
||||
#+HTML_HEAD: <script src="js/jquery.min.js"></script>
|
||||
#+HTML_HEAD: <script src="js/bootstrap.min.js"></script>
|
||||
#+HTML_HEAD: <script src="js/jquery.stickytableheaders.min.js"></script>
|
||||
#+HTML_HEAD: <script src="js/readtheorg.js"></script>
|
||||
|
||||
#+LATEX_CLASS: cleanreport
|
||||
#+LaTeX_CLASS_OPTIONS: [tocnp, secbreak, minted]
|
||||
|
||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||
#+PROPERTY: header-args:matlab+ :comments org
|
||||
#+PROPERTY: header-args:matlab+ :exports both
|
||||
#+PROPERTY: header-args:matlab+ :eval no-export
|
||||
#+PROPERTY: header-args:matlab+ :noweb yes
|
||||
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/zenburn.css"/>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="./js/jquery.min.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="./js/bootstrap.min.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="./js/readtheorg.js"></script>
|
||||
:end:
|
||||
|
||||
* Measurements of the dynamics of the station
|
||||
@ -141,3 +128,10 @@ The goal is to estimate all the error motions induced by the Spindle
|
||||
|
||||
* Ressources
|
||||
[[file:actuators-sensors/index.org][Actuators and Sensors]]
|
||||
|
||||
* Other measurements
|
||||
- [[file:huddle-test-geophones/index.org][Huddle Test - Geophones]]
|
||||
- [[file:disturbance-measurement/index.org][Disturbance Measurement]]
|
||||
- [[file:slip-ring-test/index.org][Slip Ring - Noise measurement]]
|
||||
- [[file:static-measurements/index.org][Control System Measurement]]
|
||||
- [[file:equipment/equipment.org][Equipment used for the measurements]]
|
||||
|
86
readme.org
Normal file
@ -0,0 +1,86 @@
|
||||
* Usefull Simulink Real Time commands
|
||||
|
||||
* Get data from the target computer
|
||||
|
||||
We first copy the =dat= file from the target computer to the host computer:
|
||||
|
||||
#+begin_src matlab
|
||||
tg=slrt;
|
||||
f=SimulinkRealTime.openFTP(tg);
|
||||
mget(f, 'DATA_001.dat', 'local_folder');
|
||||
close(f);
|
||||
#+end_src
|
||||
|
||||
We then import the =dat= file to the workspace:
|
||||
|
||||
#+begin_src matlab
|
||||
matlab_data = SimulinkRealTime.utils.getFileScopeData('DATA_001.dat');
|
||||
#+end_src
|
||||
|
||||
* Commands with the target object
|
||||
https://fr.mathworks.com/help/xpc/api/simulinkrealtime.target.html
|
||||
|
||||
| Connect | No Yes |
|
||||
| Status | stopped runing |
|
||||
| start | Start execution of real-time application on target computer |
|
||||
| stop | Stop execution of real-time application on target computer |
|
||||
|
||||
|
||||
| tg.viewTargetScreen | Show target computer screen |
|
||||
|
||||
| ping | Test communication between development and target computers |
|
||||
| reboot | Restart target computer |
|
||||
| close | Close connection between development and target computers |
|
||||
|
||||
| load | Download real-time application to target computer |
|
||||
| unload | Remove real-time application from target computer |
|
||||
|
||||
| addscope | Create a scope of specified type |
|
||||
| getscope | Return scope identified by scope number |
|
||||
| remscope | Remove scope from target computer |
|
||||
| getlog | Portion of output logs from target object |
|
||||
| importLogData | Import buffered logging data to the active session of the Simulation Data Inspector |
|
||||
| getsignal | Value of signal |
|
||||
| getsignalid | Signal index from signal hierarchical name |
|
||||
| getsignalidsfromlabel | Vector of signal indices |
|
||||
| getsignallabel | Signal label for signal index |
|
||||
| getsignalname | Signal name from index list |
|
||||
| getparam | Read value of observable parameter in real-time application |
|
||||
| setparam | Change value of tunable parameter in real-time application |
|
||||
| getparamid | Parameter index from parameter hierarchical name |
|
||||
| getparamname | Block path and parameter name from parameter index |
|
||||
| loadparamset | Restore parameter values saved in specified file |
|
||||
| saveparamset | Save real-time application parameter values |
|
||||
| startProfiler | Start profiling service on target computer |
|
||||
| stopProfiler | Stop profiling service on target computer |
|
||||
| getProfilerData | Retrieve profile data object |
|
||||
| resetProfiler | Reset profiling service state to Ready |
|
||||
| getDiskSpace | Return free space and total space on the drive, in bytes |
|
||||
|
||||
* FTP access to the target computer
|
||||
https://fr.mathworks.com/help/xpc/api/simulinkrealtime.openftp.html?s_tid=doc_ta
|
||||
|
||||
First run the following commands to have the =FTP= Object:
|
||||
#+begin_src matlab
|
||||
tg=slrt;
|
||||
f=SimulinkRealTime.openFTP(tg);
|
||||
#+end_src
|
||||
|
||||
Then, the =f= object can be used to access the filesystem on the target computer.
|
||||
| cd | | |
|
||||
| dir | | |
|
||||
| mget | Used to download data from the target host | =f.mget('data.dat', 'local_folder')= |
|
||||
| mkdir | | |
|
||||
| mput | | |
|
||||
| rename | | |
|
||||
| rmdir | | |
|
||||
| close | | |
|
||||
|
||||
* ELMO
|
||||
tutorials: https://www.elmomc.com/products/application-studio/easii/easii-tutorials/
|
||||
* Low Pass Filter
|
||||
|
||||
R = 1KOhm
|
||||
C = 1muF
|
||||
|
||||
Fc = 1kHz
|
11
slip-ring-test/analysis.m
Normal file
@ -0,0 +1,11 @@
|
||||
data1 = load('mat/data_001.mat', 't', 'x1', 'x2');
|
||||
data2 = load('mat/data_002.mat', 't', 'x1', 'x2');
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(data1.t, data1.x1-data1.x2);
|
||||
plot(data2.t, data2.x1-data2.x2);
|
||||
hold off
|
||||
xlabel('Time [s]');
|
||||
ylabel('Voltage [V]');
|
||||
legend({'Slip-ring OFF', 'Slip-ring ON'});
|
3
slip-ring-test/figs/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
*.tex
|
||||
*.pdf
|
||||
*.svg
|
BIN
slip-ring-test/figs/Glpf_bode.png
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
slip-ring-test/figs/Glpf_bode_bis.png
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
slip-ring-test/figs/ac_dc_option_asd.png
Normal file
After Width: | Height: | Size: 158 KiB |
BIN
slip-ring-test/figs/ac_dc_option_asd_zoom.png
Normal file
After Width: | Height: | Size: 172 KiB |
BIN
slip-ring-test/figs/ac_dc_option_time.png
Normal file
After Width: | Height: | Size: 55 KiB |
BIN
slip-ring-test/figs/ampli_noise_psd.png
Normal file
After Width: | Height: | Size: 144 KiB |
BIN
slip-ring-test/figs/ampli_noise_time.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
slip-ring-test/figs/comp_with_without_lpf.png
Normal file
After Width: | Height: | Size: 168 KiB |
BIN
slip-ring-test/figs/lpf.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
slip-ring-test/figs/psd_noise.png
Normal file
After Width: | Height: | Size: 90 KiB |
BIN
slip-ring-test/figs/random_signal.pdf
Normal file
BIN
slip-ring-test/figs/random_signal.png
Normal file
After Width: | Height: | Size: 29 KiB |
88
slip-ring-test/figs/random_signal.svg
Normal file
After Width: | Height: | Size: 324 KiB |
7095
slip-ring-test/figs/random_signal.tex
Normal file
BIN
slip-ring-test/figs/slipring_comp_signals.pdf
Normal file
BIN
slip-ring-test/figs/slipring_comp_signals.png
Normal file
After Width: | Height: | Size: 33 KiB |
120
slip-ring-test/figs/slipring_comp_signals.svg
Normal file
After Width: | Height: | Size: 572 KiB |
16859
slip-ring-test/figs/slipring_comp_signals.tex
Normal file
BIN
slip-ring-test/figs/sr_direct_time.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
slip-ring-test/figs/sr_geophone_asd.png
Normal file
After Width: | Height: | Size: 166 KiB |
BIN
slip-ring-test/figs/sr_geophone_asd_zoom.png
Normal file
After Width: | Height: | Size: 217 KiB |
BIN
slip-ring-test/figs/sr_geophone_time_off.png
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
slip-ring-test/figs/sr_geophone_time_on.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
slip-ring-test/figs/sr_lpf_geophone_asd.png
Normal file
After Width: | Height: | Size: 149 KiB |
BIN
slip-ring-test/figs/sr_lpf_geophone_asd_zoom.png
Normal file
After Width: | Height: | Size: 158 KiB |
BIN
slip-ring-test/figs/sr_lpf_geophone_time_off.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
slip-ring-test/figs/sr_lpf_geophone_time_on.png
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
slip-ring-test/figs/sr_psd_compare.png
Normal file
After Width: | Height: | Size: 190 KiB |
BIN
slip-ring-test/figs/sr_slipring_time.png
Normal file
After Width: | Height: | Size: 60 KiB |
1
slip-ring-test/img/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
*.mp4
|
BIN
slip-ring-test/img/IMG_20190503_163715.jpg
Normal file
After Width: | Height: | Size: 2.8 MiB |
BIN
slip-ring-test/img/IMG_20190503_170936.jpg
Normal file
After Width: | Height: | Size: 4.5 MiB |
BIN
slip-ring-test/img/IMG_20190506_160420.jpg
Normal file
After Width: | Height: | Size: 4.2 MiB |
BIN
slip-ring-test/img/IMG_20190506_160438.jpg
Normal file
After Width: | Height: | Size: 3.9 MiB |
BIN
slip-ring-test/img/IMG_20190507_101453.jpg
Normal file
After Width: | Height: | Size: 4.0 MiB |
BIN
slip-ring-test/img/IMG_20190507_102756.jpg
Normal file
After Width: | Height: | Size: 3.1 MiB |
BIN
slip-ring-test/img/VID_20190503_153820.gif
Normal file
After Width: | Height: | Size: 11 MiB |
BIN
slip-ring-test/img/VID_20190503_160831.gif
Normal file
After Width: | Height: | Size: 18 MiB |
BIN
slip-ring-test/img/VID_20190503_161401.gif
Normal file
After Width: | Height: | Size: 15 MiB |
BIN
slip-ring-test/img/VID_20190503_161420.gif
Normal file
After Width: | Height: | Size: 6.3 MiB |
3
slip-ring-test/img/nohup.out
Normal file
@ -0,0 +1,3 @@
|
||||
invalid color string: rgba(50, 48, 47)
|
||||
|
||||
(termite:25037): GLib-WARNING **: 14:10:26.520: GChildWatchSource: Exit status of a child process was requested but ECHILD was received by waitpid(). See the documentation of g_child_watch_source_new() for possible causes.
|
1781
slip-ring-test/index.html
Normal file
1181
slip-ring-test/index.org
Normal file
101
slip-ring-test/low_pass_filter_measurements.m
Normal file
@ -0,0 +1,101 @@
|
||||
% Matlab Init :noexport:ignore:
|
||||
|
||||
clear; close all; clc;
|
||||
|
||||
%% Intialize Laplace variable
|
||||
s = zpk('s');
|
||||
|
||||
%% Initialize ans with org-babel
|
||||
ans = 0;
|
||||
|
||||
% Load data
|
||||
% We load the data of the z axis of two geophones.
|
||||
|
||||
data = load('mat/data_018.mat', 'data'); data = data.data;
|
||||
|
||||
% Transfer function of the LPF
|
||||
% We compute the transfer function from the signal without the LPF to the signal measured with the LPF.
|
||||
|
||||
dt = data(2, 3)-data(1, 3);
|
||||
|
||||
Fs = 1/dt; % [Hz]
|
||||
|
||||
win = hanning(ceil(10*Fs));
|
||||
|
||||
[Glpf, f] = tfestimate(data(:, 2), data(:, 1), win, [], [], Fs);
|
||||
|
||||
|
||||
|
||||
% We compare this transfer function with a transfer function corresponding to an ideal first order LPF with a cut-off frequency of $1000rad/s$.
|
||||
% We obtain the result on figure [[fig:Glpf_bode]].
|
||||
|
||||
Gth = 1/(1+s/1000)
|
||||
|
||||
figure;
|
||||
ax1 = subplot(2, 1, 1);
|
||||
hold on;
|
||||
plot(f, abs(Glpf));
|
||||
plot(f, abs(squeeze(freqresp(Gth, f, 'Hz'))));
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
set(gca, 'XTickLabel',[]);
|
||||
ylabel('Magnitude');
|
||||
|
||||
ax2 = subplot(2, 1, 2);
|
||||
hold on;
|
||||
plot(f, mod(180+180/pi*phase(Glpf), 360)-180);
|
||||
plot(f, 180/pi*unwrap(angle(squeeze(freqresp(Gth, f, 'Hz')))));
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log');
|
||||
ylim([-180, 180]);
|
||||
yticks([-180, -90, 0, 90, 180]);
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([1, 500]);
|
||||
|
||||
% Load data
|
||||
% We load the data of the z axis of two geophones.
|
||||
|
||||
data = load('mat/data_019.mat', 'data'); data = data.data;
|
||||
|
||||
% Transfer function of the LPF
|
||||
% We compute the transfer function from the signal without the LPF to the signal measured with the LPF.
|
||||
|
||||
dt = data(2, 3)-data(1, 3);
|
||||
|
||||
Fs = 1/dt; % [Hz]
|
||||
|
||||
win = hanning(ceil(10*Fs));
|
||||
|
||||
[Glpf, f] = tfestimate(data(:, 2), data(:, 1), win, [], [], Fs);
|
||||
|
||||
|
||||
|
||||
% We compare this transfer function with a transfer function corresponding to an ideal first order LPF with a cut-off frequency of $1060Hz$.
|
||||
% We obtain the result on figure [[fig:Glpf_bode_bis]].
|
||||
|
||||
Gth = 1/(1+s/1060/2/pi);
|
||||
|
||||
figure;
|
||||
ax1 = subplot(2, 1, 1);
|
||||
hold on;
|
||||
plot(f, abs(Glpf));
|
||||
plot(f, abs(squeeze(freqresp(Gth, f, 'Hz'))));
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
set(gca, 'XTickLabel',[]);
|
||||
ylabel('Magnitude');
|
||||
|
||||
ax2 = subplot(2, 1, 2);
|
||||
hold on;
|
||||
plot(f, mod(180+180/pi*phase(Glpf), 360)-180);
|
||||
plot(f, 180/pi*unwrap(angle(squeeze(freqresp(Gth, f, 'Hz')))));
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log');
|
||||
ylim([-180, 180]);
|
||||
yticks([-180, -90, 0, 90, 180]);
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([1, 500]);
|