Kinematic Analysis (11)
Kinematic analysis was used to qualitatively determine the approximate range of motion of the final design. It was used to inform the change from a pivot joint to a slider joint in order to increase range of motion.
Position Analysis of a classic four bar where the crank (red) is shorter than the rocker (green). Note the reduced upwards range of motion.
Position analysis of a classic four bar where the crank is longer than the rocker. Note the reduced downward range of motion.
Position analysis of a four bar where the length of the connecting rod (green) can be varied. This variable length is realized in practice by a sliding joint. Note the greatly increased range of motion.
The program used for the kinematic analysis was Matlab. The four bar plotting code provided for a take home quiz was modified to do the analysis.
The main script for the program which plotted the standard 4 bar. The main modification made was the link lengths.
%%**********************************************************************
%
% animatedMain.m
% A main script to demonstrate how to plot a four bar mechanism
%
% Meredith Symmank
%
%%**********************************************************************
l_vec = [0.8,1.5,1.2,1.2,3]; % link lengths
offset = 0; % between local and global frames
theta_2 = 0; % just for the initial picture
omega_2 = -1.0;
figOuter = figure; % open a figure so we can get the axes
ax = gca;
figOuter = fourBarPlot(ax,l_vec,[0,theta_2-offset,0,0],omega_2,offset,-1,true); % Run the function to get the initial state
% Looping the function
th_2_vec = [linspace(0,180,181),linspace(180,0,181)];
th_in_vec = zeros(4,length(th_2_vec));
th_in_vec(2,:) = th_2_vec-offset;
for thIdx = 1:length(th_2_vec)
ax = gca;
figOuter = fourBarPlot(ax,l_vec,th_in_vec(:,thIdx),omega_2,offset,-1,true);
im{thIdx} = frame2im(getframe(figOuter)); % Use this for making a gif
end
% Putting it into a gif
filename = "animatedFourBarCrankLonger.gif";
omega_2_deg= abs(omega_2*180/pi); % 1 radian/sec constant put into degrees because that's what my frames represent
omega_2_animate = 1/omega_2_deg*2; % Have to x2 delay (half speed) because gifs can't show faster
for idx = 1:length(th_in_vec)
[A,map] = rgb2ind(im{idx},256);
if idx == 1
imwrite(A,map,filename,"gif","LoopCount",Inf,"DelayTime",omega_2_animate); % delay time is in seconds
else
imwrite(A,map,filename,"gif","WriteMode","append","DelayTime",omega_2_animate);
end
end
exportgraphics(gcf,filename,'Append',true);