Figure A. Bill of Materials
Item | Quantity | Supplier |
Bottle Opener | 1 | Amazon |
Acrylic Base | 1 | Laser Cut in TIW |
Acrylic Stands | 2 | Laser Cut in TIW |
Plywood Base Extension | 1 | Laser Cut in TIW |
Plywood Base Fasteners | 2 | Laser Cut in TIW |
Plywood Gear (10 Teeth) | 5 | Laser Cut in TIW |
Plywood Gear (20 Teeth) | 3 | Laser Cut in TIW |
Bottle Opener to Link Adapter | 1 | 3D Printed in TIW |
Ball Bearings (6mm ID, 13mm OD) | 10 | Amazon |
Geneva Mechanism Driver Wheel | 1 | 3D Printed in TIW |
Geneva Mechanism Driven Gear | 1 | 3D Printed in TIW |
Geneva Mechanism Guide | 1 | Laser Cut in TIW |
Bottle Holder | 1 | 3D Printed in TIW |
Bottle Holder Base | 1 | Laser Cut in TIW |
Slider Link (Acrylic) | 1 | Laser Cut in TIW |
Slider Link (Plywood) | 1 | Laser Cut in TIW |
6mm Stock Rod | 5 (cut to varied sizes) | Amazon |
3mm Varied Fasteners (Bolts, Nuts, Washers) | ~30 | Amazon |
Figure B. Arduino Code

Figure C. Matlab Code
%% Code to conduct kinematic analysis %Sarah Farrell %variable definition: L1 = 19.14; L2 = 3.3; theta1 = 0; L5 = 11.029; L6 = 30.42; Lt = 24.89; omega2 = (23/60)*2*pi; %radians per second %positional variable storage C_x = []; %only moves horizontally D_x = []; D_y =[]; E_y = []; %only moves vertically T2 = []; %velocity variable storage C_dot = []; E_dot = []; O5 = []; Ot = []; i = 1; for theta2 = 0:1:360 %positional: %from vector loop 1: theta3 = atand((L1*sind(theta1) + L2*sind(theta2))/(L1*cosd(theta1) + L2*cosd(theta2))); L3 = (1/cosd(theta3))*(L1*cosd(theta1) + L2*cosd(theta2)); %from vector loop 2: L4 = Lt - L3; theta4 = theta3; theta5 = acosd((L6 - Lt*cos(theta4))/L5); L7 = -(Lt*sind(theta4) + L5*sind(theta5)); C_x(i) = L3; D_x(i) = Lt*cosd(theta3); D_y(i) = Lt*sind(theta3); E_y(i) = L7; T2(i) = theta2; %velocity: %from vector loop 1: numerator = L2*omega2*(cosd(theta2) + tand(theta3)*sind(theta2)); denominator = (tand(theta3)*sind(theta3))*L3; omega3 = numerator/denominator; L3_dot = (1/cosd(theta3))*(L3*omega3*sind(theta3) - L2*omega2*sind(theta2)); %from vector loop 2: omegat = omega3; thetat = theta3; omega5 = (1/(L5*sind(theta5)))*(-Lt*omegat*sind(thetat)); L7_dot = -(Lt*omegat*cosd(thetat) + L5*omega5*cosd(theta5)); C_dot(i) = L3_dot; E_dot(i) = L7_dot; O5(i) = omega5; Ot(i) = omegat; i = i+1; end figure(1) plot(T2, C_x) title("Horizontal Position of Point C as a Function of Theta 2") xlabel("Theta 2 (degrees)") ylabel("X-Position of Point C (cm)") figure(2) plot(T2, D_x) hold on plot(T2, D_y) legend("X-Position", "Y-Position") title("Position of Point D as a Function of Theta 2") xlabel("Theta 2 (degrees)") ylabel("Position of Point C (cm)") ylim([-10 30]) figure(3) plot(T2, E_y) title("Vertical Position of Point E as a Function of Theta 2") xlabel("Theta 2 (degrees)") ylabel("Y-Position of Point E (cm)") figure(4) plot(T2, C_dot) title("Horizontal Velocity of Point C as a Function of Theta 2") xlabel("Theta 2 (degrees)") ylabel("Velocity of Point C (cm/s)") figure(5) plot(T2, E_dot) title("Vertical Velocity of Point E as a Function of Theta 2") xlabel("Theta 2 (degrees)") ylabel("Velocity of Point E (cm/s)") figure(6) plot(T2, O5) title("Rotational Velocity of Link 5 as a Function of Theta 2") xlabel("Theta 2 (degrees)") ylabel("Velocity of Link 5 (rad/s)") figure(7) plot(T2, Ot) title("Rotational Velocity of Links 3 and 4 as a Function of Theta 2") xlabel("Theta 2 (degrees)") ylabel("Velocity of Links 3 and 4 (rad/s)") |
|---|