[WIP] Breaking Change - Use Update

Folder name is changed, rework the html templates
Change the organisation.
This commit is contained in:
2019-05-10 16:06:43 +02:00
parent 8d8c03773c
commit 6e3677eb29
162 changed files with 3800 additions and 582492 deletions

View 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'});

View File

@@ -1,3 +0,0 @@
*.tex
*.pdf
*.svg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 324 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 572 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

File diff suppressed because it is too large Load Diff

View File

@@ -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

View File

@@ -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]);

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -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.

View File

@@ -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.

View 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');

View File

@@ -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.

View File

@@ -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]);

View File

@@ -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]);

View File

@@ -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');

View File

@@ -1,7 +0,0 @@
%%
% tg = slrt;
% f = SimulinkRealTime.openFTP(tg);
% cd(f, 'data/');
% mkdir(f, 'disturbance-measurement');
% close(f);

Binary file not shown.