Kinematic Analysis (11)

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.

animatedFourBar.gif
Position Analysis of a classic four bar where the crank (red) is shorter than the rocker (green). Note the reduced upwards range of motion.
animatedFourBarCrankLonger.gif
Position analysis of a classic four bar where the crank is longer than the rocker. Note the reduced downward range of motion.
149.gif
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);