[WIP] Breaking Change - Use Update
Folder name is changed, rework the html templates Change the organisation.
4
.gitignore
vendored
@ -1,8 +1,10 @@
|
||||
auto/
|
||||
*.tex
|
||||
|
||||
**/figs/*.pdf
|
||||
**/figs/*.svg
|
||||
=======
|
||||
**/figs/*.tex
|
||||
|
||||
# Emacs
|
||||
auto/
|
||||
|
||||
|
@ -1,27 +1,5 @@
|
||||
#+TITLE: Measurements
|
||||
: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: <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
|
||||
:end:
|
||||
|
||||
[[../index.org][Back to main page]].
|
||||
#+SETUPFILE: ../config.org
|
||||
|
||||
* Experimental conditions
|
||||
- Measurement made in a metrology lab
|
||||
@ -33,12 +11,12 @@
|
||||
|
||||
#+name: fig:accelerometers
|
||||
#+caption: Accelerometers position
|
||||
#+attr_latex: :width 0.5\linewidth
|
||||
#+attr_html: :width 500px
|
||||
[[file:./figs/accelerometers.png]]
|
||||
|
||||
#+name: fig:instrumented_hammer
|
||||
#+caption: Instrumented Hammer used
|
||||
#+attr_latex: :width 0.5\linewidth
|
||||
#+attr_html: :width 500px
|
||||
[[file:./figs/instrumented_hammer.png]]
|
||||
|
||||
* Measurements procedure
|
||||
@ -101,7 +79,11 @@ For each of the measurement, the measured channels are shown on table [[tab:meas
|
||||
|
||||
* Data Analysis
|
||||
** Loading of the data
|
||||
#+begin_src matlab :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
|
@ -1,27 +1,5 @@
|
||||
#+TITLE: Measurements
|
||||
: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: <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
|
||||
:end:
|
||||
|
||||
[[../index.org][Back to main page]].
|
||||
#+SETUPFILE: ../config.org
|
||||
|
||||
* Experimental conditions
|
||||
- The granite is not glued to the floor
|
||||
@ -72,7 +50,11 @@ The structure is excited using an *instrumented hammer* with impacts on
|
||||
|
||||
* Data Analysis
|
||||
** Loading and pre-processing of the data
|
||||
#+begin_src matlab :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
% Title: id31 microstation
|
||||
% Date: 12 january 2018
|
||||
|
||||
|
||||
% Description: measure on id31 microstation in room id31-13
|
||||
|
||||
|
||||
% FS: =512Hz
|
||||
|
||||
|
||||
%% measurements 12 janaury 2018
|
||||
microstation=['Marble '; 'Tilt '; 'Hexapod '];
|
||||
|
||||
|
||||
|
||||
|
||||
% ch1: hammer
|
||||
@ -50,10 +50,10 @@ leg1=['TY ON - RZ OFF - RY OFF - Slip ring OFF - Hexapod OFF'];
|
||||
% ------------------------------------------------------------------------
|
||||
% ch_max=16;
|
||||
% % --------------------------------
|
||||
%
|
||||
%
|
||||
% mult=1e6; % --> m/s to micron/s
|
||||
%
|
||||
% nyqhp=2.56; % nyquist
|
||||
%
|
||||
% nyqhp=2.56; % nyquist
|
||||
% f_cut=0.5; % cut frequency for high pass filter
|
||||
% t_win=4; % window length in sec
|
||||
% t_ovlp=0; % overlap window in sec
|
||||
@ -65,12 +65,12 @@ warning off MATLAB:divideByZero
|
||||
capt=[1:6];
|
||||
|
||||
for i=capt
|
||||
|
||||
|
||||
eval(['load Measurement',num2str(i)])
|
||||
for ch=2:4
|
||||
eval(['freq_frf(:,',num2str(1),')=FFT1_H1_',num2str(2),'_1_RMS_X_Val;'])
|
||||
%omeg=2*pi*freq;
|
||||
|
||||
|
||||
eval(['av_spc(:,',num2str(ch),')=FFT1_AvSpc_',num2str(ch),'_RMS_Y_Val;'])
|
||||
eval(['frf_mod(:,',num2str(ch),')=FFT1_H1_',num2str(ch),'_1_RMS_Y_Mod;'])
|
||||
eval(['frf_phs(:,',num2str(ch),')=FFT1_H1_',num2str(ch),'_1_RMS_Y_Phas;'])
|
||||
@ -90,21 +90,21 @@ proname(2)={'Color'};
|
||||
proname(3)={'LineStyle'};
|
||||
|
||||
val(1,1) = {.5} ;val(1,2) = {[0.6 0.2 1]} ;val(1,3) = {'-'};
|
||||
val(2,1) = {2} ;val(2,2) = {[0 0 1]} ;val(2,3) = {'-'};
|
||||
val(3,1) = {0.5} ;val(3,2) = {[0.25 0.9 0.65]} ;val(3,3) = {'-'};
|
||||
val(4,1) = {2} ;val(4,2) = {[0 1 0]} ;val(4,3) = {'-'};
|
||||
val(5,1) = {0.5} ;val(5,2) = {[1 0.4 0.4]} ;val(5,3) = {'-'};
|
||||
val(6,1) = {2} ;val(6,2) = {[1 0 0]} ;val(6,3) = {'-'};
|
||||
val(7,1) = {1} ;val(7,2) = {[0.8 0.8 0.8]} ;val(7,3) = {'-'};
|
||||
val(8,1) = {2} ;val(8,2) = {[0.1 0.1 0.2]} ;val(8,3) = {'-'};
|
||||
val(9,1) = {1} ;val(9,2) = {[0.7 0.8 0.4]} ;val(9,3) = {'-'};
|
||||
val(10,1) = {2} ;val(10,2) = {[0.7 0.8 0.2]} ;val(10,3) = {'-'};
|
||||
val(11,1) = {1} ;val(11,2) = {[0.9 0.7 0.35]} ;val(11,3) = {'-'};
|
||||
val(12,1) = {2} ;val(12,2) = {[1 0.8 0.3]} ;val(12,3) = {'-'};
|
||||
val(13,1) = {1} ;val(13,2) = {[0.5 0.4 0.3]} ;val(13,3) = {'-'};
|
||||
val(14,1) = {2} ;val(14,2) = {[0.5 0.3 0.2]} ;val(14,3) = {'-'};
|
||||
val(2,1) = {2} ;val(2,2) = {[0 0 1]} ;val(2,3) = {'-'};
|
||||
val(3,1) = {0.5} ;val(3,2) = {[0.25 0.9 0.65]} ;val(3,3) = {'-'};
|
||||
val(4,1) = {2} ;val(4,2) = {[0 1 0]} ;val(4,3) = {'-'};
|
||||
val(5,1) = {0.5} ;val(5,2) = {[1 0.4 0.4]} ;val(5,3) = {'-'};
|
||||
val(6,1) = {2} ;val(6,2) = {[1 0 0]} ;val(6,3) = {'-'};
|
||||
val(7,1) = {1} ;val(7,2) = {[0.8 0.8 0.8]} ;val(7,3) = {'-'};
|
||||
val(8,1) = {2} ;val(8,2) = {[0.1 0.1 0.2]} ;val(8,3) = {'-'};
|
||||
val(9,1) = {1} ;val(9,2) = {[0.7 0.8 0.4]} ;val(9,3) = {'-'};
|
||||
val(10,1) = {2} ;val(10,2) = {[0.7 0.8 0.2]} ;val(10,3) = {'-'};
|
||||
val(11,1) = {1} ;val(11,2) = {[0.9 0.7 0.35]} ;val(11,3) = {'-'};
|
||||
val(12,1) = {2} ;val(12,2) = {[1 0.8 0.3]} ;val(12,3) = {'-'};
|
||||
val(13,1) = {1} ;val(13,2) = {[0.5 0.4 0.3]} ;val(13,3) = {'-'};
|
||||
val(14,1) = {2} ;val(14,2) = {[0.5 0.3 0.2]} ;val(14,3) = {'-'};
|
||||
|
||||
%
|
||||
%
|
||||
% %--------------------------------Plots
|
||||
xlab=['Frequency in Hz'];
|
||||
xlab1=['Hours since start: 06/07/2012 at 19:40'];
|
||||
@ -354,7 +354,7 @@ grid
|
||||
saveas(gcf,'comp_frf_z_hammer_hexa','fig')
|
||||
print -dpng comp_frf_z_hammer_hexa
|
||||
|
||||
%%
|
||||
%%
|
||||
figure
|
||||
h=semilogy(freq_frf,abs([ReIm4(:,5) ReIm10(:,5) ReIm11(:,5) ReIm15(:,5)]));
|
||||
set(h,proname,val([6 4 2 12],1:3))
|
||||
@ -378,4 +378,3 @@ legend(leg1,leg6,'Location','SouthEast');
|
||||
grid
|
||||
% saveas(gcf,'comp_frf_z_hammer_hexa','fig')
|
||||
% print -dpng comp_frf_z_hammer_hexa
|
||||
|
||||
|
@ -3,9 +3,9 @@
|
||||
|
||||
%% NOTE
|
||||
% With this file you can load the raw mat files
|
||||
|
||||
|
||||
%% Description: measure on id31 microstation in exp hutch
|
||||
|
||||
|
||||
% FS: =256Hz
|
||||
|
||||
|
||||
@ -57,8 +57,8 @@
|
||||
%%
|
||||
microstation=['Marble '; 'TY ';'Tilt '; 'Hexapod '];
|
||||
|
||||
%
|
||||
%% PARAMETERS
|
||||
%
|
||||
%% PARAMETERS
|
||||
|
||||
beamline='ID31 Nanostation - Hammer testing';
|
||||
% --------------------------------
|
||||
@ -68,7 +68,7 @@ ch_max=16;
|
||||
|
||||
%mult=1e6/276*173; % --> m/s to micron/s and sensitivity correction for L4-C
|
||||
|
||||
nyqhp=2.56; % nyquist
|
||||
nyqhp=2.56; % nyquist
|
||||
f_cut=0.5; % cut frequency for high pass filter
|
||||
t_win=4; % window length in sec
|
||||
t_ovlp=0; % overlap window in sec
|
||||
@ -93,93 +93,93 @@ shock_ch=9;
|
||||
%% main loop --------
|
||||
% ------------------
|
||||
for i=capt
|
||||
|
||||
|
||||
|
||||
|
||||
eval(['load Measurement_raw',num2str(i)])
|
||||
freq_max=Track1_TrueBandWidth;
|
||||
dts=1/(freq_max*nyqhp);
|
||||
|
||||
dts=1/(freq_max*nyqhp);
|
||||
|
||||
freq=linspace(0,freq_max,t_win*freq_max);
|
||||
wo=2*pi*freq;
|
||||
|
||||
|
||||
for k=1:ch_max
|
||||
vname=['Track',num2str(k)];
|
||||
array_exist(k)=ismember(vname,who);
|
||||
end
|
||||
non_zero=find(array_exist);
|
||||
for z=non_zero(1):length(non_zero)
|
||||
track_nb=['Track',num2str(z)]';
|
||||
eval(['data(:,z)=Track',num2str(z),';']);
|
||||
track_nb=['Track',num2str(z)]';
|
||||
eval(['data(:,z)=Track',num2str(z),';']);
|
||||
end
|
||||
c=data*mult;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%-------------
|
||||
nbch=size(c,2);
|
||||
%-------------
|
||||
r=length(c);
|
||||
if r/2~=fix(r/2) % loop to test for odd or even nb of samples
|
||||
c=c(1:r-1,:); % take only even
|
||||
else
|
||||
else
|
||||
end
|
||||
%------------------------------
|
||||
time=linspace(0,length(c)*dts,length(c));
|
||||
|
||||
time=linspace(0,length(c)*dts,length(c));
|
||||
|
||||
for j=nbch %shunt_ch
|
||||
[c(:,j),c_shut]=shut_c(c(:,j),1/dts); % correct for shunt
|
||||
[c(:,j),c_shut]=shut_c(c(:,j),1/dts); % correct for shunt
|
||||
end
|
||||
%c(:,8)=(c(:,5)-c(:,4))/d; % differential Theta Y angle
|
||||
|
||||
b=find(no_hammer==i); % if i==1 | i==2 | i==6
|
||||
|
||||
b=find(no_hammer==i); % if i==1 | i==2 | i==6
|
||||
if b~=0
|
||||
[psd_v,integ_v,psd_d,integ_d]=integrated_psd(c,t_win,t_ovlp,nyqhp,dts);
|
||||
[frz_cut,crsp,pwsp,coherz,nsp]=fqresp(c,shock_ch,t_win,t_ovlp,nyqhp,dts);
|
||||
|
||||
else
|
||||
|
||||
|
||||
else
|
||||
|
||||
thresh=0.5; % threshold of max value
|
||||
sep=2.5; % separation minimum of peaks in sec
|
||||
pre_ev=2; % pre event delay in sec
|
||||
pos_ev=2; % post event delay in sec
|
||||
|
||||
|
||||
[ti,t_impact]=findpeaks(c(:,shock_ch),'minpeakheight',max(c(:,shock_ch))*thresh,'minpeakdistance',ceil(sep/dts));
|
||||
% find times at which there are impacts (threshold of max and separated by sep sec)
|
||||
|
||||
|
||||
psd_v=zeros((pre_ev+pos_ev)/dts/nyqhp,nbch);
|
||||
psd_d=zeros((pre_ev+pos_ev)/dts/nyqhp,nbch);
|
||||
frz_cut=zeros((pre_ev+pos_ev)/dts/nyqhp,nbch);
|
||||
|
||||
|
||||
for k=1:length(t_impact)
|
||||
ibeg=fix(t_impact(k)-(pre_ev/dts));
|
||||
iend=fix(t_impact(k)+(pos_ev/dts));
|
||||
freq_s=linspace(0,freq_max,t_win/2*freq_max);
|
||||
if ibeg>1 && iend<length(c) % eliminate indexes outside data range
|
||||
if ibeg>1 && iend<length(c) % eliminate indexes outside data range
|
||||
[psd,integ_v,psd_int,integ_d]=integrated_psd(c(ibeg:iend,:),t_win,t_ovlp,nyqhp,dts);
|
||||
psd_v=psd+psd_v;
|
||||
psd_d=psd_int+psd_d;
|
||||
[frz,crsp,pwsp,coherz,nsp]=fqresp(c(ibeg:iend,:),shock_ch,t_win,t_ovlp,nyqhp,dts);
|
||||
frz_cut=frz+frz_cut;
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
psd_v=psd_v/length(t_impact);
|
||||
psd_d=psd_d/length(t_impact);
|
||||
frz_cut=frz_cut/length(t_impact);
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
drms=max(integ_d); % compute rms level
|
||||
dc=hpfint(c,f_cut,dts); % filter and integrate in time domain
|
||||
dppc=hpdpp(dc,t_win,t_ovlp,1,dts); % compute peak to peak level
|
||||
|
||||
|
||||
|
||||
|
||||
%% transfer function, cross spectrum, power spectr. and coherence w.r.t. ch1
|
||||
|
||||
|
||||
eval(['c',num2str(i),'=c;'])
|
||||
eval(['dc',num2str(i),'=dc;'])
|
||||
eval(['dppc',num2str(i),'=dppc;'])
|
||||
@ -193,8 +193,8 @@ for i=capt
|
||||
% eval(['frx',num2str(i),'=frx;'])
|
||||
eval(['coherz',num2str(i),'=coherz;'])
|
||||
eval(['time',num2str(i),'=time;'])
|
||||
|
||||
|
||||
clear data c dc psd psd_v psd_d time c_shut % clean up the mess
|
||||
|
||||
|
||||
|
||||
end
|
@ -1,3 +1,3 @@
|
||||
contient les mesures des réponses avec marteau d'impact. Les fichiers xxx_raw sont sans traitement dans le domaine temporel (environ 10 impacts par fichier). Les fonctions de transfert avec phase sont dans le même répertoire avec des noms explicites (manquent les cohérences que je n'ai pas sorties)
|
||||
|
||||
Ces données ne me semblent pas de super qualité en basse fréquence, avec le Ty libre le mode à 5Hz est très amorti.
|
||||
Ces données ne me semblent pas de super qualité en basse fréquence, avec le Ty libre le mode à 5Hz est très amorti.
|
||||
|
@ -1,27 +1,5 @@
|
||||
#+TITLE: Measurements
|
||||
: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: <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
|
||||
:end:
|
||||
|
||||
[[../index.org][Back to main page]].
|
||||
#+SETUPFILE: ../config.org
|
||||
|
||||
* Experimental conditions
|
||||
- Measurement made in the experiment hutch
|
||||
@ -87,7 +65,11 @@ Les fichiers xxx_raw sont sans traitement dans le domaine temporel (environ 10 i
|
||||
|
||||
* Data Analysis
|
||||
** Loading of the data
|
||||
#+begin_src matlab :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
contient les mesures de l'effet des différents moteurs ON/OFF, j'ai sorti qq spectrogrammes qui montrent bien que c'est la spindle qui a le plus d'effet
|
||||
|
||||
+ une mesure de la réponse du marbre sans excitation.
|
||||
Le capteur Y sur le marbre semble faible en basse fréquence (marbre pas de niveau peut être)
|
||||
Le capteur Y sur le marbre semble faible en basse fréquence (marbre pas de niveau peut être)
|
||||
|
@ -1,34 +1,18 @@
|
||||
#+TITLE: Measurement Analysis
|
||||
:drawer:
|
||||
#+STARTUP: overview
|
||||
#+SETUPFILE: ../config.org
|
||||
|
||||
#+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>
|
||||
* Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+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
|
||||
:end:
|
||||
|
||||
[[../index.org][Back to main page]].
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
* Measurement Description
|
||||
#+name: fig:setup_picture
|
||||
#+attr_html: :width 500px
|
||||
#+caption: Picture of the setup for the measurement
|
||||
[[file:./figs/setup_picture.png]]
|
||||
|
||||
|
@ -1,29 +1,12 @@
|
||||
#+TITLE: Ground Motion Measurements
|
||||
:drawer:
|
||||
#+STARTUP: overview
|
||||
#+SETUPFILE: ../config.org
|
||||
|
||||
#+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>
|
||||
* Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+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
|
||||
:end:
|
||||
|
||||
[[../index.org][Back to main page]].
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
|
Before Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 26 KiB |
@ -1,110 +0,0 @@
|
||||
Error X et Y
|
||||
|
||||
LSCxtot =
|
||||
|
||||
0.3872
|
||||
|
||||
|
||||
LSCytot =
|
||||
|
||||
0.2419
|
||||
|
||||
|
||||
LSCxsync =
|
||||
|
||||
0.1577
|
||||
|
||||
|
||||
LSCysync =
|
||||
|
||||
0.1602
|
||||
|
||||
|
||||
LSCxasync =
|
||||
|
||||
0.2946
|
||||
|
||||
|
||||
LSCyasync =
|
||||
|
||||
0.1103
|
||||
|
||||
|
||||
LSCxytot =
|
||||
|
||||
0.3519
|
||||
|
||||
|
||||
Error X2 et Y2
|
||||
|
||||
|
||||
LSCxtot =
|
||||
|
||||
0.3354
|
||||
|
||||
|
||||
LSCytot =
|
||||
|
||||
0.3202
|
||||
|
||||
|
||||
LSCxsync =
|
||||
|
||||
0.1101
|
||||
|
||||
|
||||
LSCysync =
|
||||
|
||||
0.0808
|
||||
|
||||
|
||||
LSCxasync =
|
||||
|
||||
0.2588
|
||||
|
||||
|
||||
LSCyasync =
|
||||
|
||||
0.2791
|
||||
|
||||
|
||||
LSCxytot =
|
||||
|
||||
0.3642
|
||||
|
||||
|
||||
|
||||
ErrorZ
|
||||
LSCxtot =
|
||||
|
||||
0.0775
|
||||
|
||||
|
||||
LSCytot =
|
||||
|
||||
0.0775
|
||||
|
||||
|
||||
LSCxsync =
|
||||
|
||||
0.0390
|
||||
|
||||
|
||||
LSCysync =
|
||||
|
||||
0.0390
|
||||
|
||||
|
||||
LSCxasync =
|
||||
|
||||
0.0617
|
||||
|
||||
|
||||
LSCyasync =
|
||||
|
||||
0.0617
|
||||
|
||||
|
||||
LSCxytot =
|
||||
|
||||
0.1000
|
Before Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 85 KiB |
2407
Static/data/data.txt
@ -1,27 +1,5 @@
|
||||
#+TITLE: Equipment
|
||||
: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: <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
|
||||
:end:
|
||||
|
||||
[[../index.org][Back to main page]].
|
||||
#+SETUPFILE: ../config.org
|
||||
|
||||
* Sensors
|
||||
** Accelerometers
|
||||
@ -160,7 +138,11 @@ We define the parameters of the geophone and we plot its bode plot (figure [[fig
|
||||
| Weight [g] | 2150 |
|
||||
| Sensitivity [V/(m/s)] | 276.8 |
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
|
27
config.org
Normal file
@ -0,0 +1,27 @@
|
||||
#+STARTUP: overview
|
||||
|
||||
#+LANGUAGE: en
|
||||
#+EMAIL: dehaeze.thomas@gmail.com
|
||||
#+AUTHOR: Dehaeze Thomas
|
||||
|
||||
#+HTML_LINK_HOME: ../index.html
|
||||
#+HTML_LINK_UP: ../index.html
|
||||
|
||||
#+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>
|
||||
|
||||
#+HTML_MATHJAX: align: center tagside: right font: TeX
|
||||
|
||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||
#+PROPERTY: header-args:matlab+ :comments org
|
||||
#+PROPERTY: header-args:matlab+ :results none
|
||||
#+PROPERTY: header-args:matlab+ :exports both
|
||||
#+PROPERTY: header-args:matlab+ :eval no-export
|
||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||
|
||||
#+PROPERTY: header-args:shell :eval no-export
|
@ -1,28 +1,15 @@
|
||||
#+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:
|
||||
#+SETUPFILE: ../config.org
|
||||
|
||||
* Experimental Setup
|
||||
|
||||
* Signal Processing
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
|
@ -1,15 +1,5 @@
|
||||
#+TITLE: Equipment used to make the measurements
|
||||
: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>
|
||||
:END:
|
||||
#+SETUPFILE: ../config.org
|
||||
|
||||
* Geophone
|
||||
L22
|
||||
|
3
huddle-test-geophones/figs/.gitignore
vendored
@ -1,3 +0,0 @@
|
||||
*.svg
|
||||
*.pdf
|
||||
*.tex
|
Before Width: | Height: | Size: 3.7 MiB After Width: | Height: | Size: 3.7 MiB |
Before Width: | Height: | Size: 3.8 MiB After Width: | Height: | Size: 3.8 MiB |
@ -1,22 +1,5 @@
|
||||
#+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:
|
||||
#+SETUPFILE: ../config.org
|
||||
|
||||
* Experimental Setup
|
||||
Two L22 geophones are used.
|
||||
@ -31,23 +14,40 @@ The voltage amplifiers includes:
|
||||
#+name: fig:figure_name
|
||||
#+caption: Setup
|
||||
#+attr_html: :width 500px
|
||||
[[file:./figs/setup.jpg]]
|
||||
[[file:./img/setup.jpg]]
|
||||
|
||||
#+name: fig:figure_name
|
||||
#+caption: Geophones
|
||||
#+attr_html: :width 500px
|
||||
[[file:./figs/geophones.jpg]]
|
||||
[[file:./img/geophones.jpg]]
|
||||
|
||||
* Signal Processing
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle signal_processing.m
|
||||
:header-args:matlab+: :tangle matlab/huddle_test_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]].
|
||||
<<sec:huddle_test_signal_processing>>
|
||||
|
||||
#+begin_src bash :exports none :results none
|
||||
if [ matlab/huddle_test_signal_processing.m -nt data/huddle_test_signal_processing.zip ]; then
|
||||
cp matlab/huddle_test_signal_processing.m huddle_test_signal_processing.m;
|
||||
zip data/huddle_test_signal_processing \
|
||||
mat/data_001.mat \
|
||||
huddle_test_signal_processing.m;
|
||||
rm huddle_test_signal_processing.m;
|
||||
fi
|
||||
#+end_src
|
||||
|
||||
#+begin_note
|
||||
All the files (data and Matlab scripts) are accessible [[file:data/huddle_test_signal_processing.zip][here]].
|
||||
#+end_note
|
||||
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
@ -407,17 +407,33 @@ This is then further converted into velocity and compared with the ground veloci
|
||||
|
||||
* Compare axis
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle compare_axis.m
|
||||
:header-args:matlab+: :tangle matlab/huddle_test_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]].
|
||||
<<sec:huddle_test_compare_axis>>
|
||||
|
||||
#+begin_src bash :exports none :results none
|
||||
if [ matlab/huddle_test_compare_axis.m -nt data/huddle_test_compare_axis.zip ]; then
|
||||
cp matlab/huddle_test_compare_axis.m huddle_test_compare_axis.m;
|
||||
zip data/huddle_test_compare_axis \
|
||||
mat/data_001.mat \
|
||||
mat/data_002.mat \
|
||||
mat/data_003.mat \
|
||||
huddle_test_compare_axis.m;
|
||||
rm huddle_test_compare_axis.m;
|
||||
fi
|
||||
#+end_src
|
||||
|
||||
#+begin_note
|
||||
All the files (data and Matlab scripts) are accessible [[file:data/huddle_test_compare_axis.zip][here]].
|
||||
#+end_note
|
||||
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
|
@ -1,5 +1,10 @@
|
||||
% Matlab Init :noexport:ignore:
|
||||
|
||||
current_dir='/home/thomas/MEGA/These/meas/huddle-test-geophones/';
|
||||
%% Go to current Directory
|
||||
cd(current_dir);
|
||||
|
||||
%% Clear Workspace and Close figures
|
||||
clear; close all; clc;
|
||||
|
||||
%% Intialize Laplace variable
|
@ -1,5 +1,10 @@
|
||||
% Matlab Init :noexport:ignore:
|
||||
|
||||
current_dir='/home/thomas/MEGA/These/meas/huddle-test-geophones/';
|
||||
%% Go to current Directory
|
||||
cd(current_dir);
|
||||
|
||||
%% Clear Workspace and Close figures
|
||||
clear; close all; clc;
|
||||
|
||||
%% Intialize Laplace variable
|
||||
@ -47,24 +52,44 @@ 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;
|
||||
Fs = 1/dt; % [Hz]
|
||||
|
||||
win = hanning(ceil(10*Fs));
|
||||
|
||||
|
||||
|
||||
% Then we compute the Power Spectral Density using =pwelch= function.
|
||||
|
||||
[pxx1, f] = pwelch(x1, win, [], [], Fs);
|
||||
[pxx2, ~] = pwelch(x2, win, [], [], Fs);
|
||||
|
||||
|
||||
|
||||
% And we plot the result on figure [[fig:asd_voltage]].
|
||||
|
||||
|
||||
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]);
|
||||
|
||||
% 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]].
|
||||
% The Geophone used are L22. Their sensibility is 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);
|
||||
|
||||
S = S0*(s/2/pi/f0)/(1+s/2/pi/f0);
|
||||
|
||||
figure;
|
||||
bodeFig({S});
|
||||
ylabel('Amplitude [V/(m/s)]')
|
||||
bodeFig({S}, logspace(-1, 2, 1000));
|
||||
ylabel('Amplitude $\left[\frac{V}{m/s}\right]$')
|
||||
|
||||
|
||||
|
||||
@ -75,20 +100,19 @@ ylabel('Amplitude [V/(m/s)]')
|
||||
|
||||
|
||||
% 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]
|
||||
G0_db = 60; % [dB]
|
||||
|
||||
G = 10^(G0/20)/(1+s/2/pi/1000);
|
||||
G0 = 10^(60/G0_db); % [abs]
|
||||
|
||||
|
||||
|
||||
% 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 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}$.
|
||||
|
||||
|
||||
scaling = 1./squeeze(abs(freqresp(G*S, f, 'Hz')));
|
||||
scaling = 1./squeeze(abs(freqresp(G0*S, f, 'Hz')));
|
||||
|
||||
% Computation of the ASD of the velocity
|
||||
% The ASD of the measured velocity is shown on figure [[fig:psd_velocity]].
|
||||
@ -101,13 +125,13 @@ 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]);
|
||||
xlabel('Frequency [Hz]'); ylabel('ASD of the measured Velocity $\left[\frac{m/s}{\sqrt{Hz}}\right]$')
|
||||
xlim([0.1, 500]);
|
||||
|
||||
|
||||
|
||||
% #+NAME: fig:psd_velocity
|
||||
% #+CAPTION: Spectral density of the velocity
|
||||
% #+CAPTION: Amplitude Spectral Density of the Velocity
|
||||
% #+RESULTS: fig:psd_velocity
|
||||
% [[file:figs/psd_velocity.png]]
|
||||
|
||||
@ -116,12 +140,12 @@ xlim([2, 500]);
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, (pxx1.*scaling./f).^2);
|
||||
plot(f, (pxx2.*scaling./f).^2);
|
||||
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('PSD [m/s/sqrt(Hz)]')
|
||||
xlim([2, 500]);
|
||||
xlabel('Frequency [Hz]'); ylabel('ASD of the displacement $\left[\frac{m}{\sqrt{Hz}}\right]$')
|
||||
xlim([0.1, 500]);
|
||||
|
||||
% Transfer function between the two geophones
|
||||
% We here compute the transfer function from one geophone to the other.
|
||||
@ -144,10 +168,10 @@ 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');
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([1, 500]);
|
||||
xlim([0.1, 500]);
|
||||
|
||||
|
||||
|
||||
@ -163,7 +187,7 @@ figure;
|
||||
plot(f, coh12);
|
||||
set(gca, 'xscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('Coherence');
|
||||
ylim([0,1]); xlim([1, 500]);
|
||||
ylim([0,1]); xlim([0.1, 500]);
|
||||
|
||||
% Estimation of the sensor noise
|
||||
% The technique to estimate the sensor noise is taken from cite:barzilai98_techn_measur_noise_sensor_presen.
|
||||
@ -196,7 +220,7 @@ ylim([0,1]); xlim([1, 500]);
|
||||
% [[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 also assume that $S_1 = S_2 = 1$.
|
||||
|
||||
% We then obtain:
|
||||
% #+NAME: eq:coh_bis
|
||||
@ -229,8 +253,8 @@ 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]);
|
||||
xlabel('Frequency [Hz]'); ylabel('PSD of the measured Voltage $\left[\frac{V^2}{Hz}\right]$');
|
||||
xlim([0.1, 500]);
|
||||
|
||||
|
||||
|
||||
@ -248,5 +272,5 @@ 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]);
|
||||
xlabel('Frequency [Hz]'); ylabel('ASD of the Velocity $\left[\frac{m/s}{\sqrt{Hz}}\right]$');
|
||||
xlim([0.1, 500]);
|
@ -1,47 +0,0 @@
|
||||
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 +0,0 @@
|
||||
Ts = 1e-3; % [s]
|
23
index.org
@ -29,9 +29,11 @@ Dynamics of the station is evaluated using instrumented hammer and accelerometer
|
||||
- Obtain a first estimation of resonance frequencies
|
||||
|
||||
*** Results
|
||||
Resonances have been identified at 45Hz and 75Hz.
|
||||
However, the quality of the measurements are bad at low frequency.
|
||||
New measurements should be done with Geophones.
|
||||
#+begin_important
|
||||
- Resonances have been identified at 45Hz and 75Hz
|
||||
- However, the quality of the measurements are bad at low frequency
|
||||
- New measurements should be done with Geophones
|
||||
#+end_important
|
||||
|
||||
** Measurement 2
|
||||
[[file:2018-01-12%20-%20Marc/index.org][Link to the analysis]]
|
||||
@ -47,10 +49,12 @@ New measurements should be done with Geophones.
|
||||
Obtain better coherence at low frequency.
|
||||
|
||||
*** Results
|
||||
Resonances at 42Hz, 70Hz and 125Hz have been identified.
|
||||
The coherence is much better than when using accelerometers.
|
||||
#+begin_important
|
||||
- Resonances at 42Hz, 70Hz and 125Hz have been identified
|
||||
- The coherence is much better than when using accelerometers
|
||||
#+end_important
|
||||
|
||||
** Measurement 3
|
||||
** TODO Measurement 3
|
||||
[[file:2018-10-12%20-%20Marc/index.org][Link to the analysis]]
|
||||
|
||||
*** Notes
|
||||
@ -64,6 +68,9 @@ The station is now installed on the experimental hutch with a glued granite (fin
|
||||
The station is identified again.
|
||||
|
||||
*** Results
|
||||
#+begin_important
|
||||
|
||||
#+end_important
|
||||
|
||||
* Measurements of perturbations
|
||||
** Noise coming from the control loop of each stage
|
||||
@ -129,11 +136,11 @@ The goal is to estimate all the error motions induced by the Spindle
|
||||
*** Results
|
||||
|
||||
* Ressources
|
||||
[[file:actuators-sensors/index.org][Actuators and Sensors]]
|
||||
- [[file:actuators-sensors/index.org][Actuators and Sensors]]
|
||||
- [[file:equipment/equipment.org][Equipment used for the measurements]]
|
||||
|
||||
* 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]]
|
||||
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 158 KiB |
Before Width: | Height: | Size: 172 KiB After Width: | Height: | Size: 172 KiB |
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 144 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 4.5 MiB After Width: | Height: | Size: 4.5 MiB |
Before Width: | Height: | Size: 3.1 MiB After Width: | Height: | Size: 3.1 MiB |
BIN
instrumentation/index.html
Normal file
510
instrumentation/index.org
Normal file
@ -0,0 +1,510 @@
|
||||
#+TITLE: Measurements on the instrumentation
|
||||
#+SETUPFILE: ../config.org
|
||||
|
||||
* Measure of the noise of the Voltage Amplifier
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle matlab/meas_volt_amp.m
|
||||
:header-args:matlab+: :comments org :mkdirp yes
|
||||
:END:
|
||||
<<sec:meas_volt_amp>>
|
||||
|
||||
#+begin_src bash :exports none :results none
|
||||
if [ meas_volt_amp.m -nt data/meas_volt_amp.zip ]; then
|
||||
zip data/meas_volt_amp \
|
||||
mat/data_003.mat \
|
||||
mat/data_004.mat \
|
||||
mat/data_005.mat \
|
||||
mat/data_006.mat \
|
||||
meas_volt_amp.m
|
||||
fi
|
||||
#+end_src
|
||||
|
||||
#+begin_note
|
||||
All the files (data and Matlab scripts) are accessible [[file:data/meas_volt_amp.zip][here]].
|
||||
#+end_note
|
||||
|
||||
** Measurement Description
|
||||
*Goal*:
|
||||
- Determine the Voltage Amplifier noise
|
||||
|
||||
*Setup*:
|
||||
- The two inputs (differential) of the voltage amplifier are shunted with 50Ohms
|
||||
- The AC/DC option of the Voltage amplifier is on AC
|
||||
- The low pass filter is set to 1hHz
|
||||
- We measure the output of the voltage amplifier with a 16bits ADC of the Speedgoat
|
||||
|
||||
*Measurements*:
|
||||
- =data_003=: Ampli OFF
|
||||
- =data_004=: Ampli ON set to 20dB
|
||||
- =data_005=: Ampli ON set to 40dB
|
||||
- =data_006=: Ampli ON set to 60dB
|
||||
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
** Load data
|
||||
#+begin_src matlab :results none
|
||||
amp_off = load('mat/data_003.mat', 'data'); amp_off = amp_off.data(:, [1,3]);
|
||||
amp_20d = load('mat/data_004.mat', 'data'); amp_20d = amp_20d.data(:, [1,3]);
|
||||
amp_40d = load('mat/data_005.mat', 'data'); amp_40d = amp_40d.data(:, [1,3]);
|
||||
amp_60d = load('mat/data_006.mat', 'data'); amp_60d = amp_60d.data(:, [1,3]);
|
||||
#+end_src
|
||||
|
||||
** Time Domain
|
||||
The time domain signals are shown on figure [[fig:ampli_noise_time]].
|
||||
|
||||
#+begin_src matlab :results none :exports none
|
||||
figure;
|
||||
hold on;
|
||||
plot(amp_off(:, 2), amp_off(:, 1), 'DisplayName', 'OFF');
|
||||
plot(amp_20d(:, 2), amp_20d(:, 1), 'DisplayName', '20dB');
|
||||
plot(amp_40d(:, 2), amp_40d(:, 1), 'DisplayName', '40dB');
|
||||
plot(amp_60d(:, 2), amp_60d(:, 1), 'DisplayName', '60dB');
|
||||
hold off;
|
||||
legend('Location', 'northeast');
|
||||
xlabel('Time [s]');
|
||||
ylabel('Voltage [V]');
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:ampli_noise_time
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/ampli_noise_time.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:ampli_noise_time
|
||||
#+CAPTION: Output of the amplifier
|
||||
#+RESULTS: fig:ampli_noise_time
|
||||
[[file:figs/ampli_noise_time.png]]
|
||||
|
||||
** Frequency Domain
|
||||
We first compute some parameters that will be used for the PSD computation.
|
||||
#+begin_src matlab :results none
|
||||
dt = amp_off(2, 2)-amp_off(1, 2);
|
||||
|
||||
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
|
||||
[pxoff, f] = pwelch(amp_off(:,1), win, [], [], Fs);
|
||||
[px20d, ~] = pwelch(amp_20d(:,1), win, [], [], Fs);
|
||||
[px40d, ~] = pwelch(amp_40d(:,1), win, [], [], Fs);
|
||||
[px60d, ~] = pwelch(amp_60d(:,1), win, [], [], Fs);
|
||||
#+end_src
|
||||
|
||||
We compute the theoretical ADC noise.
|
||||
#+begin_src matlab :results none
|
||||
q = 20/2^16; % quantization
|
||||
Sq = q^2/12/1000; % PSD of the ADC noise
|
||||
#+end_src
|
||||
|
||||
Finally, the ASD is shown on figure [[fig:ampli_noise_psd]].
|
||||
#+begin_src matlab :results none :exports none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(pxoff), 'DisplayName', 'OFF');
|
||||
plot(f, sqrt(px20d), 'DisplayName', '20dB');
|
||||
plot(f, sqrt(px40d), 'DisplayName', '40dB');
|
||||
plot(f, sqrt(px60d), 'DisplayName', '60dB');
|
||||
plot([0.1, 500], [sqrt(Sq), sqrt(Sq)], 'k--');
|
||||
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]$')
|
||||
legend('Location', 'northeast');
|
||||
xlim([0.1, 500]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:ampli_noise_psd
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/ampli_noise_psd.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:ampli_noise_psd
|
||||
#+CAPTION: Amplitude Spectral Density of the measured voltage at the output of the voltage amplifier
|
||||
#+RESULTS: fig:ampli_noise_psd
|
||||
[[file:figs/ampli_noise_psd.png]]
|
||||
|
||||
** Conclusion
|
||||
#+begin_important
|
||||
*Questions*:
|
||||
- Where does those sharp peaks comes from? Can this be due to aliasing?
|
||||
|
||||
Noise induced by the voltage amplifiers seems not to be a limiting factor as we have the same noise when they are OFF and ON.
|
||||
#+end_important
|
||||
|
||||
* Measure of the influence of the AC/DC option on the voltage amplifiers
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle matlab/meas_noise_ac_dc.m
|
||||
:header-args:matlab+: :comments org :mkdirp yes
|
||||
:END:
|
||||
<<sec:meas_noise_ac_dc>>
|
||||
|
||||
#+begin_src bash :exports none :results none
|
||||
if [ meas_noise_ac_dc.m -nt data/meas_noise_ac_dc.zip ]; then
|
||||
zip data/meas_noise_ac_dc \
|
||||
mat/data_012.mat \
|
||||
mat/data_013.mat \
|
||||
meas_noise_ac_dc.m
|
||||
fi
|
||||
#+end_src
|
||||
|
||||
#+begin_note
|
||||
All the files (data and Matlab scripts) are accessible [[file:data/meas_noise_ac_dc.zip][here]].
|
||||
#+end_note
|
||||
|
||||
** Measurement Description
|
||||
*Goal*:
|
||||
- Measure the influence of the high-pass filter option of the voltage amplifiers
|
||||
|
||||
*Setup*:
|
||||
- One geophone is located on the marble.
|
||||
- It's signal goes to two voltage amplifiers with a gain of 60dB.
|
||||
- One voltage amplifier is on the AC option, the other is on the DC option.
|
||||
|
||||
*Measurements*:
|
||||
First measurement (=mat/data_014.mat= file):
|
||||
| Column | Signal |
|
||||
|--------+----------------------------|
|
||||
| 1 | Amplifier 1 with AC option |
|
||||
| 2 | Amplifier 2 with DC option |
|
||||
| 3 | Time |
|
||||
|
||||
Second measurement (=mat/data_015.mat= file):
|
||||
| Column | Signal |
|
||||
|--------+----------------------------|
|
||||
| 1 | Amplifier 1 with DC option |
|
||||
| 2 | Amplifier 2 with AC option |
|
||||
| 3 | Time |
|
||||
|
||||
#+name: fig:volt_amp_setup
|
||||
#+caption: Picture of the two voltages amplifiers
|
||||
#+attr_html: :width 500px
|
||||
[[file:./img/IMG_20190503_170936.jpg]]
|
||||
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
** Load data
|
||||
We load the data of the z axis of two geophones.
|
||||
#+begin_src matlab :results none
|
||||
meas14 = load('mat/data_014.mat', 'data'); meas14 = meas14.data;
|
||||
meas15 = load('mat/data_015.mat', 'data'); meas15 = meas15.data;
|
||||
#+end_src
|
||||
|
||||
** Time Domain
|
||||
The signals are shown on figure [[fig:ac_dc_option_time]].
|
||||
#+begin_src matlab :results none :exports none
|
||||
figure;
|
||||
hold on;
|
||||
plot(meas14(:, 3), meas14(:, 1), 'DisplayName', 'Amp1 - AC');
|
||||
plot(meas14(:, 3), meas14(:, 2), 'DisplayName', 'Amp2 - DC');
|
||||
plot(meas15(:, 3), meas15(:, 1), 'DisplayName', 'Amp1 - DC');
|
||||
plot(meas15(:, 3), meas15(:, 2), 'DisplayName', 'Amp2 - AC');
|
||||
hold off;
|
||||
legend('Location', 'bestoutside');
|
||||
xlabel('Time [s]');
|
||||
ylabel('Voltage [V]');
|
||||
xlim([0, 100]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:ac_dc_option_time
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/ac_dc_option_time.pdf" :var figsize="full-normal" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:ac_dc_option_time
|
||||
#+CAPTION: Comparison of the signals going through the Voltage amplifiers
|
||||
#+RESULTS: fig:ac_dc_option_time
|
||||
[[file:figs/ac_dc_option_time.png]]
|
||||
|
||||
** Frequency Domain
|
||||
We first compute some parameters that will be used for the PSD computation.
|
||||
#+begin_src matlab :results none
|
||||
dt = meas14(2, 3)-meas14(1, 3);
|
||||
|
||||
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
|
||||
[pxamp1ac, f] = pwelch(meas14(:, 1), win, [], [], Fs);
|
||||
[pxamp2dc, ~] = pwelch(meas14(:, 2), win, [], [], Fs);
|
||||
|
||||
[pxamp1dc, ~] = pwelch(meas15(:, 1), win, [], [], Fs);
|
||||
[pxamp2ac, ~] = pwelch(meas15(:, 2), win, [], [], Fs);
|
||||
#+end_src
|
||||
|
||||
The ASD of the signals are compare on figure [[fig:ac_dc_option_asd]].
|
||||
#+begin_src matlab :results none :exports none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(pxamp1ac), 'DisplayName', 'Amp1 - AC');
|
||||
plot(f, sqrt(pxamp2dc), 'DisplayName', 'Amp2 - DC');
|
||||
plot(f, sqrt(pxamp1dc), 'DisplayName', 'Amp1 - DC');
|
||||
plot(f, sqrt(pxamp2ac), 'DisplayName', 'Amp2 - AC');
|
||||
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]$')
|
||||
legend('Location', 'northeast');
|
||||
xlim([0.1, 500]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:ac_dc_option_asd
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/ac_dc_option_asd.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:ac_dc_option_asd
|
||||
#+CAPTION: Amplitude Spectral Density of the measured signals
|
||||
#+RESULTS: fig:ac_dc_option_asd
|
||||
[[file:figs/ac_dc_option_asd.png]]
|
||||
|
||||
** Conclusion
|
||||
#+begin_important
|
||||
- The voltage amplifiers include some very sharp high pass filters at 1.5Hz (maybe 4th order)
|
||||
- There is a DC offset on the time domain signal because the DC-offset knob was not set to zero
|
||||
#+end_important
|
||||
|
||||
* Transfer function of the Low Pass Filter
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle matlab/low_pass_filter_measurements.m
|
||||
:header-args:matlab+: :comments org :mkdirp yes
|
||||
:END:
|
||||
<<sec:low_pass_filter_measurements>>
|
||||
|
||||
#+begin_src bash :exports none :results none
|
||||
if [ low_pass_filter_measurements.m -nt data/low_pass_filter_measurements.zip ]; then
|
||||
zip data/low_pass_filter_measurements \
|
||||
mat/data_018.mat \
|
||||
mat/data_019.mat \
|
||||
low_pass_filter_measurements.m
|
||||
fi
|
||||
#+end_src
|
||||
|
||||
The computation files for this section are accessible [[file:data/low_pass_filter_measurements.zip][here]].
|
||||
|
||||
** First LPF with a Cut-off frequency of 160Hz
|
||||
*** Measurement Description
|
||||
*Goal*:
|
||||
- Measure the Low Pass Filter Transfer Function
|
||||
|
||||
The values of the components are:
|
||||
\begin{aligned}
|
||||
R &= 1k\Omega \\
|
||||
C &= 1\mu F
|
||||
\end{aligned}
|
||||
Which makes a cut-off frequency of $f_c = \frac{1}{RC} = 1000 rad/s = 160Hz$.
|
||||
|
||||
#+NAME: fig:lpf
|
||||
#+HEADER: :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/MEGA/These/LaTeX/}{config.tex}")
|
||||
#+HEADER: :imagemagick t :fit yes :iminoptions -scale 100% -density 150 :imoutoptions -quality 100
|
||||
#+HEADER: :results raw replace :buffer no :eval no-export :exports both :mkdirp yes
|
||||
#+HEADER: :output-dir figs
|
||||
#+begin_src latex :file lpf.pdf :post pdf2svg(file=*this*, ext="png") :exports both
|
||||
\begin{tikzpicture}
|
||||
\draw (0,2)
|
||||
to [R=\(R\)] ++(2,0) node[circ]
|
||||
to ++(2,0)
|
||||
++(-2,0)
|
||||
to [C=\(C\)] ++(0,-2) node[circ]
|
||||
++(-2,0)
|
||||
to ++(2,0)
|
||||
to ++(2,0)
|
||||
\end{tikzpicture}
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:lpf
|
||||
#+CAPTION: Schematic of the Low Pass Filter used
|
||||
#+RESULTS: fig:lpf
|
||||
[[file:figs/lpf.png]]
|
||||
|
||||
|
||||
*Setup*:
|
||||
- We are measuring the signal from from Geophone with a BNC T
|
||||
- On part goes to column 1 through the LPF
|
||||
- The other part goes to column 2 without the LPF
|
||||
|
||||
*Measurements*:
|
||||
=mat/data_018.mat=:
|
||||
| Column | Signal |
|
||||
|--------+----------------------|
|
||||
| 1 | Amplifier 1 with LPF |
|
||||
| 2 | Amplifier 2 |
|
||||
| 3 | Time |
|
||||
|
||||
#+name: fig:lpf_picture
|
||||
#+caption: Picture of the low pass filter used
|
||||
#+attr_html: :width 500px
|
||||
[[file:./img/IMG_20190507_102756.jpg]]
|
||||
|
||||
*** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
*** Load data
|
||||
We load the data of the z axis of two geophones.
|
||||
#+begin_src matlab :results none
|
||||
data = load('mat/data_018.mat', 'data'); data = data.data;
|
||||
#+end_src
|
||||
|
||||
*** Transfer function of the LPF
|
||||
We compute the transfer function from the signal without the LPF to the signal measured with the LPF.
|
||||
#+begin_src matlab :results none
|
||||
dt = data(2, 3)-data(1, 3);
|
||||
|
||||
Fs = 1/dt; % [Hz]
|
||||
|
||||
win = hanning(ceil(10*Fs));
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
[Glpf, f] = tfestimate(data(:, 2), data(:, 1), win, [], [], Fs);
|
||||
#+end_src
|
||||
|
||||
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]].
|
||||
#+begin_src matlab :results none
|
||||
Gth = 1/(1+s/1000)
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
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]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:Glpf_bode
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/Glpf_bode.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:Glpf_bode
|
||||
#+CAPTION: Bode Diagram of the measured Low Pass filter and the theoritical one
|
||||
#+RESULTS: fig:Glpf_bode
|
||||
[[file:figs/Glpf_bode.png]]
|
||||
*** Conclusion
|
||||
#+begin_important
|
||||
As we want to measure things up to $500Hz$, we chose to change the value of the capacitor to obtain a cut-off frequency of $1kHz$.
|
||||
#+end_important
|
||||
|
||||
** Second LPF with a Cut-off frequency of 1000Hz
|
||||
*** Measurement description
|
||||
This time, the value are
|
||||
\begin{aligned}
|
||||
R &= 1k\Omega \\
|
||||
C &= 150nF
|
||||
\end{aligned}
|
||||
Which makes a low pass filter with a cut-off frequency of $f_c = 1060Hz$.
|
||||
|
||||
*** Load data
|
||||
We load the data of the z axis of two geophones.
|
||||
#+begin_src matlab :results none
|
||||
data = load('mat/data_019.mat', 'data'); data = data.data;
|
||||
#+end_src
|
||||
|
||||
*** Transfer function of the LPF
|
||||
We compute the transfer function from the signal without the LPF to the signal measured with the LPF.
|
||||
#+begin_src matlab :results none
|
||||
dt = data(2, 3)-data(1, 3);
|
||||
|
||||
Fs = 1/dt; % [Hz]
|
||||
|
||||
win = hanning(ceil(10*Fs));
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
[Glpf, f] = tfestimate(data(:, 2), data(:, 1), win, [], [], Fs);
|
||||
#+end_src
|
||||
|
||||
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]].
|
||||
#+begin_src matlab :results none
|
||||
Gth = 1/(1+s/1060/2/pi);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
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]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:Glpf_bode_bis
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/Glpf_bode_bis.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:Glpf_bode_bis
|
||||
#+CAPTION: Bode Diagram of the measured Low Pass filter and the theoritical one
|
||||
#+RESULTS: fig:Glpf_bode_bis
|
||||
[[file:figs/Glpf_bode_bis.png]]
|
||||
*** Conclusion
|
||||
#+begin_important
|
||||
The added LPF has the expected behavior.
|
||||
#+end_important
|
BIN
instrumentation/mat/data_018.mat
Normal file
BIN
instrumentation/mat/data_019.mat
Normal file
@ -1,11 +0,0 @@
|
||||
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
@ -1,3 +0,0 @@
|
||||
*.tex
|
||||
*.pdf
|
||||
*.svg
|
Before Width: | Height: | Size: 324 KiB |
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 110 KiB |
Before Width: | Height: | Size: 572 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 4.4 MiB After Width: | Height: | Size: 4.4 MiB |
Before Width: | Height: | Size: 3.5 MiB After Width: | Height: | Size: 3.5 MiB |
@ -1,39 +1,165 @@
|
||||
#+TITLE: Measurements
|
||||
:DRAWER:
|
||||
#+STARTUP: overview
|
||||
#+TITLE: Measurements On the Slip-Ring
|
||||
#+SETUPFILE: ../config.org
|
||||
|
||||
#+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:
|
||||
|
||||
* Effect of the rotation of the Slip-Ring
|
||||
* Effect of the Slip-Ring on the signal
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle meas_effect_sr.m
|
||||
:header-args:matlab+: :tangle matlab/meas_slip_ring_geophone.m
|
||||
:header-args:matlab+: :comments org :mkdirp yes
|
||||
:END:
|
||||
<<sec:meas_slip_ring_geophone>>
|
||||
|
||||
#+begin_src bash :exports none :results none
|
||||
if [ meas_effect_sr.m -nt data/meas_effect_sr.zip ]; then
|
||||
zip data/meas_effect_sr \
|
||||
mat/data_001.mat \
|
||||
mat/data_002.mat \
|
||||
meas_effect_sr.m
|
||||
if [ matlab/meas_slip_ring_geophone.m -nt data/meas_slip_ring_geophone.zip ]; then
|
||||
cp matlab/meas_slip_ring_geophone.m meas_slip_ring_geophone.m;
|
||||
zip data/meas_slip_ring_geophone \
|
||||
mat/data_018.mat \
|
||||
mat/data_019.mat \
|
||||
meas_slip_ring_geophone.m;
|
||||
rm meas_slip_ring_geophone.m;
|
||||
fi
|
||||
#+end_src
|
||||
|
||||
The data and matlab files are accessible [[file:data/meas_effect_sr.zip][here]].
|
||||
#+begin_note
|
||||
All the files (data and Matlab scripts) are accessible [[file:data/meas_slip_ring_geophone.zip][here]].
|
||||
#+end_note
|
||||
|
||||
** Experimental Setup
|
||||
Two measurements are made with the control systems of all the stages turned OFF.
|
||||
|
||||
One geophone is located on the marble while the other is located at the sample location (figure [[fig:setup_slipring]]).
|
||||
|
||||
#+name: fig:setup_slipring
|
||||
#+caption: Experimental Setup
|
||||
#+attr_html: :width 500px
|
||||
[[file:./img/IMG_20190430_112615.jpg]]
|
||||
|
||||
The two measurements are:
|
||||
| Measurement File | Description |
|
||||
|------------------+------------------------------------------------------------------|
|
||||
| =meas_018.mat= | Signal from the top geophone does not goes through the Slip-ring |
|
||||
| =meas_019.mat= | Signal goes through the Slip-ring (as shown on the figure above) |
|
||||
|
||||
Each of the measurement =mat= file contains one =data= array with 3 columns:
|
||||
| Column number | Description |
|
||||
|---------------+-------------------|
|
||||
| 1 | Geophone - Marble |
|
||||
| 2 | Geophone - Sample |
|
||||
| 3 | Time |
|
||||
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
** Load data
|
||||
We load the data of the z axis of two geophones.
|
||||
|
||||
#+begin_src matlab :results none
|
||||
d8 = load('mat/data_018.mat', 'data'); d8 = d8.data;
|
||||
d9 = load('mat/data_019.mat', 'data'); d9 = d9.data;
|
||||
#+end_src
|
||||
|
||||
** Analysis - Time Domain
|
||||
First, we compare the time domain signals for the two experiments (figure [[fig:slipring_time]]).
|
||||
|
||||
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(d9(:, 3), d9(:, 2), 'DisplayName', 'Slip-Ring');
|
||||
plot(d8(:, 3), d8(:, 2), 'DisplayName', 'Wire');
|
||||
hold off;
|
||||
xlabel('Time [s]'); ylabel('Voltage [V]');
|
||||
xlim([0, 50]);
|
||||
legend('location', 'northeast');
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:slipring_time
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/slipring_time.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:slipring_time
|
||||
#+CAPTION: Effect of the Slip-Ring on the measured signal - Time domain
|
||||
#+RESULTS: fig:slipring_time
|
||||
[[file:figs/slipring_time.png]]
|
||||
|
||||
** Analysis - Frequency Domain
|
||||
We then compute the Power Spectral Density of the two signals and we compare them (figure [[fig:slipring_asd]]).
|
||||
#+begin_src matlab :results none
|
||||
dt = d8(2, 3) - d8(1, 3);
|
||||
Fs = 1/dt;
|
||||
|
||||
win = hanning(ceil(1*Fs));
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
[pxx8, f] = pwelch(d8(:, 2), win, [], [], Fs);
|
||||
[pxx9, ~] = pwelch(d9(:, 2), win, [], [], Fs);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(pxx9), 'DisplayName', 'Slip-Ring');
|
||||
plot(f, sqrt(pxx8), 'DisplayName', 'Wire');
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log');
|
||||
set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('Amplitude Spectral Density $\left[\frac{V}{\sqrt{Hz}}\right]$')
|
||||
xlim([1, 500]);
|
||||
legend('Location', 'southwest');
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:slipring_asd
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/slipring_asd.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:slipring_asd
|
||||
#+CAPTION: Effect of the Slip-Ring on the measured signal - Frequency domain
|
||||
#+RESULTS: fig:slipring_asd
|
||||
[[file:figs/slipring_asd.png]]
|
||||
|
||||
** Conclusion
|
||||
#+begin_important
|
||||
- Connecting the geophone through the Slip-Ring seems to induce a lot of noise.
|
||||
#+end_important
|
||||
|
||||
#+begin_note
|
||||
*Remaining questions to answer*:
|
||||
- Why is there a sharp peak at 300Hz?
|
||||
- Why the use of the Slip-Ring does induce a noise?
|
||||
- Can the capacitive/inductive properties of the wires in the Slip-ring does not play well with the geophone? (resonant RLC circuit)
|
||||
#+end_note
|
||||
|
||||
* Effect of the rotation of the Slip-Ring
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle matlab/meas_effect_sr.m
|
||||
:header-args:matlab+: :comments org :mkdirp yes
|
||||
:END:
|
||||
<<sec:meas_effect_sr>>
|
||||
|
||||
#+begin_src bash :exports none :results none
|
||||
if [ matlab/meas_effect_sr.m -nt data/meas_effect_sr.zip ]; then
|
||||
cp matlab/meas_effect_sr.m meas_effect_sr.m;
|
||||
zip data/meas_effect_sr \
|
||||
mat/data_001.mat \
|
||||
mat/data_002.mat \
|
||||
meas_effect_sr.m;
|
||||
rm meas_effect_sr.m;
|
||||
fi
|
||||
#+end_src
|
||||
|
||||
#+begin_note
|
||||
All the files (data and Matlab scripts) are accessible [[file:data/meas_effect_sr.zip][here]].
|
||||
#+end_note
|
||||
|
||||
** Measurement Description
|
||||
Random Signal is generated by one DAC of the SpeedGoat.
|
||||
@ -60,7 +186,11 @@ The goal is to determine is the signal is altered when the spindle is rotating.
|
||||
Here, the rotation speed of the Slip-Ring is set to 1rpm.
|
||||
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
@ -159,159 +289,29 @@ We now look at the difference between the signal directly measured by the ADC an
|
||||
- Should the measurement be redone using voltage amplifiers?
|
||||
- Use higher rotation speed and measure for longer periods (to have multiple revolutions) ?
|
||||
#+end_note
|
||||
* Measure of the noise of the Voltage Amplifier
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle meas_volt_amp.m
|
||||
:header-args:matlab+: :comments org :mkdirp yes
|
||||
:END:
|
||||
|
||||
#+begin_src bash :exports none :results none
|
||||
if [ meas_volt_amp.m -nt data/meas_volt_amp.zip ]; then
|
||||
zip data/meas_volt_amp \
|
||||
mat/data_003.mat \
|
||||
mat/data_004.mat \
|
||||
mat/data_005.mat \
|
||||
mat/data_006.mat \
|
||||
meas_volt_amp.m
|
||||
fi
|
||||
#+end_src
|
||||
|
||||
The data and matlab files are accessible [[file:data/meas_volt_amp.zip][here]].
|
||||
|
||||
** Measurement Description
|
||||
*Goal*:
|
||||
- Determine the Voltage Amplifier noise
|
||||
|
||||
*Setup*:
|
||||
- The two inputs (differential) of the voltage amplifier are shunted with 50Ohms
|
||||
- The AC/DC option of the Voltage amplifier is on AC
|
||||
- The low pass filter is set to 1hHz
|
||||
- We measure the output of the voltage amplifier with a 16bits ADC of the Speedgoat
|
||||
|
||||
*Measurements*:
|
||||
- =data_003=: Ampli OFF
|
||||
- =data_004=: Ampli ON set to 20dB
|
||||
- =data_005=: Ampli ON set to 40dB
|
||||
- =data_006=: Ampli ON set to 60dB
|
||||
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
** Load data
|
||||
#+begin_src matlab :results none
|
||||
amp_off = load('mat/data_003.mat', 'data'); amp_off = amp_off.data(:, [1,3]);
|
||||
amp_20d = load('mat/data_004.mat', 'data'); amp_20d = amp_20d.data(:, [1,3]);
|
||||
amp_40d = load('mat/data_005.mat', 'data'); amp_40d = amp_40d.data(:, [1,3]);
|
||||
amp_60d = load('mat/data_006.mat', 'data'); amp_60d = amp_60d.data(:, [1,3]);
|
||||
#+end_src
|
||||
|
||||
** Time Domain
|
||||
The time domain signals are shown on figure [[fig:ampli_noise_time]].
|
||||
|
||||
#+begin_src matlab :results none :exports none
|
||||
figure;
|
||||
hold on;
|
||||
plot(amp_off(:, 2), amp_off(:, 1), 'DisplayName', 'OFF');
|
||||
plot(amp_20d(:, 2), amp_20d(:, 1), 'DisplayName', '20dB');
|
||||
plot(amp_40d(:, 2), amp_40d(:, 1), 'DisplayName', '40dB');
|
||||
plot(amp_60d(:, 2), amp_60d(:, 1), 'DisplayName', '60dB');
|
||||
hold off;
|
||||
legend('Location', 'northeast');
|
||||
xlabel('Time [s]');
|
||||
ylabel('Voltage [V]');
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:ampli_noise_time
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/ampli_noise_time.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:ampli_noise_time
|
||||
#+CAPTION: Output of the amplifier
|
||||
#+RESULTS: fig:ampli_noise_time
|
||||
[[file:figs/ampli_noise_time.png]]
|
||||
|
||||
** Frequency Domain
|
||||
We first compute some parameters that will be used for the PSD computation.
|
||||
#+begin_src matlab :results none
|
||||
dt = amp_off(2, 2)-amp_off(1, 2);
|
||||
|
||||
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
|
||||
[pxoff, f] = pwelch(amp_off(:,1), win, [], [], Fs);
|
||||
[px20d, ~] = pwelch(amp_20d(:,1), win, [], [], Fs);
|
||||
[px40d, ~] = pwelch(amp_40d(:,1), win, [], [], Fs);
|
||||
[px60d, ~] = pwelch(amp_60d(:,1), win, [], [], Fs);
|
||||
#+end_src
|
||||
|
||||
We compute the theoretical ADC noise.
|
||||
#+begin_src matlab :results none
|
||||
q = 20/2^16; % quantization
|
||||
Sq = q^2/12/1000; % PSD of the ADC noise
|
||||
#+end_src
|
||||
|
||||
Finally, the ASD is shown on figure [[fig:ampli_noise_psd]].
|
||||
#+begin_src matlab :results none :exports none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(pxoff), 'DisplayName', 'OFF');
|
||||
plot(f, sqrt(px20d), 'DisplayName', '20dB');
|
||||
plot(f, sqrt(px40d), 'DisplayName', '40dB');
|
||||
plot(f, sqrt(px60d), 'DisplayName', '60dB');
|
||||
plot([0.1, 500], [sqrt(Sq), sqrt(Sq)], 'k--');
|
||||
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]$')
|
||||
legend('Location', 'northeast');
|
||||
xlim([0.1, 500]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:ampli_noise_psd
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/ampli_noise_psd.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:ampli_noise_psd
|
||||
#+CAPTION: Amplitude Spectral Density of the measured voltage at the output of the voltage amplifier
|
||||
#+RESULTS: fig:ampli_noise_psd
|
||||
[[file:figs/ampli_noise_psd.png]]
|
||||
|
||||
** Conclusion
|
||||
#+begin_important
|
||||
*Questions*:
|
||||
- Where does those sharp peaks comes from? Can this be due to aliasing?
|
||||
|
||||
Noise induced by the voltage amplifiers seems not to be a limiting factor as we have the same noise when they are OFF and ON.
|
||||
#+end_important
|
||||
|
||||
* Measure of the noise induced by the Slip-Ring
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle meas_slip_ring.m
|
||||
:header-args:matlab+: :tangle matlab/meas_slip_ring.m
|
||||
:header-args:matlab+: :comments org :mkdirp yes
|
||||
:END:
|
||||
<<sec:meas_slip_ring>>
|
||||
|
||||
#+begin_src bash :exports none :results none
|
||||
if [ meas_slip_ring.m -nt data/meas_slip_ring.zip ]; then
|
||||
if [ matlab/meas_slip_ring.m -nt data/meas_slip_ring.zip ]; then
|
||||
cp matlab/meas_slip_ring.m meas_slip_ring.m;
|
||||
zip data/meas_slip_ring \
|
||||
mat/data_008.mat \
|
||||
mat/data_009.mat \
|
||||
mat/data_010.mat \
|
||||
mat/data_011.mat \
|
||||
meas_slip_ring.m
|
||||
meas_slip_ring.m;
|
||||
rm meas_slip_ring.m;
|
||||
fi
|
||||
#+end_src
|
||||
|
||||
The data and matlab files are accessible [[file:data/meas_slip_ring.zip][here]].
|
||||
#+begin_note
|
||||
All the files (data and Matlab scripts) are accessible [[file:data/meas_slip_ring.zip][here]].
|
||||
#+end_note
|
||||
|
||||
** Measurement Description
|
||||
*Goal*:
|
||||
@ -343,7 +343,11 @@ Second column: Slip-ring measure
|
||||
[[file:./img/VID_20190503_161401.gif]]
|
||||
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
@ -463,22 +467,36 @@ And we plot the ASD of the measured signals (figure [[fig:sr_psd_compare]]);
|
||||
|
||||
* Measure of the noise induced by the slip ring when using a geophone
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle meas_sr_geophone.m
|
||||
:header-args:matlab+: :tangle matlab/meas_sr_geophone.m
|
||||
:header-args:matlab+: :comments org :mkdirp yes
|
||||
:END:
|
||||
<<sec:meas_sr_geophone>>
|
||||
|
||||
#+begin_src bash :exports none :results none
|
||||
if [ meas_sr_geophone.m -nt data/meas_sr_geophone.zip ]; then
|
||||
if [ matlab/meas_sr_geophone.m -nt data/meas_sr_geophone.zip ]; then
|
||||
cp matlab/meas_sr_geophone.m meas_sr_geophone.m;
|
||||
zip data/meas_sr_geophone \
|
||||
mat/data_012.mat \
|
||||
mat/data_013.mat \
|
||||
mat/data_016.mat \
|
||||
mat/data_017.mat \
|
||||
meas_sr_geophone.m
|
||||
meas_sr_geophone.m;
|
||||
rm meas_sr_geophone.m;
|
||||
fi
|
||||
#+end_src
|
||||
|
||||
The data and matlab files are accessible [[file:data/meas_sr_geophone.zip][here]].
|
||||
#+begin_note
|
||||
All the files (data and Matlab scripts) are accessible [[file:data/meas_sr_geophone.zip][here]].
|
||||
#+end_note
|
||||
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
** First Measurement without LPF
|
||||
*** Measurement Description
|
||||
@ -502,11 +520,6 @@ Second column: Slip-ring measure
|
||||
- =data_012=: Slip-Ring OFF
|
||||
- =data_013=: Slip-Ring ON
|
||||
|
||||
*** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
*** Load data
|
||||
We load the data of the z axis of two geophones.
|
||||
#+begin_src matlab :results none
|
||||
@ -825,357 +838,3 @@ Finally, we compare the Amplitude Spectral Density of the signals (figure [[fig:
|
||||
- Using the LPF, we don't have any perturbation coming from the slip-ring when it is on.
|
||||
- However, we should use a smaller value of the capacitor to have a cut-off frequency at $1kHz$.
|
||||
#+end_important
|
||||
|
||||
* Measure of the influence of the AC/DC option on the voltage amplifiers
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle meas_noise_ac_dc.m
|
||||
:header-args:matlab+: :comments org :mkdirp yes
|
||||
:END:
|
||||
|
||||
#+begin_src bash :exports none :results none
|
||||
if [ meas_noise_ac_dc.m -nt data/meas_noise_ac_dc.zip ]; then
|
||||
zip data/meas_noise_ac_dc \
|
||||
mat/data_012.mat \
|
||||
mat/data_013.mat \
|
||||
meas_noise_ac_dc.m
|
||||
fi
|
||||
#+end_src
|
||||
|
||||
The data and matlab files are accessible [[file:data/meas_noise_ac_dc.zip][here]].
|
||||
|
||||
** Measurement Description
|
||||
*Goal*:
|
||||
- Measure the influence of the high-pass filter option of the voltage amplifiers
|
||||
|
||||
*Setup*:
|
||||
- One geophone is located on the marble.
|
||||
- It's signal goes to two voltage amplifiers with a gain of 60dB.
|
||||
- One voltage amplifier is on the AC option, the other is on the DC option.
|
||||
|
||||
*Measurements*:
|
||||
First measurement (=mat/data_014.mat= file):
|
||||
| Column | Signal |
|
||||
|--------+----------------------------|
|
||||
| 1 | Amplifier 1 with AC option |
|
||||
| 2 | Amplifier 2 with DC option |
|
||||
| 3 | Time |
|
||||
|
||||
Second measurement (=mat/data_015.mat= file):
|
||||
| Column | Signal |
|
||||
|--------+----------------------------|
|
||||
| 1 | Amplifier 1 with DC option |
|
||||
| 2 | Amplifier 2 with AC option |
|
||||
| 3 | Time |
|
||||
|
||||
#+name: fig:volt_amp_setup
|
||||
#+caption: Picture of the two voltages amplifiers
|
||||
#+attr_html: :width 500px
|
||||
[[file:./img/IMG_20190503_170936.jpg]]
|
||||
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
** Load data
|
||||
We load the data of the z axis of two geophones.
|
||||
#+begin_src matlab :results none
|
||||
meas14 = load('mat/data_014.mat', 'data'); meas14 = meas14.data;
|
||||
meas15 = load('mat/data_015.mat', 'data'); meas15 = meas15.data;
|
||||
#+end_src
|
||||
|
||||
** Time Domain
|
||||
The signals are shown on figure [[fig:ac_dc_option_time]].
|
||||
#+begin_src matlab :results none :exports none
|
||||
figure;
|
||||
hold on;
|
||||
plot(meas14(:, 3), meas14(:, 1), 'DisplayName', 'Amp1 - AC');
|
||||
plot(meas14(:, 3), meas14(:, 2), 'DisplayName', 'Amp2 - DC');
|
||||
plot(meas15(:, 3), meas15(:, 1), 'DisplayName', 'Amp1 - DC');
|
||||
plot(meas15(:, 3), meas15(:, 2), 'DisplayName', 'Amp2 - AC');
|
||||
hold off;
|
||||
legend('Location', 'bestoutside');
|
||||
xlabel('Time [s]');
|
||||
ylabel('Voltage [V]');
|
||||
xlim([0, 100]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:ac_dc_option_time
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/ac_dc_option_time.pdf" :var figsize="full-normal" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:ac_dc_option_time
|
||||
#+CAPTION: Comparison of the signals going through the Voltage amplifiers
|
||||
#+RESULTS: fig:ac_dc_option_time
|
||||
[[file:figs/ac_dc_option_time.png]]
|
||||
|
||||
** Frequency Domain
|
||||
We first compute some parameters that will be used for the PSD computation.
|
||||
#+begin_src matlab :results none
|
||||
dt = meas14(2, 3)-meas14(1, 3);
|
||||
|
||||
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
|
||||
[pxamp1ac, f] = pwelch(meas14(:, 1), win, [], [], Fs);
|
||||
[pxamp2dc, ~] = pwelch(meas14(:, 2), win, [], [], Fs);
|
||||
|
||||
[pxamp1dc, ~] = pwelch(meas15(:, 1), win, [], [], Fs);
|
||||
[pxamp2ac, ~] = pwelch(meas15(:, 2), win, [], [], Fs);
|
||||
#+end_src
|
||||
|
||||
The ASD of the signals are compare on figure [[fig:ac_dc_option_asd]].
|
||||
#+begin_src matlab :results none :exports none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(pxamp1ac), 'DisplayName', 'Amp1 - AC');
|
||||
plot(f, sqrt(pxamp2dc), 'DisplayName', 'Amp2 - DC');
|
||||
plot(f, sqrt(pxamp1dc), 'DisplayName', 'Amp1 - DC');
|
||||
plot(f, sqrt(pxamp2ac), 'DisplayName', 'Amp2 - AC');
|
||||
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]$')
|
||||
legend('Location', 'northeast');
|
||||
xlim([0.1, 500]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:ac_dc_option_asd
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/ac_dc_option_asd.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:ac_dc_option_asd
|
||||
#+CAPTION: Amplitude Spectral Density of the measured signals
|
||||
#+RESULTS: fig:ac_dc_option_asd
|
||||
[[file:figs/ac_dc_option_asd.png]]
|
||||
|
||||
** Conclusion
|
||||
#+begin_important
|
||||
- The voltage amplifiers include some very sharp high pass filters at 1.5Hz (maybe 4th order)
|
||||
- There is a DC offset on the time domain signal because the DC-offset knob was not set to zero
|
||||
#+end_important
|
||||
|
||||
* Transfer function of the Low Pass Filter
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle low_pass_filter_measurements.m
|
||||
:header-args:matlab+: :comments org :mkdirp yes
|
||||
:END:
|
||||
|
||||
#+begin_src bash :exports none :results none
|
||||
if [ low_pass_filter_measurements.m -nt data/low_pass_filter_measurements.zip ]; then
|
||||
zip data/low_pass_filter_measurements \
|
||||
mat/data_018.mat \
|
||||
mat/data_019.mat \
|
||||
low_pass_filter_measurements.m
|
||||
fi
|
||||
#+end_src
|
||||
|
||||
The computation files for this section are accessible [[file:data/low_pass_filter_measurements.zip][here]].
|
||||
|
||||
** First LPF with a Cut-off frequency of 160Hz
|
||||
*** Measurement Description
|
||||
*Goal*:
|
||||
- Measure the Low Pass Filter Transfer Function
|
||||
|
||||
The values of the components are:
|
||||
\begin{aligned}
|
||||
R &= 1k\Omega \\
|
||||
C &= 1\mu F
|
||||
\end{aligned}
|
||||
Which makes a cut-off frequency of $f_c = \frac{1}{RC} = 1000 rad/s = 160Hz$.
|
||||
|
||||
#+NAME: fig:lpf
|
||||
#+HEADER: :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/MEGA/These/LaTeX/}{config.tex}")
|
||||
#+HEADER: :imagemagick t :fit yes :iminoptions -scale 100% -density 150 :imoutoptions -quality 100
|
||||
#+HEADER: :results raw replace :buffer no :eval no-export :exports both :mkdirp yes
|
||||
#+HEADER: :output-dir figs
|
||||
#+begin_src latex :file lpf.pdf :post pdf2svg(file=*this*, ext="png") :exports both
|
||||
\begin{tikzpicture}
|
||||
\draw (0,2)
|
||||
to [R=\(R\)] ++(2,0) node[circ]
|
||||
to ++(2,0)
|
||||
++(-2,0)
|
||||
to [C=\(C\)] ++(0,-2) node[circ]
|
||||
++(-2,0)
|
||||
to ++(2,0)
|
||||
to ++(2,0)
|
||||
\end{tikzpicture}
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:lpf
|
||||
#+CAPTION: Schematic of the Low Pass Filter used
|
||||
#+RESULTS: fig:lpf
|
||||
[[file:figs/lpf.png]]
|
||||
|
||||
|
||||
*Setup*:
|
||||
- We are measuring the signal from from Geophone with a BNC T
|
||||
- On part goes to column 1 through the LPF
|
||||
- The other part goes to column 2 without the LPF
|
||||
|
||||
*Measurements*:
|
||||
=mat/data_018.mat=:
|
||||
| Column | Signal |
|
||||
|--------+----------------------|
|
||||
| 1 | Amplifier 1 with LPF |
|
||||
| 2 | Amplifier 2 |
|
||||
| 3 | Time |
|
||||
|
||||
#+name: fig:lpf_picture
|
||||
#+caption: Picture of the low pass filter used
|
||||
#+attr_html: :width 500px
|
||||
[[file:./img/IMG_20190507_102756.jpg]]
|
||||
|
||||
*** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
*** Load data
|
||||
We load the data of the z axis of two geophones.
|
||||
#+begin_src matlab :results none
|
||||
data = load('mat/data_018.mat', 'data'); data = data.data;
|
||||
#+end_src
|
||||
|
||||
*** Transfer function of the LPF
|
||||
We compute the transfer function from the signal without the LPF to the signal measured with the LPF.
|
||||
#+begin_src matlab :results none
|
||||
dt = data(2, 3)-data(1, 3);
|
||||
|
||||
Fs = 1/dt; % [Hz]
|
||||
|
||||
win = hanning(ceil(10*Fs));
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
[Glpf, f] = tfestimate(data(:, 2), data(:, 1), win, [], [], Fs);
|
||||
#+end_src
|
||||
|
||||
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]].
|
||||
#+begin_src matlab :results none
|
||||
Gth = 1/(1+s/1000)
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
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]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:Glpf_bode
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/Glpf_bode.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:Glpf_bode
|
||||
#+CAPTION: Bode Diagram of the measured Low Pass filter and the theoritical one
|
||||
#+RESULTS: fig:Glpf_bode
|
||||
[[file:figs/Glpf_bode.png]]
|
||||
*** Conclusion
|
||||
#+begin_important
|
||||
As we want to measure things up to $500Hz$, we chose to change the value of the capacitor to obtain a cut-off frequency of $1kHz$.
|
||||
#+end_important
|
||||
|
||||
** Second LPF with a Cut-off frequency of 1000Hz
|
||||
*** Measurement description
|
||||
This time, the value are
|
||||
\begin{aligned}
|
||||
R &= 1k\Omega \\
|
||||
C &= 150nF
|
||||
\end{aligned}
|
||||
Which makes a low pass filter with a cut-off frequency of $f_c = 1060Hz$.
|
||||
|
||||
*** Load data
|
||||
We load the data of the z axis of two geophones.
|
||||
#+begin_src matlab :results none
|
||||
data = load('mat/data_019.mat', 'data'); data = data.data;
|
||||
#+end_src
|
||||
|
||||
*** Transfer function of the LPF
|
||||
We compute the transfer function from the signal without the LPF to the signal measured with the LPF.
|
||||
#+begin_src matlab :results none
|
||||
dt = data(2, 3)-data(1, 3);
|
||||
|
||||
Fs = 1/dt; % [Hz]
|
||||
|
||||
win = hanning(ceil(10*Fs));
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
[Glpf, f] = tfestimate(data(:, 2), data(:, 1), win, [], [], Fs);
|
||||
#+end_src
|
||||
|
||||
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]].
|
||||
#+begin_src matlab :results none
|
||||
Gth = 1/(1+s/1060/2/pi);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none
|
||||
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]);
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:Glpf_bode_bis
|
||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/Glpf_bode_bis.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:Glpf_bode_bis
|
||||
#+CAPTION: Bode Diagram of the measured Low Pass filter and the theoritical one
|
||||
#+RESULTS: fig:Glpf_bode_bis
|
||||
[[file:figs/Glpf_bode_bis.png]]
|
||||
*** Conclusion
|
||||
#+begin_important
|
||||
The added LPF has the expected behavior.
|
||||
#+end_important
|
||||
|
@ -1,101 +0,0 @@
|
||||
% 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]);
|
@ -1,13 +1,12 @@
|
||||
% Matlab Init :noexport:ignore:
|
||||
|
||||
current_dir='/home/thomas/MEGA/These/meas/slip-ring-test/';
|
||||
%% Clear Workspace and Close figures
|
||||
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.
|
||||
|
@ -1,13 +1,12 @@
|
||||
% Matlab Init :noexport:ignore:
|
||||
|
||||
current_dir='/home/thomas/MEGA/These/meas/slip-ring-test/';
|
||||
%% Clear Workspace and Close figures
|
||||
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.
|
||||
|
57
slip-ring-test/matlab/meas_slip_ring_geophone.m
Normal file
@ -0,0 +1,57 @@
|
||||
% Matlab Init :noexport:ignore:
|
||||
|
||||
current_dir='/home/thomas/MEGA/These/meas/slip-ring-test/';
|
||||
%% Go to current Directory
|
||||
cd(current_dir);
|
||||
|
||||
%% Initialize ans with org-babel
|
||||
ans = 0;
|
||||
|
||||
%% Clear Workspace and Close figures
|
||||
clear; close all; clc;
|
||||
|
||||
%% Intialize Laplace variable
|
||||
s = zpk('s');
|
||||
|
||||
% Load data
|
||||
% We load the data of the z axis of two geophones.
|
||||
|
||||
|
||||
d8 = load('mat/data_018.mat', 'data'); d8 = d8.data;
|
||||
d9 = load('mat/data_019.mat', 'data'); d9 = d9.data;
|
||||
|
||||
% Analysis - Time Domain
|
||||
% First, we compare the time domain signals for the two experiments (figure [[fig:slipring_time]]).
|
||||
|
||||
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(d9(:, 3), d9(:, 2), 'DisplayName', 'Slip-Ring');
|
||||
plot(d8(:, 3), d8(:, 2), 'DisplayName', 'Wire');
|
||||
hold off;
|
||||
xlabel('Time [s]'); ylabel('Voltage [V]');
|
||||
xlim([0, 50]);
|
||||
legend('location', 'northeast');
|
||||
|
||||
% Analysis - Frequency Domain
|
||||
% We then compute the Power Spectral Density of the two signals and we compare them (figure [[fig:slipring_asd]]).
|
||||
|
||||
dt = d8(2, 3) - d8(1, 3);
|
||||
Fs = 1/dt;
|
||||
|
||||
win = hanning(ceil(1*Fs));
|
||||
|
||||
[pxx8, f] = pwelch(d8(:, 2), win, [], [], Fs);
|
||||
[pxx9, ~] = pwelch(d9(:, 2), win, [], [], Fs);
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(pxx9), 'DisplayName', 'Slip-Ring');
|
||||
plot(f, sqrt(pxx8), 'DisplayName', 'Wire');
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log');
|
||||
set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('Amplitude Spectral Density $\left[\frac{V}{\sqrt{Hz}}\right]$')
|
||||
xlim([1, 500]);
|
||||
legend('Location', 'southwest');
|
@ -1,13 +1,12 @@
|
||||
% Matlab Init :noexport:ignore:
|
||||
% Matlab Init :noexport:ignore:
|
||||
|
||||
current_dir='/home/thomas/MEGA/These/meas/slip-ring-test/';
|
||||
%% Clear Workspace and Close figures
|
||||
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.
|
||||
|
@ -1,66 +0,0 @@
|
||||
% 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.
|
||||
|
||||
meas14 = load('mat/data_014.mat', 'data'); meas14 = meas14.data;
|
||||
meas15 = load('mat/data_015.mat', 'data'); meas15 = meas15.data;
|
||||
|
||||
% Time Domain
|
||||
% The signals are shown on figure [[fig:ac_dc_option_time]].
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(meas14(:, 3), meas14(:, 1), 'DisplayName', 'Amp1 - AC');
|
||||
plot(meas14(:, 3), meas14(:, 2), 'DisplayName', 'Amp2 - DC');
|
||||
plot(meas15(:, 3), meas15(:, 1), 'DisplayName', 'Amp1 - DC');
|
||||
plot(meas15(:, 3), meas15(:, 2), 'DisplayName', 'Amp2 - AC');
|
||||
hold off;
|
||||
legend('Location', 'bestoutside');
|
||||
xlabel('Time [s]');
|
||||
ylabel('Voltage [V]');
|
||||
xlim([0, 100]);
|
||||
|
||||
% Frequency Domain
|
||||
% We first compute some parameters that will be used for the PSD computation.
|
||||
|
||||
dt = meas14(2, 3)-meas14(1, 3);
|
||||
|
||||
Fs = 1/dt; % [Hz]
|
||||
|
||||
win = hanning(ceil(10*Fs));
|
||||
|
||||
|
||||
|
||||
% Then we compute the Power Spectral Density using =pwelch= function.
|
||||
|
||||
[pxamp1ac, f] = pwelch(meas14(:, 1), win, [], [], Fs);
|
||||
[pxamp2dc, ~] = pwelch(meas14(:, 2), win, [], [], Fs);
|
||||
|
||||
[pxamp1dc, ~] = pwelch(meas15(:, 1), win, [], [], Fs);
|
||||
[pxamp2ac, ~] = pwelch(meas15(:, 2), win, [], [], Fs);
|
||||
|
||||
|
||||
|
||||
% The ASD of the signals are compare on figure [[fig:ac_dc_option_asd]].
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(pxamp1ac), 'DisplayName', 'Amp1 - AC');
|
||||
plot(f, sqrt(pxamp2dc), 'DisplayName', 'Amp2 - DC');
|
||||
plot(f, sqrt(pxamp1dc), 'DisplayName', 'Amp1 - DC');
|
||||
plot(f, sqrt(pxamp2ac), 'DisplayName', 'Amp2 - AC');
|
||||
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]$')
|
||||
legend('Location', 'northeast');
|
||||
xlim([0.1, 500]);
|
@ -1,74 +0,0 @@
|
||||
% Matlab Init :noexport:ignore:
|
||||
|
||||
clear; close all; clc;
|
||||
|
||||
%% Intialize Laplace variable
|
||||
s = zpk('s');
|
||||
|
||||
%% Initialize ans with org-babel
|
||||
ans = 0;
|
||||
|
||||
% Load data
|
||||
|
||||
amp_off = load('mat/data_003.mat', 'data'); amp_off = amp_off.data(:, [1,3]);
|
||||
amp_20d = load('mat/data_004.mat', 'data'); amp_20d = amp_20d.data(:, [1,3]);
|
||||
amp_40d = load('mat/data_005.mat', 'data'); amp_40d = amp_40d.data(:, [1,3]);
|
||||
amp_60d = load('mat/data_006.mat', 'data'); amp_60d = amp_60d.data(:, [1,3]);
|
||||
|
||||
% Time Domain
|
||||
% The time domain signals are shown on figure [[fig:ampli_noise_time]].
|
||||
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(amp_off(:, 2), amp_off(:, 1), 'DisplayName', 'OFF');
|
||||
plot(amp_20d(:, 2), amp_20d(:, 1), 'DisplayName', '20dB');
|
||||
plot(amp_40d(:, 2), amp_40d(:, 1), 'DisplayName', '40dB');
|
||||
plot(amp_60d(:, 2), amp_60d(:, 1), 'DisplayName', '60dB');
|
||||
hold off;
|
||||
legend('Location', 'northeast');
|
||||
xlabel('Time [s]');
|
||||
ylabel('Voltage [V]');
|
||||
|
||||
% Frequency Domain
|
||||
% We first compute some parameters that will be used for the PSD computation.
|
||||
|
||||
dt = amp_off(2, 2)-amp_off(1, 2);
|
||||
|
||||
Fs = 1/dt; % [Hz]
|
||||
|
||||
win = hanning(ceil(10*Fs));
|
||||
|
||||
|
||||
|
||||
% Then we compute the Power Spectral Density using =pwelch= function.
|
||||
|
||||
[pxoff, f] = pwelch(amp_off(:,1), win, [], [], Fs);
|
||||
[px20d, ~] = pwelch(amp_20d(:,1), win, [], [], Fs);
|
||||
[px40d, ~] = pwelch(amp_40d(:,1), win, [], [], Fs);
|
||||
[px60d, ~] = pwelch(amp_60d(:,1), win, [], [], Fs);
|
||||
|
||||
|
||||
|
||||
% We compute the theoretical ADC noise.
|
||||
|
||||
q = 20/2^16; % quantization
|
||||
Sq = q^2/12/1000; % PSD of the ADC noise
|
||||
|
||||
|
||||
|
||||
% Finally, the ASD is shown on figure [[fig:ampli_noise_psd]].
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(pxoff), 'DisplayName', 'OFF');
|
||||
plot(f, sqrt(px20d), 'DisplayName', '20dB');
|
||||
plot(f, sqrt(px40d), 'DisplayName', '40dB');
|
||||
plot(f, sqrt(px60d), 'DisplayName', '60dB');
|
||||
plot([0.1, 500], [sqrt(Sq), sqrt(Sq)], 'k--');
|
||||
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]$')
|
||||
legend('Location', 'northeast');
|
||||
xlim([0.1, 500]);
|
@ -1,54 +0,0 @@
|
||||
%%
|
||||
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('slip_ring_test');
|
||||
|
||||
%% 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/slip_ring_test/');
|
||||
mget(f, 'data_001.dat', 'data');
|
||||
close(f);
|
||||
|
||||
%%
|
||||
data = SimulinkRealTime.utils.getFileScopeData('data/data_001.dat').data;
|
||||
|
||||
%%
|
||||
n = 19;
|
||||
|
||||
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');
|
@ -1,7 +0,0 @@
|
||||
|
||||
%%
|
||||
% tg = slrt;
|
||||
% f = SimulinkRealTime.openFTP(tg);
|
||||
% cd(f, 'data/');
|
||||
% mkdir(f, 'disturbance-measurement');
|
||||
% close(f);
|
@ -78,9 +78,3 @@ Then, the =f= object can be used to access the filesystem on the target computer
|
||||
|
||||
* ELMO
|
||||
tutorials: https://www.elmomc.com/products/application-studio/easii/easii-tutorials/
|
||||
* Low Pass Filter
|
||||
|
||||
R = 1KOhm
|
||||
C = 1muF
|
||||
|
||||
Fc = 1kHz
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |