Remove phase drop due to ADC time delay

This commit is contained in:
Thomas Dehaeze 2020-08-20 12:48:28 +02:00
parent 6a2457fb32
commit 35639274f8
11 changed files with 211 additions and 103 deletions

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

View File

@ -3,7 +3,7 @@
"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-08-17 lun. 08:41 -->
<!-- 2020-08-20 jeu. 12:48 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Measurement of Piezoelectric Amplifiers</title>
<meta name="generator" content="Org mode" />
@ -31,27 +31,32 @@
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org89d3be5">1. Effect of a change of capacitance</a>
<li><a href="#org4336ef2">1. Effect of a change of capacitance</a>
<ul>
<li><a href="#org1211753">1.1. Cedrat Technology</a></li>
<li><a href="#orgef44c57">1.2. PI</a></li>
<li><a href="#org5f28beb">1.1. Cedrat Technology</a></li>
<li><a href="#org657a286">1.2. PI</a></li>
</ul>
</li>
<li><a href="#org75c5c14">2. Effect of a change in Voltage level</a>
<li><a href="#org281ab28">2. Effect of a change in Voltage level</a>
<ul>
<li><a href="#org1454a61">2.1. Cedrat Technology</a></li>
<li><a href="#orgdffe7af">2.2. PI</a></li>
<li><a href="#orgcd8bd87">2.1. Cedrat Technology</a></li>
<li><a href="#orgf9d7754">2.2. PI</a></li>
</ul>
</li>
<li><a href="#orgc4fcf01">3. Comparison PI / Cedrat</a>
<li><a href="#orgcdf9f3d">3. Comparison PI / Cedrat</a>
<ul>
<li><a href="#org942d663">3.1. Results</a></li>
<li><a href="#org338c451">3.1. Results</a></li>
</ul>
</li>
<li><a href="#org983e8a7">4. Impedance Measurement</a>
<li><a href="#orga918cc8">4. Impedance Measurement</a>
<ul>
<li><a href="#org0c06989">4.1. Cedrat Technology</a></li>
<li><a href="#orgf8cf0b3">4.2. PI</a></li>
<li><a href="#org9e3aa02">4.1. Cedrat Technology</a>
<ul>
<li><a href="#org84e00e0">4.1.1. Compute Impedance</a></li>
<li><a href="#orge2e6f5d">4.1.2. Effect of Impedance on the phase drop</a></li>
</ul>
</li>
<li><a href="#orgf166435">4.2. PI</a></li>
</ul>
</li>
</ul>
@ -71,12 +76,12 @@ 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-org89d3be5" class="outline-2">
<h2 id="org89d3be5"><span class="section-number-2">1</span> Effect of a change of capacitance</h2>
<div id="outline-container-org4336ef2" class="outline-2">
<h2 id="org4336ef2"><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-org1211753" class="outline-3">
<h3 id="org1211753"><span class="section-number-3">1.1</span> Cedrat Technology</h3>
<div id="outline-container-org5f28beb" class="outline-3">
<h3 id="org5f28beb"><span class="section-number-3">1.1</span> Cedrat Technology</h3>
<div class="outline-text-3" id="text-1-1">
<p>
Load Data
@ -95,21 +100,27 @@ Compute Coherence and Transfer functions
<pre class="src src-matlab">Ts = 1e-4;
win = hann(ceil(0.1/Ts));
[tf_1, f_1] = tfestimate(piezo1.V_in, piezo1.V_out, win, [], [], 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, f_2] = tfestimate(piezo2.V_in, piezo2.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, f_3] = tfestimate(piezo3.V_in, piezo3.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="org46b30a6" class="figure">
<div id="orgec9af25" 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>
@ -117,8 +128,8 @@ win = hann(ceil(0.1/Ts));
</div>
</div>
<div id="outline-container-orgef44c57" class="outline-3">
<h3 id="orgef44c57"><span class="section-number-3">1.2</span> PI</h3>
<div id="outline-container-org657a286" class="outline-3">
<h3 id="org657a286"><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');
@ -131,21 +142,27 @@ piezo3 = load('mat/pi_505_high_3_stacks.mat', 't', 'V_in', 'V_out');
<pre class="src src-matlab">Ts = 1e-4;
win = hann(ceil(0.1/Ts));
[tf_1, f_1] = tfestimate(piezo1.V_in, piezo1.V_out, win, [], [], 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, f_2] = tfestimate(piezo2.V_in, piezo2.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, f_3] = tfestimate(piezo3.V_in, piezo3.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="orgfea7926" class="figure">
<div id="org5423cb8" 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>
@ -154,12 +171,12 @@ win = hann(ceil(0.1/Ts));
</div>
</div>
<div id="outline-container-org75c5c14" class="outline-2">
<h2 id="org75c5c14"><span class="section-number-2">2</span> Effect of a change in Voltage level</h2>
<div id="outline-container-org281ab28" class="outline-2">
<h2 id="org281ab28"><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-org1454a61" class="outline-3">
<h3 id="org1454a61"><span class="section-number-3">2.1</span> Cedrat Technology</h3>
<div id="outline-container-orgcd8bd87" class="outline-3">
<h3 id="orgcd8bd87"><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');
@ -172,19 +189,27 @@ lo = load('mat/cedrat_la75b_low_1_stack.mat', 't', 'V_in', 'V_out');
<pre class="src src-matlab">Ts = 1e-4;
win = hann(ceil(0.1/Ts));
[tf_hi, f_hi] = tfestimate(hi.V_in, hi.V_out, win, [], [], 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, f_me] = tfestimate(me.V_in, me.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, f_lo] = tfestimate(lo.V_in, lo.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="org4b115b8" class="figure">
<div id="org0ee1f80" 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>
@ -192,8 +217,8 @@ win = hann(ceil(0.1/Ts));
</div>
</div>
<div id="outline-container-orgdffe7af" class="outline-3">
<h3 id="orgdffe7af"><span class="section-number-3">2.2</span> PI</h3>
<div id="outline-container-orgf9d7754" class="outline-3">
<h3 id="orgf9d7754"><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');
@ -205,16 +230,16 @@ lo = load('mat/pi_505_low.mat', 't', 'V_in', 'V_out');
<pre class="src src-matlab">Ts = 1e-4;
win = hann(ceil(0.1/Ts));
[tf_hi, f_hi] = tfestimate(hi.V_in, hi.V_out, win, [], [], 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, f_lo] = tfestimate(lo.V_in, lo.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="org741394d" class="figure">
<div id="org83d2edd" 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>
@ -223,12 +248,12 @@ win = hann(ceil(0.1/Ts));
</div>
</div>
<div id="outline-container-orgc4fcf01" class="outline-2">
<h2 id="orgc4fcf01"><span class="section-number-2">3</span> Comparison PI / Cedrat</h2>
<div id="outline-container-orgcdf9f3d" class="outline-2">
<h2 id="orgcdf9f3d"><span class="section-number-2">3</span> Comparison PI / Cedrat</h2>
<div class="outline-text-2" id="text-3">
</div>
<div id="outline-container-org942d663" class="outline-3">
<h3 id="org942d663"><span class="section-number-3">3.1</span> Results</h3>
<div id="outline-container-org338c451" class="outline-3">
<h3 id="org338c451"><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');
@ -254,7 +279,7 @@ We remove the phase delay due to the time delay of the ADC/DAC:
</div>
<div id="orga707bec" class="figure">
<div id="orgfe80000" 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>
@ -263,8 +288,8 @@ We remove the phase delay due to the time delay of the ADC/DAC:
</div>
</div>
<div id="outline-container-org983e8a7" class="outline-2">
<h2 id="org983e8a7"><span class="section-number-2">4</span> Impedance Measurement</h2>
<div id="outline-container-orga918cc8" class="outline-2">
<h2 id="orga918cc8"><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.
@ -286,9 +311,13 @@ From the two values of voltage, the internal resistor value can be computed:
</p>
</div>
<div id="outline-container-org0c06989" class="outline-3">
<h3 id="org0c06989"><span class="section-number-3">4.1</span> Cedrat Technology</h3>
<div id="outline-container-org9e3aa02" class="outline-3">
<h3 id="org9e3aa02"><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-org84e00e0" class="outline-4">
<h4 id="org84e00e0"><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]
@ -321,20 +350,38 @@ Vp = 4.874; % Output Voltage with resistice load [V]
<pre class="example">
0.8293
</pre>
</div>
</div>
<div id="outline-container-orge2e6f5d" class="outline-4">
<h4 id="orge2e6f5d"><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 = 5e-6; % Capacitance in [F]
Ri = R * (V - Vp)/Vp; % Internal resistance [Ohm]
<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]
G_ce = 1/(1+Ri*C*s);
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="orgeb39756" 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-orgf8cf0b3" class="outline-3">
<h3 id="orgf8cf0b3"><span class="section-number-3">4.2</span> PI</h3>
<div id="outline-container-orgf166435" class="outline-3">
<h3 id="orgf166435"><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]
@ -374,7 +421,7 @@ Vp = 1.637; % Output Voltage with resistice load [V]
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-08-17 lun. 08:41</p>
<p class="date">Created: 2020-08-20 jeu. 12:48</p>
</div>
</body>
</html>

149
index.org
View File

@ -66,25 +66,28 @@ Compute Coherence and Transfer functions
Ts = 1e-4;
win = hann(ceil(0.1/Ts));
[tf_1, f_1] = tfestimate(piezo1.V_in, piezo1.V_out, win, [], [], 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, f_2] = tfestimate(piezo2.V_in, piezo2.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, f_3] = tfestimate(piezo3.V_in, piezo3.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);
#+end_src
We remove the phase delay due to the time delay of the ADC/DAC:
#+begin_src matlab
angle_delay = 180/pi*angle(squeeze(freqresp(exp(-s*Ts), f, 'Hz')));
#+end_src
#+begin_src matlab :exports none
figure;
ax1 = subplot(2, 1, 1);
hold on;
plot(f_1, abs(tf_1), 'DisplayName', '1 stack')
plot(f_2, abs(tf_2), 'DisplayName', '2 stacks')
plot(f_3, abs(tf_3), 'DisplayName', '3 stacks')
plot(f, abs(tf_1), 'DisplayName', '1 stack')
plot(f, abs(tf_2), 'DisplayName', '2 stacks')
plot(f, abs(tf_3), 'DisplayName', '3 stacks')
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
ylabel('Amplitude'); xlabel('Frequency [Hz]');
hold off;
@ -93,9 +96,9 @@ Compute Coherence and Transfer functions
ax2 = subplot(2, 1, 2);
hold on;
plot(f_1, 180/pi*unwrap(angle(tf_1)))
plot(f_2, 180/pi*unwrap(angle(tf_2)))
plot(f_3, 180/pi*unwrap(angle(tf_3)))
plot(f, 180/pi*unwrap(angle(tf_1))-angle_delay)
plot(f, 180/pi*unwrap(angle(tf_2))-angle_delay)
plot(f, 180/pi*unwrap(angle(tf_3))-angle_delay)
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'lin');
ylabel('Phase'); xlabel('Frequency [Hz]');
hold off;
@ -126,25 +129,28 @@ Compute Coherence and Transfer functions
Ts = 1e-4;
win = hann(ceil(0.1/Ts));
[tf_1, f_1] = tfestimate(piezo1.V_in, piezo1.V_out, win, [], [], 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, f_2] = tfestimate(piezo2.V_in, piezo2.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, f_3] = tfestimate(piezo3.V_in, piezo3.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);
#+end_src
We remove the phase delay due to the time delay of the ADC/DAC:
#+begin_src matlab
angle_delay = 180/pi*angle(squeeze(freqresp(exp(-s*Ts), f, 'Hz')));
#+end_src
#+begin_src matlab :exports none
figure;
ax1 = subplot(2, 1, 1);
hold on;
plot(f_1, abs(tf_1), 'DisplayName', '1 stack')
plot(f_2, abs(tf_2), 'DisplayName', '2 stacks')
plot(f_3, abs(tf_3), 'DisplayName', '3 stacks')
plot(f, abs(tf_1), 'DisplayName', '1 stack')
plot(f, abs(tf_2), 'DisplayName', '2 stacks')
plot(f, abs(tf_3), 'DisplayName', '3 stacks')
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
ylabel('Amplitude'); xlabel('Frequency [Hz]');
hold off;
@ -153,9 +159,9 @@ Compute Coherence and Transfer functions
ax2 = subplot(2, 1, 2);
hold on;
plot(f_1, 180/pi*unwrap(angle(tf_1)))
plot(f_2, 180/pi*unwrap(angle(tf_2)))
plot(f_3, 180/pi*unwrap(angle(tf_3)))
plot(f, 180/pi*unwrap(angle(tf_1))-angle_delay)
plot(f, 180/pi*unwrap(angle(tf_2))-angle_delay)
plot(f, 180/pi*unwrap(angle(tf_3))-angle_delay)
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'lin');
ylabel('Phase'); xlabel('Frequency [Hz]');
hold off;
@ -196,23 +202,28 @@ Compute Coherence and Transfer functions
Ts = 1e-4;
win = hann(ceil(0.1/Ts));
[tf_hi, f_hi] = tfestimate(hi.V_in, hi.V_out, win, [], [], 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, f_me] = tfestimate(me.V_in, me.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, f_lo] = tfestimate(lo.V_in, lo.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);
#+end_src
We remove the phase delay due to the time delay of the ADC/DAC:
#+begin_src matlab
angle_delay = 180/pi*angle(squeeze(freqresp(exp(-s*Ts), f, 'Hz')));
#+end_src
#+begin_src matlab :exports none
figure;
ax1 = subplot(2, 1, 1);
hold on;
plot(f_lo, abs(tf_lo), 'DisplayName', 'low')
plot(f_me, abs(tf_me), 'DisplayName', 'med')
plot(f_hi, abs(tf_hi), 'DisplayName', 'high')
plot(f, abs(tf_lo), 'DisplayName', 'low')
plot(f, abs(tf_me), 'DisplayName', 'med')
plot(f, abs(tf_hi), 'DisplayName', 'high')
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
ylabel('Amplitude'); xlabel('Frequency [Hz]');
hold off;
@ -221,9 +232,9 @@ Compute Coherence and Transfer functions
ax2 = subplot(2, 1, 2);
hold on;
plot(f_lo, 180/pi*unwrap(angle(tf_lo)))
plot(f_me, 180/pi*unwrap(angle(tf_me)))
plot(f_hi, 180/pi*unwrap(angle(tf_hi)))
plot(f, 180/pi*unwrap(angle(tf_lo))-angle_delay)
plot(f, 180/pi*unwrap(angle(tf_me))-angle_delay)
plot(f, 180/pi*unwrap(angle(tf_hi))-angle_delay)
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'lin');
ylabel('Phase'); xlabel('Frequency [Hz]');
hold off;
@ -253,10 +264,10 @@ Compute Coherence and Transfer functions
Ts = 1e-4;
win = hann(ceil(0.1/Ts));
[tf_hi, f_hi] = tfestimate(hi.V_in, hi.V_out, win, [], [], 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, f_lo] = tfestimate(lo.V_in, lo.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);
#+end_src
@ -264,8 +275,8 @@ Compute Coherence and Transfer functions
figure;
ax1 = subplot(2, 1, 1);
hold on;
plot(f_hi, abs(tf_hi), 'DisplayName', 'high')
plot(f_lo, abs(tf_lo), 'DisplayName', 'low')
plot(f, abs(tf_hi), 'DisplayName', 'high')
plot(f, abs(tf_lo), 'DisplayName', 'low')
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
ylabel('Amplitude'); xlabel('Frequency [Hz]');
hold off;
@ -274,8 +285,8 @@ Compute Coherence and Transfer functions
ax2 = subplot(2, 1, 2);
hold on;
plot(f_hi, 180/pi*unwrap(angle(tf_hi)))
plot(f_lo, 180/pi*unwrap(angle(tf_lo)))
plot(f, 180/pi*unwrap(angle(tf_hi))-angle_delay)
plot(f, 180/pi*unwrap(angle(tf_lo))-angle_delay)
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'lin');
ylabel('Phase'); xlabel('Frequency [Hz]');
hold off;
@ -382,6 +393,7 @@ From the two values of voltage, the internal resistor value can be computed:
#+end_src
** Cedrat Technology
*** Compute Impedance
#+begin_src matlab
R = 10; % Resistive Load used [Ohm]
V = 0.998; % Output Voltage without any load [V]
@ -408,13 +420,41 @@ From the two values of voltage, the internal resistor value can be computed:
#+RESULTS:
: 0.8293
*** Effect of Impedance on the phase drop
#+begin_src matlab
C = 5e-6; % Capacitance in [F]
Ri = R * (V - Vp)/Vp; % Internal resistance [Ohm]
C_1 = 5e-6; % Capacitance in [F]
C_2 = 10e-6; % Capacitance in [F]
C_3 = 15e-6; % Capacitance in [F]
G_ce = 1/(1+Ri*C*s);
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);
#+end_src
#+begin_src matlab :exports none
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');
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);
angle_delay = 180/pi*angle(squeeze(freqresp(exp(-s*Ts), f, 'Hz')));
#+end_src
#+begin_src matlab :exports none
freqs = logspace(1, 4, 1000);
@ -422,23 +462,44 @@ From the two values of voltage, the internal resistor value can be computed:
ax1 = subplot(2, 1, 1);
hold on;
plot(freqs, abs(squeeze(freqresp(G_ce, freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G_1, freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G_2, freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G_3, freqs, 'Hz'))));
set(gca,'ColorOrderIndex',1);
plot(f, abs(tf_1), '--')
plot(f, abs(tf_2), '--')
plot(f, abs(tf_3), '--')
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
ax2 = subplot(2, 1, 2);
hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(G_ce, freqs, 'Hz'))));
plot(freqs, 180/pi*angle(squeeze(freqresp(G_1, freqs, 'Hz'))));
plot(freqs, 180/pi*angle(squeeze(freqresp(G_2, freqs, 'Hz'))));
plot(freqs, 180/pi*angle(squeeze(freqresp(G_3, freqs, 'Hz'))));
set(gca,'ColorOrderIndex',1);
plot(f, 180/pi*unwrap(angle(tf_1))-angle_delay, '--')
plot(f, 180/pi*unwrap(angle(tf_2))-angle_delay, '--')
plot(f, 180/pi*unwrap(angle(tf_3))-angle_delay, '--')
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
ylim([-90, 45]);
yticks([-90:15:45]);
linkaxes([ax1,ax2],'x');
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/change_capa_cedrat.pdf', 'width', 'full', 'height', 'full');
#+end_src
#+name: fig:change_capa_cedrat
#+caption: Effect of a change of the piezo capacitance on the Amplifier transfer function
#+RESULTS:
[[file:figs/change_capa_cedrat.png]]
** PI
#+begin_src matlab
R = 10; % Resistive Load used [Ohm]