SDT-piezo Contents   Functions      PDF Index |
The procedure to mesh 3D objects containing piezoelectric materials is slightly different from the plate examples. The basic procedure consists in the first step in meshing explicitly both the piezoelectric and the mechanical parts, and associating 3D piezoelectric and mechanical material properties to them. The second step is to define independent electrodes on specific surfaces belonging to the piezoelectric elements, which in essence, specifies electrical equipotentiality on those surfaces. The third step is to assign specific electrical boundary conditions on the unique degree of freedom associated to each equipotential surface. Note that for plate elements, there is a single electrical dof associated to a piezoelectric layer which represents the difference of potential between the top and bottom electrodes, while here each electrode can have its own shape, orientation, and electrical boundary condition.
In order to illustrate this procedure, we take the example of a piezoelectric accelerometer treated in Section 2.7. The geometry of the different elements is represented in Figure 2.38 and the material properties are given in Tables 2.6 and 2.5.
Property Value d31=d32 -185 10−12 pC/N (or m/V) d33 440 10−12 pC/N (or m/V) d15=d24 560 10−12 pC/N (or m/V) є33T=є22T=є11T 1850 є0 є0 8.854 10−12 Fm−1
We first mesh the different elements and assign the material properties:
%% Step 1 Mesh and material properties model=feutil('object quad 1 1',[0 0 0;5 0 0;0 0 3],4,2); model=feutil('object quad 2 2',model,[0 0 3;2.5 0 0;0 0 1],2,2); model=feutil('object quad 4 4',model,[0 0 4;5 0 0;0 0 10],4,6); model=feutil('Rev 20 o 0 0 0 360 0 0 1',model); model.Node(:,5:7)=model.Node(:,5:7)/1000; % SI model.unit='SI'; % Define material properties model.pl=[ ... % Elastic base - typical properties of Alumine 1 fe_mat('m_elastic','SI',1) 4e11 0.22 3965 zeros(1,25); % Piezo properties, see sdtweb('m_piezo#Database') m_piezo('dbval 2 -elas 3 SONOX_P502_iso'); % Steel backmass m_elastic('dbval 4 steel') zeros(1,24)]; model=p_solid('default;',model); model.name='Base Accel';
The second and third step can be done with a single call to p_piezo . Here for example, the bottom electrode is grounded (V=0) and a voltage sensor is assigned to the top electrode:
%% Step 2 : Electrodes and boundary conditions % See sdtweb p_piezo#ElectrodeMPC % Build MPCs defining a single potential for the electrodes % -vout requests a voltage sensor at the top electrode (z==0.004) model=p_piezo('ElectrodeMPC Top sensor -vout',model,'z==0.004'); % -ground generates a v=0 FixDof case entry for the bottom electrode (z==0.003) model=p_piezo('ElectrodeMPC Bottom sensor -ground',model,'z==0.003');
A charge sensor would be defined with the following command:
% -matID2 requests a charge sensor for material 2 model=p_piezo('ElectrodeMPC Top sensor -MatID2',model,'z==0.004');
And it is possible to define a voltage sensor and a charge sensor together:
% Both charge and voltage actuator model=p_piezo('ElectrodeMPC Top sensor -MatID2 -vout',model,'z==0.004');
Note however that if a charge sensor is defined, it is necessary to block the associated electrical dof, otherwise the measured charge will be zero, which is done with the following command:
% block electrical dof for charge sensing model=fe_case(model,'FixDof','V=0 on Top Sensor', ... p_piezo('electrodedof Top sensor',model));
The piezoelectric element can also be used as an actuator with the following command:
% Both charge and voltage sensing on the top electrode model=p_piezo('ElectrodeMPC Top Actuator -input "Vin"',model,'z==0.004');
In all cases, we have considered that the bottom electrode is grounded, and for the top electrode, we can either impose an applied voltage, or measure the output voltage and/or charge. A fourth possibility is to impose a charge to the actuator instead a voltage, which can be done using the conventional fe_load command for mechanical loads, but applied to the electrical dof of the top electrode. If a voltage sensor has already been defined for the top electrode:
% Charge actuation data=struct('DOF',p_piezo('electrodedof Top sensor',model),'def',1); model=fe_case(model,'DofLoad','q-IN',data);
To remove one of the sensor/actuator cases, simply use (for example for the top voltage actuator who's name is "Vin":
% Remove case "Vin" - top voltage actuator model=fe_case(model,'Remove','Vin')