[WIP] Breaking Change - Use Update
Folder name is changed, rework the html templates Change the organisation.
@@ -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: 64 KiB |
Before Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 158 KiB |
Before Width: | Height: | Size: 172 KiB |
Before Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 144 KiB |
Before Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 324 KiB |
BIN
slip-ring-test/figs/slipring_asd.png
Normal file
After Width: | Height: | Size: 110 KiB |
Before Width: | Height: | Size: 572 KiB |
BIN
slip-ring-test/figs/slipring_time.png
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
slip-ring-test/img/IMG_20190430_112613.jpg
Normal file
After Width: | Height: | Size: 4.4 MiB |
BIN
slip-ring-test/img/IMG_20190430_112615.jpg
Normal file
After Width: | Height: | Size: 3.5 MiB |
Before Width: | Height: | Size: 4.5 MiB |
Before Width: | Height: | Size: 3.1 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);
|