diff --git a/readme.org b/readme.org index dc4e153..bdb6857 100644 --- a/readme.org +++ b/readme.org @@ -76,6 +76,11 @@ Then, the =f= object can be used to access the filesystem on the target computer | rmdir | | | | close | | | - * ELMO tutorials: https://www.elmomc.com/products/application-studio/easii/easii-tutorials/ +* Low Pass Filter + +R = 1KOhm +C = 1muF + +Fc = 1kHz diff --git a/slip-ring-test/figs/Glpf_bode.png b/slip-ring-test/figs/Glpf_bode.png new file mode 100644 index 0000000..bfaa203 Binary files /dev/null and b/slip-ring-test/figs/Glpf_bode.png differ diff --git a/slip-ring-test/figs/ac_dc_option_time.png b/slip-ring-test/figs/ac_dc_option_time.png index 8879d06..4292164 100644 Binary files a/slip-ring-test/figs/ac_dc_option_time.png and b/slip-ring-test/figs/ac_dc_option_time.png differ diff --git a/slip-ring-test/figs/comp_with_without_lpf.png b/slip-ring-test/figs/comp_with_without_lpf.png new file mode 100644 index 0000000..2e9af1c Binary files /dev/null and b/slip-ring-test/figs/comp_with_without_lpf.png differ diff --git a/slip-ring-test/figs/lpf.png b/slip-ring-test/figs/lpf.png new file mode 100644 index 0000000..ee1a199 Binary files /dev/null and b/slip-ring-test/figs/lpf.png differ diff --git a/slip-ring-test/figs/sr_geophone_asd.png b/slip-ring-test/figs/sr_geophone_asd.png index 75fbaac..21c61c3 100644 Binary files a/slip-ring-test/figs/sr_geophone_asd.png and b/slip-ring-test/figs/sr_geophone_asd.png differ diff --git a/slip-ring-test/figs/sr_geophone_asd_zoom.png b/slip-ring-test/figs/sr_geophone_asd_zoom.png index 65955e9..7b10167 100644 Binary files a/slip-ring-test/figs/sr_geophone_asd_zoom.png and b/slip-ring-test/figs/sr_geophone_asd_zoom.png differ diff --git a/slip-ring-test/figs/sr_geophone_time_off.png b/slip-ring-test/figs/sr_geophone_time_off.png index 38efb87..e654205 100644 Binary files a/slip-ring-test/figs/sr_geophone_time_off.png and b/slip-ring-test/figs/sr_geophone_time_off.png differ diff --git a/slip-ring-test/figs/sr_geophone_time_on.png b/slip-ring-test/figs/sr_geophone_time_on.png index 33b7473..ad992bb 100644 Binary files a/slip-ring-test/figs/sr_geophone_time_on.png and b/slip-ring-test/figs/sr_geophone_time_on.png differ diff --git a/slip-ring-test/figs/sr_lpf_geophone_asd.png b/slip-ring-test/figs/sr_lpf_geophone_asd.png new file mode 100644 index 0000000..ea2f5e3 Binary files /dev/null and b/slip-ring-test/figs/sr_lpf_geophone_asd.png differ diff --git a/slip-ring-test/figs/sr_lpf_geophone_asd_zoom.png b/slip-ring-test/figs/sr_lpf_geophone_asd_zoom.png new file mode 100644 index 0000000..6959c18 Binary files /dev/null and b/slip-ring-test/figs/sr_lpf_geophone_asd_zoom.png differ diff --git a/slip-ring-test/figs/sr_lpf_geophone_time_off.png b/slip-ring-test/figs/sr_lpf_geophone_time_off.png new file mode 100644 index 0000000..9aa730c Binary files /dev/null and b/slip-ring-test/figs/sr_lpf_geophone_time_off.png differ diff --git a/slip-ring-test/figs/sr_lpf_geophone_time_on.png b/slip-ring-test/figs/sr_lpf_geophone_time_on.png new file mode 100644 index 0000000..a59ad8e Binary files /dev/null and b/slip-ring-test/figs/sr_lpf_geophone_time_on.png differ diff --git a/slip-ring-test/img/IMG_20190506_160420.jpg b/slip-ring-test/img/IMG_20190506_160420.jpg new file mode 100644 index 0000000..1afdc63 Binary files /dev/null and b/slip-ring-test/img/IMG_20190506_160420.jpg differ diff --git a/slip-ring-test/img/IMG_20190506_160438.jpg b/slip-ring-test/img/IMG_20190506_160438.jpg new file mode 100644 index 0000000..8791813 Binary files /dev/null and b/slip-ring-test/img/IMG_20190506_160438.jpg differ diff --git a/slip-ring-test/index.html b/slip-ring-test/index.html index e2ae377..e1b8a5f 100644 Binary files a/slip-ring-test/index.html and b/slip-ring-test/index.html differ diff --git a/slip-ring-test/index.org b/slip-ring-test/index.org index ee014aa..17f2fcf 100644 --- a/slip-ring-test/index.org +++ b/slip-ring-test/index.org @@ -25,10 +25,12 @@ :END: #+begin_src bash :exports none :results none - zip data/meas_effect_sr \ - mat/data_001.mat \ - mat/data_002.mat \ - meas_effect_sr.m + 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 + fi #+end_src The data and matlab files are accessible [[file:data/meas_effect_sr.zip][here]]. @@ -153,9 +155,9 @@ We now look at the difference between the signal directly measured by the ADC an ** Conclusion #+begin_note -*Remaining questions*: -- Should the measurement be redone using voltage amplifiers? -- Use higher rotation speed and measure for longer periods (to have multiple revolutions) ? + *Remaining questions*: + - 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: @@ -460,18 +462,21 @@ And we plot the ASD of the measured signals (figure [[fig:sr_psd_compare]]); 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 #+end_src The data and matlab files are accessible [[file:data/meas_sr_geophone.zip][here]]. -** Measurement Description +** First Measurement without LPF +*** Measurement Description *Goal*: - Determine if the noise induced by the slip-ring is a limiting factor when measuring the signal coming from a geophone *Setup*: - The geophone is located at the sample location -- The two Voltage amplifiers have the following settings: +- The two Voltage amplifiers have the same following settings: - AC - 60dB - 1kHz @@ -486,19 +491,19 @@ Second column: Slip-ring measure - =data_012=: Slip-Ring OFF - =data_013=: Slip-Ring ON -** Matlab Init :noexport:ignore: +*** Matlab Init :noexport:ignore: #+begin_src matlab :exports none :results silent :noweb yes <> #+end_src -** Load data +*** Load data We load the data of the z axis of two geophones. #+begin_src matlab :results none sr_off = load('mat/data_012.mat', 'data'); sr_off = sr_off.data; sr_on = load('mat/data_013.mat', 'data'); sr_on = sr_on.data; #+end_src -** Time Domain +*** Time Domain We compare the signal when the Slip-Ring is OFF (figure [[fig:sr_geophone_time_off]]) and when it is ON (figure [[fig:sr_geophone_time_on]]). #+begin_src matlab :results none :exports none @@ -545,7 +550,7 @@ We compare the signal when the Slip-Ring is OFF (figure [[fig:sr_geophone_time_o #+RESULTS: fig:sr_geophone_time_on [[file:figs/sr_geophone_time_on.png]] -** Frequency Domain +*** Frequency Domain We first compute some parameters that will be used for the PSD computation. #+begin_src matlab :results none dt = sr_off(2, 3)-sr_off(1, 3); @@ -566,7 +571,7 @@ Then we compute the Power Spectral Density using =pwelch= function. [pxsron, ~] = pwelch(sr_on(:, 2), win, [], [], Fs); #+end_src -Finally, we compare the Amplitude Spectral Density of the signals (figure [[]]); +Finally, we compare the Amplitude Spectral Density of the signals (figure [[fig:sr_geophone_asd]]); #+begin_src matlab :results none figure; @@ -609,10 +614,205 @@ Finally, we compare the Amplitude Spectral Density of the signals (figure [[]]); #+RESULTS: fig:sr_geophone_asd_zoom [[file:figs/sr_geophone_asd_zoom.png]] -** Conclusion +*** Conclusion #+begin_important -- When the slip-ring is OFF, it does not add any noise to the measurement -- When the slip-ring is ON, it adds significant noise to the signal + - The fact that the Slip-Ring is turned ON adds some noise to the signal. + - The signal going through the Slip-Ring is less noisy than the one going directly to the ADC. + - This could be due to less good electromagnetic isolation. + + *Questions*: + - Can the sharp peak on figure [[fig:sr_geophone_asd_zoom]] be due to the Aliasing? +#+end_important + +** Measurement using an oscilloscope +*** Measurement Setup +Know we are measuring the same signals but using an oscilloscope instead of the Speedgoat ADC. + +*** Observations +Then the Slip-Ring is ON (figure [[fig:oscilloscope_sr_on]]), we observe a signal at 40kHz with a peak-to-peak amplitude of 200mV for the direct measure and 100mV for the signal going through the Slip-Ring. + +Then the Slip-Ring is OFF, we don't observe this 40kHz anymore (figure [[fig:oscilloscope_sr_off]]). + +#+name: fig:oscilloscope_sr_on +#+caption: Signals measured by the oscilloscope - Slip-Ring ON - Yellow: Direct measure - Blue: Through Slip-Ring +#+attr_html: :width 500px +[[file:./img/IMG_20190506_160420.jpg]] + +#+name: fig:oscilloscope_sr_off +#+caption: Signals measured by the oscilloscope - Slip-Ring OFF - Yellow: Direct measure - Blue: Through Slip-Ring +#+attr_html: :width 500px +[[file:./img/IMG_20190506_160438.jpg]] + +*** Conclusion +#+begin_important + - By looking at the signals using an oscilloscope, there is a lot of high frequency noise when turning on the Slip-Ring + - This can eventually saturate the voltage amplifiers (seen by a led indicating saturation) + - The choice is to add a Low pass filter before the voltage amplifiers to not saturate them and filter the noise. +#+end_important + +** New measurements with a LPF before the Voltage Amplifiers +*** Setup description +A first order low pass filter is added before the Voltage Amplifiers with the following values: +\begin{aligned} + R &= 1k\Omega \\ + C &= 1\mu F +\end{aligned} + +And we have a cut-off frequency of $f_c = \frac{1}{RC} = 160Hz$. + +We are measuring the signal from a geophone put on the marble with and without the added LPF: +- with the slip ring OFF: =mat/data_016.mat= +- with the slip ring ON: =mat/data_017.mat= + +*** Load data +We load the data of the z axis of two geophones. +#+begin_src matlab :results none + sr_lpf_off = load('mat/data_016.mat', 'data'); sr_lpf_off = sr_lpf_off.data; + sr_lpf_on = load('mat/data_017.mat', 'data'); sr_lpf_on = sr_lpf_on.data; +#+end_src + +*** Time Domain +We compare the signal when the Slip-Ring is OFF (figure [[fig:sr_lpf_geophone_time_off]]) and when it is ON (figure [[fig:sr_lpf_geophone_time_on]]). + +#+begin_src matlab :results none :exports none + figure; + hold on; + plot(sr_lpf_off(:, 3), sr_lpf_off(:, 1), 'DisplayName', 'Direct'); + plot(sr_lpf_off(:, 3), sr_lpf_off(:, 2), 'DisplayName', 'Slip-Ring'); + hold off; + legend('Location', 'northeast'); + xlabel('Time [s]'); + ylabel('Voltage [V]'); +#+end_src + +#+NAME: fig:sr_lpf_geophone_time_off +#+HEADER: :tangle no :exports results :results value raw replace :noweb yes +#+begin_src matlab :var filepath="figs/sr_lpf_geophone_time_off.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:sr_lpf_geophone_time_off +#+CAPTION: Comparison of the time domain signals when the slip-ring is OFF +#+RESULTS: fig:sr_lpf_geophone_time_off +[[file:figs/sr_lpf_geophone_time_off.png]] + +#+begin_src matlab :results none :exports none + figure; + hold on; + plot(sr_lpf_on(:, 3), sr_lpf_on(:, 1), 'DisplayName', 'Direct'); + plot(sr_lpf_on(:, 3), sr_lpf_on(:, 2), 'DisplayName', 'Slip-Ring'); + hold off; + legend('Location', 'northeast'); + xlabel('Time [s]'); + ylabel('Voltage [V]'); +#+end_src + +#+NAME: fig:sr_lpf_geophone_time_on +#+HEADER: :tangle no :exports results :results value raw replace :noweb yes +#+begin_src matlab :var filepath="figs/sr_lpf_geophone_time_on.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:sr_lpf_geophone_time_on +#+CAPTION: Comparison of the time domain signals when the slip-ring is ON +#+RESULTS: fig:sr_lpf_geophone_time_on +[[file:figs/sr_lpf_geophone_time_on.png]] + +*** Frequency Domain +We first compute some parameters that will be used for the PSD computation. +#+begin_src matlab :results none + dt = sr_lpf_off(2, 3)-sr_lpf_off(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 + % Direct measure + [pxd_lpf_off, ~] = pwelch(sr_lpf_off(:, 1), win, [], [], Fs); + [pxd_lpf_on, ~] = pwelch(sr_lpf_on(:, 1), win, [], [], Fs); + + % Slip-Ring measure + [pxsr_lpf_off, f] = pwelch(sr_lpf_off(:, 2), win, [], [], Fs); + [pxsr_lpf_on, ~] = pwelch(sr_lpf_on(:, 2), win, [], [], Fs); +#+end_src + +Finally, we compare the Amplitude Spectral Density of the signals (figure [[fig:sr_lpf_geophone_asd]]); + +#+begin_src matlab :results none + figure; + hold on; + plot(f, sqrt(pxd_lpf_off), 'DisplayName', 'Direct - OFF'); + plot(f, sqrt(pxsr_lpf_off), 'DisplayName', 'Slip-Ring - OFF'); + plot(f, sqrt(pxd_lpf_on), 'DisplayName', 'Direct - ON'); + plot(f, sqrt(pxsr_lpf_on), 'DisplayName', 'Slip-Ring - ON'); + 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:sr_lpf_geophone_asd +#+HEADER: :tangle no :exports results :results value raw replace :noweb yes +#+begin_src matlab :var filepath="figs/sr_lpf_geophone_asd.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:sr_lpf_geophone_asd +#+CAPTION: Comparison of the Amplitude Spectral Sensity +#+RESULTS: fig:sr_lpf_geophone_asd +[[file:figs/sr_lpf_geophone_asd.png]] + +#+begin_src matlab :results none :exports none + xlim([100, 500]); +#+end_src + +#+NAME: fig:sr_lpf_geophone_asd_zoom +#+HEADER: :tangle no :exports results :results value raw replace :noweb yes +#+begin_src matlab :var filepath="figs/sr_lpf_geophone_asd_zoom.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:sr_lpf_geophone_asd_zoom +#+CAPTION: Comparison of the Amplitude Spectral Sensity - Zoom +#+RESULTS: fig:sr_lpf_geophone_asd_zoom +[[file:figs/sr_lpf_geophone_asd_zoom.png]] + +*** Comparison of with and without LPF +#+begin_src matlab :results none + figure; + hold on; + plot(f, sqrt(pxdon), 'DisplayName', 'Direct - ON'); + plot(f, sqrt(pxsron), 'DisplayName', 'Slip-Ring - ON'); + plot(f, sqrt(pxd_lpf_on), 'DisplayName', 'Direct - ON - LPF'); + plot(f, sqrt(pxsr_lpf_on), 'DisplayName', 'Slip-Ring - ON - LPF'); + 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:comp_with_without_lpf +#+HEADER: :tangle no :exports results :results value raw replace :noweb yes +#+begin_src matlab :var filepath="figs/comp_with_without_lpf.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:comp_with_without_lpf +#+CAPTION: Comparison of the measured signals with and without LPF +#+RESULTS: fig:comp_with_without_lpf +[[file:figs/comp_with_without_lpf.png]] + +*** Conclusion +#+begin_important + - Using the LPF, we don't have any perturbation coming from the slip-ring when it is on. + - However, we will 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 @@ -681,7 +881,7 @@ The signals are shown on figure [[fig:ac_dc_option_time]]. plot(meas15(:, 3), meas15(:, 1), 'DisplayName', 'Amp1 - DC'); plot(meas15(:, 3), meas15(:, 2), 'DisplayName', 'Amp2 - AC'); hold off; - legend('Location', 'northeast'); + legend('Location', 'bestoutside'); xlabel('Time [s]'); ylabel('Voltage [V]'); xlim([0, 100]); @@ -689,7 +889,7 @@ The signals are shown on figure [[fig:ac_dc_option_time]]. #+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="wide-normal" :post pdf2svg(file=*this*, ext="png") +#+begin_src matlab :var filepath="figs/ac_dc_option_time.pdf" :var figsize="full-normal" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -746,5 +946,138 @@ The ASD of the signals are compare on figure [[fig:ac_dc_option_asd]]. ** 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 + *Questions*: + - What option should be used for the measurements? #+end_important + +* Measure of the Low Pass Filter +** 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) node[circ] + to [R=\(R\)] ++(2,0) + to ++(2,0) node[circ] + ++(-2,0) node[circ] + to [C=\(C\)] ++(0,-2) + ++(-2,0) node[circ] + to ++(2,0) node[circ] + to ++(2,0) node[circ]; + \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 | + +** Matlab Init :noexport:ignore: +#+begin_src matlab :exports none :results silent :noweb yes + <> +#+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") + <> +#+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 + +** TODO Low Pass Filter with a cut-off frequency of 1kHz +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$. diff --git a/slip-ring-test/meas_effect_sr.m b/slip-ring-test/meas_effect_sr.m new file mode 100644 index 0000000..3276b06 --- /dev/null +++ b/slip-ring-test/meas_effect_sr.m @@ -0,0 +1,71 @@ +% 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. + +sr_off = load('mat/data_001.mat', 't', 'x1', 'x2'); +sr_on = load('mat/data_002.mat', 't', 'x1', 'x2'); + +% Analysis +% Let's first look at the signal produced by the DAC (figure [[fig:random_signal]]). + + +figure; +hold on; +plot(sr_on.t, sr_on.x1); +hold off; +xlabel('Time [s]'); ylabel('Voltage [V]'); +xlim([0 10]); + + + +% #+NAME: fig:random_signal +% #+CAPTION: Random signal produced by the DAC +% #+RESULTS: fig:random_signal +% [[file:figs/random_signal.png]] + +% We now look at the difference between the signal directly measured by the ADC and the signal that goes through the slip-ring (figure [[fig:slipring_comp_signals]]). + + +figure; +hold on; +plot(sr_on.t, sr_on.x1 - sr_on.x2, 'DisplayName', 'Slip-Ring - $\omega = 1rpm$'); +plot(sr_off.t, sr_off.x1 - sr_off.x2,'DisplayName', 'Slip-Ring off'); +hold off; +xlabel('Time [s]'); ylabel('Voltage [V]'); +xlim([0 10]); +legend('Location', 'northeast'); + + + +% #+NAME: fig:slipring_comp_signals +% #+CAPTION: Alteration of the signal when the slip-ring is turning +% #+RESULTS: fig:slipring_comp_signals +% [[file:figs/slipring_comp_signals.png]] + + +dt = sr_on.t(2) - sr_on.t(1); +Fs = 1/dt; % [Hz] + +win = hanning(ceil(1*Fs)); + +[pxx_on, f] = pwelch(sr_on.x1 - sr_on.x2, win, [], [], Fs); +[pxx_off, ~] = pwelch(sr_off.x1 - sr_off.x2, win, [], [], Fs); + +figure; +hold on; +plot(f, sqrt(pxx_on), 'DisplayName', 'Slip-Ring - $\omega = 1rpm$'); +plot(f, sqrt(pxx_off),'DisplayName', 'Slip-Ring off'); +hold off; +set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); +xlabel('Frequency [Hz]'); ylabel('PSD $\left[\frac{V}{\sqrt{Hz}}\right]$'); +legend('Location', 'northeast'); +xlim([1, 500]); ylim([1e-5, 1e-3]) diff --git a/slip-ring-test/meas_noise_ac_dc.m b/slip-ring-test/meas_noise_ac_dc.m new file mode 100644 index 0000000..b2f93bd --- /dev/null +++ b/slip-ring-test/meas_noise_ac_dc.m @@ -0,0 +1,66 @@ +% 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]); diff --git a/slip-ring-test/meas_slip_ring.m b/slip-ring-test/meas_slip_ring.m new file mode 100644 index 0000000..b4296c4 --- /dev/null +++ b/slip-ring-test/meas_slip_ring.m @@ -0,0 +1,88 @@ +% 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. + +sr_off = load('mat/data_008.mat', 'data'); sr_off = sr_off.data; +sr_on = load('mat/data_009.mat', 'data'); sr_on = sr_on.data; +sr_6r = load('mat/data_010.mat', 'data'); sr_6r = sr_6r.data; +sr_60r = load('mat/data_011.mat', 'data'); sr_60r = sr_60r.data; + +% Time Domain +% We plot the time domain data for the direct measurement (figure [[fig:sr_direct_time]]) and for the signal going through the slip-ring (figure [[fig:sr_slipring_time]]); + + +figure; +hold on; +plot(sr_60r(:, 3), sr_60r(:, 1), 'DisplayName', '60rpm'); +plot(sr_6r(:, 3), sr_6r(:, 1), 'DisplayName', '6rpm'); +plot(sr_on(:, 3), sr_on(:, 1), 'DisplayName', 'ON'); +plot(sr_off(:, 3), sr_off(:, 1), 'DisplayName', 'OFF'); +hold off; +xlabel('Time [s]'); ylabel('Voltage [V]'); +legend('Location', 'northeast'); + + + +% #+NAME: fig:sr_direct_time +% #+CAPTION: Direct measurement +% #+RESULTS: fig:sr_direct_time +% [[file:figs/sr_direct_time.png]] + + + +figure; +hold on; +plot(sr_60r(:, 3), sr_60r(:, 2), 'DisplayName', '60rpm'); +plot(sr_6r(:, 3), sr_6r(:, 2), 'DisplayName', '6rpm'); +plot(sr_on(:, 3), sr_on(:, 2), 'DisplayName', 'ON'); +plot(sr_off(:, 3), sr_off(:, 2), 'DisplayName', 'OFF'); +hold off; +xlabel('Time [s]'); ylabel('Voltage [V]'); +legend('Location', 'northeast'); + +% Frequency Domain +% We first compute some parameters that will be used for the PSD computation. + +dt = sr_off(2, 3)-sr_off(1, 3); + +Fs = 1/dt; % [Hz] + +win = hanning(ceil(10*Fs)); + + + +% Then we compute the Power Spectral Density using =pwelch= function. + +[pxdir, f] = pwelch(sr_off(:, 1), win, [], [], Fs); +[pxoff, ~] = pwelch(sr_off(:, 2), win, [], [], Fs); +[pxon, ~] = pwelch(sr_on(:, 2), win, [], [], Fs); +[px6r, ~] = pwelch(sr_6r(:, 2), win, [], [], Fs); +[px60r, ~] = pwelch(sr_60r(:, 2), win, [], [], Fs); + + + +% And we plot the ASD of the measured signals (figure [[fig:sr_psd_compare]]); + + +figure; +hold on; +plot(f, sqrt(pxoff), 'DisplayName', 'OFF'); +plot(f, sqrt(pxon), 'DisplayName', 'ON'); +plot(f, sqrt(px6r), 'DisplayName', '6rpm'); +plot(f, sqrt(px60r), 'DisplayName', '60rpm'); +plot(f, sqrt(pxdir), 'k-', 'DisplayName', 'Direct'); +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]); diff --git a/slip-ring-test/meas_sr_geophone.m b/slip-ring-test/meas_sr_geophone.m new file mode 100644 index 0000000..844a27b --- /dev/null +++ b/slip-ring-test/meas_sr_geophone.m @@ -0,0 +1,194 @@ +% 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. + +sr_off = load('mat/data_012.mat', 'data'); sr_off = sr_off.data; +sr_on = load('mat/data_013.mat', 'data'); sr_on = sr_on.data; + +% Time Domain +% We compare the signal when the Slip-Ring is OFF (figure [[fig:sr_geophone_time_off]]) and when it is ON (figure [[fig:sr_geophone_time_on]]). + + +figure; +hold on; +plot(sr_off(:, 3), sr_off(:, 1), 'DisplayName', 'Direct'); +plot(sr_off(:, 3), sr_off(:, 2), 'DisplayName', 'Slip-Ring'); +hold off; +legend('Location', 'northeast'); +xlabel('Time [s]'); +ylabel('Voltage [V]'); + + + +% #+NAME: fig:sr_geophone_time_off +% #+CAPTION: Comparison of the time domain signals when the slip-ring is OFF +% #+RESULTS: fig:sr_geophone_time_off +% [[file:figs/sr_geophone_time_off.png]] + + +figure; +hold on; +plot(sr_on(:, 3), sr_on(:, 1), 'DisplayName', 'Direct'); +plot(sr_on(:, 3), sr_on(:, 2), 'DisplayName', 'Slip-Ring'); +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 = sr_off(2, 3)-sr_off(1, 3); + +Fs = 1/dt; % [Hz] + +win = hanning(ceil(10*Fs)); + + + +% Then we compute the Power Spectral Density using =pwelch= function. + +% Direct measure +[pxdoff, ~] = pwelch(sr_off(:, 1), win, [], [], Fs); +[pxdon, ~] = pwelch(sr_on(:, 1), win, [], [], Fs); + +% Slip-Ring measure +[pxsroff, f] = pwelch(sr_off(:, 2), win, [], [], Fs); +[pxsron, ~] = pwelch(sr_on(:, 2), win, [], [], Fs); + + + +% Finally, we compare the Amplitude Spectral Density of the signals (figure [[fig:sr_geophone_asd]]); + + +figure; +hold on; +plot(f, sqrt(pxdoff), 'DisplayName', 'Direct - OFF'); +plot(f, sqrt(pxsroff), 'DisplayName', 'Slip-Ring - OFF'); +plot(f, sqrt(pxdon), 'DisplayName', 'Direct - ON'); +plot(f, sqrt(pxsron), 'DisplayName', 'Slip-Ring - ON'); +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]); + + + +% #+NAME: fig:sr_geophone_asd +% #+CAPTION: Comparison of the Amplitude Spectral Sensity +% #+RESULTS: fig:sr_geophone_asd +% [[file:figs/sr_geophone_asd.png]] + + +xlim([100, 500]); + +% Load data +% We load the data of the z axis of two geophones. + +sr_lpf_off = load('mat/data_016.mat', 'data'); sr_lpf_off = sr_lpf_off.data; +sr_lpf_on = load('mat/data_017.mat', 'data'); sr_lpf_on = sr_lpf_on.data; + +% Time Domain +% We compare the signal when the Slip-Ring is OFF (figure [[fig:sr_lpf_geophone_time_off]]) and when it is ON (figure [[fig:sr_lpf_geophone_time_on]]). + + +figure; +hold on; +plot(sr_lpf_off(:, 3), sr_lpf_off(:, 1), 'DisplayName', 'Direct'); +plot(sr_lpf_off(:, 3), sr_lpf_off(:, 2), 'DisplayName', 'Slip-Ring'); +hold off; +legend('Location', 'northeast'); +xlabel('Time [s]'); +ylabel('Voltage [V]'); + + + +% #+NAME: fig:sr_lpf_geophone_time_off +% #+CAPTION: Comparison of the time domain signals when the slip-ring is OFF +% #+RESULTS: fig:sr_lpf_geophone_time_off +% [[file:figs/sr_lpf_geophone_time_off.png]] + + +figure; +hold on; +plot(sr_lpf_on(:, 3), sr_lpf_on(:, 1), 'DisplayName', 'Direct'); +plot(sr_lpf_on(:, 3), sr_lpf_on(:, 2), 'DisplayName', 'Slip-Ring'); +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 = sr_lpf_off(2, 3)-sr_lpf_off(1, 3); + +Fs = 1/dt; % [Hz] + +win = hanning(ceil(10*Fs)); + + + +% Then we compute the Power Spectral Density using =pwelch= function. + +% Direct measure +[pxd_lpf_off, ~] = pwelch(sr_lpf_off(:, 1), win, [], [], Fs); +[pxd_lpf_on, ~] = pwelch(sr_lpf_on(:, 1), win, [], [], Fs); + +% Slip-Ring measure +[pxsr_lpf_off, f] = pwelch(sr_lpf_off(:, 2), win, [], [], Fs); +[pxsr_lpf_on, ~] = pwelch(sr_lpf_on(:, 2), win, [], [], Fs); + + + +% Finally, we compare the Amplitude Spectral Density of the signals (figure [[fig:sr_lpf_geophone_asd]]); + + +figure; +hold on; +plot(f, sqrt(pxd_lpf_off), 'DisplayName', 'Direct - OFF'); +plot(f, sqrt(pxsr_lpf_off), 'DisplayName', 'Slip-Ring - OFF'); +plot(f, sqrt(pxd_lpf_on), 'DisplayName', 'Direct - ON'); +plot(f, sqrt(pxsr_lpf_on), 'DisplayName', 'Slip-Ring - ON'); +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]); + + + +% #+NAME: fig:sr_lpf_geophone_asd +% #+CAPTION: Comparison of the Amplitude Spectral Sensity +% #+RESULTS: fig:sr_lpf_geophone_asd +% [[file:figs/sr_lpf_geophone_asd.png]] + + +xlim([100, 500]); + +% Comparison of with and without LPF + +figure; +hold on; +plot(f, sqrt(pxdon), 'DisplayName', 'Direct - ON'); +plot(f, sqrt(pxsron), 'DisplayName', 'Slip-Ring - ON'); +plot(f, sqrt(pxd_lpf_on), 'DisplayName', 'Direct - ON - LPF'); +plot(f, sqrt(pxsr_lpf_on), 'DisplayName', 'Slip-Ring - ON - LPF'); +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]); diff --git a/slip-ring-test/meas_volt_amp.m b/slip-ring-test/meas_volt_amp.m new file mode 100644 index 0000000..f4de099 --- /dev/null +++ b/slip-ring-test/meas_volt_amp.m @@ -0,0 +1,74 @@ +% 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]); diff --git a/slip-ring-test/readme.org b/slip-ring-test/readme.org index 217d3ca..4d0630c 100644 --- a/slip-ring-test/readme.org +++ b/slip-ring-test/readme.org @@ -68,9 +68,8 @@ Second column: DC - meas14: col-1 = amp1+AC. col-2 = amp2+DC. - meas15: col-1 = amp1+DC. col-2 = amp2+AC. - * Measurement of the LPF 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 -- meas18 \ No newline at end of file +- meas18