349 lines
14 KiB
Org Mode
349 lines
14 KiB
Org Mode
#+TITLE: Voltage Amplifier PD200 - Test Bench
|
|
:DRAWER:
|
|
#+LANGUAGE: en
|
|
#+EMAIL: dehaeze.thomas@gmail.com
|
|
#+AUTHOR: Dehaeze Thomas
|
|
|
|
#+HTML_LINK_HOME: ../index.html
|
|
#+HTML_LINK_UP: ../index.html
|
|
|
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
|
|
|
#+BIND: org-latex-image-default-option "scale=1"
|
|
#+BIND: org-latex-image-default-width ""
|
|
|
|
#+LaTeX_CLASS: scrreprt
|
|
#+LaTeX_CLASS_OPTIONS: [a4paper, 10pt, DIV=12, parskip=full]
|
|
#+LaTeX_HEADER_EXTRA: \input{preamble.tex}
|
|
|
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
|
#+PROPERTY: header-args:matlab+ :comments org
|
|
#+PROPERTY: header-args:matlab+ :exports both
|
|
#+PROPERTY: header-args:matlab+ :results none
|
|
#+PROPERTY: header-args:matlab+ :eval no-export
|
|
#+PROPERTY: header-args:matlab+ :noweb yes
|
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
|
|
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
|
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
|
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
|
#+PROPERTY: header-args:latex+ :results file raw replace
|
|
#+PROPERTY: header-args:latex+ :buffer no
|
|
#+PROPERTY: header-args:latex+ :tangle no
|
|
#+PROPERTY: header-args:latex+ :eval no-export
|
|
#+PROPERTY: header-args:latex+ :exports results
|
|
#+PROPERTY: header-args:latex+ :mkdirp yes
|
|
#+PROPERTY: header-args:latex+ :output-dir figs
|
|
#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png")
|
|
:END:
|
|
|
|
* Introduction
|
|
The goal of this test bench is to characterize the Voltage amplifier [[https://www.piezodrive.com/drivers/pd200-60-watt-voltage-amplifier/][PD200]] from PiezoDrive.
|
|
|
|
The documentation of the PD200 is accessible [[file:doc/PD200-V7-R1.pdf][here]].
|
|
|
|
#+name: fig:amplifier_PD200
|
|
#+caption: Picture of the PD200 Voltage Amplifier
|
|
#+attr_latex: :width 0.8\linewidth
|
|
[[file:figs/amplifier_PD200.png]]
|
|
|
|
* Voltage Amplifier Requirements
|
|
|
|
#+name: tab:voltage_amplifier_requirements
|
|
#+caption: Requirements for the Voltage Amplifier
|
|
#+attr_latex: :environment tabularx :width 0.5\linewidth :align lX
|
|
#+attr_latex: :center t :booktabs t :float t
|
|
| <l> | <c> |
|
|
| | *Specification* |
|
|
|--------------------------------+--------------------|
|
|
| Continuous Current | > 50 [mA] |
|
|
| Output Voltage Noise (1-200Hz) | < 2 [mV rms] |
|
|
| Voltage Input Range | +/- 10 [V] |
|
|
| Voltage Output Range | -20 [V] to 150 [V] |
|
|
| Small signal bandwidth (-3dB) | > 5 [kHz] |
|
|
|
|
* PD200 Expected characteristics
|
|
|
|
#+name: tab:pd200_characteristics
|
|
#+caption: Characteristics of the PD200
|
|
#+attr_latex: :environment tabularx :width \linewidth :align lXX
|
|
#+attr_latex: :center t :booktabs t :float t
|
|
| <l> | <c> | <c> |
|
|
| *Characteristics* | *Manual* | *Specification* |
|
|
|-------------------------------------+--------------+-----------------|
|
|
| Input Voltage Range | +/- 10 [V] | +/- 10 [V] |
|
|
| Output Voltage Range | -50/150 [V] | -20/150 [V] |
|
|
| Gain | 20 [V/V] | |
|
|
| Maximum RMS current | 0.9 [A] | > 50 [mA] |
|
|
| Maximum Pulse current | 10 [A] | |
|
|
| Slew Rate | 150 [V/us] | |
|
|
| Noise (10uF load) | 0.7 [mV RMS] | < 2 [mV rms] |
|
|
| Small Signal Bandwidth (10uF load) | 7.4 [kHz] | > 5 [kHz] |
|
|
| Large Signal Bandwidth (150V, 10uF) | 300 [Hz] | |
|
|
|
|
For a load capacitance of $10\,\mu F$, the expected $-3\,dB$ bandwidth is $6.4\,kHz$ (Figure [[fig:pd200_expected_small_signal_bandwidth]]) and the low frequency noise is $650\,\mu V\,\text{rms}$ (Figure [[fig:pd200_expected_noise]]).
|
|
|
|
#+name: fig:pd200_expected_small_signal_bandwidth
|
|
#+caption:Expected small signal bandwidth
|
|
#+attr_latex: :width 0.8\linewidth
|
|
[[file:./figs/pd200_expected_small_signal_bandwidth.png]]
|
|
|
|
#+name: fig:pd200_expected_noise
|
|
#+caption: Expected Low frequency noise from 0.03Hz to 20Hz
|
|
#+attr_latex: :width 0.8\linewidth
|
|
[[file:figs/pd200_expected_noise.png]]
|
|
|
|
* Voltage Amplifier Model
|
|
The Amplifier is characterized by its dynamics $G_a(s)$ from voltage inputs $V_{in}$ to voltage output $V_{out}$.
|
|
Ideally, the gain from $V_{in}$ to $V_{out}$ is constant over a wide frequency band with very small phase drop.
|
|
|
|
It is also characterized by its output noise $n$.
|
|
This noise is described by its Power Spectral Density.
|
|
|
|
The objective is therefore to determine the transfer function $G_a(s)$ from the input voltage to the output voltage as well as the Power Spectral Density $S_n(\omega)$ of the amplifier output noise.
|
|
|
|
As both $G_a$ and $S_n$ depends on the load capacitance, they should be measured when loading the amplifier with a $\SI{10}{\micro\farad}$ capacitor.
|
|
|
|
#+begin_src latex :file pd200-model-schematic.pdf
|
|
\begin{tikzpicture}
|
|
\node[block] (G) at (0,0){$G_a(s)$};
|
|
\node[addb, right=0.8 of G] (add){};
|
|
|
|
\draw[<-] (G.west) -- ++(-1.2, 0) node[above right]{$V_{in}$};
|
|
\draw[->] (G.east) -- (add.west);
|
|
\draw[->] (add.east) -- ++(1.2, 0) node[above left]{$V_{out}$};
|
|
\draw[<-] (add.north) -- ++(0, 0.6) node[below right](n){$n$};
|
|
|
|
\begin{scope}[on background layer]
|
|
\node[fit={(G.south west) (n.north-|add.east)}, inner sep=8pt, draw, dashed, fill=black!20!white] (P) {};
|
|
\node[below] at (P.north) {PD-200};
|
|
\end{scope}
|
|
\end{tikzpicture}
|
|
#+end_src
|
|
|
|
#+name: fig:pd200-model-schematic
|
|
#+caption: Model of the voltage amplifier
|
|
#+RESULTS:
|
|
[[file:figs/pd200-model-schematic.png]]
|
|
|
|
* Noise measurement
|
|
** Setup
|
|
#+begin_note
|
|
Here are the documentation of the equipment used for this test bench:
|
|
- Voltage Amplifier [[file:doc/PD200-V7-R1.pdf][PD200]]
|
|
- Load Capacitor [[file:doc/0900766b815ea422.pdf][EPCOS 10uF Multilayer Ceramic Capacitor]]
|
|
- Low Noise Voltage Amplifier [[file:doc/egg-5113-preamplifier.pdf][EG&G 5113]]
|
|
- Speedgoat ADC [[file:doc/IO131-OEM-Datasheet.pdf][IO313]]
|
|
#+end_note
|
|
|
|
The output noise of the voltage amplifier PD200 is foreseen to be around 1mV rms in a bandwidth from DC to 1MHz.
|
|
If we suppose a white noise, this correspond to an amplitude spectral density:
|
|
\begin{equation}
|
|
\phi_{n} \approx \frac{1\,mV}{\sqrt{1\,MHz}} = 1 \frac{\mu V}{\sqrt{Hz}}
|
|
\end{equation}
|
|
|
|
The RMS noise begin very small compare to the ADC resolution, we must amplify the noise before digitizing the signal.
|
|
The added noise of the instrumentation amplifier should be much smaller than the noise of the PD200.
|
|
We use the amplifier EG&G 5113 that has a noise of $\approx 4 nV/\sqrt{Hz}$ referred to its input which is much smaller than the noise induced by the PD200.
|
|
|
|
The gain of the low-noise amplifier can be increased until the full range of the ADC is used.
|
|
This gain should be around 1000.
|
|
|
|
#+name: fig:setup-noise-measurement
|
|
#+caption: Schematic of the test bench to measure the Power Spectral Density of the Voltage amplifier noise $n$
|
|
#+attr_latex: :width \linewidth
|
|
[[file:figs/setup-noise-measurement.png]]
|
|
|
|
A low pass filter at 10kHz can be included in the EG&G amplifier in order to limit aliasing.
|
|
An high pass filter at low frequency can be added if there is a problem of large offset.
|
|
|
|
** Results
|
|
*** 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
|
|
|
|
#+begin_src matlab :tangle no
|
|
addpath('./matlab/mat/');
|
|
addpath('./matlab/');
|
|
#+end_src
|
|
|
|
#+begin_src matlab :eval no
|
|
addpath('./mat/');
|
|
#+end_src
|
|
|
|
*** Noise when shunting the input (50 Ohms)
|
|
|
|
#+begin_src matlab :exports none
|
|
%% Load all the measurements
|
|
pd200 = {};
|
|
for i = 1:7
|
|
pd200(i) = {load(['mat/noise_PD200_' num2str(i) '.mat'], 't', 'Vn', 'notes')};
|
|
end
|
|
|
|
%% Take into account the pre-amplifier gain
|
|
for i = 1:7
|
|
pd200{i}.Vn = pd200{i}.Vn/pd200{i}.notes.pre_amp.gain;
|
|
end
|
|
#+end_src
|
|
|
|
The time domain measurements of the amplifier noise are shown in Figure [[fig:noise_shunt_time_3uF]].
|
|
|
|
#+begin_src matlab :exports none
|
|
figure;
|
|
hold on;
|
|
for i = 1:7
|
|
plot(pd200{i}.t, 1e3*pd200{i}.Vn)
|
|
end
|
|
hold off;
|
|
xlabel('Time [s]');
|
|
ylabel('Voltage [mV]');
|
|
#+end_src
|
|
|
|
#+begin_src matlab :tangle no :exports results :results file replace
|
|
exportFig('figs/noise_shunt_time_3uF.pdf', 'width', 'wide', 'height', 'normal');
|
|
#+end_src
|
|
|
|
#+name: fig:noise_shunt_time_3uF
|
|
#+caption: Time domain measurement of the amplifier output noise
|
|
#+RESULTS:
|
|
[[file:figs/noise_shunt_time_3uF.png]]
|
|
|
|
Obtained low frequency (0.1Hz - 20Hz) noise is shown in Figure [[fig:low_noise_time_domain_3uF]] which is very similar to the noise shown in the documentation (Figure [[fig:pd200_expected_noise]]).
|
|
|
|
#+begin_src matlab :exports none
|
|
figure;
|
|
hold on;
|
|
plot(pd200{1}.t, lsim(1/(1 + s/2/pi/20), 1e3*pd200{1}.Vn, pd200{1}.t))
|
|
hold off;
|
|
xlabel('Time [s]');
|
|
ylabel('Voltage [mV]');
|
|
xlim([0, 40]); ylim([-3, 3]);
|
|
#+end_src
|
|
|
|
#+begin_src matlab :tangle no :exports results :results file replace
|
|
exportFig('figs/low_noise_time_domain_3uF.pdf', 'width', 'wide', 'height', 'normal');
|
|
#+end_src
|
|
|
|
#+name: fig:low_noise_time_domain_3uF
|
|
#+caption: Low Frequency Noise (0.1Hz - 20Hz)
|
|
#+RESULTS:
|
|
[[file:figs/low_noise_time_domain_3uF.png]]
|
|
|
|
The obtained RMS and peak to peak values of the measured noises are shown in Table [[tab:rms_pkp_noise]].
|
|
|
|
#+begin_src matlab :exports none
|
|
%% Compute the RMS and Peak to Peak noise
|
|
Vn_rms = zeros(7,1); % RMS value [uV rms]
|
|
Vn_pkp = zeros(7,1); % Peak to Peak Value [mV]
|
|
for i = 1:7
|
|
Vn_rms(i) = 1e6*rms(pd200{i}.Vn);
|
|
Vn_pkp(i) = 1e3*(max(pd200{i}.Vn)-min(pd200{i}.Vn));
|
|
end
|
|
#+end_src
|
|
|
|
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
|
|
data2orgtable([[714; Vn_rms], [4.3; Vn_pkp]], {'Specification [10uF]', 'PD200_1', 'PD200_2', 'PD200_3', 'PD200_4', 'PD200_5', 'PD200_6', 'PD200_7'}, {'*RMS [uV]*', '*Peak to Peak [mV]*'}, ' %.1f ');
|
|
#+end_src
|
|
|
|
#+name: tab:rms_pkp_noise
|
|
#+caption: RMS and Peak to Peak measured noise
|
|
#+attr_latex: :environment tabularx :width \linewidth :align lXX
|
|
#+attr_latex: :center t :booktabs t :float t
|
|
#+RESULTS:
|
|
| | *RMS [uV]* | *Peak to Peak [mV]* |
|
|
|----------------------+------------+---------------------|
|
|
| Specification [10uF] | 714.0 | 4.3 |
|
|
| PD200_1 | 524.9 | 4.5 |
|
|
| PD200_2 | 807.7 | 6.7 |
|
|
| PD200_3 | 630.3 | 5.4 |
|
|
| PD200_4 | 619.7 | 5.5 |
|
|
| PD200_5 | 630.8 | 5.6 |
|
|
| PD200_6 | 517.3 | 4.9 |
|
|
| PD200_7 | 393.8 | 3.7 |
|
|
|
|
#+begin_src matlab :exports none
|
|
% Sampling time / frequency
|
|
Ts = (pd200{1}.t(end) - pd200{1}.t(1))/(length(pd200{1}.t) - 1);
|
|
Fs = 1/Ts;
|
|
#+end_src
|
|
|
|
The PSD of the measured noise is computed and the ASD is shown in Figure [[fig:asd_noise_3uF]].
|
|
#+begin_src matlab
|
|
win = hanning(ceil(0.5/Ts));
|
|
|
|
[pxx, f] = pwelch(pd200{1}.Vn, win, [], [], Fs);
|
|
|
|
pxx = zeros(length(pxx), 7);
|
|
|
|
for i = 1:7
|
|
pxx(:, i) = pwelch(pd200{i}.Vn, win, [], [], Fs);
|
|
end
|
|
#+end_src
|
|
|
|
#+begin_src matlab :exports none
|
|
figure;
|
|
hold on;
|
|
for i = 1:7
|
|
plot(f, sqrt(pxx(:, i)), 'DisplayName', sprintf('PD200-%i', i));
|
|
end
|
|
hold off;
|
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
|
xlabel('Frequency [Hz]'); ylabel('ASD [$V/\sqrt{Hz}$]');
|
|
legend('location', 'southwest');
|
|
xlim([1, Fs/2]);
|
|
#+end_src
|
|
|
|
#+begin_src matlab :tangle no :exports results :results file replace
|
|
exportFig('figs/asd_noise_3uF.pdf', 'width', 'wide', 'height', 'tall');
|
|
#+end_src
|
|
|
|
#+name: fig:asd_noise_3uF
|
|
#+caption: Amplitude Spectral Density of the measured noise
|
|
#+RESULTS:
|
|
[[file:figs/asd_noise_3uF.png]]
|
|
|
|
* Transfer Function measurement
|
|
** Setup
|
|
In order to measure the transfer function from the input voltage $V_{in}$ to the output voltage $V_{out}$, the test bench shown in Figure [[fig:setup-dynamics-measurement]] is used.
|
|
|
|
#+begin_note
|
|
Here are the documentation of the equipment used for this test bench:
|
|
- Voltage Amplifier [[file:doc/PD200-V7-R1.pdf][PD200]]
|
|
- Load Capacitor [[file:doc/0900766b815ea422.pdf][EPCOS 10uF Multilayer Ceramic Capacitor]]
|
|
- Speedgoat DAC/ADC [[file:doc/IO131-OEM-Datasheet.pdf][IO313]]
|
|
#+end_note
|
|
|
|
For this measurement, the sampling frequency of the Speedgoat ADC should be as high as possible.
|
|
|
|
#+name: fig:setup-dynamics-measurement
|
|
#+caption: Schematic of the test bench to estimate the dynamics from voltage input $V_{in}$ to voltage output $V_{out}$
|
|
[[file:figs/setup-dynamics-measurement.png]]
|
|
|
|
** Results
|
|
* Conclusion
|
|
|
|
#+name: tab:table_name
|
|
#+caption: Measured characteristics, Manual characterstics and specified ones
|
|
#+attr_latex: :environment tabularx :width \linewidth :align lXXX
|
|
#+attr_latex: :center t :booktabs t :float t
|
|
| <l> | <c> | <c> | <c> |
|
|
| *Characteristics* | *Measurement* | *Manual* | *Specification* |
|
|
|-------------------------------------+---------------+--------------+-----------------|
|
|
| Input Voltage Range | - | +/- 10 [V] | +/- 10 [V] |
|
|
| Output Voltage Range | - | -50/150 [V] | -20/150 [V] |
|
|
| Gain | | 20 [V/V] | - |
|
|
| Maximum RMS current | | 0.9 [A] | > 50 [mA] |
|
|
| Maximum Pulse current | | 10 [A] | - |
|
|
| Slew Rate | | 150 [V/us] | - |
|
|
| Noise (10uF load) | | 0.7 [mV RMS] | < 2 [mV rms] |
|
|
| Small Signal Bandwidth (10uF load) | | 7.4 [kHz] | > 5 [kHz] |
|
|
| Large Signal Bandwidth (150V, 10uF) | | 300 [Hz] | - |
|