Add simplier model identification and comparison
This commit is contained in:
		
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								figs/apa300ml_comp_simpler_model.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								figs/apa300ml_comp_simpler_model.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								figs/apa300ml_comp_simpler_model.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								figs/apa300ml_comp_simpler_model.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 148 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								figs/souleille18_model_piezo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								figs/souleille18_model_piezo.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 191 KiB  | 
							
								
								
									
										183
									
								
								index.org
									
									
									
									
									
								
							
							
						
						
									
										183
									
								
								index.org
									
									
									
									
									
								
							@@ -778,7 +778,7 @@ Then, we extract the coordinates of the interface nodes.
 | 
			
		||||
Using =K=, =M= and =int_xyz=, we can use the =Reduced Order Flexible Solid= simscape block.
 | 
			
		||||
 | 
			
		||||
** Piezoelectric parameters
 | 
			
		||||
Parameters for the APA95ML:
 | 
			
		||||
Parameters for the APA300ML:
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  d33 = 3e-10; % Strain constant [m/V]
 | 
			
		||||
@@ -790,8 +790,8 @@ Parameters for the APA95ML:
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  na = 3; % Number of stacks used as actuator
 | 
			
		||||
  ns = 0; % Number of stacks used as force sensor
 | 
			
		||||
  na = 2; % Number of stacks used as actuator
 | 
			
		||||
  ns = 1; % Number of stacks used as force sensor
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
The ratio of the developed force to applied voltage is $d_{33} n k_a$ in [N/V].
 | 
			
		||||
@@ -802,7 +802,7 @@ We denote this constant by $g_a$ and:
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
: 1.88
 | 
			
		||||
: 0.42941
 | 
			
		||||
 | 
			
		||||
From cite:fleming14_desig_model_contr_nanop_system (page 123), the relation between relative displacement and generated voltage is:
 | 
			
		||||
\[ V_s = \frac{d_{33}}{\epsilon^T s^D n} \Delta h \]
 | 
			
		||||
@@ -1357,6 +1357,181 @@ Root locus
 | 
			
		||||
  xlabel('Real Part'); ylabel('Imaginary Part');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
** Identification for a simpler model
 | 
			
		||||
The goal in this section is to identify the parameters of a simple APA model from the FEM.
 | 
			
		||||
This can be useful is a lower order model is to be used for simulations.
 | 
			
		||||
 | 
			
		||||
The presented model is based on cite:souleille18_concep_activ_mount_space_applic.
 | 
			
		||||
 | 
			
		||||
The model represents the Amplified Piezo Actuator (APA) from Cedrat-Technologies (Figure [[fig:souleille18_model_piezo]]).
 | 
			
		||||
The parameters are shown in the table below.
 | 
			
		||||
 | 
			
		||||
#+name: fig:souleille18_model_piezo
 | 
			
		||||
#+caption: Picture of an APA100M from Cedrat Technologies. Simplified model of a one DoF payload mounted on such isolator
 | 
			
		||||
[[file:./figs/souleille18_model_piezo.png]]
 | 
			
		||||
 | 
			
		||||
#+caption: Parameters used for the model of the APA 100M
 | 
			
		||||
|       | Meaning                                                        |
 | 
			
		||||
|-------+----------------------------------------------------------------|
 | 
			
		||||
| $k_e$ | Stiffness used to adjust the pole of the isolator              |
 | 
			
		||||
| $k_1$ | Stiffness of the metallic suspension when the stack is removed |
 | 
			
		||||
| $k_a$ | Stiffness of the actuator                                      |
 | 
			
		||||
| $c_1$ | Added viscous damping                                          |
 | 
			
		||||
 | 
			
		||||
The goal is to determine $k_e$, $k_a$ and $k_1$ so that the simplified model fits the FEM model.
 | 
			
		||||
 | 
			
		||||
Three unknowns and three equations:
 | 
			
		||||
\[ \alpha = \frac{x_1}{f}(\omega=0) = \frac{\frac{k_e}{k_e + k_a}}{k_1 + \frac{k_e k_a}{k_e + k_a}} \]
 | 
			
		||||
\[ \beta = \frac{x_1}{F}(\omega=0) = \frac{1}{k_1 + \frac{k_e k_a}{k_e + k_a}} \]
 | 
			
		||||
\[ \gamma = \frac{dL}{f}(\omega=0) = \frac{1}{k_a + \frac{k_e k_1}{k_e + k_1}} \]
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  m = 10;
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  %% Name of the Simulink File
 | 
			
		||||
  mdl = 'APA300ML_test_bench';
 | 
			
		||||
 | 
			
		||||
  %% Input/Output definition
 | 
			
		||||
  clear io; io_i = 1;
 | 
			
		||||
  io(io_i) = linio([mdl, '/Fd'], 1, 'openinput');  io_i = io_i + 1; % External Vertical Force [N]
 | 
			
		||||
  io(io_i) = linio([mdl, '/w'],  1, 'openinput');  io_i = io_i + 1; % Base Motion [m]
 | 
			
		||||
  io(io_i) = linio([mdl, '/Fa'], 1, 'openinput');  io_i = io_i + 1; % Actuator Force [N]
 | 
			
		||||
  io(io_i) = linio([mdl, '/y'],  1, 'openoutput'); io_i = io_i + 1; % Vertical Displacement [m]
 | 
			
		||||
  io(io_i) = linio([mdl, '/Vs'], 1, 'openoutput'); io_i = io_i + 1; % Force Sensor [V]
 | 
			
		||||
  io(io_i) = linio([mdl, '/d'],  1, 'openoutput'); io_i = io_i + 1; % Stack Displacement [m]
 | 
			
		||||
 | 
			
		||||
  G = linearize(mdl, io);
 | 
			
		||||
 | 
			
		||||
  G.InputName = {'Fd', 'w', 'Fa'};
 | 
			
		||||
  G.OutputName = {'y', 'Fs', 'd'};
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  alpha = abs(dcgain(G('y', 'Fa')));
 | 
			
		||||
  beta  = abs(dcgain(G('y', 'Fd')));
 | 
			
		||||
  gamma = abs(dcgain(G('d', 'Fa')));
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  na = 1;
 | 
			
		||||
  ns = 2;
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
Amplification Factor
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  A = abs(dcgain(G('y', 'Fa'))/dcgain(G('d', 'Fa')));
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  ka = 0.8*(1/A)/gamma;
 | 
			
		||||
  ke = ka/(beta/alpha - 1);
 | 
			
		||||
  k1 = 1/beta - ke*ka/(ke + ka);
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
 | 
			
		||||
  data2orgtable(1e-6*[ka; ke; k1], {'ka', 'ke', 'k1'}, {'Value [N/um]'}, ' %.1f ');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
|    | Value [N/um] |
 | 
			
		||||
|----+--------------|
 | 
			
		||||
| ka |         42.9 |
 | 
			
		||||
| ke |          1.5 |
 | 
			
		||||
| k1 |          0.4 |
 | 
			
		||||
 | 
			
		||||
Adjust the damping in the system.
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  c1 = 1e2;
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
Analytical model of the simpler system:
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  Ga = 1/(m*s^2 + k1 + c1*s + ke*ka/(ke + ka)) * ...
 | 
			
		||||
       [ 1 ,              k1 + c1*s + ke*ka/(ke + ka)  , ke/(ke + ka) ;
 | 
			
		||||
        -ke*ka/(ke + ka), ke*ka/(ke + ka)*m*s^2 ,       -ke/(ke + ka)*(m*s^2 + c1*s + k1)];
 | 
			
		||||
 | 
			
		||||
  Ga.InputName = {'Fd', 'w', 'Fa'};
 | 
			
		||||
  Ga.OutputName = {'y', 'Fs'};
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
Adjust the DC gain for the force sensor;
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  lambda = dcgain(Ga('Fs', 'Fd'))/dcgain(G('Fs', 'Fd'));
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  freqs = logspace(0, 5, 1000);
 | 
			
		||||
 | 
			
		||||
  figure;
 | 
			
		||||
 | 
			
		||||
  ay = subplot(2, 3, 1);
 | 
			
		||||
  title('$\displaystyle \frac{x_1}{w}$')
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(G( 'y', 'w'), freqs, 'Hz'))));
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(Ga('y', 'w'), freqs, 'Hz'))));
 | 
			
		||||
  hold off;
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
  ylabel('Amplitude [m/m]');xlabel('Frequency [Hz]');
 | 
			
		||||
 | 
			
		||||
  ax2 = subplot(2, 3, 2);
 | 
			
		||||
  title('$\displaystyle \frac{x_1}{f}$')
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(G( 'y', 'Fa'), freqs, 'Hz'))));
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(Ga('y', 'Fa'), freqs, 'Hz'))));
 | 
			
		||||
  hold off;
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
  ylabel('Amplitude [m/N]');xlabel('Frequency [Hz]');
 | 
			
		||||
 | 
			
		||||
  ax3 = subplot(2, 3, 3);
 | 
			
		||||
  title('$\displaystyle \frac{x_1}{F}$')
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(G( 'y', 'Fd'), freqs, 'Hz'))));
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(Ga('y', 'Fd'), freqs, 'Hz'))));
 | 
			
		||||
  hold off;
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
  ylabel('Amplitude [m/N]');xlabel('Frequency [Hz]');
 | 
			
		||||
 | 
			
		||||
  ax4 = subplot(2, 3, 4);
 | 
			
		||||
  title('$\displaystyle \frac{F_s}{w}$')
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(lambda*G( 'Fs', 'w'), freqs, 'Hz'))));
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(Ga('Fs', 'w'), freqs, 'Hz'))));
 | 
			
		||||
  hold off;
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
  ylabel('Amplitude [m/m]');xlabel('Frequency [Hz]');
 | 
			
		||||
 | 
			
		||||
  ax5 = subplot(2, 3, 5);
 | 
			
		||||
  title('$\displaystyle \frac{F_s}{f}$')
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(lambda*G( 'Fs', 'Fa'), freqs, 'Hz'))));
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(Ga('Fs', 'Fa'), freqs, 'Hz'))));
 | 
			
		||||
  hold off;
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
  ylabel('Amplitude [m/N]');xlabel('Frequency [Hz]');
 | 
			
		||||
 | 
			
		||||
  ax6 = subplot(2, 3, 6);
 | 
			
		||||
  title('$\displaystyle \frac{F_s}{F}$')
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(lambda*G( 'Fs', 'Fd'), freqs, 'Hz'))));
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(Ga('Fs', 'Fd'), freqs, 'Hz'))));
 | 
			
		||||
  hold off;
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
  ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
 | 
			
		||||
 | 
			
		||||
  linkaxes([ax1,ax2,ax3,ax4,ax5,ax6],'x');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :tangle no :exports results :results file replace
 | 
			
		||||
  exportFig('figs/apa300ml_comp_simpler_model.pdf', 'width', 'full', 'height', 'full');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+name: fig:apa300ml_comp_simpler_model
 | 
			
		||||
#+caption: Comparison of the Dynamics between the FEM model and the simplified one
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
[[file:figs/apa300ml_comp_simpler_model.png]]
 | 
			
		||||
 | 
			
		||||
* Flexible Joint
 | 
			
		||||
** Introduction                                                      :ignore:
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user