Difference between revisions of "Flexure Characterization and Design"
Philip Dames (talk | contribs) |
Philip Dames (talk | contribs) |
||
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