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-12 10:16:26 +01:00
<!-- 2020 - 11 - 12 jeu. 10:16 -->
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" / >
2020-11-12 10:16:26 +01:00
< link rel = "stylesheet" type = "text/css" href = "https://research.tdehaeze.xyz/css/style.css" / >
< script type = "text/javascript" src = "https://research.tdehaeze.xyz/js/script.js" > < / script >
2020-11-10 12:55:51 +01:00
< 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-12 10:16:26 +01:00
< li > < a href = "#org99cbc3b" > 1. Change of Stiffness due to Sensors stack being open/closed circuit< / a >
2020-11-10 12:55:51 +01:00
< ul >
2020-11-12 10:16:26 +01:00
< li > < a href = "#org8df2126" > 1.1. Load Data< / a > < / li >
< li > < a href = "#orgd97a936" > 1.2. Transfer Functions< / a > < / li >
2020-11-10 12:55:51 +01:00
< / ul >
< / li >
2020-11-12 10:16:26 +01:00
< li > < a href = "#orgd9adefa" > 2. Effect of a Resistor in Parallel with the Stack Sensor< / a >
2020-11-10 12:55:51 +01:00
< ul >
2020-11-12 10:16:26 +01:00
< li > < a href = "#org6cc7b78" > 2.1. Excitation steps and measured generated voltage< / a > < / li >
< li > < a href = "#orga1cd4c0" > 2.2. Estimation of the voltage offset and discharge time constant< / a > < / li >
< li > < a href = "#orge8fa34a" > 2.3. Estimation of the ADC input impedance< / a > < / li >
< li > < a href = "#org96db33c" > 2.4. Explanation of the Voltage offset< / a > < / li >
< li > < a href = "#orgf987e1d" > 2.5. Effect of an additional Parallel Resistor< / a > < / li >
< li > < a href = "#org1bfcf07" > 2.6. Obtained voltage offset and time constant with the added resistor< / a > < / li >
2020-11-10 13:42:02 +01:00
< / ul >
< / li >
2020-11-12 10:16:26 +01:00
< li > < a href = "#orge72ac2b" > 3. Generated Number of Charge / Voltage< / a >
2020-11-10 13:42:02 +01:00
< ul >
2020-11-12 10:16:26 +01:00
< li > < a href = "#orgd28174f" > 3.1. Data Loading< / a > < / li >
< li > < a href = "#orgd39b262" > 3.2. Excitation signal and corresponding displacement< / a > < / li >
< li > < a href = "#org0aaf282" > 3.3. Generated Voltage< / a > < / li >
< li > < a href = "#orgb349423" > 3.4. Generated Charge< / a > < / li >
< li > < a href = "#org16c85ae" > 3.5. Generated Voltage/Charge as a function of the displacement< / 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 >
2020-11-10 13:42:02 +01:00
< p >
It is divided in the following sections:
< / p >
2020-11-10 12:55:51 +01:00
< ul class = "org-ul" >
2020-11-12 10:16:26 +01:00
< li > Section < a href = "#org3d57e4e" > 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 = "#org915df51" > 2< / a > : the effect of a resistor in parallel with the sensor stack is studied< / li >
< li > Section < a href = "#org50b540e" > 3< / a > : the voltage / number of charge generated by the sensor as a function of the displacement is measured< / li >
2020-11-10 12:55:51 +01:00
< / ul >
2020-11-12 10:16:26 +01:00
< div id = "outline-container-org99cbc3b" class = "outline-2" >
< h2 id = "org99cbc3b" > < 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-12 10:16:26 +01:00
< a id = "org3d57e4e" > < / a >
2020-11-10 13:42:02 +01:00
< / p >
< p >
2020-11-12 10:16:26 +01:00
The experimental Setup is schematically represented in Figure < a href = "#org284a4f0" > 1< / a > .
2020-11-10 13:42:02 +01:00
< / p >
< p >
The dynamics from the voltage \(u\) used to drive the actuator stacks to the encoder displacement \(d_e\) is identified when the switch connected to the sensor stack is either open or closed.
2020-11-10 12:55:51 +01:00
< / p >
2020-11-10 13:42:02 +01:00
2020-11-12 10:16:26 +01:00
< div id = "org284a4f0" class = "figure" >
2020-11-10 13:42:02 +01:00
< 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 >
2020-11-10 12:55:51 +01:00
< / div >
2020-11-10 13:42:02 +01:00
< p >
When the switch is opened, this correspond of having a measurement electronics with an high input impedance such as a < b > voltage< / b > amplifier.
When the switch is closed, this correspond of having a measurement electronics with an small input impedance such as a < b > charge< / b > amplifier.
< / p >
< p >
We wish here to see how the system dynamics is changing in the two extreme cases.
< / p >
2020-11-12 10:16:26 +01:00
< div class = "note" id = "org2dcec72" >
2020-11-10 13:42:02 +01:00
< p >
The equipment used in the test bench are:
< / p >
< ul class = "org-ul" >
< li > Renishaw Resolution Encoder with 1nm resolution (< a href = "doc/L-9517-9448-05-B_Data_sheet_RESOLUTE_BiSS_en.pdf" > doc< / a > )< / li >
< li > Cedrat Amplified Piezoelectric Actuator APA95ML (< a href = "doc/APA95ML.pdf" > doc< / a > )< / li >
< li > Voltage Amplifier LA75B (< a href = "doc/LA75B.pdf" > doc< / a > )< / li >
< li > Speedgoat IO131 with 16bits ADC and DAC (< a href = "doc/IO130 IO131 OEM Datasheet.pdf" > doc< / a > )< / li >
< / ul >
< / div >
< / div >
2020-11-12 10:16:26 +01:00
< div id = "outline-container-org8df2126" class = "outline-3" >
< h3 id = "org8df2126" > < 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-12 10:16:26 +01:00
< div id = "outline-container-orgd97a936" class = "outline-3" >
< h3 id = "orgd97a936" > < 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-12 10:16:26 +01:00
< div id = "org559e474" 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-12 10:16:26 +01:00
< div id = "org986b204" 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-12 10:16:26 +01:00
< div id = "org62eed17" 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 >
2020-11-10 13:42:02 +01:00
< p > < span class = "figure-number" > Figure 4: < / span > Zoom on the change of resonance< / p >
2020-11-10 12:55:51 +01:00
< / div >
2020-11-12 10:16:26 +01:00
< div class = "important" id = "orgd5a860c" >
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-12 10:16:26 +01:00
< div id = "outline-container-orgd9adefa" class = "outline-2" >
< h2 id = "orgd9adefa" > < span class = "section-number-2" > 2< / span > Effect of a Resistor in Parallel with the Stack Sensor< / h2 >
2020-11-10 12:55:51 +01:00
< div class = "outline-text-2" id = "text-2" >
< p >
2020-11-12 10:16:26 +01:00
< a id = "org915df51" > < / a >
2020-11-10 12:55:51 +01:00
< / p >
< p >
2020-11-12 10:16:26 +01:00
The setup is shown in Figure < a href = "#orgee79898" > 5< / a > where two stacks are used as actuator (in parallel) and one stack is used as sensor.
2020-11-10 13:42:02 +01:00
The voltage amplifier used has a gain of 20 [V/V] (Cedrat LA75B).
2020-11-10 12:55:51 +01:00
< / p >
2020-11-10 13:42:02 +01:00
2020-11-12 10:16:26 +01:00
< div id = "orgee79898" class = "figure" >
2020-11-10 13:42:02 +01:00
< p > < img src = "figs/force_sensor_setup.png" alt = "force_sensor_setup.png" / >
< / p >
< p > < span class = "figure-number" > Figure 5: < / span > Schematic of the setup< / p >
< / div >
2020-11-12 10:16:26 +01:00
< div class = "note" id = "org61996ca" >
2020-11-10 12:55:51 +01:00
< p >
2020-11-10 13:42:02 +01:00
The equipment used in the test bench are:
2020-11-10 12:55:51 +01:00
< / p >
2020-11-10 13:42:02 +01:00
< ul class = "org-ul" >
< li > Renishaw Resolution Encoder with 1nm resolution (< a href = "doc/L-9517-9448-05-B_Data_sheet_RESOLUTE_BiSS_en.pdf" > doc< / a > )< / li >
< li > Cedrat Amplified Piezoelectric Actuator APA95ML (< a href = "doc/APA95ML.pdf" > doc< / a > )< / li >
< li > Voltage Amplifier LA75B (< a href = "doc/LA75B.pdf" > doc< / a > )< / li >
< li > Speedgoat IO131 with 16bits ADC and DAC (< a href = "doc/IO130 IO131 OEM Datasheet.pdf" > doc< / a > )< / li >
< / ul >
< / div >
2020-11-10 12:55:51 +01:00
< / div >
2020-11-12 10:16:26 +01:00
< div id = "outline-container-org6cc7b78" class = "outline-3" >
< h3 id = "org6cc7b78" > < span class = "section-number-3" > 2.1< / span > Excitation steps and measured generated voltage< / h3 >
2020-11-10 12:55:51 +01:00
< div class = "outline-text-3" id = "text-2-1" >
2020-11-10 13:42:02 +01:00
< p >
The measured data is loaded.
< / p >
2020-11-10 12:55:51 +01:00
< 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 >
2020-11-10 13:42:02 +01:00
< p >
2020-11-12 10:16:26 +01:00
The excitation signal (steps) and measured voltage across the sensor stack are shown in Figure < a href = "#orgf9c6d37" > 6< / a > .
2020-11-10 13:42:02 +01:00
< / p >
2020-11-10 12:55:51 +01:00
2020-11-12 10:16:26 +01:00
< div id = "orgf9c6d37" 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 >
2020-11-10 13:42:02 +01:00
< p > < span class = "figure-number" > Figure 6: < / span > Time domain signal during the 3 actuator voltage steps< / p >
< / div >
< / div >
2020-11-10 12:55:51 +01:00
< / div >
2020-11-12 10:16:26 +01:00
< div id = "outline-container-orga1cd4c0" class = "outline-3" >
< h3 id = "orga1cd4c0" > < span class = "section-number-3" > 2.2< / span > Estimation of the voltage offset and discharge time constant< / h3 >
2020-11-10 13:42:02 +01:00
< div class = "outline-text-3" id = "text-2-2" >
2020-11-10 12:55:51 +01:00
< p >
2020-11-10 13:42:02 +01:00
The measured voltage shows an exponential decay which indicates that the charge across the capacitor formed by the stack is discharging into a resistor.
This corresponds to an RC circuit with a time constant \(\tau = RC\).
< / p >
< p >
In order to estimate the time domain, we fit the data with an exponential.
The fit function is:
2020-11-10 12:55:51 +01:00
< / p >
< div class = "org-src-container" >
2020-11-10 13:42:02 +01:00
< 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);
2020-11-10 12:55:51 +01:00
< / pre >
< / div >
< p >
2020-11-10 13:42:02 +01:00
Three steps are performed at the following time intervals:
2020-11-10 12:55:51 +01:00
< / p >
< div class = "org-src-container" >
2020-11-10 13:42:02 +01:00
< pre class = "src src-matlab" > t_s = [ 2.5, 23;
23.8, 35;
35.8, 50];
2020-11-10 12:55:51 +01:00
< / 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 >
2020-11-10 13:42:02 +01:00
< p >
The obtained values are shown below.
< / p >
2020-11-10 12:55:51 +01:00
< 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 >
2020-11-10 13:42:02 +01:00
< / div >
< / div >
2020-11-10 12:55:51 +01:00
2020-11-12 10:16:26 +01:00
< div id = "outline-container-orge8fa34a" class = "outline-3" >
< h3 id = "orge8fa34a" > < span class = "section-number-3" > 2.3< / span > Estimation of the ADC input impedance< / h3 >
2020-11-10 13:42:02 +01:00
< div class = "outline-text-3" id = "text-2-3" >
2020-11-10 12:55:51 +01:00
< 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:42:02 +01:00
< / div >
< / div >
2020-11-10 12:55:51 +01:00
2020-11-12 10:16:26 +01:00
< div id = "outline-container-org96db33c" class = "outline-3" >
< h3 id = "org96db33c" > < span class = "section-number-3" > 2.4< / span > Explanation of the Voltage offset< / h3 >
2020-11-10 13:42:02 +01:00
< div class = "outline-text-3" id = "text-2-4" >
2020-11-10 12:55:51 +01:00
< p >
2020-11-12 10:16:26 +01:00
As shown in Figure < a href = "#orgf9c6d37" > 6< / a > , the voltage across the Piezoelectric sensor stack shows a constant voltage offset.
2020-11-10 12:55:51 +01:00
< / p >
2020-11-10 13:42:02 +01:00
< p >
2020-11-12 10:16:26 +01:00
We can explain this offset by looking at the electrical model shown in Figure < a href = "#org7c05634" > 7< / a > (taken from (< a href = "#citeproc_bib_item_1" > Reza and Andrew 2006< / a > )).
2020-11-10 13:42:02 +01:00
< / p >
2020-11-10 12:55:51 +01:00
< p >
2020-11-10 13:42:02 +01:00
The differential amplifier in the Speedgoat has some input bias current \(i_n\) that produces a voltage offset across its own internal resistance.
Note that the impedance of the piezoelectric stack is much larger that that at DC.
2020-11-10 12:55:51 +01:00
< / p >
2020-11-12 10:16:26 +01:00
< div id = "org7c05634" class = "figure" >
2020-11-10 13:00:07 +01:00
< 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 >
2020-11-10 13:42:02 +01:00
< p > < span class = "figure-number" > Figure 7: < / span > Model of a piezoelectric transducer (left) and instrumentation amplifier (right)< / p >
2020-11-10 12:55:51 +01:00
< / 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 >
2020-11-10 13:42:02 +01:00
< / div >
< / div >
2020-11-10 12:55:51 +01:00
2020-11-12 10:16:26 +01:00
< div id = "outline-container-orgf987e1d" class = "outline-3" >
< h3 id = "orgf987e1d" > < span class = "section-number-3" > 2.5< / span > Effect of an additional Parallel Resistor< / h3 >
2020-11-10 13:42:02 +01:00
< div class = "outline-text-3" id = "text-2-5" >
2020-11-10 12:55:51 +01:00
< p >
2020-11-12 10:16:26 +01:00
Be looking at Figure < a href = "#org7c05634" > 7< / a > , we can see that an additional resistor in parallel with \(R_{in}\) would have two effects:
2020-11-10 12:55:51 +01:00
< / 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 >
2020-11-10 13:42:02 +01:00
2020-11-10 12:55:51 +01:00
< p >
2020-11-12 10:16:26 +01:00
A resistor \(R_p \approx 100\,k\Omega\) is then added in parallel with the force sensor as shown in Figure < a href = "#org435f6c8" > 8< / a > .
2020-11-10 12:55:51 +01:00
< / p >
2020-11-12 10:16:26 +01:00
< div id = "org435f6c8" class = "figure" >
2020-11-10 13:00:07 +01:00
< 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:42:02 +01:00
< p > < span class = "figure-number" > Figure 8: < / span > Model of a piezoelectric transducer (left) and instrumentation amplifier (right) with the additional resistor \(R_p\)< / p >
< / div >
< / div >
2020-11-10 12:55:51 +01:00
< / div >
2020-11-12 10:16:26 +01:00
< div id = "outline-container-org1bfcf07" class = "outline-3" >
< h3 id = "org1bfcf07" > < span class = "section-number-3" > 2.6< / span > Obtained voltage offset and time constant with the added resistor< / h3 >
2020-11-10 13:42:02 +01:00
< div class = "outline-text-3" id = "text-2-6" >
< p >
After the resistor is added, the same steps response is performed.
< / p >
2020-11-10 12:55:51 +01:00
< 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 >
2020-11-10 13:42:02 +01:00
< p >
2020-11-12 10:16:26 +01:00
The results are shown in Figure < a href = "#org66a3445" > 9< / a > .
2020-11-10 13:42:02 +01:00
< / p >
2020-11-10 12:55:51 +01:00
2020-11-12 10:16:26 +01:00
< div id = "org66a3445" 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 >
2020-11-10 13:42:02 +01:00
< p > < span class = "figure-number" > Figure 9: < / span > Time domain signal during the actuator voltage steps< / p >
2020-11-10 12:55:51 +01:00
< / 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 >
2020-11-10 13:42:02 +01:00
The time constant and voltage offset are again estimated using a fit function.
2020-11-10 12:55:51 +01:00
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:42:02 +01:00
< / div >
2020-11-12 10:16:26 +01:00
< div id = "outline-container-orge72ac2b" class = "outline-2" >
< h2 id = "orge72ac2b" > < span class = "section-number-2" > 3< / span > Generated Number of Charge / Voltage< / h2 >
2020-11-10 13:42:02 +01:00
< div class = "outline-text-2" id = "text-3" >
< p >
2020-11-12 10:16:26 +01:00
< a id = "org50b540e" > < / a >
2020-11-10 13:42:02 +01:00
< / p >
< p >
In this section, we wish to estimate the relation between the displacement performed by the stack actuator and the generated voltage/charge on the sensor stack.
< / p >
< / div >
2020-11-12 10:16:26 +01:00
< div id = "outline-container-orgd28174f" class = "outline-3" >
< h3 id = "orgd28174f" > < span class = "section-number-3" > 3.1< / span > Data Loading< / h3 >
2020-11-10 13:42:02 +01:00
< div class = "outline-text-3" id = "text-3-1" >
< p >
The measured data is loaded and the first 25 seconds of data corresponding to transient data are removed.
< / p >
2020-11-10 12:55:51 +01:00
< 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 >
2020-11-10 13:42:02 +01:00
< / div >
< / div >
2020-11-10 12:55:51 +01:00
2020-11-12 10:16:26 +01:00
< div id = "outline-container-orgd39b262" class = "outline-3" >
< h3 id = "orgd39b262" > < span class = "section-number-3" > 3.2< / span > Excitation signal and corresponding displacement< / h3 >
2020-11-10 13:42:02 +01:00
< div class = "outline-text-3" id = "text-3-2" >
2020-11-10 12:55:51 +01:00
< p >
2020-11-12 10:16:26 +01:00
The driving voltage is a sinus at 0.5Hz centered on 3V and with an amplitude of 3V (Figure < a href = "#orge3dbfb8" > 10< / a > ).
2020-11-10 12:55:51 +01:00
< / p >
2020-11-12 10:16:26 +01:00
< div id = "orge3dbfb8" 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 >
2020-11-10 13:42:02 +01:00
< p > < span class = "figure-number" > Figure 10: < / span > Driving Voltage< / p >
2020-11-10 12:55:51 +01:00
< / div >
< p >
2020-11-12 10:16:26 +01:00
The corresponding displacement as measured by the encoder is shown in Figure < a href = "#orgb0594c1" > 11< / a > .
2020-11-10 13:42:02 +01:00
< / p >
< p >
The full stroke is:
2020-11-10 12:55:51 +01:00
< / 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 >
2020-11-12 10:16:26 +01:00
< div id = "orgb0594c1" 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 >
2020-11-10 13:42:02 +01:00
< p > < span class = "figure-number" > Figure 11: < / span > Encoder measurement< / p >
< / div >
< / div >
2020-11-10 12:55:51 +01:00
< / div >
2020-11-12 10:16:26 +01:00
< div id = "outline-container-org0aaf282" class = "outline-3" >
< h3 id = "org0aaf282" > < span class = "section-number-3" > 3.3< / span > Generated Voltage< / h3 >
2020-11-10 13:42:02 +01:00
< div class = "outline-text-3" id = "text-3-3" >
2020-11-10 12:55:51 +01:00
< p >
2020-11-12 10:16:26 +01:00
The generated voltage by the stack is shown in Figure < a href = "#orgc89ecbd" > 12< / a > .
2020-11-10 12:55:51 +01:00
< / p >
2020-11-12 10:16:26 +01:00
< div id = "orgc89ecbd" 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 >
2020-11-10 13:42:02 +01:00
< p > < span class = "figure-number" > Figure 12: < / span > Voltage measured on the stack used as a sensor< / p >
< / div >
< / div >
2020-11-10 12:55:51 +01:00
< / div >
2020-11-12 10:16:26 +01:00
< div id = "outline-container-orgb349423" class = "outline-3" >
< h3 id = "orgb349423" > < span class = "section-number-3" > 3.4< / span > Generated Charge< / h3 >
2020-11-10 13:42:02 +01:00
< div class = "outline-text-3" id = "text-3-4" >
2020-11-10 12:55:51 +01:00
< 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:42:02 +01:00
The voltage and charge across a capacitor are related through the following equation:
< / p >
\begin{equation}
U_C = \frac{Q}{C}
\end{equation}
< p >
where \(U_C\) is the voltage in Volts, \(Q\) the charge in Coulombs and \(C\) the capacitance in Farads.
< / p >
< p >
2020-11-12 10:16:26 +01:00
The corresponding generated charge is then shown in Figure < a href = "#orgea72e89" > 13< / a > .
2020-11-10 12:55:51 +01:00
< / p >
2020-11-10 13:42:02 +01:00
2020-11-12 10:16:26 +01:00
< div id = "orgea72e89" 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 >
2020-11-10 13:42:02 +01:00
< p > < span class = "figure-number" > Figure 13: < / span > Generated Charge< / p >
< / div >
< / div >
2020-11-10 12:55:51 +01:00
< / div >
2020-11-12 10:16:26 +01:00
< div id = "outline-container-org16c85ae" class = "outline-3" >
< h3 id = "org16c85ae" > < span class = "section-number-3" > 3.5< / span > Generated Voltage/Charge as a function of the displacement< / h3 >
2020-11-10 13:42:02 +01:00
< div class = "outline-text-3" id = "text-3-5" >
2020-11-10 12:55:51 +01:00
< p >
2020-11-12 10:16:26 +01:00
The relation between the generated voltage and the measured displacement is almost linear as shown in Figure < a href = "#org2c4050d" > 14< / 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-12 10:16:26 +01:00
< div id = "org2c4050d" 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 >
2020-11-10 13:42:02 +01:00
< p > < span class = "figure-number" > Figure 14: < / span > Almost linear relation between the relative displacement and the generated voltage< / p >
2020-11-10 12:55:51 +01:00
< / 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-12 10:16:26 +01:00
< p class = "date" > Created: 2020-11-12 jeu. 10:16< / p >
2020-11-10 12:55:51 +01:00
< / div >
< / body >
< / html >