test-bench-piezo-amplifiers/index.html

497 lines
16 KiB
HTML

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-09-03 jeu. 14:08 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Measurement of Piezoelectric Amplifiers</title>
<meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" />
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
<link rel="stylesheet" type="text/css" href="./css/zenburn.css"/>
<script type="text/javascript" src="./js/jquery.min.js"></script>
<script type="text/javascript" src="./js/bootstrap.min.js"></script>
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="./js/readtheorg.js"></script>
<script>MathJax = {
tex: {
tags: 'ams',
macros: {bm: ["\\boldsymbol{#1}",1],}
}
};
</script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</head>
<body>
<div id="content">
<h1 class="title">Measurement of Piezoelectric Amplifiers</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org38c98dd">1. Effect of a change of capacitance</a>
<ul>
<li><a href="#orgd444b8f">1.1. Cedrat Technology</a></li>
<li><a href="#orgc284cd7">1.2. PI</a></li>
</ul>
</li>
<li><a href="#org8e51ecb">2. Effect of a change in Voltage level</a>
<ul>
<li><a href="#org78c90ac">2.1. Cedrat Technology</a></li>
<li><a href="#org34fdac0">2.2. PI</a></li>
</ul>
</li>
<li><a href="#org51adef6">3. Comparison PI / Cedrat</a>
<ul>
<li><a href="#org8b66dbb">3.1. Results</a></li>
</ul>
</li>
<li><a href="#orgbaa04fd">4. Impedance Measurement</a>
<ul>
<li><a href="#org9225a6f">4.1. Cedrat Technology</a>
<ul>
<li><a href="#orgf9c6ba6">4.1.1. Compute Impedance</a></li>
<li><a href="#orgde9b8ca">4.1.2. Effect of Impedance on the phase drop</a></li>
</ul>
</li>
<li><a href="#org7d1ffb3">4.2. PI</a></li>
</ul>
</li>
<li><a href="#org224f00f">5. New PI amplifier measurements</a>
<ul>
<li><a href="#orgeba0bc7">5.1. PI</a></li>
<li><a href="#org08c572e">5.2. Transfer function of the Voltage Amplifier</a></li>
</ul>
</li>
</ul>
</div>
</div>
<p>
Two voltage amplifiers are tested:
</p>
<ul class="org-ul">
<li>PI E-505.00 (<a href="https://www.pi-usa.us/en/products/controllers-drivers-motion-control-software/piezo-drivers-controllers-power-supplies-high-voltage-amplifiers/e-505-piezo-amplifier-module-602300/">link</a>)</li>
<li>Cedrat Technology LA75B (<a href="https://www.cedrat-technologies.com/en/products/piezo-controllers/electronic-amplifier-boards.html">link</a>)</li>
</ul>
<p>
The piezoelectric actuator under test is an APA95ML from Cedrat technology.
It contains three stacks with a capacitance of \(5 \mu F\) each that can be connected independently to the amplifier.
</p>
<div id="outline-container-org38c98dd" class="outline-2">
<h2 id="org38c98dd"><span class="section-number-2">1</span> Effect of a change of capacitance</h2>
<div class="outline-text-2" id="text-1">
</div>
<div id="outline-container-orgd444b8f" class="outline-3">
<h3 id="orgd444b8f"><span class="section-number-3">1.1</span> Cedrat Technology</h3>
<div class="outline-text-3" id="text-1-1">
<p>
Load Data
</p>
<div class="org-src-container">
<pre class="src src-matlab">piezo1 = load('mat/cedrat_la75b_med_1_stack.mat', 't', 'V_in', 'V_out');
piezo2 = load('mat/cedrat_la75b_med_2_stack.mat', 't', 'V_in', 'V_out');
piezo3 = load('mat/cedrat_la75b_med_3_stack.mat', 't', 'V_in', 'V_out');
</pre>
</div>
<p>
Compute Coherence and Transfer functions
</p>
<div class="org-src-container">
<pre class="src src-matlab">Ts = 1e-4;
win = hann(ceil(0.1/Ts));
[tf_1, f] = tfestimate(piezo1.V_in, piezo1.V_out, win, [], [], 1/Ts);
[co_1, ~] = mscohere(piezo1.V_in, piezo1.V_out, win, [], [], 1/Ts);
[tf_2, ~] = tfestimate(piezo2.V_in, piezo2.V_out, win, [], [], 1/Ts);
[co_2, ~] = mscohere(piezo2.V_in, piezo2.V_out, win, [], [], 1/Ts);
[tf_3, ~] = tfestimate(piezo3.V_in, piezo3.V_out, win, [], [], 1/Ts);
[co_3, ~] = mscohere(piezo3.V_in, piezo3.V_out, win, [], [], 1/Ts);
</pre>
</div>
<p>
We remove the phase delay due to the time delay of the ADC/DAC:
</p>
<div class="org-src-container">
<pre class="src src-matlab">angle_delay = 180/pi*angle(squeeze(freqresp(exp(-s*Ts), f, 'Hz')));
</pre>
</div>
<div id="org0777d11" class="figure">
<p><img src="figs/change_capa_cedrat.png" alt="change_capa_cedrat.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Effect of a change of the piezo capacitance on the Amplifier transfer function</p>
</div>
</div>
</div>
<div id="outline-container-orgc284cd7" class="outline-3">
<h3 id="orgc284cd7"><span class="section-number-3">1.2</span> PI</h3>
<div class="outline-text-3" id="text-1-2">
<div class="org-src-container">
<pre class="src src-matlab">piezo1 = load('mat/pi_505_high.mat', 't', 'V_in', 'V_out');
piezo2 = load('mat/pi_505_high_2_stacks.mat', 't', 'V_in', 'V_out');
piezo3 = load('mat/pi_505_high_3_stacks.mat', 't', 'V_in', 'V_out');
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Ts = 1e-4;
win = hann(ceil(0.1/Ts));
[tf_1, f] = tfestimate(piezo1.V_in, piezo1.V_out, win, [], [], 1/Ts);
[co_1, ~] = mscohere(piezo1.V_in, piezo1.V_out, win, [], [], 1/Ts);
[tf_2, ~] = tfestimate(piezo2.V_in, piezo2.V_out, win, [], [], 1/Ts);
[co_2, ~] = mscohere(piezo2.V_in, piezo2.V_out, win, [], [], 1/Ts);
[tf_3, ~] = tfestimate(piezo3.V_in, piezo3.V_out, win, [], [], 1/Ts);
[co_3, ~] = mscohere(piezo3.V_in, piezo3.V_out, win, [], [], 1/Ts);
</pre>
</div>
<p>
We remove the phase delay due to the time delay of the ADC/DAC:
</p>
<div class="org-src-container">
<pre class="src src-matlab">angle_delay = 180/pi*angle(squeeze(freqresp(exp(-s*Ts), f, 'Hz')));
</pre>
</div>
<div id="orgd6b252a" class="figure">
<p><img src="figs/change_capa_pi.png" alt="change_capa_pi.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Effect of a change of the piezo capacitance on the Amplifier transfer function</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org8e51ecb" class="outline-2">
<h2 id="org8e51ecb"><span class="section-number-2">2</span> Effect of a change in Voltage level</h2>
<div class="outline-text-2" id="text-2">
</div>
<div id="outline-container-org78c90ac" class="outline-3">
<h3 id="org78c90ac"><span class="section-number-3">2.1</span> Cedrat Technology</h3>
<div class="outline-text-3" id="text-2-1">
<div class="org-src-container">
<pre class="src src-matlab">hi = load('mat/cedrat_la75b_high_1_stack.mat', 't', 'V_in', 'V_out');
me = load('mat/cedrat_la75b_med_1_stack.mat', 't', 'V_in', 'V_out');
lo = load('mat/cedrat_la75b_low_1_stack.mat', 't', 'V_in', 'V_out');
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Ts = 1e-4;
win = hann(ceil(0.1/Ts));
[tf_hi, f] = tfestimate(hi.V_in, hi.V_out, win, [], [], 1/Ts);
[co_hi, ~] = mscohere(hi.V_in, hi.V_out, win, [], [], 1/Ts);
[tf_me, ~] = tfestimate(me.V_in, me.V_out, win, [], [], 1/Ts);
[co_me, ~] = mscohere(me.V_in, me.V_out, win, [], [], 1/Ts);
[tf_lo, ~] = tfestimate(lo.V_in, lo.V_out, win, [], [], 1/Ts);
[co_lo, ~] = mscohere(lo.V_in, lo.V_out, win, [], [], 1/Ts);
</pre>
</div>
<p>
We remove the phase delay due to the time delay of the ADC/DAC:
</p>
<div class="org-src-container">
<pre class="src src-matlab">angle_delay = 180/pi*angle(squeeze(freqresp(exp(-s*Ts), f, 'Hz')));
</pre>
</div>
<div id="org3fcbc82" class="figure">
<p><img src="figs/change_level_cedrat.png" alt="change_level_cedrat.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Effect of a change of voltage level on the Amplifier transfer function</p>
</div>
</div>
</div>
<div id="outline-container-org34fdac0" class="outline-3">
<h3 id="org34fdac0"><span class="section-number-3">2.2</span> PI</h3>
<div class="outline-text-3" id="text-2-2">
<div class="org-src-container">
<pre class="src src-matlab">hi = load('mat/pi_505_high.mat', 't', 'V_in', 'V_out');
lo = load('mat/pi_505_low.mat', 't', 'V_in', 'V_out');
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Ts = 1e-4;
win = hann(ceil(0.1/Ts));
[tf_hi, f] = tfestimate(hi.V_in, hi.V_out, win, [], [], 1/Ts);
[co_hi, ~] = mscohere(hi.V_in, hi.V_out, win, [], [], 1/Ts);
[tf_lo, ~] = tfestimate(lo.V_in, lo.V_out, win, [], [], 1/Ts);
[co_lo, ~] = mscohere(lo.V_in, lo.V_out, win, [], [], 1/Ts);
</pre>
</div>
<div id="orgf3a50ce" class="figure">
<p><img src="figs/change_level_pi.png" alt="change_level_pi.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Effect of a change of voltage level on the Amplifier transfer function</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org51adef6" class="outline-2">
<h2 id="org51adef6"><span class="section-number-2">3</span> Comparison PI / Cedrat</h2>
<div class="outline-text-2" id="text-3">
</div>
<div id="outline-container-org8b66dbb" class="outline-3">
<h3 id="org8b66dbb"><span class="section-number-3">3.1</span> Results</h3>
<div class="outline-text-3" id="text-3-1">
<div class="org-src-container">
<pre class="src src-matlab">ce_results = load('mat/cedrat_la75b_high_1_stack.mat', 't', 'V_in', 'V_out');
pi_results = load('mat/pi_505_high.mat', 't', 'V_in', 'V_out');
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Ts = 1e-4;
win = hann(ceil(0.1/Ts));
[tf_ce, f] = tfestimate(ce_results.V_in, ce_results.V_out, win, [], [], 1/Ts);
[tf_pi, ~] = tfestimate(pi_results.V_in, pi_results.V_out, win, [], [], 1/Ts);
</pre>
</div>
<p>
We remove the phase delay due to the time delay of the ADC/DAC:
</p>
<div class="org-src-container">
<pre class="src src-matlab">angle_delay = 180/pi*angle(squeeze(freqresp(exp(-s*Ts), f, 'Hz')));
</pre>
</div>
<div id="org2e2f88d" class="figure">
<p><img src="figs/tf_amplifiers_comp.png" alt="tf_amplifiers_comp.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Comparison of the two Amplifier transfer functions</p>
</div>
</div>
</div>
</div>
<div id="outline-container-orgbaa04fd" class="outline-2">
<h2 id="orgbaa04fd"><span class="section-number-2">4</span> Impedance Measurement</h2>
<div class="outline-text-2" id="text-4">
<p>
The goal is to experimentally measure the output impedance of the voltage amplifiers.
</p>
<p>
To do so, the output voltage is first measure without any load (\(V\)).
It is then measure when a 10Ohm load is used (\(V^\prime\)).
</p>
<p>
The load (\(R = 10\Omega\)) and the internal resistor (\(R_i\)) form a voltage divider, and thus:
\[ V^\prime = \frac{R}{R + R_i} V \]
</p>
<p>
From the two values of voltage, the internal resistor value can be computed:
\[ R_i = R \frac{V - V^\prime}{V^\prime} \]
</p>
</div>
<div id="outline-container-org9225a6f" class="outline-3">
<h3 id="org9225a6f"><span class="section-number-3">4.1</span> Cedrat Technology</h3>
<div class="outline-text-3" id="text-4-1">
</div>
<div id="outline-container-orgf9c6ba6" class="outline-4">
<h4 id="orgf9c6ba6"><span class="section-number-4">4.1.1</span> Compute Impedance</h4>
<div class="outline-text-4" id="text-4-1-1">
<div class="org-src-container">
<pre class="src src-matlab">R = 10; % Resistive Load used [Ohm]
V = 0.998; % Output Voltage without any load [V]
Vp = 0.912; % Output Voltage with resistice load [V]
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">R * (V - Vp)/Vp;
</pre>
</div>
<pre class="example">
0.94298
</pre>
<div class="org-src-container">
<pre class="src src-matlab">R = 47; % Resistive Load used [Ohm]
V = 4.960; % Output Voltage without any load [V]
Vp = 4.874; % Output Voltage with resistice load [V]
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">R * (V - Vp)/Vp;
</pre>
</div>
<pre class="example">
0.8293
</pre>
</div>
</div>
<div id="outline-container-orgde9b8ca" class="outline-4">
<h4 id="orgde9b8ca"><span class="section-number-4">4.1.2</span> Effect of Impedance on the phase drop</h4>
<div class="outline-text-4" id="text-4-1-2">
<div class="org-src-container">
<pre class="src src-matlab">C_1 = 5e-6; % Capacitance in [F]
C_2 = 10e-6; % Capacitance in [F]
C_3 = 15e-6; % Capacitance in [F]
Ri = R * (V - Vp)/Vp; % Internal resistance [Ohm]
G0 = 20;
G_1 = G0/(1+Ri*C_1*s);
G_2 = G0/(1+Ri*C_2*s);
G_3 = G0/(1+Ri*C_3*s);
</pre>
</div>
<div id="orge30d566" class="figure">
<p><img src="figs/change_capa_cedrat.png" alt="change_capa_cedrat.png" />
</p>
<p><span class="figure-number">Figure 6: </span>Effect of a change of the piezo capacitance on the Amplifier transfer function</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org7d1ffb3" class="outline-3">
<h3 id="org7d1ffb3"><span class="section-number-3">4.2</span> PI</h3>
<div class="outline-text-3" id="text-4-2">
<div class="org-src-container">
<pre class="src src-matlab">R = 10; % Resistive Load used [Ohm]
V = 1.059; % Output Voltage without any load [V]
Vp = 0.828; % Output Voltage with resistice load [V]
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">R * (V - Vp)/Vp
</pre>
</div>
<pre class="example">
2.7899
</pre>
<div class="org-src-container">
<pre class="src src-matlab">R = 10; % Resistive Load used [Ohm]
V = 2.092; % Output Voltage without any load [V]
Vp = 1.637; % Output Voltage with resistice load [V]
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">R * (V - Vp)/Vp
</pre>
</div>
<pre class="example">
2.7795
</pre>
</div>
</div>
</div>
<div id="outline-container-org224f00f" class="outline-2">
<h2 id="org224f00f"><span class="section-number-2">5</span> New PI amplifier measurements</h2>
<div class="outline-text-2" id="text-5">
</div>
<div id="outline-container-orgeba0bc7" class="outline-3">
<h3 id="orgeba0bc7"><span class="section-number-3">5.1</span> PI</h3>
<div class="outline-text-3" id="text-5-1">
<p>
Three measurements are done:
</p>
<ul class="org-ul">
<li>Slew Rate limitation at maximum</li>
<li>Slew Rate limitation at minimum</li>
<li>Notch Filter at maximum frequency</li>
</ul>
<div class="org-src-container">
<pre class="src src-matlab">pi_sr_min = load('mat/pi_slew_rate_min.mat');
pi_sr_max = load('mat/pi_slew_rate_max.mat');
pi_sr_max_notch = load('mat/pi_slew_rate_max_notch_high.mat');
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Ts = 1e-4;
win = hann(ceil(0.1/Ts));
[tf_sr_min, f] = tfestimate(pi_sr_min.V_in, pi_sr_min.V_out, win, [], [], 1/Ts);
[tf_sr_max, ~] = tfestimate(pi_sr_max.V_in, pi_sr_max.V_out, win, [], [], 1/Ts);
[tf_sr_max_notch, ~] = tfestimate(pi_sr_max_notch.V_in, pi_sr_max_notch.V_out, win, [], [], 1/Ts);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">angle_delay = 180/pi*angle(squeeze(freqresp(exp(-s*Ts), f, 'Hz')));
</pre>
</div>
<div id="orga46f3c0" class="figure">
<p><img src="figs/pi_slew_rate_notch.png" alt="pi_slew_rate_notch.png" />
</p>
<p><span class="figure-number">Figure 7: </span>Effect of a change in the slew rate limitation and notch filter</p>
</div>
</div>
</div>
<div id="outline-container-org08c572e" class="outline-3">
<h3 id="org08c572e"><span class="section-number-3">5.2</span> Transfer function of the Voltage Amplifier</h3>
<div class="outline-text-3" id="text-5-2">
<p>
The identified transfer function still seems to match the one of a notch filter at 5kHz.
</p>
<div class="org-src-container">
<pre class="src src-matlab">w_nf = 2*pi*5e3; % Notch Filter Frequency [rad/s]
G = 10.5*(s^2 + 2*w_nf*0.12*s + w_nf^2)/(s^2 + 2*w_nf*s + w_nf^2);
</pre>
</div>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-09-03 jeu. 14:08</p>
</div>
</body>
</html>