2020-07-17 11:56:08 +02: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-24 09:25:05 +01:00
<!-- 2020 - 11 - 24 mar. 09:17 -->
2020-07-17 11:56:08 +02:00
< meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" / >
2020-11-24 09:25:05 +01:00
< title > Test Bench - Amplified Piezoelectric Actuator< / title >
2020-07-17 11:56:08 +02:00
< meta name = "generator" content = "Org mode" / >
< meta name = "author" content = "Dehaeze Thomas" / >
2020-11-12 10:36:40 +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-24 09:25:05 +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 >
2020-07-17 11:56:08 +02:00
< / 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" >
2020-11-24 09:25:05 +01:00
< h1 class = "title" > Test Bench - Amplified Piezoelectric Actuator< / h1 >
2020-07-17 11:56:08 +02:00
< div id = "table-of-contents" >
< h2 > Table of Contents< / h2 >
< div id = "text-table-of-contents" >
< ul >
2020-11-24 09:25:05 +01:00
< li > < a href = "#orgc4c0530" > 1. Experimental Setup< / a > < / li >
< li > < a href = "#org183be58" > 2. Simscape model of the test-bench< / a >
2020-07-20 11:27:55 +02:00
< ul >
2020-11-24 09:25:05 +01:00
< li > < a href = "#org20fb5bc" > 2.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates< / a > < / li >
< li > < a href = "#orgab92d82" > 2.2. Piezoelectric parameters< / a > < / li >
< li > < a href = "#org1e19572" > 2.3. Simscape Model< / a > < / li >
< li > < a href = "#org11529ce" > 2.4. Dynamics from Actuator Voltage to Vertical Mass Displacement< / a > < / li >
< li > < a href = "#org5ec7542" > 2.5. Dynamics from Actuator Voltage to Force Sensor Voltage< / a > < / li >
< li > < a href = "#org79c3481" > 2.6. Save Data for further use< / a > < / li >
2020-07-20 11:27:55 +02:00
< / ul >
< / li >
2020-11-24 09:25:05 +01:00
< li > < a href = "#org617c8e4" > 3. Estimation of piezoelectric parameters< / a >
2020-07-20 11:27:55 +02:00
< ul >
2020-11-24 09:25:05 +01:00
< li > < a href = "#org5acfd7d" > 3.1. From actuator voltage to vertical displacement< / a > < / li >
< li > < a href = "#orgf69a05f" > 3.2. From actuator voltage to sensor Voltage< / a > < / li >
2020-07-20 11:27:55 +02:00
< / ul >
< / li >
2020-11-24 09:25:05 +01:00
< li > < a href = "#org6fea521" > 4. Huddle Test< / a >
2020-07-20 11:27:55 +02:00
< ul >
2020-11-24 09:25:05 +01:00
< li > < a href = "#orgb90293f" > 4.1. Time Domain Data< / a > < / li >
< li > < a href = "#org39a275e" > 4.2. PSD of Measurement Noise< / a > < / li >
2020-07-20 11:27:55 +02:00
< / ul >
< / li >
2020-11-24 09:25:05 +01:00
< li > < a href = "#orga75cae8" > 5. Identification of the dynamics from actuator to displacement< / a >
2020-07-20 11:27:55 +02:00
< ul >
2020-11-24 09:25:05 +01:00
< li > < a href = "#orgbb817fa" > 5.1. Load Data< / a > < / li >
< li > < a href = "#org25be4e7" > 5.2. Comparison of the PSD with Huddle Test< / a > < / li >
< li > < a href = "#orge752956" > 5.3. Compute TF estimate and Coherence< / a > < / li >
< / ul >
< / li >
< li > < a href = "#org118320d" > 6. Identification of the dynamics from actuator to force sensor< / a >
< ul >
< li > < a href = "#org0fa0dae" > 6.1. System Identification< / a > < / li >
< li > < a href = "#orgc707675" > 6.2. Integral Force Feedback< / a > < / li >
< / ul >
< / li >
< li > < a href = "#org151d290" > 7. Integral Force Feedback< / a >
< ul >
< li > < a href = "#org306bfe8" > 7.1. First tests with few gains< / a > < / li >
< li > < a href = "#orgf61b4aa" > 7.2. Second test with many Gains< / a > < / li >
2020-07-20 11:27:55 +02:00
< / ul >
< / li >
2020-07-17 11:56:08 +02:00
< / ul >
< / div >
< / div >
2020-11-24 09:25:05 +01:00
< ul class = "org-ul" >
< li > Section < a href = "#org372a242" > 1< / a > :< / li >
< li > Section < a href = "#orgd221e9c" > 2< / a > :< / li >
< li > Section [[]]:< / li >
< li > Section [[]]:< / li >
< li > Section [[]]:< / li >
< / ul >
< div id = "outline-container-orgc4c0530" class = "outline-2" >
< h2 id = "orgc4c0530" > < span class = "section-number-2" > 1< / span > Experimental Setup< / h2 >
< div class = "outline-text-2" id = "text-1" >
< p >
< a id = "org372a242" > < / a >
< / p >
< p >
A schematic of the test-bench is shown in Figure < a href = "#org32052ab" > 1< / a > .
< / p >
< p >
A mass can be vertically moved using the amplified piezoelectric actuator (APA95ML).
The displacement of the mass (relative to the mechanical frame) is measured by the interferometer.
< / p >
< p >
The APA95ML has three stacks that can be used as actuator or as sensors.
< / p >
< p >
Pictures of the test bench are shown in Figure < a href = "#org2dd750f" > 2< / a > and < a href = "#org741bee2" > 3< / a > .
< / p >
< div id = "org32052ab" class = "figure" >
< p > < img src = "figs/test_bench_apa_schematic.png" alt = "test_bench_apa_schematic.png" / >
< / p >
< p > < span class = "figure-number" > Figure 1: < / span > Schematic of the Setup< / p >
< / div >
2020-07-20 13:17:34 +02:00
2020-11-24 09:25:05 +01:00
< div id = "org2dd750f" class = "figure" >
2020-07-20 13:17:34 +02:00
< p > < img src = "figs/setup_picture.png" alt = "setup_picture.png" / >
< / p >
2020-11-24 09:25:05 +01:00
< p > < span class = "figure-number" > Figure 2: < / span > Picture of the Setup< / p >
2020-07-20 13:17:34 +02:00
< / div >
2020-11-24 09:25:05 +01:00
< div id = "org741bee2" class = "figure" >
2020-07-20 13:17:34 +02:00
< p > < img src = "figs/setup_zoom.png" alt = "setup_zoom.png" / >
< / p >
2020-11-24 09:25:05 +01:00
< p > < span class = "figure-number" > Figure 3: < / span > Zoom on the APA< / p >
2020-07-20 13:17:34 +02:00
< / div >
2020-11-24 09:25:05 +01:00
< div class = "note" id = "orgdcaab8f" >
2020-11-12 09:30:03 +01:00
< p >
2020-11-24 09:25:05 +01:00
Here are the equipment used in the test bench:
2020-11-12 09:30:03 +01:00
< / p >
2020-11-24 09:25:05 +01:00
< ul class = "org-ul" >
< li > Attocube interferometer (< a href = "doc/IDS3010.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 >
< li > Low Noise Voltage Preamplifier from Ametek (< a href = "doc/model_5113.pdf" > doc< / a > )< / li >
< / ul >
< / div >
< / div >
2020-07-20 11:27:55 +02:00
< / div >
2020-07-17 11:56:08 +02:00
2020-11-24 09:25:05 +01:00
< div id = "outline-container-org183be58" class = "outline-2" >
< h2 id = "org183be58" > < span class = "section-number-2" > 2< / span > Simscape model of the test-bench< / h2 >
< div class = "outline-text-2" id = "text-2" >
< p >
< a id = "orgd221e9c" > < / a >
< / p >
< p >
The idea here is to model the test-bench using Simscape.
< / p >
< p >
Whereas the suspended mass and metrology frame can be considered as rigid bodies in the frequency range of interest, the Amplified Piezoelectric Actuator (APA) is flexible.
< / p >
< p >
To model the APA, a Finite Element Model (FEM) is used and imported into Simscape.
< / p >
< / div >
< div id = "outline-container-org20fb5bc" class = "outline-3" >
< h3 id = "org20fb5bc" > < span class = "section-number-3" > 2.1< / span > Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates< / h3 >
< div class = "outline-text-3" id = "text-2-1" >
< p >
We first extract the stiffness and mass matrices.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > K = extractMatrix(< span class = "org-string" > 'APA95ML_K.txt'< / span > );
M = extractMatrix(< span class = "org-string" > 'APA95ML_M.txt'< / span > );
< / pre >
< / div >
< table border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
< caption class = "t-above" > < span class = "table-number" > Table 1:< / span > First 10x10 elements of the Stiffness matrix< / caption >
< colgroup >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< / colgroup >
< tbody >
< tr >
< td class = "org-right" > 300000000.0< / td >
< td class = "org-right" > -30000.0< / td >
< td class = "org-right" > 8000.0< / td >
< td class = "org-right" > -200.0< / td >
< td class = "org-right" > -30.0< / td >
< td class = "org-right" > -60000.0< / td >
< td class = "org-right" > 20000000.0< / td >
< td class = "org-right" > -4000.0< / td >
< td class = "org-right" > 500.0< / td >
< td class = "org-right" > 8< / td >
< / tr >
< tr >
< td class = "org-right" > -30000.0< / td >
< td class = "org-right" > 100000000.0< / td >
< td class = "org-right" > 400.0< / td >
< td class = "org-right" > 30.0< / td >
< td class = "org-right" > 200.0< / td >
< td class = "org-right" > -1< / td >
< td class = "org-right" > 4000.0< / td >
< td class = "org-right" > -8000000.0< / td >
< td class = "org-right" > 800.0< / td >
< td class = "org-right" > 7< / td >
< / tr >
< tr >
< td class = "org-right" > 8000.0< / td >
< td class = "org-right" > 400.0< / td >
< td class = "org-right" > 50000000.0< / td >
< td class = "org-right" > -800000.0< / td >
< td class = "org-right" > -300.0< / td >
< td class = "org-right" > -40.0< / td >
< td class = "org-right" > 300.0< / td >
< td class = "org-right" > 100.0< / td >
< td class = "org-right" > 5000000.0< / td >
< td class = "org-right" > 40000.0< / td >
< / tr >
< tr >
< td class = "org-right" > -200.0< / td >
< td class = "org-right" > 30.0< / td >
< td class = "org-right" > -800000.0< / td >
< td class = "org-right" > 20000.0< / td >
< td class = "org-right" > 5< / td >
< td class = "org-right" > 1< / td >
< td class = "org-right" > -10.0< / td >
< td class = "org-right" > -2< / td >
< td class = "org-right" > -40000.0< / td >
< td class = "org-right" > -300.0< / td >
< / tr >
< tr >
< td class = "org-right" > -30.0< / td >
< td class = "org-right" > 200.0< / td >
< td class = "org-right" > -300.0< / td >
< td class = "org-right" > 5< / td >
< td class = "org-right" > 40000.0< / td >
< td class = "org-right" > 0.3< / td >
< td class = "org-right" > -4< / td >
< td class = "org-right" > -10.0< / td >
< td class = "org-right" > 40.0< / td >
< td class = "org-right" > 0.4< / td >
< / tr >
< tr >
< td class = "org-right" > -60000.0< / td >
< td class = "org-right" > -1< / td >
< td class = "org-right" > -40.0< / td >
< td class = "org-right" > 1< / td >
< td class = "org-right" > 0.3< / td >
< td class = "org-right" > 3000.0< / td >
< td class = "org-right" > 7000.0< / td >
< td class = "org-right" > 0.8< / td >
< td class = "org-right" > -1< / td >
< td class = "org-right" > 0.0003< / td >
< / tr >
< tr >
< td class = "org-right" > 20000000.0< / td >
< td class = "org-right" > 4000.0< / td >
< td class = "org-right" > 300.0< / td >
< td class = "org-right" > -10.0< / td >
< td class = "org-right" > -4< / td >
< td class = "org-right" > 7000.0< / td >
< td class = "org-right" > 300000000.0< / td >
< td class = "org-right" > 20000.0< / td >
< td class = "org-right" > 3000.0< / td >
< td class = "org-right" > 80.0< / td >
< / tr >
< tr >
< td class = "org-right" > -4000.0< / td >
< td class = "org-right" > -8000000.0< / td >
< td class = "org-right" > 100.0< / td >
< td class = "org-right" > -2< / td >
< td class = "org-right" > -10.0< / td >
< td class = "org-right" > 0.8< / td >
< td class = "org-right" > 20000.0< / td >
< td class = "org-right" > 100000000.0< / td >
< td class = "org-right" > -4000.0< / td >
< td class = "org-right" > -100.0< / td >
< / tr >
< tr >
< td class = "org-right" > 500.0< / td >
< td class = "org-right" > 800.0< / td >
< td class = "org-right" > 5000000.0< / td >
< td class = "org-right" > -40000.0< / td >
< td class = "org-right" > 40.0< / td >
< td class = "org-right" > -1< / td >
< td class = "org-right" > 3000.0< / td >
< td class = "org-right" > -4000.0< / td >
< td class = "org-right" > 50000000.0< / td >
< td class = "org-right" > 800000.0< / td >
< / tr >
< tr >
< td class = "org-right" > 8< / td >
< td class = "org-right" > 7< / td >
< td class = "org-right" > 40000.0< / td >
< td class = "org-right" > -300.0< / td >
< td class = "org-right" > 0.4< / td >
< td class = "org-right" > 0.0003< / td >
< td class = "org-right" > 80.0< / td >
< td class = "org-right" > -100.0< / td >
< td class = "org-right" > 800000.0< / td >
< td class = "org-right" > 20000.0< / td >
< / tr >
< / tbody >
< / table >
< table border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
< caption class = "t-above" > < span class = "table-number" > Table 2:< / span > First 10x10 elements of the Mass matrix< / caption >
< colgroup >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< / colgroup >
< tbody >
< tr >
< td class = "org-right" > 0.03< / td >
< td class = "org-right" > 2e-06< / td >
< td class = "org-right" > -2e-07< / td >
< td class = "org-right" > 1e-08< / td >
< td class = "org-right" > 2e-08< / td >
< td class = "org-right" > 0.0002< / td >
< td class = "org-right" > -0.001< / td >
< td class = "org-right" > 2e-07< / td >
< td class = "org-right" > -8e-08< / td >
< td class = "org-right" > -9e-10< / td >
< / tr >
< tr >
< td class = "org-right" > 2e-06< / td >
< td class = "org-right" > 0.02< / td >
< td class = "org-right" > -5e-07< / td >
< td class = "org-right" > 7e-09< / td >
< td class = "org-right" > 3e-08< / td >
< td class = "org-right" > 2e-08< / td >
< td class = "org-right" > -3e-07< / td >
< td class = "org-right" > 0.0003< / td >
< td class = "org-right" > -1e-08< / td >
< td class = "org-right" > 1e-10< / td >
< / tr >
< tr >
< td class = "org-right" > -2e-07< / td >
< td class = "org-right" > -5e-07< / td >
< td class = "org-right" > 0.02< / td >
< td class = "org-right" > -9e-05< / td >
< td class = "org-right" > 4e-09< / td >
< td class = "org-right" > -1e-08< / td >
< td class = "org-right" > 2e-07< / td >
< td class = "org-right" > -2e-08< / td >
< td class = "org-right" > -0.0006< / td >
< td class = "org-right" > -5e-06< / td >
< / tr >
< tr >
< td class = "org-right" > 1e-08< / td >
< td class = "org-right" > 7e-09< / td >
< td class = "org-right" > -9e-05< / td >
< td class = "org-right" > 1e-06< / td >
< td class = "org-right" > 6e-11< / td >
< td class = "org-right" > 4e-10< / td >
< td class = "org-right" > -1e-09< / td >
< td class = "org-right" > 3e-11< / td >
< td class = "org-right" > 5e-06< / td >
< td class = "org-right" > 3e-08< / td >
< / tr >
< tr >
< td class = "org-right" > 2e-08< / td >
< td class = "org-right" > 3e-08< / td >
< td class = "org-right" > 4e-09< / td >
< td class = "org-right" > 6e-11< / td >
< td class = "org-right" > 1e-06< / td >
< td class = "org-right" > 2e-10< / td >
< td class = "org-right" > -2e-09< / td >
< td class = "org-right" > 2e-10< / td >
< td class = "org-right" > -7e-09< / td >
< td class = "org-right" > -4e-11< / td >
< / tr >
< tr >
< td class = "org-right" > 0.0002< / td >
< td class = "org-right" > 2e-08< / td >
< td class = "org-right" > -1e-08< / td >
< td class = "org-right" > 4e-10< / td >
< td class = "org-right" > 2e-10< / td >
< td class = "org-right" > 2e-06< / td >
< td class = "org-right" > -2e-06< / td >
< td class = "org-right" > -1e-09< / td >
< td class = "org-right" > -7e-10< / td >
< td class = "org-right" > -9e-12< / td >
< / tr >
< tr >
< td class = "org-right" > -0.001< / td >
< td class = "org-right" > -3e-07< / td >
< td class = "org-right" > 2e-07< / td >
< td class = "org-right" > -1e-09< / td >
< td class = "org-right" > -2e-09< / td >
< td class = "org-right" > -2e-06< / td >
< td class = "org-right" > 0.03< / td >
< td class = "org-right" > -2e-06< / td >
< td class = "org-right" > -1e-07< / td >
< td class = "org-right" > -5e-09< / td >
< / tr >
< tr >
< td class = "org-right" > 2e-07< / td >
< td class = "org-right" > 0.0003< / td >
< td class = "org-right" > -2e-08< / td >
< td class = "org-right" > 3e-11< / td >
< td class = "org-right" > 2e-10< / td >
< td class = "org-right" > -1e-09< / td >
< td class = "org-right" > -2e-06< / td >
< td class = "org-right" > 0.02< / td >
< td class = "org-right" > -8e-07< / td >
< td class = "org-right" > -1e-08< / td >
< / tr >
< tr >
< td class = "org-right" > -8e-08< / td >
< td class = "org-right" > -1e-08< / td >
< td class = "org-right" > -0.0006< / td >
< td class = "org-right" > 5e-06< / td >
< td class = "org-right" > -7e-09< / td >
< td class = "org-right" > -7e-10< / td >
< td class = "org-right" > -1e-07< / td >
< td class = "org-right" > -8e-07< / td >
< td class = "org-right" > 0.02< / td >
< td class = "org-right" > 9e-05< / td >
< / tr >
< tr >
< td class = "org-right" > -9e-10< / td >
< td class = "org-right" > 1e-10< / td >
< td class = "org-right" > -5e-06< / td >
< td class = "org-right" > 3e-08< / td >
< td class = "org-right" > -4e-11< / td >
< td class = "org-right" > -9e-12< / td >
< td class = "org-right" > -5e-09< / td >
< td class = "org-right" > -1e-08< / td >
< td class = "org-right" > 9e-05< / td >
< td class = "org-right" > 1e-06< / td >
< / tr >
< / tbody >
< / table >
< p >
Then, we extract the coordinates of the interface nodes.
2020-07-20 11:27:55 +02:00
< / p >
2020-11-24 09:25:05 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > [int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes(< span class = "org-string" > 'APA95ML_out_nodes_3D.txt'< / span > );
< / pre >
2020-07-17 11:56:08 +02:00
< / div >
2020-11-24 09:25:05 +01:00
< table border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
< colgroup >
< col class = "org-left" / >
< col class = "org-right" / >
< / colgroup >
< tbody >
< tr >
< td class = "org-left" > Total number of Nodes< / td >
< td class = "org-right" > 168959< / td >
< / tr >
< tr >
< td class = "org-left" > Number of interface Nodes< / td >
< td class = "org-right" > 13< / td >
< / tr >
< tr >
< td class = "org-left" > Number of Modes< / td >
< td class = "org-right" > 30< / td >
< / tr >
< tr >
< td class = "org-left" > Size of M and K matrices< / td >
< td class = "org-right" > 108< / td >
< / tr >
< / tbody >
< / table >
< table border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
< caption class = "t-above" > < span class = "table-number" > Table 3:< / span > Coordinates of the interface nodes< / caption >
< colgroup >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< col class = "org-right" / >
< / colgroup >
< thead >
< tr >
< th scope = "col" class = "org-right" > Node i< / th >
< th scope = "col" class = "org-right" > Node Number< / th >
< th scope = "col" class = "org-right" > x [m]< / th >
< th scope = "col" class = "org-right" > y [m]< / th >
< th scope = "col" class = "org-right" > z [m]< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td class = "org-right" > 1.0< / td >
< td class = "org-right" > 168947.0< / td >
< td class = "org-right" > 0.0< / td >
< td class = "org-right" > 0.03< / td >
< td class = "org-right" > 0.0< / td >
< / tr >
< tr >
< td class = "org-right" > 2.0< / td >
< td class = "org-right" > 168949.0< / td >
< td class = "org-right" > 0.0< / td >
< td class = "org-right" > -0.03< / td >
< td class = "org-right" > 0.0< / td >
< / tr >
< tr >
< td class = "org-right" > 3.0< / td >
< td class = "org-right" > 168950.0< / td >
< td class = "org-right" > -0.035< / td >
< td class = "org-right" > 0.0< / td >
< td class = "org-right" > 0.0< / td >
< / tr >
< tr >
< td class = "org-right" > 4.0< / td >
< td class = "org-right" > 168951.0< / td >
< td class = "org-right" > -0.028< / td >
< td class = "org-right" > 0.0< / td >
< td class = "org-right" > 0.0< / td >
< / tr >
< tr >
< td class = "org-right" > 5.0< / td >
< td class = "org-right" > 168952.0< / td >
< td class = "org-right" > -0.021< / td >
< td class = "org-right" > 0.0< / td >
< td class = "org-right" > 0.0< / td >
< / tr >
< tr >
< td class = "org-right" > 6.0< / td >
< td class = "org-right" > 168953.0< / td >
< td class = "org-right" > -0.014< / td >
< td class = "org-right" > 0.0< / td >
< td class = "org-right" > 0.0< / td >
< / tr >
< tr >
< td class = "org-right" > 7.0< / td >
< td class = "org-right" > 168954.0< / td >
< td class = "org-right" > -0.007< / td >
< td class = "org-right" > 0.0< / td >
< td class = "org-right" > 0.0< / td >
< / tr >
< tr >
< td class = "org-right" > 8.0< / td >
< td class = "org-right" > 168955.0< / td >
< td class = "org-right" > 0.0< / td >
< td class = "org-right" > 0.0< / td >
< td class = "org-right" > 0.0< / td >
< / tr >
< tr >
< td class = "org-right" > 9.0< / td >
< td class = "org-right" > 168956.0< / td >
< td class = "org-right" > 0.007< / td >
< td class = "org-right" > 0.0< / td >
< td class = "org-right" > 0.0< / td >
< / tr >
< tr >
< td class = "org-right" > 10.0< / td >
< td class = "org-right" > 168957.0< / td >
< td class = "org-right" > 0.014< / td >
< td class = "org-right" > 0.0< / td >
< td class = "org-right" > 0.0< / td >
< / tr >
< tr >
< td class = "org-right" > 11.0< / td >
< td class = "org-right" > 168958.0< / td >
< td class = "org-right" > 0.021< / td >
< td class = "org-right" > 0.0< / td >
< td class = "org-right" > 0.0< / td >
< / tr >
< tr >
< td class = "org-right" > 12.0< / td >
< td class = "org-right" > 168959.0< / td >
< td class = "org-right" > 0.035< / td >
< td class = "org-right" > 0.0< / td >
< td class = "org-right" > 0.0< / td >
< / tr >
< tr >
< td class = "org-right" > 13.0< / td >
< td class = "org-right" > 168960.0< / td >
< td class = "org-right" > 0.028< / td >
< td class = "org-right" > 0.0< / td >
< td class = "org-right" > 0.0< / td >
< / tr >
< / tbody >
< / table >
< p >
Using < code > K< / code > , < code > M< / code > and < code > int_xyz< / code > , we can use the < code > Reduced Order Flexible Solid< / code > simscape block.
< / p >
2020-07-17 11:56:08 +02:00
< / div >
< / div >
2020-11-24 09:25:05 +01:00
< div id = "outline-container-orgab92d82" class = "outline-3" >
< h3 id = "orgab92d82" > < span class = "section-number-3" > 2.2< / span > Piezoelectric parameters< / h3 >
< div class = "outline-text-3" id = "text-2-2" >
< p >
In order to make the conversion from applied voltage to generated force or from the strain to the generated voltage, we need to defined some parameters corresponding to the piezoelectric material:
< / p >
2020-07-17 11:56:08 +02:00
< div class = "org-src-container" >
2020-11-24 09:25:05 +01:00
< pre class = "src src-matlab" > d33 = 300e< span class = "org-type" > -< / span > 12; < span class = "org-comment" > % Strain constant [m/V]< / span >
n = 80; < span class = "org-comment" > % Number of layers per stack< / span >
eT = 1.6e< span class = "org-type" > -< / span > 8; < span class = "org-comment" > % Permittivity under constant stress [F/m]< / span >
sD = 1e< span class = "org-type" > -< / span > 11; < span class = "org-comment" > % Compliance under constant electric displacement [m2/N]< / span >
ka = 235e6; < span class = "org-comment" > % Stack stiffness [N/m]< / span >
C = 5e< span class = "org-type" > -< / span > 6; < span class = "org-comment" > % Stack capactiance [F]< / span >
< / pre >
< / div >
2020-07-20 11:27:55 +02:00
2020-11-24 09:25:05 +01:00
< p >
The ratio of the developed force to applied voltage is:
< / p >
\begin{equation}
\label{org1eea105}
F_a = g_a V_a, \quad g_a = d_{33} n k_a
\end{equation}
< p >
where:
< / p >
< ul class = "org-ul" >
< li > \(F_a\): developed force in [N]< / li >
< li > \(n\): number of layers of the actuator stack< / li >
< li > \(d_{33}\): strain constant in [m/V]< / li >
< li > \(k_a\): actuator stack stiffness in [N/m]< / li >
< li > \(V_a\): applied voltage in [V]< / li >
< / ul >
< p >
If we take the numerical values, we obtain:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > d33< span class = "org-type" > *< / span > n< span class = "org-type" > *< / span > ka < span class = "org-comment" > % [N/V]< / span >
2020-07-20 11:27:55 +02:00
< / pre >
< / div >
2020-07-17 11:56:08 +02:00
2020-11-24 09:25:05 +01:00
< pre class = "example" >
5.64
< / pre >
< p >
From (< a href = "#citeproc_bib_item_1" > Fleming and Leang 2014< / a > ) (page 123), the relation between relative displacement of the sensor stack and generated voltage is:
< / p >
\begin{equation}
\label{org7e93246}
V_s = \frac{d_{33}}{\epsilon^T s^D n} \Delta h
\end{equation}
< p >
where:
< / p >
< ul class = "org-ul" >
< li > \(V_s\): measured voltage in [V]< / li >
< li > \(d_{33}\): strain constant in [m/V]< / li >
< li > \(\epsilon^T\): permittivity under constant stress in [F/m]< / li >
< li > \(s^D\): elastic compliance under constant electric displacement in [m^2/N]< / li >
< li > \(n\): number of layers of the sensor stack< / li >
< li > \(\Delta h\): relative displacement in [m]< / li >
< / ul >
< p >
If we take the numerical values, we obtain:
< / p >
2020-07-20 11:27:55 +02:00
< div class = "org-src-container" >
2020-11-24 09:25:05 +01:00
< pre class = "src src-matlab" > 1e< span class = "org-type" > -< / span > 6< span class = "org-type" > *< / span > d33< span class = "org-type" > /< / span > (eT< span class = "org-type" > *< / span > sD< span class = "org-type" > *< / span > n) < span class = "org-comment" > % [V/um]< / span >
2020-07-17 11:56:08 +02:00
< / pre >
< / div >
2020-07-20 11:27:55 +02:00
2020-11-24 09:25:05 +01:00
< pre class = "example" >
23.438
< / pre >
< / div >
< / div >
2020-07-20 11:27:55 +02:00
2020-11-24 09:25:05 +01:00
< div id = "outline-container-org1e19572" class = "outline-3" >
< h3 id = "org1e19572" > < span class = "section-number-3" > 2.3< / span > Simscape Model< / h3 >
< div class = "outline-text-3" id = "text-2-3" >
< p >
The flexible element is imported using the < code > Reduced Order Flexible Solid< / code > Simscape block.
< / p >
< p >
To model the actuator, an < code > Internal Force< / code > block is added between the nodes 3 and 12.
A < code > Relative Motion Sensor< / code > block is added between the nodes 1 and 2 to measure the displacement and the amplified piezo.
< / p >
< ul class = "org-ul" >
< li class = "off" > < code > [  ]< / code > Add schematic of the model with interface nodes< / li >
< / ul >
< p >
One mass is fixed at one end of the piezo-electric stack actuator, the other end is fixed to the world frame.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > m = 5;
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-org11529ce" class = "outline-3" >
< h3 id = "org11529ce" > < span class = "section-number-3" > 2.4< / span > Dynamics from Actuator Voltage to Vertical Mass Displacement< / h3 >
< div class = "outline-text-3" id = "text-2-4" >
< p >
The identified dynamics is shown in Figure < a href = "#org053599a" > 4< / a > .
2020-07-20 11:27:55 +02:00
< / p >
2020-11-24 09:25:05 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > < span class = "org-comment" > %% Name of the Simulink File< / span > < / span >
mdl = < span class = "org-string" > 'piezo_amplified_3d'< / span > ;
< span class = "org-matlab-cellbreak" > < span class = "org-comment" > %% Input/Output definition< / span > < / span >
clear io; io_i = 1;
io(io_i) = linio([mdl, < span class = "org-string" > '/Va'< / span > ], 1, < span class = "org-string" > 'openinput'< / span > ); io_i = io_i < span class = "org-type" > +< / span > 1; < span class = "org-comment" > % Actuator Voltage [V]< / span >
io(io_i) = linio([mdl, < span class = "org-string" > '/y'< / span > ], 1, < span class = "org-string" > 'openoutput'< / span > ); io_i = io_i < span class = "org-type" > +< / span > 1; < span class = "org-comment" > % Vertical Displacement [m]< / span >
Ghm = < span class = "org-type" > -< / span > linearize(mdl, io);
< / pre >
2020-07-20 11:27:55 +02:00
< / div >
2020-11-24 09:25:05 +01:00
< div id = "org053599a" class = "figure" >
< p > < img src = "figs/dynamics_act_disp_comp_mass.png" alt = "dynamics_act_disp_comp_mass.png" / >
< / p >
< p > < span class = "figure-number" > Figure 4: < / span > Dynamics from \(F\) to \(d\) without a payload and with a 5kg payload< / p >
2020-07-20 11:27:55 +02:00
< / div >
< / div >
< / div >
2020-11-24 09:25:05 +01:00
< div id = "outline-container-org5ec7542" class = "outline-3" >
< h3 id = "org5ec7542" > < span class = "section-number-3" > 2.5< / span > Dynamics from Actuator Voltage to Force Sensor Voltage< / h3 >
< div class = "outline-text-3" id = "text-2-5" >
2020-11-12 09:30:03 +01:00
< p >
2020-11-24 09:25:05 +01:00
The obtained dynamics is shown in Figure < a href = "#org7c4ec16" > 5< / a > .
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > < span class = "org-comment" > %% Name of the Simulink File< / span > < / span >
mdl = < span class = "org-string" > 'piezo_amplified_3d'< / span > ;
< span class = "org-matlab-cellbreak" > < span class = "org-comment" > %% Input/Output definition< / span > < / span >
clear io; io_i = 1;
io(io_i) = linio([mdl, < span class = "org-string" > '/Va'< / span > ], 1, < span class = "org-string" > 'openinput'< / span > ); io_i = io_i < span class = "org-type" > +< / span > 1; < span class = "org-comment" > % Voltage Actuator [V]< / span >
io(io_i) = linio([mdl, < span class = "org-string" > '/Vs'< / span > ], 1, < span class = "org-string" > 'openoutput'< / span > ); io_i = io_i < span class = "org-type" > +< / span > 1; < span class = "org-comment" > % Sensor Voltage [V]< / span >
Gfm = linearize(mdl, io);
< / pre >
< / div >
< div id = "org7c4ec16" class = "figure" >
< p > < img src = "figs/dynamics_force_force_sensor_comp_mass.png" alt = "dynamics_force_force_sensor_comp_mass.png" / >
2020-11-12 09:30:03 +01:00
< / p >
2020-11-24 09:25:05 +01:00
< p > < span class = "figure-number" > Figure 5: < / span > Dynamics from \(F\) to \(F_m\) for \(m=0\) and \(m = 10kg\)< / p >
2020-08-20 23:08:38 +02:00
< / div >
2020-11-24 09:25:05 +01:00
< / div >
< / div >
< div id = "outline-container-org79c3481" class = "outline-3" >
< h3 id = "org79c3481" > < span class = "section-number-3" > 2.6< / span > Save Data for further use< / h3 >
< div class = "outline-text-3" id = "text-2-6" >
2020-07-23 09:43:42 +02:00
< div class = "org-src-container" >
2020-11-24 09:25:05 +01:00
< pre class = "src src-matlab" > save(< span class = "org-string" > 'matlab/mat/fem_simscape_models.mat'< / span > , < span class = "org-string" > 'Ghm'< / span > , < span class = "org-string" > 'Gfm'< / span > )
2020-08-20 23:08:38 +02:00
< / pre >
< / div >
< div class = "org-src-container" >
2020-11-24 09:25:05 +01:00
< pre class = "src src-matlab" > save(< span class = "org-string" > 'mat/fem_simscape_models.mat'< / span > , < span class = "org-string" > 'Ghm'< / span > , < span class = "org-string" > 'Gfm'< / span > )
< / pre >
< / div >
< / div >
< / div >
< / div >
2020-08-20 23:08:38 +02:00
2020-11-24 09:25:05 +01:00
< div id = "outline-container-org617c8e4" class = "outline-2" >
< h2 id = "org617c8e4" > < span class = "section-number-2" > 3< / span > Estimation of piezoelectric parameters< / h2 >
< div class = "outline-text-2" id = "text-3" >
< / div >
< div id = "outline-container-org5acfd7d" class = "outline-3" >
< h3 id = "org5acfd7d" > < span class = "section-number-3" > 3.1< / span > From actuator voltage to vertical displacement< / h3 >
< div class = "outline-text-3" id = "text-3-1" >
< p >
The data from the “ noise test” and the identification test are loaded.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > load(< span class = "org-string" > 'apa95ml_5kg_Amp_E505.mat'< / span > , < span class = "org-string" > 't'< / span > , < span class = "org-string" > 'um'< / span > , < span class = "org-string" > 'y'< / span > );
2020-08-20 23:08:38 +02:00
< / pre >
< / div >
2020-11-24 09:25:05 +01:00
< p >
Any offset value is removed:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > um = detrend(um, 0); < span class = "org-comment" > % Amplifier Input Voltage [V]< / span >
y = detrend(y , 0); < span class = "org-comment" > % Mass displacement [m]< / span >
< / pre >
2020-08-20 23:08:38 +02:00
< / div >
2020-11-24 09:25:05 +01:00
< p >
Now we add a factor 10 to take into account the gain of the voltage amplifier.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > um = 10< span class = "org-type" > *< / span > um; < span class = "org-comment" > % Stack Actuator Input Voltage [V]< / span >
< / pre >
2020-08-20 23:08:38 +02:00
< / div >
< div class = "org-src-container" >
2020-11-03 10:11:21 +01:00
< pre class = "src src-matlab" > Ts = t(end)< span class = "org-type" > /< / span > (length(t)< span class = "org-type" > -< / span > 1);
Fs = 1< span class = "org-type" > /< / span > Ts;
2020-07-24 13:16:28 +02:00
2020-11-03 10:11:21 +01:00
win = hanning(ceil(1< span class = "org-type" > *< / span > Fs));
2020-07-24 11:34:18 +02:00
< / pre >
< / div >
2020-07-24 13:16:28 +02:00
< div class = "org-src-container" >
2020-11-24 09:25:05 +01:00
< pre class = "src src-matlab" > [tf_est, f] = tfestimate(um, y, win, [], [], 1< span class = "org-type" > /< / span > Ts);
2020-07-24 13:16:28 +02:00
< / pre >
< / div >
2020-07-24 11:34:18 +02:00
2020-11-24 09:25:05 +01:00
< p >
The gain from input voltage of the stack to the vertical displacement is determined:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > gD = 4e< span class = "org-type" > -< / span > 7; < span class = "org-comment" > % [m/V]< / span >
< / pre >
< / div >
2020-07-24 11:34:18 +02:00
2020-11-24 09:25:05 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > K = extractMatrix(< span class = "org-string" > 'APA95ML_K.txt'< / span > );
M = extractMatrix(< span class = "org-string" > 'APA95ML_M.txt'< / span > );
[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes(< span class = "org-string" > 'APA95ML_out_nodes_3D.txt'< / span > );
< / pre >
< / div >
< p >
Define parameters just for the simulation. Should not change any results
2020-07-24 11:34:18 +02:00
< / p >
2020-11-24 09:25:05 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > d33 = 1; < span class = "org-comment" > % Strain constant [m/V]< / span >
n = 1; < span class = "org-comment" > % Number of layers per stack< / span >
eT = 1; < span class = "org-comment" > % Permittivity under constant stress [F/m]< / span >
sD = 1; < span class = "org-comment" > % Compliance under constant electric displacement [m2/N]< / span >
ka = 1; < span class = "org-comment" > % Stack stiffness [N/m]< / span >
C = 1; < span class = "org-comment" > % Stack capactiance [F]< / span >
< / pre >
2020-07-24 13:16:28 +02:00
< / div >
2020-11-24 09:25:05 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > m = 5;
< span class = "org-matlab-cellbreak" > < span class = "org-comment" > %% Name of the Simulink File< / span > < / span >
mdl = < span class = "org-string" > 'piezo_amplified_3d'< / span > ;
< span class = "org-matlab-cellbreak" > < span class = "org-comment" > %% Input/Output definition< / span > < / span >
clear io; io_i = 1;
io(io_i) = linio([mdl, < span class = "org-string" > '/Fa'< / span > ], 1, < span class = "org-string" > 'openinput'< / span > ); io_i = io_i < span class = "org-type" > +< / span > 1; < span class = "org-comment" > % Actuator Force [N]< / span >
io(io_i) = linio([mdl, < span class = "org-string" > '/y'< / span > ], 1, < span class = "org-string" > 'openoutput'< / span > ); io_i = io_i < span class = "org-type" > +< / span > 1; < span class = "org-comment" > % Vertical Displacement [m]< / span >
Gd = linearize(mdl, io);
< / pre >
2020-07-24 13:16:28 +02:00
< / div >
2020-11-24 09:25:05 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > gF = abs(dcgain(Gd)); < span class = "org-comment" > % [m/N]< / span >
< span class = "org-constant" > ans< / span > = gF
< / pre >
< / div >
< pre class = "example" >
6.1695e-09
< / pre >
< p >
\[ g_a = g_D/g_F \]
in [N/V]
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > ga = gD< span class = "org-type" > /< / span > gF
< span class = "org-constant" > ans< / span > = ga
< / pre >
< / div >
< pre class = "example" >
64.835
< / pre >
< div class = "org-src-container" >
< pre class = "src src-matlab" > na = 2; ns = 1; d33 = 300e< span class = "org-type" > -< / span > 12; n = 80; ka = 235e6; gL = 1.7;
na< span class = "org-type" > /< / span > (na< span class = "org-type" > +< / span > ns)< span class = "org-type" > *< / span > gL< span class = "org-type" > *< / span > d33< span class = "org-type" > *< / span > n< span class = "org-type" > *< / span > ka
< / pre >
< / div >
< pre class = "example" >
6.392
< / pre >
< ul class = "org-ul" >
< li class = "off" > < code > [  ]< / code > Why is there a factor 10 with the “ theoretical estimation?” < / li >
< / ul >
< / div >
< / div >
< div id = "outline-container-orgf69a05f" class = "outline-3" >
< h3 id = "orgf69a05f" > < span class = "section-number-3" > 3.2< / span > From actuator voltage to sensor Voltage< / h3 >
< div class = "outline-text-3" id = "text-3-2" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > load(< span class = "org-string" > 'apa95ml_5kg_2a_1s.mat'< / span > , < span class = "org-string" > 't'< / 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" > u = detrend(u, 0); < span class = "org-comment" > % Input Voltage of the Amplifier [V]< / span >
v = detrend(v, 0); < span class = "org-comment" > % Voltage accross the stack sensor [V]< / span >
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > u = 20< span class = "org-type" > *< / span > u; < span class = "org-comment" > % Input Voltage of the Amplifier [V]< / span >
< / pre >
2020-07-24 13:16:28 +02:00
< / div >
2020-07-24 11:34:18 +02:00
< div class = "org-src-container" >
2020-11-03 10:11:21 +01:00
< pre class = "src src-matlab" > Ts = t(end)< span class = "org-type" > /< / span > (length(t)< span class = "org-type" > -< / span > 1);
Fs = 1< span class = "org-type" > /< / span > Ts;
2020-11-24 09:25:05 +01:00
win = hann(ceil(10< span class = "org-type" > /< / span > Ts));
[tf_est, f] = tfestimate(u, v, win, [], [], 1< span class = "org-type" > /< / span > Ts);
2020-07-24 13:16:28 +02:00
< / pre >
< / div >
2020-07-24 11:34:18 +02:00
2020-07-24 13:16:28 +02:00
< div class = "org-src-container" >
2020-11-24 09:25:05 +01:00
< pre class = "src src-matlab" > gV = 0.022; < span class = "org-comment" > % [V/V]< / span >
< / pre >
< / div >
2020-07-24 13:16:28 +02:00
2020-11-24 09:25:05 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > m = 5;
< span class = "org-matlab-cellbreak" > < span class = "org-comment" > %% Name of the Simulink File< / span > < / span >
mdl = < span class = "org-string" > 'piezo_amplified_3d'< / span > ;
< span class = "org-matlab-cellbreak" > < span class = "org-comment" > %% Input/Output definition< / span > < / span >
clear io; io_i = 1;
io(io_i) = linio([mdl, < span class = "org-string" > '/Fa'< / span > ], 1, < span class = "org-string" > 'openinput'< / span > ); io_i = io_i < span class = "org-type" > +< / span > 1; < span class = "org-comment" > % Actuator Force [N]< / span >
io(io_i) = linio([mdl, < span class = "org-string" > '/dL'< / span > ], 1, < span class = "org-string" > 'openoutput'< / span > ); io_i = io_i < span class = "org-type" > +< / span > 1; < span class = "org-comment" > % Sensor Stack displacement [m]< / span >
Gf = linearize(mdl, io);
2020-07-24 11:34:18 +02:00
< / pre >
< / div >
2020-11-24 09:25:05 +01:00
< p >
\(g_F\) in [m/N]
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > gF = abs(dcgain(Gf));
< span class = "org-constant" > ans< / span > = gF
< / pre >
< / div >
2020-07-24 11:34:18 +02:00
2020-11-24 09:25:05 +01:00
< pre class = "example" >
2.1546e-10
< / pre >
< p >
Finally, we compute the gain from strain of the sensor stack to its generated voltage:
\[ g_S = \frac{g_V}{g_F g_a} \]
Gs in [V/m]
2020-07-24 11:34:18 +02:00
< / p >
2020-11-24 09:25:05 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > gS = gV< span class = "org-type" > /< / span > gF< span class = "org-type" > /< / span > ga;
< span class = "org-constant" > ans< / span > = gS
< / pre >
< / div >
< pre class = "example" >
15749000.0
< / pre >
< div class = "org-src-container" >
< pre class = "src src-matlab" > d33 = 300e< span class = "org-type" > -< / span > 12; eT = 5.3e< span class = "org-type" > -< / span > 9; sD = 2e< span class = "org-type" > -< / span > 11; n = 80;
d33< span class = "org-type" > /< / span > (eT< span class = "org-type" > *< / span > sD< span class = "org-type" > *< / span > n)
< / pre >
2020-07-24 11:34:18 +02:00
< / div >
2020-11-24 09:25:05 +01:00
< pre class = "example" >
35377000.0
< / pre >
< / div >
< / div >
< / div >
2020-07-24 11:34:18 +02:00
2020-11-24 09:25:05 +01:00
< div id = "outline-container-org6fea521" class = "outline-2" >
< h2 id = "org6fea521" > < span class = "section-number-2" > 4< / span > Huddle Test< / h2 >
< div class = "outline-text-2" id = "text-4" >
< p >
< a id = "orgd056af6" > < / a >
2020-07-24 11:34:18 +02:00
< / p >
2020-11-24 09:25:05 +01:00
< / div >
< div id = "outline-container-orgb90293f" class = "outline-3" >
< h3 id = "orgb90293f" > < span class = "section-number-3" > 4.1< / span > Time Domain Data< / h3 >
< div class = "outline-text-3" id = "text-4-1" >
< div id = "org27ab62f" class = "figure" >
< p > < img src = "figs/huddle_test_time_domain.png" alt = "huddle_test_time_domain.png" / >
< / p >
< p > < span class = "figure-number" > Figure 6: < / span > Measurement of the Mass displacement during Huddle Test< / p >
2020-07-24 13:16:28 +02:00
< / div >
< / div >
2020-07-24 11:34:18 +02:00
< / div >
2020-07-24 13:06:02 +02:00
2020-11-24 09:25:05 +01:00
< div id = "outline-container-org39a275e" class = "outline-3" >
< h3 id = "org39a275e" > < span class = "section-number-3" > 4.2< / span > PSD of Measurement Noise< / h3 >
< div class = "outline-text-3" id = "text-4-2" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Ts = t(end)< span class = "org-type" > /< / span > (length(t)< span class = "org-type" > -< / span > 1);
Fs = 1< span class = "org-type" > /< / span > Ts;
win = hanning(ceil(1< span class = "org-type" > *< / span > Fs));
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > [pxx, f] = pwelch(y(1000< span class = "org-type" > :< / span > end), win, [], [], Fs);
< / pre >
< / div >
< div id = "orgeed9e1c" class = "figure" >
< p > < img src = "figs/huddle_test_pdf.png" alt = "huddle_test_pdf.png" / >
< / p >
< p > < span class = "figure-number" > Figure 7: < / span > Amplitude Spectral Density of the Displacement during Huddle Test< / p >
< / div >
< / div >
< / div >
< / div >
< div id = "outline-container-orga75cae8" class = "outline-2" >
< h2 id = "orga75cae8" > < span class = "section-number-2" > 5< / span > Identification of the dynamics from actuator to displacement< / h2 >
< div class = "outline-text-2" id = "text-5" >
< p >
< a id = "org82aef55" > < / a >
< / p >
< ul class = "org-ul" >
< li class = "off" > < code > [  ]< / code > List of equipment< / li >
< li class = "off" > < code > [  ]< / code > Schematic< / li >
< li class = "off" > < code > [  ]< / code > Problem of matching between the models? (there is a factor 10)< / li >
< / ul >
< p >
E505 with gain of 10.
< / p >
< / div >
< div id = "outline-container-orgbb817fa" class = "outline-3" >
< h3 id = "orgbb817fa" > < span class = "section-number-3" > 5.1< / span > Load Data< / h3 >
< div class = "outline-text-3" id = "text-5-1" >
< p >
The data from the “ noise test” and the identification test are loaded.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > ht = load(< span class = "org-string" > 'huddle_test.mat'< / span > , < span class = "org-string" > 't'< / span > , < span class = "org-string" > 'u'< / span > , < span class = "org-string" > 'y'< / span > );
load(< span class = "org-string" > 'apa95ml_5kg_Amp_E505.mat'< / span > , < span class = "org-string" > 't'< / span > , < span class = "org-string" > 'um'< / span > , < span class = "org-string" > 'y'< / span > );
< / pre >
< / div >
< p >
Any offset value is removed:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > um = detrend(um, 0); < span class = "org-comment" > % Input Voltage [V]< / span >
y = detrend(y , 0); < span class = "org-comment" > % Mass displacement [m]< / span >
ht.u = detrend(ht.u, 0);
ht.y = detrend(ht.y, 0);
< / pre >
< / div >
< p >
Now we add a factor 10 to take into account the gain of the voltage amplifier.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > um = 10< span class = "org-type" > *< / span > um;
ht.u = 10< span class = "org-type" > *< / span > ht.u;
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-org25be4e7" class = "outline-3" >
< h3 id = "org25be4e7" > < span class = "section-number-3" > 5.2< / span > Comparison of the PSD with Huddle Test< / h3 >
< div class = "outline-text-3" id = "text-5-2" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Ts = t(end)< span class = "org-type" > /< / span > (length(t)< span class = "org-type" > -< / span > 1);
Fs = 1< span class = "org-type" > /< / span > Ts;
win = hanning(ceil(1< span class = "org-type" > *< / span > Fs));
< / pre >
< / div >
2020-07-24 13:06:02 +02:00
< div class = "org-src-container" >
2020-11-24 09:25:05 +01:00
< pre class = "src src-matlab" > [pxx, f] = pwelch(y, win, [], [], Fs);
[pht, < span class = "org-type" > ~< / span > ] = pwelch(ht.y, win, [], [], Fs);
2020-07-24 13:06:02 +02:00
< / pre >
< / div >
2020-07-24 13:16:28 +02:00
2020-11-24 09:25:05 +01:00
< div id = "org75c4ea8" class = "figure" >
< p > < img src = "figs/apa95ml_5kg_PI_pdf_comp_huddle.png" alt = "apa95ml_5kg_PI_pdf_comp_huddle.png" / >
< / p >
< p > < span class = "figure-number" > Figure 8: < / span > Comparison of the ASD for the identification test and the huddle test< / p >
< / div >
< / div >
< / div >
< div id = "outline-container-orge752956" class = "outline-3" >
< h3 id = "orge752956" > < span class = "section-number-3" > 5.3< / span > Compute TF estimate and Coherence< / h3 >
< div class = "outline-text-3" id = "text-5-3" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > [tf_est, f] = tfestimate(um, < span class = "org-type" > -< / span > y, win, [], [], 1< span class = "org-type" > /< / span > Ts);
[co_est, < span class = "org-type" > ~< / span > ] = mscohere( um, < span class = "org-type" > -< / span > y, win, [], [], 1< span class = "org-type" > /< / span > Ts);
< / pre >
< / div >
< div id = "org7730d40" class = "figure" >
< p > < img src = "figs/apa95ml_5kg_PI_coh.png" alt = "apa95ml_5kg_PI_coh.png" / >
< / p >
< p > < span class = "figure-number" > Figure 9: < / span > Coherence< / p >
< / div >
< p >
Comparison with the FEM model
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > load(< span class = "org-string" > 'mat/fem_simscape_models.mat'< / span > , < span class = "org-string" > 'Ghm'< / span > );
< / pre >
< / div >
< div id = "orgc4a77f0" class = "figure" >
2020-07-24 13:16:28 +02:00
< p > < img src = "figs/apa95ml_5kg_pi_comp_fem.png" alt = "apa95ml_5kg_pi_comp_fem.png" / >
< / p >
2020-11-24 09:25:05 +01:00
< p > < span class = "figure-number" > Figure 10: < / span > Comparison of the identified transfer function and the one estimated from the FE model< / p >
2020-07-24 11:34:18 +02:00
< / div >
< / div >
< / div >
2020-07-24 13:16:28 +02:00
< / div >
2020-08-20 23:08:38 +02:00
2020-11-24 09:25:05 +01:00
< div id = "outline-container-org118320d" class = "outline-2" >
< h2 id = "org118320d" > < span class = "section-number-2" > 6< / span > Identification of the dynamics from actuator to force sensor< / h2 >
< div class = "outline-text-2" id = "text-6" >
2020-11-12 09:30:03 +01:00
< p >
2020-11-24 09:25:05 +01:00
< a id = "org855bdfa" > < / a >
2020-11-12 09:30:03 +01:00
< / p >
2020-08-20 23:08:38 +02:00
< p >
Two measurements are performed:
< / p >
< ul class = "org-ul" >
< li > Speedgoat DAC => Voltage Amplifier (x20) => 1 Piezo Stack => … => 2 Stacks as Force Sensor (parallel) => Speedgoat ADC< / li >
< li > Speedgoat DAC => Voltage Amplifier (x20) => 2 Piezo Stacks (parallel) => … => 1 Stack as Force Sensor => Speedgoat ADC< / li >
< / ul >
< p >
The obtained dynamics from force actuator to force sensor are compare with the FEM model.
< / p >
< p >
The data are loaded:
< / p >
2020-07-24 11:34:18 +02:00
< div class = "org-src-container" >
2020-11-24 09:25:05 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > 'apa95ml_5kg_2a_1s.mat'< / span > , < span class = "org-string" > 't'< / 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" > u = detrend(u, 0);
v = detrend(v, 0);
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > u = 20< span class = "org-type" > *< / span > u;
2020-07-23 09:43:42 +02:00
< / pre >
< / div >
2020-07-24 13:16:28 +02:00
< p >
2020-08-20 23:08:38 +02:00
Let’ s use the amplifier gain to obtain the true voltage applied to the actuator stack(s)
2020-07-24 13:16:28 +02:00
< / p >
2020-07-23 09:43:42 +02:00
2020-07-24 13:16:28 +02:00
< p >
2020-08-20 23:08:38 +02:00
The parameters of the piezoelectric stacks are defined below:
2020-07-23 09:43:42 +02:00
< / p >
2020-08-20 23:08:38 +02:00
< div class = "org-src-container" >
2020-11-03 10:11:21 +01:00
< pre class = "src src-matlab" > d33 = 3e< span class = "org-type" > -< / span > 10; < span class = "org-comment" > % Strain constant [m/V]< / span >
n = 80; < span class = "org-comment" > % Number of layers per stack< / span >
eT = 1.6e< span class = "org-type" > -< / span > 8; < span class = "org-comment" > % Permittivity under constant stress [F/m]< / span >
sD = 2e< span class = "org-type" > -< / span > 11; < span class = "org-comment" > % Elastic compliance under constant electric displacement [m2/N]< / span >
ka = 235e6; < span class = "org-comment" > % Stack stiffness [N/m]< / span >
2020-08-20 23:08:38 +02:00
< / pre >
< / div >
2020-07-23 09:43:42 +02:00
2020-07-24 13:16:28 +02:00
< p >
2020-08-20 23:08:38 +02:00
From the FEM, we construct the transfer function from DAC voltage to ADC voltage.
2020-07-24 13:16:28 +02:00
< / p >
2020-07-23 09:43:42 +02:00
< div class = "org-src-container" >
2020-11-03 10:11:21 +01:00
< pre class = "src src-matlab" > Gfem_aa_s = exp(< span class = "org-type" > -< / span > s< span class = "org-type" > /< / span > 1e4)< span class = "org-type" > *< / span > 20< span class = "org-type" > *< / span > (2< span class = "org-type" > *< / span > d33< span class = "org-type" > *< / span > n< span class = "org-type" > *< / span > ka)< span class = "org-type" > *< / span > (G(3,1)< span class = "org-type" > +< / span > G(3,2))< span class = "org-type" > *< / span > d33< span class = "org-type" > /< / span > (eT< span class = "org-type" > *< / span > sD< span class = "org-type" > *< / span > n);
Gfem_a_ss = exp(< span class = "org-type" > -< / span > s< span class = "org-type" > /< / span > 1e4)< span class = "org-type" > *< / span > 20< span class = "org-type" > *< / span > ( d33< span class = "org-type" > *< / span > n< span class = "org-type" > *< / span > ka)< span class = "org-type" > *< / span > (G(3,1)< span class = "org-type" > +< / span > G(2,1))< span class = "org-type" > *< / span > d33< span class = "org-type" > /< / span > (eT< span class = "org-type" > *< / span > sD< span class = "org-type" > *< / span > n);
2020-08-20 23:08:38 +02:00
< / pre >
< / div >
2020-11-24 09:25:05 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > Gfem_aa_s = exp(< span class = "org-type" > -< / span > s< span class = "org-type" > /< / span > 1e4)< span class = "org-type" > *< / span > 20< span class = "org-type" > *< / span > (2< span class = "org-type" > *< / span > d33< span class = "org-type" > *< / span > n< span class = "org-type" > *< / span > ka)< span class = "org-type" > *< / span > Gfm< span class = "org-type" > *< / span > d33< span class = "org-type" > /< / span > (eT< span class = "org-type" > *< / span > sD< span class = "org-type" > *< / span > n);
Gfem_a_ss = exp(< span class = "org-type" > -< / span > s< span class = "org-type" > /< / span > 1e4)< span class = "org-type" > *< / span > 20< span class = "org-type" > *< / span > ( d33< span class = "org-type" > *< / span > n< span class = "org-type" > *< / span > ka)< span class = "org-type" > *< / span > Gfm< span class = "org-type" > *< / span > d33< span class = "org-type" > /< / span > (eT< span class = "org-type" > *< / span > sD< span class = "org-type" > *< / span > n);
< / pre >
< / div >
2020-08-20 23:08:38 +02:00
< p >
2020-11-24 09:25:05 +01:00
The transfer function from input voltage to output voltage are computed and shown in Figure < a href = "#org3414f15" > 11< / a > .
2020-08-20 23:08:38 +02:00
< / p >
2020-11-24 09:25:05 +01:00
2020-08-20 23:08:38 +02:00
< div class = "org-src-container" >
2020-11-24 09:25:05 +01:00
< pre class = "src src-matlab" > Ts = t(end)< span class = "org-type" > /< / span > (length(t)< span class = "org-type" > -< / span > 1);
2020-11-03 10:11:21 +01:00
Fs = 1< span class = "org-type" > /< / span > Ts;
2020-07-23 09:43:42 +02:00
2020-11-03 10:11:21 +01:00
win = hann(ceil(10< span class = "org-type" > /< / span > Ts));
2020-08-20 23:08:38 +02:00
2020-11-24 09:25:05 +01:00
[tf_est, f] = tfestimate(u, v, win, [], [], 1< span class = "org-type" > /< / span > Ts);
[coh, < span class = "org-type" > ~< / span > ] = mscohere( u, v, win, [], [], 1< span class = "org-type" > /< / span > Ts);
< / pre >
< / div >
2020-08-20 23:08:38 +02:00
2020-11-24 09:25:05 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > load(< span class = "org-string" > 'mat/fem_simscape_models.mat'< / span > , < span class = "org-string" > 'Gfm'< / span > );
2020-07-23 09:43:42 +02:00
< / pre >
< / div >
2020-11-24 09:25:05 +01:00
< div id = "org3414f15" class = "figure" >
2020-08-20 23:08:38 +02:00
< p > < img src = "figs/bode_plot_force_sensor_voltage_comp_fem.png" alt = "bode_plot_force_sensor_voltage_comp_fem.png" / >
2020-07-23 09:43:42 +02:00
< / p >
2020-11-24 09:25:05 +01:00
< p > < span class = "figure-number" > Figure 11: < / span > Comparison of the identified dynamics from voltage output to voltage input and the FEM< / p >
2020-08-20 23:08:38 +02:00
< / div >
< / div >
2020-11-24 09:25:05 +01:00
< div id = "outline-container-org0fa0dae" class = "outline-3" >
< h3 id = "org0fa0dae" > < span class = "section-number-3" > 6.1< / span > System Identification< / h3 >
< div class = "outline-text-3" id = "text-6-1" >
2020-08-20 23:08:38 +02:00
< div class = "org-src-container" >
2020-11-03 10:11:21 +01:00
< pre class = "src src-matlab" > w_z = 2< span class = "org-type" > *< / span > < span class = "org-constant" > pi< / span > < span class = "org-type" > *< / span > 111; < span class = "org-comment" > % Zeros frequency [rad/s]< / span >
w_p = 2< span class = "org-type" > *< / span > < span class = "org-constant" > pi< / span > < span class = "org-type" > *< / span > 255; < span class = "org-comment" > % Pole frequency [rad/s]< / span >
2020-08-20 23:08:38 +02:00
xi_z = 0.05;
xi_p = 0.015;
2020-11-24 09:25:05 +01:00
G_inf = 0.1;
2020-08-20 23:08:38 +02:00
2020-11-03 10:11:21 +01:00
Gi = G_inf< span class = "org-type" > *< / span > (s< span class = "org-type" > ^< / span > 2 < span class = "org-type" > -< / span > 2< span class = "org-type" > *< / span > xi_z< span class = "org-type" > *< / span > w_z< span class = "org-type" > *< / span > s < span class = "org-type" > +< / span > w_z< span class = "org-type" > ^< / span > 2)< span class = "org-type" > /< / span > (s< span class = "org-type" > ^< / span > 2 < span class = "org-type" > +< / span > 2< span class = "org-type" > *< / span > xi_p< span class = "org-type" > *< / span > w_p< span class = "org-type" > *< / span > s < span class = "org-type" > +< / span > w_p< span class = "org-type" > ^< / span > 2);
2020-08-20 23:08:38 +02:00
< / pre >
2020-07-23 09:43:42 +02:00
< / div >
2020-11-24 09:25:05 +01:00
< div id = "orge087601" class = "figure" >
2020-08-20 23:08:38 +02:00
< p > < img src = "figs/iff_plant_identification_apa95ml.png" alt = "iff_plant_identification_apa95ml.png" / >
2020-07-23 09:43:42 +02:00
< / p >
2020-11-24 09:25:05 +01:00
< p > < span class = "figure-number" > Figure 12: < / span > Identification of the IFF plant< / p >
2020-08-20 23:08:38 +02:00
< / div >
< / div >
2020-07-23 09:43:42 +02:00
< / div >
2020-08-20 23:08:38 +02:00
2020-11-24 09:25:05 +01:00
< div id = "outline-container-orgc707675" class = "outline-3" >
< h3 id = "orgc707675" > < span class = "section-number-3" > 6.2< / span > Integral Force Feedback< / h3 >
< div class = "outline-text-3" id = "text-6-2" >
2020-08-20 23:08:38 +02:00
2020-11-24 09:25:05 +01:00
< div id = "org07270d6" class = "figure" >
2020-08-20 23:08:38 +02:00
< p > < img src = "figs/root_locus_iff_apa95ml_identification.png" alt = "root_locus_iff_apa95ml_identification.png" / >
2020-07-24 13:16:28 +02:00
< / p >
2020-11-24 09:25:05 +01:00
< p > < span class = "figure-number" > Figure 13: < / span > Root Locus for IFF< / p >
2020-08-20 23:08:38 +02:00
< / div >
< / div >
< / div >
< / div >
2020-11-24 09:25:05 +01:00
< div id = "outline-container-org151d290" class = "outline-2" >
< h2 id = "org151d290" > < span class = "section-number-2" > 7< / span > Integral Force Feedback< / h2 >
< div class = "outline-text-2" id = "text-7" >
2020-11-12 09:30:03 +01:00
< p >
2020-11-24 09:25:05 +01:00
< a id = "orgd3e21e7" > < / a >
2020-11-12 09:30:03 +01:00
< / p >
2020-11-24 09:25:05 +01:00
< div id = "org9ca42af" class = "figure" >
< p > < img src = "figs/test_bench_apa_schematic_iff.png" alt = "test_bench_apa_schematic_iff.png" / >
< / p >
< p > < span class = "figure-number" > Figure 14: < / span > Schematic of the test bench using IFF< / p >
2020-08-20 23:08:38 +02:00
< / div >
2020-11-24 09:25:05 +01:00
< / div >
< div id = "outline-container-org306bfe8" class = "outline-3" >
< h3 id = "org306bfe8" > < span class = "section-number-3" > 7.1< / span > First tests with few gains< / h3 >
< div class = "outline-text-3" id = "text-7-1" >
2020-07-23 09:43:42 +02:00
< div class = "org-src-container" >
2020-11-24 09:25:05 +01:00
< pre class = "src src-matlab" > iff_g10 = load(< span class = "org-string" > 'apa95ml_iff_g10_res.mat'< / span > , < span class = "org-string" > 'u'< / span > , < span class = "org-string" > 't'< / span > , < span class = "org-string" > 'y'< / span > , < span class = "org-string" > 'v'< / span > );
2020-11-12 09:30:03 +01:00
iff_g100 = load(< span class = "org-string" > 'apa95ml_iff_g100_res.mat'< / span > , < span class = "org-string" > 'u'< / span > , < span class = "org-string" > 't'< / span > , < span class = "org-string" > 'y'< / span > , < span class = "org-string" > 'v'< / span > );
2020-11-24 09:25:05 +01:00
iff_of = load(< span class = "org-string" > 'apa95ml_iff_off_res.mat'< / span > , < span class = "org-string" > 'u'< / span > , < span class = "org-string" > 't'< / span > , < span class = "org-string" > 'y'< / span > , < span class = "org-string" > 'v'< / span > );
2020-07-23 09:43:42 +02:00
< / pre >
< / div >
2020-08-20 23:08:38 +02:00
< div class = "org-src-container" >
2020-11-03 10:11:21 +01:00
< pre class = "src src-matlab" > Ts = 1e< span class = "org-type" > -< / span > 4;
win = hann(ceil(10< span class = "org-type" > /< / span > Ts));
2020-08-20 23:08:38 +02:00
2020-11-03 10:11:21 +01:00
[tf_iff_g10, f] = tfestimate(iff_g10.u, iff_g10.y, win, [], [], 1< span class = "org-type" > /< / span > Ts);
[co_iff_g10, < span class = "org-type" > ~< / span > ] = mscohere(iff_g10.u, iff_g10.y, win, [], [], 1< span class = "org-type" > /< / span > Ts);
2020-08-20 23:08:38 +02:00
2020-11-24 09:25:05 +01:00
[tf_iff_g100, < span class = "org-type" > ~< / span > ] = tfestimate(iff_g100.u, iff_g100.y, win, [], [], 1< span class = "org-type" > /< / span > Ts);
2020-11-03 10:11:21 +01:00
[co_iff_g100, < span class = "org-type" > ~< / span > ] = mscohere(iff_g100.u, iff_g100.y, win, [], [], 1< span class = "org-type" > /< / span > Ts);
2020-08-20 23:08:38 +02:00
2020-11-03 10:11:21 +01:00
[tf_iff_of, < span class = "org-type" > ~< / span > ] = tfestimate(iff_of.u, iff_of.y, win, [], [], 1< span class = "org-type" > /< / span > Ts);
[co_iff_of, < span class = "org-type" > ~< / span > ] = mscohere(iff_of.u, iff_of.y, win, [], [], 1< span class = "org-type" > /< / span > Ts);
2020-07-24 13:16:28 +02:00
< / pre >
2020-08-20 23:08:38 +02:00
< / div >
2020-07-24 15:48:22 +02:00
2020-08-21 15:26:45 +02:00
2020-11-24 09:25:05 +01:00
< div id = "org0c8c94b" class = "figure" >
2020-08-21 15:26:45 +02:00
< p > < img src = "figs/iff_first_test_coherence.png" alt = "iff_first_test_coherence.png" / >
< / p >
2020-11-24 09:25:05 +01:00
< p > < span class = "figure-number" > Figure 15: < / span > Coherence< / p >
2020-08-21 15:26:45 +02:00
< / div >
2020-11-24 09:25:05 +01:00
< div id = "orgd136205" class = "figure" >
2020-08-21 15:26:45 +02:00
< p > < img src = "figs/iff_first_test_bode_plot.png" alt = "iff_first_test_bode_plot.png" / >
< / p >
2020-11-24 09:25:05 +01:00
< p > < span class = "figure-number" > Figure 16: < / span > Bode plot for different values of IFF gain< / p >
2020-08-21 15:26:45 +02:00
< / div >
< / div >
< / div >
2020-11-24 09:25:05 +01:00
< div id = "outline-container-orgf61b4aa" class = "outline-3" >
< h3 id = "orgf61b4aa" > < span class = "section-number-3" > 7.2< / span > Second test with many Gains< / h3 >
< div class = "outline-text-3" id = "text-7-2" >
2020-08-20 23:08:38 +02:00
< div class = "org-src-container" >
2020-11-12 09:30:03 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > 'apa95ml_iff_test.mat'< / span > , < span class = "org-string" > 'results'< / span > );
2020-08-20 23:08:38 +02:00
< / pre >
< / div >
2020-07-24 15:48:22 +02:00
2020-08-21 15:26:45 +02:00
< div class = "org-src-container" >
2020-11-03 10:11:21 +01:00
< pre class = "src src-matlab" > Ts = 1e< span class = "org-type" > -< / span > 4;
win = hann(ceil(10< span class = "org-type" > /< / span > Ts));
2020-08-21 15:26:45 +02:00
< / pre >
< / div >
2020-08-20 23:08:38 +02:00
2020-08-21 15:26:45 +02:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > tf_iff = {zeros(1, length(results))};
co_iff = {zeros(1, length(results))};
g_iff = [0, 1, 5, 10, 50, 100];
2020-11-03 10:11:21 +01:00
< span class = "org-keyword" > for< / span > < span class = "org-variable-name" > < span class = "org-constant" > i< / span > < / span > =< span class = "org-constant" > 1:length(results)< / span >
[tf_est, f] = tfestimate(results{< span class = "org-constant" > i< / span > }.u, results{< span class = "org-constant" > i< / span > }.y, win, [], [], 1< span class = "org-type" > /< / span > Ts);
[co_est, < span class = "org-type" > ~< / span > ] = mscohere(results{< span class = "org-constant" > i< / span > }.u, results{< span class = "org-constant" > i< / span > }.y, win, [], [], 1< span class = "org-type" > /< / span > Ts);
2020-08-21 15:26:45 +02:00
2020-11-03 10:11:21 +01:00
tf_iff(< span class = "org-constant" > i< / span > ) = {tf_est};
co_iff(< span class = "org-constant" > i< / span > ) = {co_est};
< span class = "org-keyword" > end< / span >
2020-08-21 15:26:45 +02:00
< / pre >
2020-08-20 23:08:38 +02:00
< / div >
2020-11-24 09:25:05 +01:00
< div id = "orgbe0cb01" class = "figure" >
2020-08-21 15:26:45 +02:00
< p > < img src = "figs/iff_results_bode_plots.png" alt = "iff_results_bode_plots.png" / >
< / p >
< / div >
2020-08-20 23:08:38 +02:00
< div class = "org-src-container" >
2020-08-21 15:26:45 +02:00
< pre class = "src src-matlab" > G_id = {zeros(1,length(results))};
2020-11-03 10:11:21 +01:00
f_start = 70; < span class = "org-comment" > % [Hz]< / span >
f_end = 500; < span class = "org-comment" > % [Hz]< / span >
2020-08-21 15:26:45 +02:00
2020-11-03 10:11:21 +01:00
< span class = "org-keyword" > for< / span > < span class = "org-variable-name" > < span class = "org-constant" > i< / span > < / span > = < span class = "org-constant" > 1:length(results)< / span >
tf_id = tf_iff{< span class = "org-constant" > i< / span > }(sum(f< span class = "org-type" > < < / span > f_start)< span class = "org-type" > :< / span > length(f)< span class = "org-type" > -< / span > sum(f< span class = "org-type" > > < / span > f_end));
f_id = f(sum(f< span class = "org-type" > < < / span > f_start)< span class = "org-type" > :< / span > length(f)< span class = "org-type" > -< / span > sum(f< span class = "org-type" > > < / span > f_end));
2020-08-21 15:26:45 +02:00
2020-11-03 10:11:21 +01:00
gfr = idfrd(tf_id, 2< span class = "org-type" > *< / span > < span class = "org-constant" > pi< / span > < span class = "org-type" > *< / span > f_id, Ts);
G_id(< span class = "org-constant" > i< / span > ) = {procest(gfr,< span class = "org-string" > 'P2UDZ'< / span > )};
< span class = "org-keyword" > end< / span >
2020-08-20 23:08:38 +02:00
< / pre >
< / div >
2020-11-24 09:25:05 +01:00
< div id = "org0f603c5" class = "figure" >
2020-08-21 15:26:45 +02:00
< p > < img src = "figs/iff_results_bode_plots_identification.png" alt = "iff_results_bode_plots_identification.png" / >
< / p >
< / div >
2020-11-24 09:25:05 +01:00
< div id = "org20e0d4b" class = "figure" >
2020-08-21 15:26:45 +02:00
< p > < img src = "figs/iff_results_root_locus.png" alt = "iff_results_root_locus.png" / >
2020-08-20 23:08:38 +02:00
< / p >
< / div >
2020-11-24 09:25:05 +01:00
< 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 > Fleming, Andrew J., and Kam K. Leang. 2014. < i > Design, Modeling and Control of Nanopositioning Systems< / i > . Advances in Industrial Control. Springer International Publishing. < a href = "https://doi.org/10.1007/978-3-319-06617-2" > https://doi.org/10.1007/978-3-319-06617-2< / a > .< / div >
< / div >
2020-07-23 09:43:42 +02:00
< / div >
< / div >
< / div >
2020-07-17 11:56:08 +02:00
< / div >
< div id = "postamble" class = "status" >
< p class = "author" > Author: Dehaeze Thomas< / p >
2020-11-24 09:25:05 +01:00
< p class = "date" > Created: 2020-11-24 mar. 09:17< / p >
2020-07-17 11:56:08 +02:00
< / div >
< / body >
< / html >