nass-simscape/org/amplified_piezoelectric_stack.org

13 KiB

Amplified Piezoelectric Stack Actuator

Introduction   ignore

The presented model is based on cite:souleille18_concep_activ_mount_space_applic.

The model represents the amplified piezo APA100M from Cedrat-Technologies (Figure fig:souleille18_model_piezo). The parameters are shown in the table below.

/tdehaeze/nass-simscape/media/commit/945741a7952dcea07f53aa1dfd7436f325ea8e4c/org/figs/souleille18_model_piezo.png
Picture of an APA100M from Cedrat Technologies. Simplified model of a one DoF payload mounted on such isolator
Value Meaning
$m$ $1\,[kg]$ Payload mass
$k_e$ $4.8\,[N/\mu m]$ Stiffness used to adjust the pole of the isolator
$k_1$ $0.96\,[N/\mu m]$ Stiffness of the metallic suspension when the stack is removed
$k_a$ $65\,[N/\mu m]$ Stiffness of the actuator
$c_1$ $10\,[N/(m/s)]$ Added viscous damping
Parameters used for the model of the APA 100M

Simplified Model

Parameters

  m = 1; % [kg]

  ke = 4.8e6; % [N/m]
  ce = 5; % [N/(m/s)]
  me = 0.001; % [kg]

  k1 = 0.96e6; % [N/m]
  c1 = 10; % [N/(m/s)]

  ka = 65e6; % [N/m]
  ca = 5; % [N/(m/s)]
  ma = 0.001; % [kg]

  h = 0.2; % [m]

IFF Controller:

  Kiff = -8000/s;

Identification

Identification in open-loop.

  %% Name of the Simulink File
  mdl = 'amplified_piezo_model';

  %% Input/Output definition
  clear io; io_i = 1;
  io(io_i) = linio([mdl, '/w'],  1, 'openinput');  io_i = io_i + 1; % Base Motion
  io(io_i) = linio([mdl, '/f'],  1, 'openinput');  io_i = io_i + 1; % Actuator Inputs
  io(io_i) = linio([mdl, '/F'],  1, 'openinput');  io_i = io_i + 1; % External Force

  io(io_i) = linio([mdl, '/Fs'], 3, 'openoutput'); io_i = io_i + 1; % Force Sensors
  io(io_i) = linio([mdl, '/x1'], 1, 'openoutput'); io_i = io_i + 1; % Mass displacement

  G = linearize(mdl, io, 0);
  G.InputName  = {'w', 'f', 'F'};
  G.OutputName = {'Fs', 'x1'};

Identification in closed-loop.

  %% Name of the Simulink File
  mdl = 'amplified_piezo_model';

  %% Input/Output definition
  clear io; io_i = 1;
  io(io_i) = linio([mdl, '/w'],  1, 'input');  io_i = io_i + 1; % Base Motion
  io(io_i) = linio([mdl, '/f'],  1, 'input');  io_i = io_i + 1; % Actuator Inputs
  io(io_i) = linio([mdl, '/F'],  1, 'input');  io_i = io_i + 1; % External Force

  io(io_i) = linio([mdl, '/Fs'], 3, 'output'); io_i = io_i + 1; % Force Sensors
  io(io_i) = linio([mdl, '/x1'], 1, 'output'); io_i = io_i + 1; % Mass displacement

  Giff = linearize(mdl, io, 0);
  Giff.InputName  = {'w', 'f', 'F'};
  Giff.OutputName = {'Fs', 'x1'};

/tdehaeze/nass-simscape/media/commit/945741a7952dcea07f53aa1dfd7436f325ea8e4c/org/figs/amplified_piezo_tf_ol_and_cl.png

Matrix of transfer functions from input to output in open loop (blue) and closed loop (red)

Root Locus

/tdehaeze/nass-simscape/media/commit/945741a7952dcea07f53aa1dfd7436f325ea8e4c/org/figs/amplified_piezo_root_locus.png

Root Locus

Rotating X-Y platform

Parameters

  m = 1; % [kg]

  ke = 4.8e6; % [N/m]
  ce = 5; % [N/(m/s)]
  me = 0.001; % [kg]

  k1 = 0.96e6; % [N/m]
  c1 = 10; % [N/(m/s)]

  ka = 65e6; % [N/m]
  ca = 5; % [N/(m/s)]
  ma = 0.001; % [kg]

  h = 0.2; % [m]
  Kiff = tf(0);

Identification

Rotating speed in rad/s:

  Ws = 2*pi*[0, 1, 10, 100];
  Gs = {zeros(length(Ws), 1)};

Identification in open-loop.

  %% Name of the Simulink File
  mdl = 'amplified_piezo_xy_rotating_stage';

  %% Input/Output definition
  clear io; io_i = 1;
  io(io_i) = linio([mdl, '/fx'],  1, 'openinput');  io_i = io_i + 1;
  io(io_i) = linio([mdl, '/fy'],  1, 'openinput');  io_i = io_i + 1;

  io(io_i) = linio([mdl, '/Fs'], 1, 'openoutput'); io_i = io_i + 1;
  io(io_i) = linio([mdl, '/Fs'], 2, 'openoutput'); io_i = io_i + 1;

  for i = 1:length(Ws)
      ws = Ws(i);
      G = linearize(mdl, io, 0);
      G.InputName  = {'fx', 'fy'};
      G.OutputName = {'Fsx', 'Fsy'};
      Gs(i) = {G};
  end

/tdehaeze/nass-simscape/media/commit/945741a7952dcea07f53aa1dfd7436f325ea8e4c/org/figs/amplitifed_piezo_xy_rotation_plant_iff.png

Transfer function matrix from forces to force sensors for multiple rotation speed

Root Locus

/tdehaeze/nass-simscape/media/commit/945741a7952dcea07f53aa1dfd7436f325ea8e4c/org/figs/amplified_piezo_xy_rotation_root_locus.png

Root locus for 3 rotating speed

Analysis

The negative stiffness induced by the rotation is equal to $m \omega_0^2$. Thus, the maximum rotation speed where IFF can be applied is: \[ \omega_\text{max} = \sqrt{\frac{k_1}{m}} \approx 156\,[Hz] \]

Let's verify that.

  Ws = 2*pi*[140, 160];

Identification

  %% Name of the Simulink File
  mdl = 'amplified_piezo_xy_rotating_stage';

  %% Input/Output definition
  clear io; io_i = 1;
  io(io_i) = linio([mdl, '/fx'],  1, 'openinput');  io_i = io_i + 1;
  io(io_i) = linio([mdl, '/fy'],  1, 'openinput');  io_i = io_i + 1;

  io(io_i) = linio([mdl, '/Fs'], 1, 'openoutput'); io_i = io_i + 1;
  io(io_i) = linio([mdl, '/Fs'], 2, 'openoutput'); io_i = io_i + 1;

  for i = 1:length(Ws)
      ws = Ws(i);
      G = linearize(mdl, io, 0);
      G.InputName  = {'fx', 'fy'};
      G.OutputName = {'Fsx', 'Fsy'};
      Gs(i) = {G};
  end

/tdehaeze/nass-simscape/media/commit/945741a7952dcea07f53aa1dfd7436f325ea8e4c/org/figs/amplified_piezo_xy_rotating_unstable_root_locus.png

Root Locus for the two considered rotation speed. For the red curve, the system is unstable.

Stewart Platform with Amplified Actuators