Contents     Functions         Previous Next     PDF Index

2.1  Composite plate with 4 piezoelectric patches

2.1.1  Benchmark description

This example deals with a multi-layer composite plate with 4 piezoceramic patches. The geometry is represented in Figure 2.1. It corresponds to a cantilevered composite plate with 4 piezoelectric patches modeled using the p_piezo Shell formulation.


Figure 2.1: Geometric details of the composite plate with 4 piezoceramic patches

The material properties of the composite plate and the piezoceramic patches are given in Table 2.1. The composite material is made of 6 identical layers (total thickness of 1.3 mm), and the piezoelectric material corresponds to the Sample_ULB material in m_piezo Database.


PropertyValue
Composite layers
Ex41.5 GPa
Ey41.5 GPa
Gxy3.35 GPa
νxy 0.042
ρ 1490 kg/m3
Piezoceramic patches
E65 GPa
ν0.3
ρ 7800 kg/m3
thickness0.25 mm
d31-205  10−12 pC/N (or m/V)
d32-205  10−12 pC/N (or m/V)
є33T2600 є0
є08.854 10−12 Fm−1
Table 2.1: Material properties of the plate and the piezoceramic patches

2.1.2  Sample script

The first step consists in the creation of the model, the definition of the boundary conditions, and the definition of the default damping coefficient. (d_piezo('TutoPlate_4pzt_single-s1') ) The resulting mesh is shown in Figure 2.2

% See full example as MATLAB code in d_piezo('ScriptPz_plate_4pzt_single')
%% Step 1 - Build model and visualize
model=d_piezo('MeshULBplate');  % creates the model
model=fe_case(model,'FixDof','Cantilever','x==0');
% Set modal default zeta based on loss factor of material 1
model=stack_set(model,'info','DefaultZeta',feutilb('getloss',1,model)/2);
cf=feplot(model); fecom('colordatagroup'); set(gca,'cameraupvector',[0 1 0])

One can have access to the piezoelectric material properties and the list of nodes associated to each pair of electrodes. Here nodes 1682 to 1685 are associated to the four pairs of electrodes defined in the model. The corresponding degree of freedom is the difference of potential between the electrodes in each pair corresponding to a specific piezoelectric layer. In this models, layers 1 and 8 are piezoelectric in groups 1 and 2 (the 6 internal layers correspond to the 6 layers of the supporting composite plate). Therefore only .21 (electrical) DOF is associated to nodes 1682-1685.

p_piezo('TabDD',model)   % List piezo constitutive laws
p_piezo('TabInfo',model) % List piezo related properties

Figure 2.2: Mesh of the composite plate. The different colours represent the different groups

The next step consists in the definition of the actuators and sensors in the model. Here, we consider one actuator on Node 1682 (layer 1 of group 1), the four piezoelectric patches are used as charge sensors, and the tip displacement of the cantilever beam is measured at node 1054. Note that in order for Q-S1, Q-S2 and Q-S3 to measure resultant charge, the corresponding electrical difference of potential needs to be set to zero. If this is not done, then the charge sensors will measure a charge close to zero (round-off errors) as there is no charge when the difference of potential across the electrodes is free. For Q-Act, the electrical dof is already fixed due to the fact that the patch is used as a voltage actuator.
(d_piezo('TutoPlate_4pzt_single-s2') )

%% Step 2 - Define actuators and sensors
model=fe_case(model,'SensDof','Tip',1054.03); % Displ sensor
model=fe_case(model,'DofSet','V-Act',struct('def',1,'DOF',1682.21)); %Act
model=p_piezo('ElectrodeSensQ  1682 Q-Act',model); % Charge sensors
model=p_piezo('ElectrodeSensQ  1683 Q-S1',model);
model=p_piezo('ElectrodeSensQ  1684 Q-S2',model);
model=p_piezo('ElectrodeSensQ  1685 Q-S3',model);
% Fix dofs 1683-1685 to measure resultant (charge)
model=fe_case(model,'FixDof','SC*1683-1685',[1683:1685]+.21);
sens=fe_case(model,'sens');

In order to check the effect of the actuator, we compute the static response using the full model and represent the deformed shape (Figure 2.3).
(d_piezo('TutoPlate_4pzt_single-s3') )

%% Step 3 Compute static and dynamic response
d0=fe_simul('dfrf',stack_set(model,'info','Freq',0)); % direct refer frf at 0Hz
cf.def=d0; fecom(';view3;scd .1;colordatagroup;undefline')

Figure 2.3: Deformed shape under voltage actuation on one of the bottom piezoelectric patches

We can now compute the transfer function between the actuator and the four charge sensors, as well as the tip sensor using the full model. The result is stored in the variable C1.

% Compute frequency response function (full model)
if sdtkey('cvsnum','mklserv_client')>=126;ofact('mklserv_utils -silent')
    f=linspace(1,100,400); % in Hz
else;
  f=linspace(1,100,100); % in Hz (just 100 points to make it fast)
end

d1=fe_simul('dfrf',stack_set(model,'info','Freq',f(:))); % direct refer frf
% Project response on sensors
C1=fe_case('SensObserve',sens,d1);C1.name='DFRF';C1.Ylab='V-Act';
C1.Xlab{1}={'Frequency','Hz'};

A reduced state-space model can be built and the frequency response function calculated, and stored in the variable C2. The two curves obtained are compared to show the accuracy of the reduced state-space model in Figure 2.4.
(d_piezo('TutoPlate_4pzt_single-s4') )

%% Step 4 - Build state-space model
[s1,TR1]=fe2ss('free 5 10 0',model); %
C2=qbode(s1,f(:)*2*pi,'struct');C2.name='SS';

% Compare the two curves
C2.X{2}=sens.lab; C1.X{3}=nor2ss('lab_in',s1);C2.X{3}=nor2ss('lab_in',s1);%
C2=feutil('rmfield',C2,'lab'); C1.Ylab=C2.Ylab;
ci=iiplot;
iicom(ci,'curveinit',{'curve',C1.name,C1;'curve',C2.name,C2});
iicom('submagpha');

Error, width provided to ingraph must be from 5 to 95 from step of 5 Error, width provided to ingraph must be from 5 to 95 from step of 5
Figure 2.4: Comparison of FRF due to voltage actuation with the bottom piezo: full (DFRF) and reduced (SS) state-space models. Tip displacement and charge corresponding to electrical node 1682

2.1.3  Using combined electrodes

Combination of electrodes can be used in order to build a variety of actuators and sensors. For example, using the four piezoelectric patches, it is possible to induce a pure bending in the cantilever plate by using the following combination: the two actuators on one side of the plate are combined (the same voltage is applied to both simultaneously), while the two actuators on the opposite side are combined and driven out of phase. This allows to cancel the in-plane effect of the patches and to induce a pure bending. If all 4 actuators are driven in phase, then it only induces in-plane forces causing displacements only in the plane of the plate (Figure 2.5).


Figure 2.5: Example of combination of voltage actuators to induce bending or traction

The corresponding script to combine all four patches for bending and traction is:
(d_piezo('TutoPlate_4pzt_comb-s1') )

% See full example as MATLAB code in d_piezo('ScriptPz_plate_4pzt_comb')
%% Step 1 - Build model and define actuator combinations
model=d_piezo('MeshULBplate -cantilever');  % creates the model

% combine electrodes to generate pure bending / pure traction
data.def=[1 -1 1 -1;1 1 1 1]'; % Define combinations for actuators
data.lab={'V-bend';'V-Tract'};
data.DOF=p_piezo('electrodeDOF.*',model);
model=fe_case(model,'DofSet','V_{In}',data);

(d_piezo('TutoPlate_4pzt_comb-s2') )

%% Step 2 Compute static response
d0=fe_simul('dfrf',stack_set(model,'info','Freq',0)); % direct refer frf
cf=feplot(model); cf.def=d0;
fecom(';view3;scd .02;colordataEvalZ;undefline')

The resulting static deflections of the plate are shown in Figure 2.6.


Figure 2.6: Static responses using a combination of actuators in order to induce pure bending or pure in-plane motion


We can now define two displacements sensors at the tip in the z and x directions and compute the FRFs between the bending actuator and the two displacements as well as the traction actuator and the two displacement sensors (Figure 2.7). The bending actuator/'Tip-z' FRF show three resonances corresponding to the first three bending mode shapes, while the traction actuator/'Tip-x' FRF shows no resonance due to the fact that the traction mode shape has a frequency much higher than the frequency band of the calculations. The FRFs show clearly the possibility to excite either bending or traction independently on the plate. The two other FRFs are close to zero.

(d_piezo('TutoPlate_4pzt_comb-s3') )

%% Step 3 - Dynamic response and state-space model
% Add tip displacement sensor in x and z
model=fe_case(model,'SensDof','Tip-z',1054.03); % Z-disp
model=fe_case(model,'SensDof','Tip-x',1054.01); % X-disp

% Make SS model and display FRF
[sys,TR]=fe2ss('free 5 30 0 -dterm',model);
C1=qbode(sys,linspace(1,100,400)'*2*pi,'struct');
C1.name='Bend-tract combination'; % Force name
C1.X{2}={'Tip-z';'Tip-x'}; % Force input labels
C1.X{3}={'V-bend';'V-tract'}; % Force output labels
iicom('CurveReset');iicom('curveinit',C1)

Figure 2.7: Bending actuator/'Tip-z' FRF (left) and traction actuator/'Tip-x' FRF (right)

Voltage and charge sensors can also be combined. Let us consider a voltage combination of nodes 1682 and 1683 for actuation, which will result in bending and a slight torsion of the plate due to the unsymmetrical bending actuation.
(d_piezo('TutoPlate_pzcomb_2-s1') )

% See full example as MATLAB code in d_piezo('ScriptPz_plate_pzcomb_2')
%% Step 1 - Build model and define actuator combinations
model=d_piezo('MeshULBplate cantilever');  % creates the model
model=fe_case(model,'DofSet','V*1683-1682', ...
    struct('def',[1;-1],'DOF',[1682;1683]+.21));

(d_piezo('TutoPlate_pzcomb_2-s2') )

%% Step 2 - Compute static response
d0=fe_simul('dfrf',stack_set(model,'info','Freq',0)); % direct refer frf
cf=feplot(model); cf.def=d0;
fecom(';view3;scd .1;colordatagroup;undefline')

We now define two sensors, consisting in charge combination with opposite signs for nodes 1684 and 1685 and voltage combination with opposite signs for the same nodes (Figure 2.8 shows the case of charge combination).


Figure 2.8: Example of combination of charge sensors to measure bending or traction

(d_piezo('TutoPlate_pzcomb_2-s3') )

%% Step 3 - Define sensor combinations
% Combined charge output (SC electrodes) % difference of charge 1684-1685
r1=struct('cta',[1 -1],'DOF',[1684;1685]+.21,'name','QS3+4');
model=p_piezo('ElectrodeSensQ',model,r1);
% Combined voltage output (OC electrodes) % difference of voltage 1684-1685
r1=struct('cta',[1 -1],'DOF',[1684;1685]+.21,'name','VS3+4');
model=fe_case(model,'SensDof',r1.name,r1);

By default, the electrodes are in 'open-circuit' condition for sensors, except if the sensor is also used as voltage actuator which corresponds to a 'short-circuit' condition. Therefore, as the voltage is left 'free' on nodes 1684 and 1685, the charge is zero and the combination will also be zero. If we wish to use the patches as charge sensors, we need to short-circuit the electrodes, which will result in a zero voltage and in a measurable charge. This is illustrated by computing the response in both configurations (open-circuit by default, and short-circuiting the electrodes for nodes 1684 and 1685):
(d_piezo('TutoPlate_pzcomb_2-s4') )

%% Step 4 - Compute dynamic response with state-space model
[sys,TR]=fe2ss('free 5 10 0 -dterm',model);
 C1=qbode(sys,linspace(1,100,400)'*2*pi,'struct'); C1.name='OC';

% Now you need to SC 1684 and 1685 to measure charge resultant
model=fe_case(model,'FixDof','SC*1684-1685',[1684;1685]+.21);
[sys2,TR2]=fe2ss('free 5 10 0 -dterm',model);
C2=qbode(sys2,linspace(1,100,400)'*2*pi,'struct');C2.name='SC';

% invert channels and scale
C1.Y=fliplr(C1.Y); C1.X{2}= flipud(C1.X{2});
C2.Y(:,1)=C2.Y(:,1)*C1.Y(1,1)/C2.Y(1,1);
iicom('curvereset'),iicom('curveinit',{'curve',C1.name,C1;'curve',C2.name,C2 });

The FRF for the combination of charge sensors is not exactly zero but has a negligible value in the 'open-circuit' condition, while the voltage combination is equal to zero in the 'short-circuit' condition. Charge sensing in the short-circuit condition and voltage sensing in the open-circuit condition are compared by scaling the two FRFs to the static response (f=0 Hz) and the result is shown on Figure 2.9. The FRFs are very similar but the eigenfrequencies are slightly lower in the case of charge sensing. This is due to the well-known fact that open-circuit always leads to a stiffening of the piezoelectric material. The effect on the natural frequency is however not very strong due to the small size of the piezoelectric patches with respect to the full plate.


Figure 2.9: Comparison of FRFs (scaled to the static response) for voltage (green) and charge (blue) sensing. Zoom on the third eigenfrequency (right)

The stiffening effect due to the presence of an electric field in the piezoelectric material when the electrodes are in the open-circuit condition is a consequence of the piezoelectric coupling. One can look at the level of this piezoelectric coupling by comparing the modal frequencies with the electrodes in open and short-circuit conditions.

(d_piezo('TutoPlate_pzcomb_2-s5') )

%% Step 5 - Compute OC and SC frequencies
model=d_piezo('MeshULBplate -cantilever');
% Open circuit : do nothing on electrodes
d1=fe_eig(model,[5 20 1e3]);
% Short circuit : fix all electric DOFs
DOF=p_piezo('electrodeDOF.*',model);
d2=fe_eig(fe_case(model,'FixDof','SC',DOF),[5 20 1e3]);
r1=[d1.data(1:end)./d2.data(1:end)];
plot(r1,'*','linewidth',2);axis tight
xlabel('Mode number');ylabel('f_{OC}/f_{SC}');

Figure 2.10 shows the ratio of the eigenfrequencies in the open-circuit vs short-circuited conditions. The difference depends on the mode number but is always lower than 1%. Higher stiffening effects occur when more of the strain energy is contained in the piezoelectric elements, and the coupling factor is higher.


Figure 2.10: Ratio of the natural frequencies of modes 1 to 20 in open-circuit vs short-circuit conditions illustrating the stiffening of the piezoelectric material in the open-circuit condition


©1991-2019 by SDTools
Previous Up Next