Add analysis on the force sensor
This commit is contained in:
534
index.html
534
index.html
@@ -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-10-25 dim. 09:06 -->
|
||||
<!-- 2020-10-29 jeu. 09:59 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Encoder - Test Bench</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
@@ -31,37 +31,49 @@
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org62e3fd3">1. Experimental Setup</a></li>
|
||||
<li><a href="#org12a748d">2. Huddle Test</a>
|
||||
<li><a href="#org6fbc445">1. Experimental Setup</a></li>
|
||||
<li><a href="#orgdbbcb08">2. Huddle Test</a>
|
||||
<ul>
|
||||
<li><a href="#orgcc6a5f5">2.1. Load Data</a></li>
|
||||
<li><a href="#org38dca56">2.2. Time Domain Results</a></li>
|
||||
<li><a href="#orgb3db033">2.3. Frequency Domain Noise</a></li>
|
||||
<li><a href="#orge0cae84">2.1. Load Data</a></li>
|
||||
<li><a href="#orgeb6de99">2.2. Time Domain Results</a></li>
|
||||
<li><a href="#orga9c316e">2.3. Frequency Domain Noise</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org99db9f6">3. Comparison Interferometer / Encoder</a>
|
||||
<li><a href="#org3f480f8">3. Comparison Interferometer / Encoder</a>
|
||||
<ul>
|
||||
<li><a href="#org1d63b9a">3.1. Load Data</a></li>
|
||||
<li><a href="#org185e20d">3.2. Time Domain Results</a></li>
|
||||
<li><a href="#org04cd372">3.3. Difference between Encoder and Interferometer as a function of time</a></li>
|
||||
<li><a href="#org0271741">3.4. Difference between Encoder and Interferometer as a function of position</a></li>
|
||||
<li><a href="#org1144cae">3.1. Load Data</a></li>
|
||||
<li><a href="#org504ca00">3.2. Time Domain Results</a></li>
|
||||
<li><a href="#org0bb5487">3.3. Difference between Encoder and Interferometer as a function of time</a></li>
|
||||
<li><a href="#org8ffe43b">3.4. Difference between Encoder and Interferometer as a function of position</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orga08d704">4. Identification</a>
|
||||
<li><a href="#org8db94b6">4. Identification</a>
|
||||
<ul>
|
||||
<li><a href="#orgaa05248">4.1. Load Data</a></li>
|
||||
<li><a href="#org0d4f0cd">4.2. Identification</a></li>
|
||||
<li><a href="#org5dbc303">4.1. Load Data</a></li>
|
||||
<li><a href="#org7e6c771">4.2. Identification</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org34f3a3e">5. Change of Stiffness due to Sensors stack being open/closed circuit</a>
|
||||
<ul>
|
||||
<li><a href="#org74a3435">5.1. Load Data</a></li>
|
||||
<li><a href="#org3c7c26d">5.2. Transfer Functions</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org939e6d1">6. Generated Number of Charge / Voltage</a>
|
||||
<ul>
|
||||
<li><a href="#org24ebf58">6.1. Steps</a></li>
|
||||
<li><a href="#orgd891bf7">6.2. Sinus</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org62e3fd3" class="outline-2">
|
||||
<h2 id="org62e3fd3"><span class="section-number-2">1</span> Experimental Setup</h2>
|
||||
<div id="outline-container-org6fbc445" class="outline-2">
|
||||
<h2 id="org6fbc445"><span class="section-number-2">1</span> Experimental Setup</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
The experimental Setup is schematically represented in Figure <a href="#org4fd66dc">1</a>.
|
||||
The experimental Setup is schematically represented in Figure <a href="#orgd0e8875">1</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -70,21 +82,21 @@ The displacement of the mass (relative to the mechanical frame) is measured both
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org4fd66dc" class="figure">
|
||||
<div id="orgd0e8875" class="figure">
|
||||
<p><img src="figs/exp_setup_schematic.png" alt="exp_setup_schematic.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Schematic of the Experiment</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orge37bdbc" class="figure">
|
||||
<div id="orga0a129f" class="figure">
|
||||
<p><img src="figs/IMG_20201023_153905.jpg" alt="IMG_20201023_153905.jpg" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Side View of the encoder</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org168fd7f" class="figure">
|
||||
<div id="org3eb8621" class="figure">
|
||||
<p><img src="figs/IMG_20201023_153914.jpg" alt="IMG_20201023_153914.jpg" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Front View of the encoder</p>
|
||||
@@ -92,8 +104,8 @@ The displacement of the mass (relative to the mechanical frame) is measured both
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org12a748d" class="outline-2">
|
||||
<h2 id="org12a748d"><span class="section-number-2">2</span> Huddle Test</h2>
|
||||
<div id="outline-container-orgdbbcb08" class="outline-2">
|
||||
<h2 id="orgdbbcb08"><span class="section-number-2">2</span> Huddle Test</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
The goal in this section is the estimate the noise of both the encoder and the intereferometer.
|
||||
@@ -105,8 +117,8 @@ Ideally, a mechanical part would clamp the two together, we here suppose that th
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcc6a5f5" class="outline-3">
|
||||
<h3 id="orgcc6a5f5"><span class="section-number-3">2.1</span> Load Data</h3>
|
||||
<div id="outline-container-orge0cae84" class="outline-3">
|
||||
<h3 id="orge0cae84"><span class="section-number-3">2.1</span> Load Data</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'mat/int_enc_huddle_test.mat'</span>, <span class="org-string">'interferometer'</span>, <span class="org-string">'encoder'</span>, <span class="org-string">'t'</span>);
|
||||
@@ -121,11 +133,11 @@ encoder = detrend(encoder, 0);
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org38dca56" class="outline-3">
|
||||
<h3 id="org38dca56"><span class="section-number-3">2.2</span> Time Domain Results</h3>
|
||||
<div id="outline-container-orgeb6de99" class="outline-3">
|
||||
<h3 id="orgeb6de99"><span class="section-number-3">2.2</span> Time Domain Results</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
|
||||
<div id="org1e8928d" class="figure">
|
||||
<div id="org686e97a" class="figure">
|
||||
<p><img src="figs/huddle_test_time_domain.png" alt="huddle_test_time_domain.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Huddle test - Time domain signals</p>
|
||||
@@ -137,7 +149,7 @@ encoder = detrend(encoder, 0);
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org831d12c" class="figure">
|
||||
<div id="orgb481e1f" class="figure">
|
||||
<p><img src="figs/huddle_test_time_domain_filtered.png" alt="huddle_test_time_domain_filtered.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Huddle test - Time domain signals filtered with a LPF at 10Hz</p>
|
||||
@@ -145,8 +157,8 @@ encoder = detrend(encoder, 0);
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb3db033" class="outline-3">
|
||||
<h3 id="orgb3db033"><span class="section-number-3">2.3</span> Frequency Domain Noise</h3>
|
||||
<div id="outline-container-orga9c316e" class="outline-3">
|
||||
<h3 id="orga9c316e"><span class="section-number-3">2.3</span> Frequency Domain Noise</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Ts = 1e<span class="org-type">-</span>4;
|
||||
@@ -158,7 +170,7 @@ win = hann(ceil(10<span class="org-type">/</span>Ts));
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgd4d1e96" class="figure">
|
||||
<div id="org8d5409d" class="figure">
|
||||
<p><img src="figs/huddle_test_asd.png" alt="huddle_test_asd.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Amplitude Spectral Density of the signals during the Huddle test</p>
|
||||
@@ -167,8 +179,8 @@ win = hann(ceil(10<span class="org-type">/</span>Ts));
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org99db9f6" class="outline-2">
|
||||
<h2 id="org99db9f6"><span class="section-number-2">3</span> Comparison Interferometer / Encoder</h2>
|
||||
<div id="outline-container-org3f480f8" class="outline-2">
|
||||
<h2 id="org3f480f8"><span class="section-number-2">3</span> Comparison Interferometer / Encoder</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
The goal here is to make sure that the interferometer and encoder measurements are coherent.
|
||||
@@ -176,8 +188,8 @@ We may see non-linearity in the interferometric measurement.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1d63b9a" class="outline-3">
|
||||
<h3 id="org1d63b9a"><span class="section-number-3">3.1</span> Load Data</h3>
|
||||
<div id="outline-container-org1144cae" class="outline-3">
|
||||
<h3 id="org1144cae"><span class="section-number-3">3.1</span> Load Data</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'mat/int_enc_comp.mat'</span>, <span class="org-string">'interferometer'</span>, <span class="org-string">'encoder'</span>, <span class="org-string">'u'</span>, <span class="org-string">'t'</span>);
|
||||
@@ -193,18 +205,18 @@ u = detrend(u, 0);
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org185e20d" class="outline-3">
|
||||
<h3 id="org185e20d"><span class="section-number-3">3.2</span> Time Domain Results</h3>
|
||||
<div id="outline-container-org504ca00" class="outline-3">
|
||||
<h3 id="org504ca00"><span class="section-number-3">3.2</span> Time Domain Results</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
|
||||
<div id="orgf56a137" class="figure">
|
||||
<div id="org5e28133" class="figure">
|
||||
<p><img src="figs/int_enc_one_cycle.png" alt="int_enc_one_cycle.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>One cycle measurement</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org3adb535" class="figure">
|
||||
<div id="org1d42180" class="figure">
|
||||
<p><img src="figs/int_enc_one_cycle_error.png" alt="int_enc_one_cycle_error.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Difference between the Encoder and the interferometer during one cycle</p>
|
||||
@@ -212,8 +224,8 @@ u = detrend(u, 0);
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org04cd372" class="outline-3">
|
||||
<h3 id="org04cd372"><span class="section-number-3">3.3</span> Difference between Encoder and Interferometer as a function of time</h3>
|
||||
<div id="outline-container-org0bb5487" class="outline-3">
|
||||
<h3 id="org0bb5487"><span class="section-number-3">3.3</span> Difference between Encoder and Interferometer as a function of time</h3>
|
||||
<div class="outline-text-3" id="text-3-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Ts = 1e<span class="org-type">-</span>4;
|
||||
@@ -234,7 +246,7 @@ d_err_mean = d_err_mean <span class="org-type">-</span> mean(d_err_mean);
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgd16ecc5" class="figure">
|
||||
<div id="org8fda1bf" class="figure">
|
||||
<p><img src="figs/int_enc_error_mean_time.png" alt="int_enc_error_mean_time.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Difference between the two measurement in the time domain, averaged for all the cycles</p>
|
||||
@@ -242,8 +254,8 @@ d_err_mean = d_err_mean <span class="org-type">-</span> mean(d_err_mean);
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0271741" class="outline-3">
|
||||
<h3 id="org0271741"><span class="section-number-3">3.4</span> Difference between Encoder and Interferometer as a function of position</h3>
|
||||
<div id="outline-container-org8ffe43b" class="outline-3">
|
||||
<h3 id="org8ffe43b"><span class="section-number-3">3.4</span> Difference between Encoder and Interferometer as a function of position</h3>
|
||||
<div class="outline-text-3" id="text-3-4">
|
||||
<p>
|
||||
Compute the mean of the interferometer measurement corresponding to each of the encoder measurement.
|
||||
@@ -262,7 +274,7 @@ i_mean_error = (i_mean <span class="org-type">-</span> e_sorted);
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org81096af" class="figure">
|
||||
<div id="org3b4facc" class="figure">
|
||||
<p><img src="figs/int_enc_error_mean_position.png" alt="int_enc_error_mean_position.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Difference between the two measurement as a function of the measured position by the encoder, averaged for all the cycles</p>
|
||||
@@ -283,7 +295,7 @@ e_sorted_mean_over_period = mean(reshape(i_mean_error(i_init<span class="org-typ
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgd460333" class="figure">
|
||||
<div id="org8f808d8" class="figure">
|
||||
<p><img src="figs/int_non_linearity_period_wavelength.png" alt="int_non_linearity_period_wavelength.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 11: </span>Non-Linearity of the Interferometer over the period of the wavelength</p>
|
||||
@@ -292,12 +304,12 @@ e_sorted_mean_over_period = mean(reshape(i_mean_error(i_init<span class="org-typ
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga08d704" class="outline-2">
|
||||
<h2 id="orga08d704"><span class="section-number-2">4</span> Identification</h2>
|
||||
<div id="outline-container-org8db94b6" class="outline-2">
|
||||
<h2 id="org8db94b6"><span class="section-number-2">4</span> Identification</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
</div>
|
||||
<div id="outline-container-orgaa05248" class="outline-3">
|
||||
<h3 id="orgaa05248"><span class="section-number-3">4.1</span> Load Data</h3>
|
||||
<div id="outline-container-org5dbc303" class="outline-3">
|
||||
<h3 id="org5dbc303"><span class="section-number-3">4.1</span> Load Data</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'mat/int_enc_id_noise_bis.mat'</span>, <span class="org-string">'interferometer'</span>, <span class="org-string">'encoder'</span>, <span class="org-string">'u'</span>, <span class="org-string">'t'</span>);
|
||||
@@ -313,8 +325,8 @@ u = detrend(u, 0);
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0d4f0cd" class="outline-3">
|
||||
<h3 id="org0d4f0cd"><span class="section-number-3">4.2</span> Identification</h3>
|
||||
<div id="outline-container-org7e6c771" class="outline-3">
|
||||
<h3 id="org7e6c771"><span class="section-number-3">4.2</span> Identification</h3>
|
||||
<div class="outline-text-3" id="text-4-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Ts = 1e<span class="org-type">-</span>4; <span class="org-comment">% Sampling Time [s]</span>
|
||||
@@ -332,24 +344,436 @@ win = hann(ceil(10<span class="org-type">/</span>Ts));
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org0157819" class="figure">
|
||||
<div id="org002dcef" class="figure">
|
||||
<p><img src="figs/identification_dynamics_coherence.png" alt="identification_dynamics_coherence.png" />
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div id="org4b89965" class="figure">
|
||||
<div id="orgdbdd6e0" class="figure">
|
||||
<p><img src="figs/identification_dynamics_bode.png" alt="identification_dynamics_bode.png" />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org34f3a3e" class="outline-2">
|
||||
<h2 id="org34f3a3e"><span class="section-number-2">5</span> Change of Stiffness due to Sensors stack being open/closed circuit</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
</div>
|
||||
<div id="outline-container-org74a3435" class="outline-3">
|
||||
<h3 id="org74a3435"><span class="section-number-3">5.1</span> Load Data</h3>
|
||||
<div class="outline-text-3" id="text-5-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">oc = load(<span class="org-string">'./mat/identification_open_circuit.mat'</span>, <span class="org-string">'t'</span>, <span class="org-string">'encoder'</span>, <span class="org-string">'u'</span>);
|
||||
sc = load(<span class="org-string">'./mat/identification_short_circuit.mat'</span>, <span class="org-string">'t'</span>, <span class="org-string">'encoder'</span>, <span class="org-string">'u'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3c7c26d" class="outline-3">
|
||||
<h3 id="org3c7c26d"><span class="section-number-3">5.2</span> Transfer Functions</h3>
|
||||
<div class="outline-text-3" id="text-5-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Ts = 1e<span class="org-type">-</span>4; <span class="org-comment">% Sampling Time [s]</span>
|
||||
win = hann(ceil(10<span class="org-type">/</span>Ts));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">[tf_oc_est, f] = tfestimate(oc.u, oc.encoder, win, [], [], 1<span class="org-type">/</span>Ts);
|
||||
[co_oc_est, <span class="org-type">~</span>] = mscohere( oc.u, oc.encoder, win, [], [], 1<span class="org-type">/</span>Ts);
|
||||
|
||||
[tf_sc_est, <span class="org-type">~</span>] = tfestimate(sc.u, sc.encoder, win, [], [], 1<span class="org-type">/</span>Ts);
|
||||
[co_sc_est, <span class="org-type">~</span>] = mscohere( sc.u, sc.encoder, win, [], [], 1<span class="org-type">/</span>Ts);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org3137b17" class="figure">
|
||||
<p><img src="figs/stiffness_force_sensor_coherence.png" alt="stiffness_force_sensor_coherence.png" />
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div id="org0b7ba5b" class="figure">
|
||||
<p><img src="figs/stiffness_force_sensor_bode.png" alt="stiffness_force_sensor_bode.png" />
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org8bfdbdd" class="figure">
|
||||
<p><img src="figs/stiffness_force_sensor_bode_zoom.png" alt="stiffness_force_sensor_bode_zoom.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 16: </span>Zoom on the change of resonance</p>
|
||||
</div>
|
||||
|
||||
<div class="important" id="org98481c9">
|
||||
<p>
|
||||
The change of resonance frequency / stiffness is very small and is not important here.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org939e6d1" class="outline-2">
|
||||
<h2 id="org939e6d1"><span class="section-number-2">6</span> Generated Number of Charge / Voltage</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<p>
|
||||
Two stacks are used as actuator (in parallel) and one stack is used as sensor.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The amplifier gain is 20V/V (Cedrat LA75B).
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org24ebf58" class="outline-3">
|
||||
<h3 id="org24ebf58"><span class="section-number-3">6.1</span> Steps</h3>
|
||||
<div class="outline-text-3" id="text-6-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'./mat/force_sensor_steps.mat'</span>, <span class="org-string">'t'</span>, <span class="org-string">'encoder'</span>, <span class="org-string">'u'</span>, <span class="org-string">'v'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
tiledlayout(2, 1, <span class="org-string">'TileSpacing'</span>, <span class="org-string">'None'</span>, <span class="org-string">'Padding'</span>, <span class="org-string">'None'</span>);
|
||||
nexttile;
|
||||
plot(t, v);
|
||||
xlabel(<span class="org-string">'Time [s]'</span>); ylabel(<span class="org-string">'Measured voltage [V]'</span>);
|
||||
nexttile;
|
||||
plot(t, u);
|
||||
xlabel(<span class="org-string">'Time [s]'</span>); ylabel(<span class="org-string">'Actuator Voltage [V]'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org487995c" class="figure">
|
||||
<p><img src="figs/force_sen_steps_time_domain.png" alt="force_sen_steps_time_domain.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 17: </span>Time domain signal during the 3 actuator voltage steps</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Three steps are performed at the following time intervals:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>2.5, 23</li>
|
||||
<li>23.8, 35</li>
|
||||
<li>35.8, 50</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
Fit function:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">f = @(b,x) b(1)<span class="org-type">.*</span>exp(b(2)<span class="org-type">.*</span>x) <span class="org-type">+</span> b(3);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We are interested by the <code>b(2)</code> term, which is the time constant of the exponential.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">tau = zeros(3,1);
|
||||
V0 = zeros(3,1);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">t_cur = t(2.5 <span class="org-type"><</span> t <span class="org-type">&</span> t <span class="org-type"><</span> 23);
|
||||
t_cur = t_cur <span class="org-type">-</span> t_cur(1);
|
||||
y_cur = v(2.5 <span class="org-type"><</span> t <span class="org-type">&</span> t <span class="org-type"><</span> 23);
|
||||
|
||||
nrmrsd = @(b) norm(y_cur <span class="org-type">-</span> f(b,t_cur)); <span class="org-comment">% Residual Norm Cost Function</span>
|
||||
B0 = [0.5, <span class="org-type">-</span>0.15, 2.2]; <span class="org-comment">% Choose Appropriate Initial Estimates</span>
|
||||
[B,rnrm] = fminsearch(nrmrsd, B0); <span class="org-comment">% Estimate Parameters ‘B’</span>
|
||||
|
||||
tau<span class="org-type">(1) </span>= 1<span class="org-type">/</span>B(2);
|
||||
V0<span class="org-type">(1) </span>= B(3);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">t_cur = t(23.8 <span class="org-type"><</span> t <span class="org-type">&</span> t <span class="org-type"><</span> 35);
|
||||
t_cur = t_cur <span class="org-type">-</span> t_cur(1);
|
||||
y_cur = v(23.8 <span class="org-type"><</span> t <span class="org-type">&</span> t <span class="org-type"><</span> 35);
|
||||
|
||||
nrmrsd = @(b) norm(y_cur <span class="org-type">-</span> f(b,t_cur)); <span class="org-comment">% Residual Norm Cost Function</span>
|
||||
B0 = [0.5, <span class="org-type">-</span>0.15, 2.2]; <span class="org-comment">% Choose Appropriate Initial Estimates</span>
|
||||
[B,rnrm] = fminsearch(nrmrsd, B0); <span class="org-comment">% Estimate Parameters ‘B’</span>
|
||||
|
||||
tau<span class="org-type">(2) </span>= 1<span class="org-type">/</span>B(2);
|
||||
V0<span class="org-type">(2) </span>= B(3);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">t_cur = t(35.8 <span class="org-type"><</span> t);
|
||||
t_cur = t_cur <span class="org-type">-</span> t_cur(1);
|
||||
y_cur = v(35.8 <span class="org-type"><</span> t);
|
||||
|
||||
nrmrsd = @(b) norm(y_cur <span class="org-type">-</span> f(b,t_cur)); <span class="org-comment">% Residual Norm Cost Function</span>
|
||||
B0 = [0.5, <span class="org-type">-</span>0.15, 2.2]; <span class="org-comment">% Choose Appropriate Initial Estimates</span>
|
||||
[B,rnrm] = fminsearch(nrmrsd, B0); <span class="org-comment">% Estimate Parameters ‘B’</span>
|
||||
|
||||
tau<span class="org-type">(3) </span>= 1<span class="org-type">/</span>B(2);
|
||||
V0<span class="org-type">(3) </span>= B(3);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
<colgroup>
|
||||
<col class="org-right" />
|
||||
|
||||
<col class="org-right" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="org-right">\(tau\) [s]</th>
|
||||
<th scope="col" class="org-right">\(V_0\) [V]</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="org-right">6.47</td>
|
||||
<td class="org-right">2.26</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">6.76</td>
|
||||
<td class="org-right">2.26</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">6.49</td>
|
||||
<td class="org-right">2.25</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
With the capacitance being \(C = 4.4 \mu F\), the internal impedance of the Speedgoat ADC can be computed as follows:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Cp = 4.4e<span class="org-type">-</span>6; <span class="org-comment">% [F]</span>
|
||||
Rin = abs(mean(tau))<span class="org-type">/</span>Cp;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<pre class="example">
|
||||
1494100.0
|
||||
</pre>
|
||||
|
||||
|
||||
<p>
|
||||
The input impedance of the Speedgoat’s ADC should then be close to \(1.5\,M\Omega\) (specified at \(1\,M\Omega\)).
|
||||
</p>
|
||||
|
||||
<div class="important" id="org3005c4e">
|
||||
<p>
|
||||
How can we explain the voltage offset?
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<p>
|
||||
As shown in Figure <a href="#org63387ea">18</a> (taken from (<a href="#citeproc_bib_item_1">Reza and Andrew 2006</a>)), an input voltage offset is due to the input bias current \(i_n\).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org63387ea" class="figure">
|
||||
<p><img src="figs/piezo_sensor_model_instrumentation.png" alt="piezo_sensor_model_instrumentation.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 18: </span>Model of a piezoelectric transducer (left) and instrumentation amplifier (right)</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The estimated input bias current is then:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">in = mean(V0)<span class="org-type">/</span>Rin;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<pre class="example">
|
||||
1.5119e-06
|
||||
</pre>
|
||||
|
||||
|
||||
<p>
|
||||
An additional resistor in parallel with \(R_{in}\) would have two effects:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>reduce the input voltage offset
|
||||
\[ V_{off} = \frac{R_a R_{in}}{R_a + R_{in}} i_n \]</li>
|
||||
<li>increase the high pass corner frequency \(f_c\)
|
||||
\[ C_p \frac{R_{in}R_a}{R_{in} + R_a} = \tau_c = \frac{1}{f_c} \]
|
||||
\[ R_a = \frac{R_i}{f_c C_p R_i - 1} \]</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<p>
|
||||
If we allow the high pass corner frequency to be equals to 3Hz:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">fc = 3;
|
||||
Ra = Rin<span class="org-type">/</span>(fc<span class="org-type">*</span>C<span class="org-type">*</span>Rin <span class="org-type">-</span> 1);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<pre class="example">
|
||||
79804
|
||||
</pre>
|
||||
|
||||
|
||||
<p>
|
||||
With this parallel resistance value, the voltage offset would be:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">V_offset = Ra<span class="org-type">*</span>Rin<span class="org-type">/</span>(Ra <span class="org-type">+</span> Rin) <span class="org-type">*</span> in;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<pre class="example">
|
||||
0.11454
|
||||
</pre>
|
||||
|
||||
|
||||
<p>
|
||||
Which is much more acceptable.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd891bf7" class="outline-3">
|
||||
<h3 id="orgd891bf7"><span class="section-number-3">6.2</span> Sinus</h3>
|
||||
<div class="outline-text-3" id="text-6-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'./mat/force_sensor_sin.mat'</span>, <span class="org-string">'t'</span>, <span class="org-string">'encoder'</span>, <span class="org-string">'u'</span>, <span class="org-string">'v'</span>);
|
||||
|
||||
u = u(t<span class="org-type">></span>25);
|
||||
v = v(t<span class="org-type">></span>25);
|
||||
encoder = encoder(t<span class="org-type">></span>25) <span class="org-type">-</span> mean(encoder(t<span class="org-type">></span>25));
|
||||
t = t(t<span class="org-type">></span>25);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The driving voltage is a sinus at 0.5Hz centered on 3V and with an amplitude of 3V (Figure <a href="#orgf11f3a7">19</a>).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgf11f3a7" class="figure">
|
||||
<p><img src="figs/force_sensor_sin_u.png" alt="force_sensor_sin_u.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 19: </span>Driving Voltage</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The full stroke as measured by the encoder is:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">max(encoder)<span class="org-type">-</span>min(encoder)
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<pre class="example">
|
||||
5.005e-05
|
||||
</pre>
|
||||
|
||||
|
||||
<p>
|
||||
Its signal is shown in Figure <a href="#org3cc6daf">20</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org3cc6daf" class="figure">
|
||||
<p><img src="figs/force_sensor_sin_encoder.png" alt="force_sensor_sin_encoder.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 20: </span>Encoder measurement</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The generated voltage by the stack is shown in Figure
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgd2cbe17" class="figure">
|
||||
<p><img src="figs/force_sensor_sin_stack.png" alt="force_sensor_sin_stack.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 21: </span>Voltage measured on the stack used as a sensor</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The capacitance of the stack is
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Cp = 4.4e<span class="org-type">-</span>6; <span class="org-comment">% [F]</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The corresponding generated charge is then shown in Figure <a href="#org5b6dc79">22</a>.
|
||||
</p>
|
||||
|
||||
<div id="org5b6dc79" class="figure">
|
||||
<p><img src="figs/force_sensor_sin_charge.png" alt="force_sensor_sin_charge.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 22: </span>Generated Charge</p>
|
||||
</div>
|
||||
|
||||
|
||||
<p>
|
||||
The relation between the generated voltage and the measured displacement is almost linear as shown in Figure <a href="#org9b9ea94">23</a>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">b1 = encoder<span class="org-type">\</span>(v<span class="org-type">-</span>mean(v));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org9b9ea94" class="figure">
|
||||
<p><img src="figs/force_sensor_linear_relation.png" alt="force_sensor_linear_relation.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 23: </span>Almost linear relation between the relative displacement and the generated voltage</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
With a 16bits ADC, the resolution will then be equals to (in [nm]):
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">abs((20<span class="org-type">/</span>2<span class="org-type">^</span>16)<span class="org-type">/</span>(b1<span class="org-type">/</span>1e9))
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<pre class="example">
|
||||
3.9838
|
||||
</pre>
|
||||
|
||||
|
||||
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><h2 class='citeproc-org-bib-h2'>Bibliography</h2>
|
||||
<div class="csl-bib-body">
|
||||
<div class="csl-entry"><a name="citeproc_bib_item_1"></a>Reza, Moheimani, and Fleming Andrew. 2006. <i>Piezoelectric Transducers for Vibration Control and Damping</i>. London: Springer.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-10-25 dim. 09:06</p>
|
||||
<p class="date">Created: 2020-10-29 jeu. 09:59</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
Reference in New Issue
Block a user