nass-simscape/org/amplified_piezoelectric_stack.org

26 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/1466105c77003b3e2b80de4a01b120c49485f7c0/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/1466105c77003b3e2b80de4a01b120c49485f7c0/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/1466105c77003b3e2b80de4a01b120c49485f7c0/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/1466105c77003b3e2b80de4a01b120c49485f7c0/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/1466105c77003b3e2b80de4a01b120c49485f7c0/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/1466105c77003b3e2b80de4a01b120c49485f7c0/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

Initialization

  initializeGround();
  initializeGranite();
  initializeTy();
  initializeRy();
  initializeRz();
  initializeMicroHexapod();
  initializeAxisc();
  initializeMirror();

  initializeSimscapeConfiguration();
  initializeDisturbances('enable', false);
  initializeLoggingConfiguration('log', 'none');

  initializeController('type', 'hac-iff');

We set the stiffness of the payload fixation:

  Kp = 1e8; % [N/m]

Identification

  K = tf(zeros(6));
  Kiff = tf(zeros(6));

We identify the system for the following payload masses:

  Ms = [1, 10, 50];

The nano-hexapod has the following leg's stiffness and damping.

  initializeNanoHexapod('actuator', 'amplified');

Controller Design

/tdehaeze/nass-simscape/media/commit/1466105c77003b3e2b80de4a01b120c49485f7c0/org/figs/amplified_piezo_iff_loop_gain.png

Dynamics for the Integral Force Feedback for three payload masses

/tdehaeze/nass-simscape/media/commit/1466105c77003b3e2b80de4a01b120c49485f7c0/org/figs/amplified_piezo_iff_root_locus.png

Root Locus for the IFF control for three payload masses

Damping as function of the gain

/tdehaeze/nass-simscape/media/commit/1466105c77003b3e2b80de4a01b120c49485f7c0/org/figs/amplified_piezo_iff_damping_gain.png

Damping ratio of the poles as a function of the IFF gain

Finally, we use the following controller for the Decentralized Direct Velocity Feedback:

  Kiff = -1e4/s*eye(6);

Effect of the Low Authority Control on the Primary Plant

Introduction   ignore

Identification of the undamped plant   ignore

Identification of the damped plant   ignore

Effect of the Damping on the plant diagonal dynamics   ignore

Effect of the Damping on the coupling dynamics   ignore