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

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 4: Transfer function matrix from forces to force sensors for multiple rotation speed

2.3 Root Locus

amplified_piezo_xy_rotation_root_locus.png

Figure 5: 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 6: Root Locus for the two considered rotation speed. For the red curve, the system is unstable.

Author: Dehaeze Thomas

Created: 2020-05-20 mer. 15:49