Since the main mechanism in our design is a simple four bar linkage with no sliding joints, the kinematic analysis was fairly straightforward. The main focus of our analysis was point A shown in the drawings below. This is the point which the pizza blade attached to, and it is the point for which we had a desired path of motion. We determined the position, velocity, and acceleration of point A and plotted them in MATLAB.
Notable points of this analysis are the position and velocity plots of point A. In the position plot, it is evident that the output motion of the lambda mechanism contains the "D" shape that we desired. In the velocity plots, there is a period between 100 and 300 degrees where the angle of velocity is roughly 180 degrees. This also confirms that our desired motion was reached.
The MATLAB Code can be seen below, and is also attached in the appendix:
pizzacutter.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% set physical parameters of mechanism
a = 40; b = 100; c = 100; d = 80; e = 100;
t1 = 0; t2 = 0:1:360;
w2 = 2;
a2 = 0;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% first, do position analysis
t3 = []; t4 = [];
Ax = []; Ay = [];
for i = 1:length(t2)
% find t3,t4 for all angles of t2
temp = fourbarpos([d a b c],t1,t2(i),-1);
t3(i) = temp(3);
t4(i) = temp(4);
% find coordinates of A
Ax(i) = a*cosd(t2(i)) + (b+e)*cosd(t3(i));
Ay(i) = a*sind(t2(i)) + (b+e)*sind(t3(i));
end
% plot the position of A
figure(1)
plot(Ax, Ay)
title('Position of A')
xlabel('X (mm)')
ylabel('Y (mm)')
ylim([0,200])
% use this graph to determine which values of t2 are part of the "flat" portion of the graph
% figure(2)
% plot(t2,Ay)
% title('Y Position of A wrt theta2')
% xlabel('theta2 (degrees')
% ylabel('Y Position of A (mm)')
% based on this graph, the flat part of Ay occurs in the range t2:~[80,280]
% now find the maximum change throughout this range
min = 1000;max = -1000; % initialize min and max to values that will be changed for sure
for i = 80:280
if(Ay(i) > max)
max = Ay(i);
end
if(Ay(i) < min)
min = Ay(i);
end
end
range = max-min;
disp(['Maximum deviation within flat region of A position: ' num2str(range) 'mm'])
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% now, do velocity analysis
w3 = []; w4 = [];
Vax = []; Vay = []; Vtot = []; Vang = [];
for i = 1:length(t2)
% find w3 and w4 for constant w2 as t2,t3,t4 vary
[w3(i), w4(i)] = angvel([a b c d],t2(i),t3(i),t4(i),w2);
% now calculate velocity of A
Vax(i) = -w2*a*sind(t2(i)) - w3(i)*(b+e)*sind(t3(i));
Vay(i) = w2*a*cosd(t2(i)) + w3(i)*(b+e)*cosd(t3(i));
Vtot(i) = sqrt(Vax(i)^2 + Vay(i)^2);
Vang(i) = atan2d(Vay(i), Vax(i));
% make Vang in range [0,360] for sake of (mostly) continuous plotting
if(Vang(i) < 0)
Vang(i) = Vang(i) + 360;
end
end
% now plot magnitute and angle of V_a with respect to t2
figure(3)
subplot(2,1,1)
plot(t2,Vtot)
title('Magnitude of V_a wrt theta2')
xlabel('theta2 (degrees)')
ylabel('Magnitude of V_a (mm/s)')
subplot(2,1,2)
plot(t2,Vang)
title('Angle of V_a wrt theta2')
xlabel('theta2 (degrees)')
ylabel('Angle of V_a (degrees)')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% finally acceleration analysis
a3 = []; a4 = [];
Aax = []; Aay = []; Atot = []; Aang = [];
for i = 1:length(t2)
% find angular accelerations of links 3 and 4
A = c*sind(t4(i));
B = b*sind(t3(i));
C = a*a2*sind(t2(i)) + a*w2^2*cosd(t2(i)) + b*w3(i)^2*cosd(t3(i)) - c*w4(i)^2*cosd(t4(i));
D = c*cosd(t4(i));
E = b*cosd(t3(i));
F = a*a2*cosd(t2(i)) + a*w2^2*sind(t2(i)) - b*w3(i)^2*sind(t3(i)) + c*w4(i)^2*sind(t4(i));
a3(i) = (C*D-A*F) / (A*E-B*D);
a4(i) = (C*E-B*F) / (A*E-B*D);
% now find acceleration of A
Aax(i) = -a2*a*sind(t2(i)) - w2^2*a*cosd(t2(i)) - a3(i)*(b+e)*sind(t3(i)) - w3(i)^2*(b+e)*cosd(t3(i));
Aay(i) = a2*a*cosd(t2(i)) - w2^2*a*sind(t2(i)) + a3(i)*(b+e)*cosd(t3(i)) - w3(i)^2*(b+e)*sind(t3(i));
Atot(i) = sqrt(Aax(i)^2 + Aay(i)^2);
Aang(i) = atan2d(Aay(i), Aax(i));
% smooth out plot
if(Aang(i) >= 170)
Aang(i) = Aang(i) - 360;
end
end
% now plot magnitute and angle of A_a with respect to t2
figure(4)
subplot(2,1,1)
plot(t2,Atot)
title('Magnitude of A_a wrt theta2')
xlabel('theta2 (degrees)')
ylabel('Magnitude of A_a (mm/s^2)')
subplot(2,1,2)
plot(t2,Aang)
title('Angle of A_a wrt theta2')
xlabel('theta2 (degrees)')
ylabel('Angle of A_a (degrees)')
fourbarpos.m
function q = fourbarpos(L,t1,t2,del)
% define side lengths
d = L(1);
a = L(2);
b = L(3);
c = L(4);
% define link ratios
K1 = d/a;
K2 = d/c;
K3 = (a^2-b^2+c^2+d^2)/(2*a*c);
K4 = d/b;
K5 = (c^2-d^2-a^2-b^2)/(2*a*b);
% define constants
A = cosd(t2) - K1 - K2*cosd(t2) + K3;
B = -2*sind(t2);
C = K1 - (K2+1)*cosd(t2) + K3;
D = cosd(t2) - K1 + K4*cosd(t2) + K5;
E = -2*sind(t2);
F = K1 + (K4-1)*cosd(t2) + K5;
% solve for t3 and t4
t3 = 2*atand((-E + del*sqrt(E^2 - 4*D*F))/(2*D));
t4 = 2*atand((-B + del*sqrt(B^2 - 4*A*C))/(2*A));
q = [t1 t2 t3 t4];
angvel.m
function [w3,w4] = angvel(L,t2,t3,t4,w2)
w3 = w2*L(2)/L(3)*sind(t4-t2)/sind(t3-t4);
w4 = w2*L(2)/L(4)*sind(t2-t3)/sind(t4-t3);