UP | HOME

Amplified Piezoelectric Stack Actuator

Table of Contents

The presented model is based on souleille18_concep_activ_mount_space_applic.

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

souleille18_model_piezo.png

Figure 1: Picture of an APA100M from Cedrat Technologies. Simplified model of a one DoF payload mounted on such isolator

Table 1: Parameters used for the model of the APA 100M
  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

1 Simplified Model

1.1 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;

1.2 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'};

amplified_piezo_tf_ol_and_cl.png

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

1.3 Root Locus

amplified_piezo_root_locus.png

Figure 3: Root Locus

1.4 Analytical Model

If we apply the Newton’s second law of motion on the top mass, we obtain: \[ ms^2 x_1 = F + k_1 (w - x_1) + k_e (x_e - x_1) \]

Then, we can write that the measured force \(F_s\) is equal to: \[ F_s = k_a(w - x_e) + f = -k_e (x_1 - x_e) \] which gives: \[ x_e = \frac{k_a}{k_e + k_a} w + \frac{1}{k_e + k_a} f + \frac{k_e}{k_e + k_a} x_1 \]

Re-injecting that into the previous equations gives: \[ x_1 = F \frac{1}{ms^2 + k_1 + \frac{k_e k_a}{k_e + k_a}} + w \frac{k_1 + \frac{k_e k_a}{k_e + k_a}}{ms^2 + k_1 + \frac{k_e k_a}{k_e + k_a}} + f \frac{\frac{k_e}{k_e + k_a}}{ms^2 + k_1 + \frac{k_e k_a}{k_e + k_a}} \] \[ F_s = - F \frac{\frac{k_e k_a}{k_e + k_a}}{ms^2 + k_1 + \frac{k_e k_a}{k_e + k_a}} + w \frac{k_e k_a}{k_e + k_a} \Big( \frac{ms^2}{ms^2 + k_1 + \frac{k_e k_a}{k_e + k_a}} \Big) - f \frac{k_e}{k_e + k_a} \Big( \frac{ms^2 + k_1}{ms^2 + k_1 + \frac{k_e k_a}{k_e + k_a}} \Big) \]

Ga = 1/(m*s^2 + k1 + ke*ka/(ke + ka)) * ...
     [ 1 ,              k1 + ke*ka/(ke + ka)  , ke/(ke + ka) ;
      -ke*ka/(ke + ka), ke*ka/(ke + ka)*m*s^2 , -ke/(ke+ka)*(m*s^2 + k1)];
Ga.InputName = {'F', 'w', 'f'};
Ga.OutputName = {'x1', 'Fs'};

comp_simscape_analytical.png

Figure 4: Comparison of the Identified Simscape Dynamics (solid) and the Analytical Model (dashed)

2 Rotating X-Y platform

2.1 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);

2.2 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

amplitifed_piezo_xy_rotation_plant_iff.png

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

2.3 Root Locus

amplified_piezo_xy_rotation_root_locus.png

Figure 6: Root locus for 3 rotating speed

2.4 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

amplified_piezo_xy_rotating_unstable_root_locus.png

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

3 Stewart Platform with Amplified Actuators

3.1 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]

3.2 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');

3.3 Controller Design

amplified_piezo_iff_loop_gain.png

Figure 8: Dynamics for the Integral Force Feedback for three payload masses

amplified_piezo_iff_root_locus.png

Figure 9: Root Locus for the IFF control for three payload masses

Damping as function of the gain

amplified_piezo_iff_damping_gain.png

Figure 10: 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);

3.4 Effect of the Low Authority Control on the Primary Plant

amplified_piezo_iff_plant_damped_X.png

Figure 11: Primary plant in the task space with (dashed) and without (solid) IFF

amplified_piezo_iff_damped_plant_L.png

Figure 12: Primary plant in the space of the legs with (dashed) and without (solid) IFF

amplified_piezo_iff_damped_coupling_X.png

Figure 13: Coupling in the primary plant in the task with (dashed) and without (solid) IFF

amplified_piezo_iff_damped_coupling_L.png

Figure 14: Coupling in the primary plant in the space of the legs with (dashed) and without (solid) IFF

3.5 Effect of the Low Authority Control on the Sensibility to Disturbances

amplified_piezo_iff_disturbances.png

Figure 15: Norm of the transfer function from vertical disturbances to vertical position error with (dashed) and without (solid) Integral Force Feedback applied

3.6 Optimal Stiffnesses

Author: Dehaeze Thomas

Created: 2020-05-25 lun. 10:45