Difference between revisions of "Flexure Characterization and Design"

From Mech
Jump to navigationJump to search
Line 6: Line 6:


=Hardware=
=Hardware=

=Data Collection=



=Transfer Function Fitting=
=Transfer Function Fitting=
Line 16: Line 19:
<math>F_j(s) = \frac{M_{ji} s^2 + B_{ji} s + K_{ji}}{s^2}A_i(s)</math>
<math>F_j(s) = \frac{M_{ji} s^2 + B_{ji} s + K_{ji}}{s^2}A_i(s)</math>


We then have to fit this model to each combination of the accelerations and forces for a total of 36 transfer functions, one for each entry in the mass, damping, and spring matrices. For this we used the MATLAB code found below.
For all 36 combinations

function flexureinfo = flexure_analysis(handles)
flexureinfo = struct('data',[],'fit',[],'amplitudes',[],...
'mass',[],'damping',[],'spring',[]);
data_cell = cell(6,6);
fit_cell = cell(6,6);
data = struct('freqs',[],'complex',[],'mag',[],'phase',[]);
data.freqs = 2*pi*handles.flexureinfo.Gnfreqs_flexure;
for ii = 1:6
for jj = 1:6
data.complex = reshape(handles.flexureinfo.Gn_flexure(jj,ii,:),size(data.freqs));
data.mag = 20*log10(abs(data.complex));
data.phase = filter_phase_data(180/pi*angle(data.complex));
fit = flexure_tf_fit(data);
data_cell{jj,ii} = data;
fit_cell{jj,ii} = fit;
flexureinfo.mass(jj,ii) = fit.params(1);
flexureinfo.damping(jj,ii) = fit.params(2);
flexureinfo.spring(jj,ii) = fit.params(3);
end
end
flexureinfo.amplitudes = [handles.plateinfo.Alin handles.plateinfo.Aang];
flexureinfo.data = data_cell;
flexureinfo.fit = fit_cell;
end




=Results=
=Results=

Revision as of 14:33, 10 June 2009

Overview

Flexures are deformable solid bodies used to connect elements in a mechanical system. This flexibility allows for greater freedom of motion of the parts relative to each other than a rigid joint does, but at the cost of complicating the dynamics of the system. As one can imagine, it is important to know the properties of the flexures in order to predict and control the behavior of a system. This project is primarily focused on the flexures used in the PPOD projects in LIMS which are used to connect the linear actuators to the table. In this case the flexures allow the table to move in all six degrees of freedom (three translational and three rotational) which the use of rigid joints would not allow. The goals of this project are to be able to test the performance of the existing flexures and to use this information to design new ones to improve the performance of the PPOD.

Current Design

The flexures currently on the PPOD are made of a 1/4" Tygon tubing glued to aluminum mounts.

Hardware

Data Collection

Transfer Function Fitting

Until now, only a simple approximation has been used to describe the flexures when modeling the system. In reality, a flexure will have a mass, damping, and spring matrix associated with it that maps its motion to the forces it applies.

Here is a vector of forces and moments and is a vector of coordinates. This leads to a transfer function from input acceleration to output force given by:

We then have to fit this model to each combination of the accelerations and forces for a total of 36 transfer functions, one for each entry in the mass, damping, and spring matrices. For this we used the MATLAB code found below.

function flexureinfo = flexure_analysis(handles)

flexureinfo = struct('data',[],'fit',[],'amplitudes',[],...
    'mass',[],'damping',[],'spring',[]);
data_cell = cell(6,6);
fit_cell = cell(6,6);
data = struct('freqs',[],'complex',[],'mag',[],'phase',[]); 

data.freqs = 2*pi*handles.flexureinfo.Gnfreqs_flexure;

for ii = 1:6
    for jj = 1:6
        data.complex = reshape(handles.flexureinfo.Gn_flexure(jj,ii,:),size(data.freqs));
        data.mag = 20*log10(abs(data.complex));
        data.phase = filter_phase_data(180/pi*angle(data.complex));
        
        fit = flexure_tf_fit(data);
        
        data_cell{jj,ii} = data;
        fit_cell{jj,ii} = fit;
        
        flexureinfo.mass(jj,ii) = fit.params(1);
        flexureinfo.damping(jj,ii) = fit.params(2);
        flexureinfo.spring(jj,ii) = fit.params(3);
    end
end

flexureinfo.amplitudes = [handles.plateinfo.Alin handles.plateinfo.Aang];
flexureinfo.data = data_cell;
flexureinfo.fit = fit_cell;
end


Results

Next Steps