#+TITLE: Measurements :DRAWER: #+STARTUP: overview #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: #+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 :PROPERTIES: :header-args:matlab+: :tangle meas_effect_sr.m :header-args:matlab+: :comments org :mkdirp yes :END: #+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 fi #+end_src The data and matlab files are accessible [[file:data/meas_effect_sr.zip][here]]. ** Measurement Description Random Signal is generated by one DAC of the SpeedGoat. The signal going out of the DAC is split into two: - one BNC cable is directly connected to one ADC of the SpeedGoat - one BNC cable goes two times in the Slip-Ring (from bottom to top and then from top to bottom) and then is connected to one ADC of the SpeedGoat Two measurements are done. | Data File | Description | |--------------------+-----------------------| | =mat/data_001.mat= | Slip-ring not turning | | =mat/data_002.mat= | Slip-ring turning | For each measurement, the measured signals are: | Data File | Description | |-----------+------------------------------------| | =t= | Time vector | | =x1= | Direct signal | | =x2= | Signal going through the Slip-Ring | 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 <> #+end_src ** Load data We load the data of the z axis of two geophones. #+begin_src matlab :results none sr_off = load('mat/data_001.mat', 't', 'x1', 'x2'); sr_on = load('mat/data_002.mat', 't', 'x1', 'x2'); #+end_src ** Analysis Let's first look at the signal produced by the DAC (figure [[fig:random_signal]]). #+begin_src matlab :results none figure; hold on; plot(sr_on.t, sr_on.x1); hold off; xlabel('Time [s]'); ylabel('Voltage [V]'); xlim([0 10]); #+end_src #+NAME: fig:random_signal #+HEADER: :tangle no :exports results :results value raw replace :noweb yes #+begin_src matlab :var filepath="figs/random_signal.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+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]]). #+begin_src matlab :results none 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'); #+end_src #+NAME: fig:slipring_comp_signals #+HEADER: :tangle no :exports results :results value raw replace :noweb yes #+begin_src matlab :var filepath="figs/slipring_comp_signals.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+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]] #+begin_src matlab :results none dt = sr_on.t(2) - sr_on.t(1); Fs = 1/dt; % [Hz] win = hanning(ceil(1*Fs)); #+end_src #+begin_src matlab :results none [pxx_on, f] = pwelch(sr_on.x1 - sr_on.x2, win, [], [], Fs); [pxx_off, ~] = pwelch(sr_off.x1 - sr_off.x2, win, [], [], Fs); #+end_src #+begin_src matlab :results none :exports none 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]) #+end_src #+NAME: fig:psd_noise #+HEADER: :tangle no :exports results :results value raw replace :noweb yes #+begin_src matlab :var filepath="figs/psd_noise.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+NAME: fig:psd_noise #+CAPTION: ASD of the measured noise #+RESULTS: fig:psd_noise [[file:figs/psd_noise.png]] ** 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) ? #+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 <> #+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") <> #+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") <> #+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+: :comments org :mkdirp yes :END: #+begin_src bash :exports none :results none if [ meas_slip_ring.m -nt data/meas_slip_ring.zip ]; then 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 fi #+end_src The data and matlab files are accessible [[file:data/meas_slip_ring.zip][here]]. ** Measurement Description *Goal*: - Determine the noise induced by the slip-ring *Setup*: - 0V is generated by the DAC of the Speedgoat - Using a T, one part goes directly to the ADC - The other part goes to the slip-ring 2 times and then to the ADC - The parameters of the Voltage Amplifier are: 80dB, AC, 1kHz - Every stage of the station is OFF First column: Direct measure Second column: Slip-ring measure *Measurements*: - =data_008=: Slip-Ring OFF - =data_009=: Slip-Ring ON - =data_010=: Slip-Ring ON and omega=6rpm - =data_011=: Slip-Ring ON and omega=60rpm #+name: fig:setup_sr_6rpm #+caption: Slip-Ring rotating at 6rpm [[file:./img/VID_20190503_160831.gif]] #+name: fig:setup_sr_60rpm #+caption: Slip-Ring rotating at 60rpm [[file:./img/VID_20190503_161401.gif]] ** 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 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; #+end_src ** 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]]); #+begin_src matlab :results none :exports none 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'); #+end_src #+NAME: fig:sr_direct_time #+HEADER: :tangle no :exports results :results value raw replace :noweb yes #+begin_src matlab :var filepath="figs/sr_direct_time.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+NAME: fig:sr_direct_time #+CAPTION: Direct measurement #+RESULTS: fig:sr_direct_time [[file:figs/sr_direct_time.png]] #+begin_src matlab :results none :exports none 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'); #+end_src #+NAME: fig:sr_slipring_time #+HEADER: :tangle no :exports results :results value raw replace :noweb yes #+begin_src matlab :var filepath="figs/sr_slipring_time.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+NAME: fig:sr_slipring_time #+CAPTION: Measurement of the signal going through the Slip-Ring #+RESULTS: fig:sr_slipring_time [[file:figs/sr_slipring_time.png]] ** 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); 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 [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); #+end_src And we plot the ASD of the measured signals (figure [[fig:sr_psd_compare]]); #+begin_src matlab :results none 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]); #+end_src #+NAME: fig:sr_psd_compare #+HEADER: :tangle no :exports results :results value raw replace :noweb yes #+begin_src matlab :var filepath="figs/sr_psd_compare.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+NAME: fig:sr_psd_compare #+CAPTION: Comparison of the ASD of the measured signals when the slip-ring is ON, OFF and turning #+RESULTS: fig:sr_psd_compare [[file:figs/sr_psd_compare.png]] ** Conclusion #+begin_important *Questions:* - Why is there some sharp peaks? Can this be due to aliasing? - It is possible that the amplifiers were saturating during the measurements => should redo the measurements with a low pass filter before the voltage amplifier #+end_important * 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+: :comments org :mkdirp yes :END: #+begin_src bash :exports none :results none if [ meas_sr_geophone.m -nt data/meas_sr_geophone.zip ]; then 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 fi #+end_src The data and matlab files are accessible [[file:data/meas_sr_geophone.zip][here]]. ** 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 same following settings: - AC - 60dB - 1kHz - The signal from the geophone is split into two using a T-BNC: - One part goes directly to the voltage amplifier and then to the ADC. - The other part goes to the slip-ring=>voltage amplifier=>ADC. First column: Direct measure Second column: Slip-ring measure *Measurements*: - =data_012=: Slip-Ring OFF - =data_013=: Slip-Ring ON *** 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 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 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 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]'); #+end_src #+NAME: fig:sr_geophone_time_off #+HEADER: :tangle no :exports results :results value raw replace :noweb yes #+begin_src matlab :var filepath="figs/sr_geophone_time_off.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+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]] #+begin_src matlab :results none :exports none 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]'); #+end_src #+NAME: fig:sr_geophone_time_on #+HEADER: :tangle no :exports results :results value raw replace :noweb yes #+begin_src matlab :var filepath="figs/sr_geophone_time_on.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+NAME: fig:sr_geophone_time_on #+CAPTION: Comparison of the time domain signals when the slip-ring is ON #+RESULTS: fig:sr_geophone_time_on [[file:figs/sr_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_off(2, 3)-sr_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 [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); #+end_src Finally, we compare the Amplitude Spectral Density of the signals (figure [[fig:sr_geophone_asd]]); #+begin_src matlab :results none 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]); #+end_src #+NAME: fig:sr_geophone_asd #+HEADER: :tangle no :exports results :results value raw replace :noweb yes #+begin_src matlab :var filepath="figs/sr_geophone_asd.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+NAME: fig:sr_geophone_asd #+CAPTION: Comparison of the Amplitude Spectral Sensity #+RESULTS: fig:sr_geophone_asd [[file:figs/sr_geophone_asd.png]] #+begin_src matlab :results none :exports none xlim([100, 500]); #+end_src #+NAME: fig:sr_geophone_asd_zoom #+HEADER: :tangle no :exports results :results value raw replace :noweb yes #+begin_src matlab :var filepath="figs/sr_geophone_asd_zoom.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+NAME: fig:sr_geophone_asd_zoom #+CAPTION: Comparison of the Amplitude Spectral Sensity - Zoom #+RESULTS: fig:sr_geophone_asd_zoom [[file:figs/sr_geophone_asd_zoom.png]] *** Conclusion #+begin_important - 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 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 <> #+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") <> #+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") <> #+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 <> #+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 ** 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") <> #+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