2020-11-10 12:55:51 +01:00
<?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-11-10 13:00:07 +01:00
<!-- 2020 - 11 - 10 mar. 13:00 -->
2020-11-10 12:55:51 +01:00
< meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" / >
< title > Piezoelectric Force Sensor - Test Bench< / 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/custom.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/readtheorg.js" > < / script >
< script > M a t h J a x = {
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 = "org-div-home-and-up" >
< a accesskey = "h" href = "../index.html" > UP < / a >
|
< a accesskey = "H" href = "../index.html" > HOME < / a >
< / div > < div id = "content" >
< h1 class = "title" > Piezoelectric Force Sensor - Test Bench< / h1 >
< div id = "table-of-contents" >
< h2 > Table of Contents< / h2 >
< div id = "text-table-of-contents" >
< ul >
2020-11-10 13:00:07 +01:00
< li > < a href = "#orgfa4ffe0" > 1. Change of Stiffness due to Sensors stack being open/closed circuit< / a >
2020-11-10 12:55:51 +01:00
< ul >
2020-11-10 13:00:07 +01:00
< li > < a href = "#org664356d" > 1.1. Load Data< / a > < / li >
< li > < a href = "#orgb329298" > 1.2. Transfer Functions< / a > < / li >
2020-11-10 12:55:51 +01:00
< / ul >
< / li >
2020-11-10 13:00:07 +01:00
< li > < a href = "#orgcc12929" > 2. Generated Number of Charge / Voltage< / a >
2020-11-10 12:55:51 +01:00
< ul >
2020-11-10 13:00:07 +01:00
< li > < a href = "#org7a46587" > 2.1. Steps< / a > < / li >
< li > < a href = "#org9938615" > 2.2. Add Parallel Resistor< / a > < / li >
< li > < a href = "#org3e71d2e" > 2.3. Sinus< / a > < / li >
2020-11-10 12:55:51 +01:00
< / ul >
< / li >
< / ul >
< / div >
< / div >
< p >
In this document is studied how a piezoelectric stack can be used to measured the force.
< / p >
< ul class = "org-ul" >
2020-11-10 13:00:07 +01:00
< li > Section < a href = "#org574ce5b" > 1< / a > : the effect of the input impedance of the electronics connected to the force sensor stack on the stiffness of the stack is studied< / li >
< li > Section < a href = "#org3d96d6c" > 2< / a > :< / li >
2020-11-10 12:55:51 +01:00
< / ul >
2020-11-10 13:00:07 +01:00
< div id = "outline-container-orgfa4ffe0" class = "outline-2" >
< h2 id = "orgfa4ffe0" > < span class = "section-number-2" > 1< / span > Change of Stiffness due to Sensors stack being open/closed circuit< / h2 >
2020-11-10 12:55:51 +01:00
< div class = "outline-text-2" id = "text-1" >
< p >
2020-11-10 13:00:07 +01:00
< a id = "org574ce5b" > < / a >
2020-11-10 12:55:51 +01:00
< / p >
< / div >
2020-11-10 13:00:07 +01:00
< div id = "outline-container-org664356d" class = "outline-3" >
< h3 id = "org664356d" > < span class = "section-number-3" > 1.1< / span > Load Data< / h3 >
2020-11-10 12:55:51 +01:00
< div class = "outline-text-3" id = "text-1-1" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > oc = load(< span class = "org-string" > '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" > '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 >
2020-11-10 13:00:07 +01:00
< div id = "outline-container-orgb329298" class = "outline-3" >
< h3 id = "orgb329298" > < span class = "section-number-3" > 1.2< / span > Transfer Functions< / h3 >
2020-11-10 12:55:51 +01:00
< div class = "outline-text-3" id = "text-1-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 >
2020-11-10 13:00:07 +01:00
< div id = "org07156da" class = "figure" >
2020-11-10 12:55:51 +01:00
< p > < img src = "figs/stiffness_force_sensor_coherence.png" alt = "stiffness_force_sensor_coherence.png" / >
< / p >
< / div >
2020-11-10 13:00:07 +01:00
< div id = "org4e249d7" class = "figure" >
2020-11-10 12:55:51 +01:00
< p > < img src = "figs/stiffness_force_sensor_bode.png" alt = "stiffness_force_sensor_bode.png" / >
< / p >
< / div >
2020-11-10 13:00:07 +01:00
< div id = "org503058b" class = "figure" >
2020-11-10 12:55:51 +01:00
< p > < img src = "figs/stiffness_force_sensor_bode_zoom.png" alt = "stiffness_force_sensor_bode_zoom.png" / >
< / p >
< p > < span class = "figure-number" > Figure 3: < / span > Zoom on the change of resonance< / p >
< / div >
2020-11-10 13:00:07 +01:00
< div class = "important" id = "org93bdd08" >
2020-11-10 12:55:51 +01:00
< p >
The change of resonance frequency / stiffness is very small and is not important here.
< / p >
< / div >
< / div >
< / div >
< / div >
2020-11-10 13:00:07 +01:00
< div id = "outline-container-orgcc12929" class = "outline-2" >
< h2 id = "orgcc12929" > < span class = "section-number-2" > 2< / span > Generated Number of Charge / Voltage< / h2 >
2020-11-10 12:55:51 +01:00
< div class = "outline-text-2" id = "text-2" >
< p >
2020-11-10 13:00:07 +01:00
< a id = "org3d96d6c" > < / a >
2020-11-10 12:55:51 +01:00
< / p >
< 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 >
2020-11-10 13:00:07 +01:00
< div id = "outline-container-org7a46587" class = "outline-3" >
< h3 id = "org7a46587" > < span class = "section-number-3" > 2.1< / span > Steps< / h3 >
2020-11-10 12:55:51 +01:00
< div class = "outline-text-3" id = "text-2-1" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > load(< span class = "org-string" > '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 >
2020-11-10 13:00:07 +01:00
< div id = "orgda3ef57" class = "figure" >
2020-11-10 12:55:51 +01:00
< p > < img src = "figs/force_sen_steps_time_domain.png" alt = "force_sen_steps_time_domain.png" / >
< / p >
< p > < span class = "figure-number" > Figure 4: < / span > Time domain signal during the 3 actuator voltage steps< / p >
< / div >
< p >
Three steps are performed at the following time intervals:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > t_s = [ 2.5, 23;
23.8, 35;
35.8, 50];
< / pre >
< / div >
< 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(size(t_s, 1),1);
V0 = zeros(size(t_s, 1),1);
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-keyword" > for< / span > < span class = "org-variable-name" > t_i< / span > = < span class = "org-constant" > 1:size(t_s, 1)< / span >
t_cur = t(t_s(t_i, 1) < span class = "org-type" > < < / span > t < span class = "org-type" > & < / span > t < span class = "org-type" > < < / span > t_s(t_i, 2));
t_cur = t_cur < span class = "org-type" > -< / span > t_cur(1);
y_cur = v(t_s(t_i, 1) < span class = "org-type" > < < / span > t < span class = "org-type" > & < / span > t < span class = "org-type" > < < / span > t_s(t_i, 2));
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(t_i) = 1< span class = "org-type" > /< / span > B(2);
V0(t_i) = B(3);
< span class = "org-keyword" > end< / span >
< / 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 >
2020-11-10 13:00:07 +01:00
< div class = "important" id = "org7c6e263" >
2020-11-10 12:55:51 +01:00
< p >
How can we explain the voltage offset?
< / p >
< / div >
< p >
2020-11-10 13:00:07 +01:00
As shown in Figure < a href = "#org1036a3b" > 5< / 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\).
2020-11-10 12:55:51 +01:00
< / p >
2020-11-10 13:00:07 +01:00
< div id = "org1036a3b" class = "figure" >
< p > < img src = "figs/force_sensor_model_electronics_without_R.png" alt = "force_sensor_model_electronics_without_R.png" / >
2020-11-10 12:55:51 +01:00
< / p >
< p > < span class = "figure-number" > Figure 5: < / 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 > Cp< 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 >
2020-11-10 13:00:07 +01:00
< div id = "outline-container-org9938615" class = "outline-3" >
< h3 id = "org9938615" > < span class = "section-number-3" > 2.2< / span > Add Parallel Resistor< / h3 >
2020-11-10 12:55:51 +01:00
< div class = "outline-text-3" id = "text-2-2" >
< p >
2020-11-10 13:00:07 +01:00
A resistor \(R_p \approx 100\,k\Omega\) is added in parallel with the force sensor as shown in Figure < a href = "#orgbf8a90f" > 6< / a > .
2020-11-10 12:55:51 +01:00
< / p >
2020-11-10 13:00:07 +01:00
< div id = "orgbf8a90f" class = "figure" >
< p > < img src = "figs/force_sensor_model_electronics.png" alt = "force_sensor_model_electronics.png" / >
2020-11-10 12:55:51 +01:00
< / p >
2020-11-10 13:00:07 +01:00
< p > < span class = "figure-number" > Figure 6: < / span > Model of a piezoelectric transducer (left) and instrumentation amplifier (right) with the additional resistor \(R_p\)< / p >
2020-11-10 12:55:51 +01:00
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > load(< span class = "org-string" > 'force_sensor_steps_R_82k7.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 >
2020-11-10 13:00:07 +01:00
< div id = "orgf9378d8" class = "figure" >
2020-11-10 12:55:51 +01:00
< p > < img src = "figs/force_sen_steps_time_domain_par_R.png" alt = "force_sen_steps_time_domain_par_R.png" / >
< / p >
< p > < span class = "figure-number" > Figure 7: < / span > Time domain signal during the actuator voltage steps< / p >
< / div >
< p >
Three steps are performed at the following time intervals:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > t_s = [1.9, 6;
8.5, 13;
15.5, 21;
22.6, 26;
30.0, 36;
37.5, 41;
46.2, 49.5]
< / pre >
< / div >
< 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(size(t_s, 1),1);
V0 = zeros(size(t_s, 1),1);
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-keyword" > for< / span > < span class = "org-variable-name" > t_i< / span > = < span class = "org-constant" > 1:size(t_s, 1)< / span >
t_cur = t(t_s(t_i, 1) < span class = "org-type" > < < / span > t < span class = "org-type" > & < / span > t < span class = "org-type" > < < / span > t_s(t_i, 2));
t_cur = t_cur < span class = "org-type" > -< / span > t_cur(1);
y_cur = v(t_s(t_i, 1) < span class = "org-type" > < < / span > t < span class = "org-type" > & < / span > t < span class = "org-type" > < < / span > t_s(t_i, 2));
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.2, 0.2]; < span class = "org-comment" > % Choose Appropriate Initial Estimates< / span >
[B,rnrm] = fminsearch(nrmrsd, B0); < span class = "org-comment" > % Estimate Parameters ‘ B’ < / span >
tau(t_i) = 1< span class = "org-type" > /< / span > B(2);
V0(t_i) = B(3);
< span class = "org-keyword" > end< / span >
< / pre >
< / div >
< p >
And indeed, we obtain a much smaller offset voltage and a much faster time constant.
< / p >
< 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" > 0.43< / td >
< td class = "org-right" > 0.15< / td >
< / tr >
< tr >
< td class = "org-right" > 0.45< / td >
< td class = "org-right" > 0.16< / td >
< / tr >
< tr >
< td class = "org-right" > 0.43< / td >
< td class = "org-right" > 0.15< / td >
< / tr >
< tr >
< td class = "org-right" > 0.43< / td >
< td class = "org-right" > 0.15< / td >
< / tr >
< tr >
< td class = "org-right" > 0.45< / td >
< td class = "org-right" > 0.15< / td >
< / tr >
< tr >
< td class = "org-right" > 0.46< / td >
< td class = "org-right" > 0.16< / td >
< / tr >
< tr >
< td class = "org-right" > 0.48< / td >
< td class = "org-right" > 0.16< / td >
< / tr >
< / tbody >
< / table >
< p >
Knowing the capacitance value, we can estimate the value of the added resistor (neglecting the input impedance of \(\approx 1\,M\Omega\)):
< / 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" >
101200.0
< / pre >
< p >
And we can verify that the bias current estimation stays the same:
< / 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.5305e-06
< / pre >
< p >
This validates the model of the ADC and the effectiveness of the added resistor.
< / p >
< / div >
< / div >
2020-11-10 13:00:07 +01:00
< div id = "outline-container-org3e71d2e" class = "outline-3" >
< h3 id = "org3e71d2e" > < span class = "section-number-3" > 2.3< / span > Sinus< / h3 >
2020-11-10 12:55:51 +01:00
< div class = "outline-text-3" id = "text-2-3" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > load(< span class = "org-string" > '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 >
2020-11-10 13:00:07 +01:00
The driving voltage is a sinus at 0.5Hz centered on 3V and with an amplitude of 3V (Figure < a href = "#org2ae5f53" > 8< / a > ).
2020-11-10 12:55:51 +01:00
< / p >
2020-11-10 13:00:07 +01:00
< div id = "org2ae5f53" class = "figure" >
2020-11-10 12:55:51 +01:00
< p > < img src = "figs/force_sensor_sin_u.png" alt = "force_sensor_sin_u.png" / >
< / p >
< p > < span class = "figure-number" > Figure 8: < / 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 >
2020-11-10 13:00:07 +01:00
Its signal is shown in Figure < a href = "#org3458f57" > 9< / a > .
2020-11-10 12:55:51 +01:00
< / p >
2020-11-10 13:00:07 +01:00
< div id = "org3458f57" class = "figure" >
2020-11-10 12:55:51 +01:00
< p > < img src = "figs/force_sensor_sin_encoder.png" alt = "force_sensor_sin_encoder.png" / >
< / p >
< p > < span class = "figure-number" > Figure 9: < / span > Encoder measurement< / p >
< / div >
< p >
The generated voltage by the stack is shown in Figure
< / p >
2020-11-10 13:00:07 +01:00
< div id = "orga69980e" class = "figure" >
2020-11-10 12:55:51 +01:00
< p > < img src = "figs/force_sensor_sin_stack.png" alt = "force_sensor_sin_stack.png" / >
< / p >
< p > < span class = "figure-number" > Figure 10: < / 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 >
2020-11-10 13:00:07 +01:00
The corresponding generated charge is then shown in Figure < a href = "#orgeafdaf5" > 11< / a > .
2020-11-10 12:55:51 +01:00
< / p >
2020-11-10 13:00:07 +01:00
< div id = "orgeafdaf5" class = "figure" >
2020-11-10 12:55:51 +01:00
< p > < img src = "figs/force_sensor_sin_charge.png" alt = "force_sensor_sin_charge.png" / >
< / p >
< p > < span class = "figure-number" > Figure 11: < / span > Generated Charge< / p >
< / div >
< p >
2020-11-10 13:00:07 +01:00
The relation between the generated voltage and the measured displacement is almost linear as shown in Figure < a href = "#org83e4a49" > 12< / a > .
2020-11-10 12:55:51 +01:00
< / 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 >
2020-11-10 13:00:07 +01:00
< div id = "org83e4a49" class = "figure" >
2020-11-10 12:55:51 +01:00
< p > < img src = "figs/force_sensor_linear_relation.png" alt = "force_sensor_linear_relation.png" / >
< / p >
< p > < span class = "figure-number" > Figure 12: < / 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.5 em ; margin-left : 1.5 em ; } < / 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 >
2020-11-10 13:00:07 +01:00
< p class = "date" > Created: 2020-11-10 mar. 13:00< / p >
2020-11-10 12:55:51 +01:00
< / div >
< / body >
< / html >