VIII Appendix
Arduino Code
#include <Stepper.h> //library
const int stepsPerRevolution = 2048; //number of steps per rotation
Stepper myStepper1 = Stepper(stepsPerRevolution, 8, 10, 9, 11);
Stepper myStepper2 = Stepper(stepsPerRevolution, 3, 5, 4, 6);
void setup() {
// put your setup code here, to run once:
myStepper1.setSpeed(5);
myStepper2.setSpeed(5);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("clockwise");
myStepper1.step(stepsPerRevolution);
Serial.println("counterclockwise");
myStepper2.step(stepsPerRevolution);
}
MATLAB Code
%% Group 1 - Abayomi Adekanmbi & Zakari Ishak-Boushaki
clear all; clc; close all;
L1=5;
L2=1;
L3=7;
L33=7;
L4=4;
L44=4;
L5=4;
L6=4;
L66=8;
L7=4;
A1=0;
A2=pi/2:0.3:6*pi+(pi/2);
A22=pi+A2;
A2=-A2; A22=-A22;
% Point B
Bx=L2.*cos(A2);
By=L2.*sin(A2);
B2x=L2.*cos(A22);
B2y=L2.*sin(A22);
[A3,A4] = fourbarpos(L1,L2,L3,L4,A1,A2);
A5=(pi-A4)+(pi/2);
[A32,A42]= fourbarpos (L1,L2,L3,L4,A1,A22);
A52=(pi-A42)+(pi/2);
% Point C
Cx=Bx+(L3.*cos(A3));
Cy=L4.*sin(A4);
C2x=B2x+(L3.*cos(A32));
C2y=L4.*sin(A42);
% Point D
Dx=L1; Dy=0;
p=2.*L4.*((L1.*cos(A1))-(L2.*cos(A2)));
q=2.*L4.*((L1.*sin(A1))-(L2.*sin(A2)));
r=(L1.^2)+(L2.^2)-(L33.^2)+(L44.^2)-(2.*L1.*L2.*cos(A1-A2));
A44=2.*atan((-q+sqrt((p.^2)+(q.^2)-(r.^2)))./(r-p));
d=2.*L3.*((L2.*cos(A2))-(L1.*cos(A1)));
e=2.*L3.*((L2.*sin(A2))-(L1.*sin(A1)));
f=(L1.^2)+(L2.^2)+(L33.^2)-(L44.^2)-(2.*L1.*L2.*cos(A2-A1));
A33=2.*atan((-e-sqrt((d.^2)+(e.^2)-(f.^2)))./(f-d));
p2=2.*L4.*((L1.*cos(A1))-(L2.*cos(A22)));
q2=2.*L4.*((L1.*sin(A1))-(L2.*sin(A22)));
r2=(L1.^2)+(L2.^2)-(L33.^2)+(L44.^2)-(2.*L1.*L2.*cos(A1-A22));
A442=2.*atan((-q2+sqrt((p2.^2)+(q2.^2)-(r2.^2)))./(r2-p2));
d2=2.*L3.*((L2.*cos(A22))-(L1.*cos(A1)));
e2=2.*L3.*((L2.*sin(A22))-(L1.*sin(A1)));
f2=(L1.^2)+(L2.^2)+(L33.^2)-(L44.^2)-(2.*L1.*L2.*cos(A22-A1));
A332=2.*atan((-e2-sqrt((d2.^2)+(e2.^2)-(f2.^2)))./(f2-d2));
% Point E
Ex=Dx+L5.*cos(pi-A5);
Ey=Dy+L5.*sin(pi-A5);
E2x=Dx+L5.*cos(pi-A52);
E2y=Dy+L5.*sin(pi-A52);
A5=-A5; A4=-A4;
[A6,A7]=fourbarpos(L5,L4,L6,L7,A5,A4);
A52=-A52; A42=-A42;
[A62,A72]= fourbarpos(L5,L4,L6,L7,A52,A42);
Hx=Bx+(L33.*cos(A33));
Hy=By+L33.*sin(A33);
H2x=B2x+(L33.*cos(A332));
H2y=B2y+L33.*sin(A332);
Fx=Hx-L6.*cos(A6);
Fy=Hy-L6.*sin(A6);
F2x=H2x-L6.*cos(A62);
F2y=H2y-L6.*sin(A62);
Px=Hx+L66.*cos(A6+(pi/2));
Py=Hy+L66.*sin(A6+(pi/2));
P2x=H2x+L66.*cos(A62+(pi/2));
P2y=H2y+L66.*sin(A62+(pi/2));
A4=-A4; A5=-A5;
%%% Velocity Calculation
W2=2;
W3=-(L2.*W2.*sin(A2-A4))./(L3.*sin(A3-A4));
W4=(L2.*W2.*sin(A2-A3))./(L4.*sin(A4-A3));
W5=W4;
W33=-(L2.*W2.*sin(A2-A44))./(L33.*sin(A33-A44));
W44=(L2.*W2.*sin(A2-A33))./(L44.*sin(A44-A33));
A4=-A4; A5=-A5;
W6=(L5.*W5.*sin(A5-A7)-L44.*W44.*sin(A44-A7))./(L6.*sin(A6-A7));
W7=(L44.*W44.*sin(A44)-L5.*W5.*sin(A5)+L6.*W6.*sin(A6))./(L7.*sin(A7));
A4=-A4; A5=-A5;
% Acceleration
Alf2=0;
Alf3=((L2.*(W2.^2).*cos(A2-A4))+(L3.*(W3.^2).*cos(A3-A4))-(L4.*(W4.^2))-(L2.*sin(A4-A2)))./(L3.*sin(A4-A3));
Alf4=((L2.*Alf2.*sin(A3-A2))-(L2.*(W2.^2).*cos(A2-A3))-(L3.*(W3.^2))+(L4.*(W4.^2).*cos(A4-A3)))./(L4.*sin(A3-A4));
Alf5=Alf4;
Alf33=((L2.*(W2.^2).*cos(A2-A44))+(L33.*(W33.^2).*cos(A33-A44))-(L44.*(W44.^2))-(L2.*sin(A44-A2)))./(L33.*sin(A44-A33));
Alf44=((L2.*Alf2.*sin(A33-A2))-(L2.*(W2.^2).*cos(A2-A33))-(L33.*(W33.^2))+(L44.*(W44.^2).*cos(A44-A33)))./(L44.*sin(A33-A44));
A4=-A4; A5=-A5;
Alf7=((L44.*Alf44.*sin(A44-A6))+(L44.*(W44.^2).*cos(A44-A6))+(L6.*(W6.^2))-(L5.*Alf5.*sin(A5-A6))-(L5.*(W5.^2).*cos(A5-A6))-(L7.*(W7.^2).*cos(A7-A6)))./(L7.*sin(A7-A6));
Alf6=((L5.*Alf5.*sin(A5-A7))+(L5.*(W5.^2).*cos(A5-A7))+(L7.*(W7.*2))-(L44.*Alf44.*sin(A44-A7))-(L44.*(W44.^2).*cos(A44-A7))-(L6.*(W6.^2).*cos(A6-A7)))./(L6.*sin(A6-A7));
A4=-A4; A5=-A5;
figure(1)
x = A2;
link3 = A3;
link4 = A4;
link33 = A33;
link44 = A44;
link6 = A6;
link7 = A7;
plot(x,link3,'r', x,link4,'b',x,link33,'g',x,link44,'c',x,link6,'m',x,link7,'k')
legend('Link3','Link4','Link33','Link44','Link6','Link7')
grid on;
title('Jensen Links Position Analysis'); xlabel('Angle(\theta_2)')
ylabel('Position');
figure(2)
x = A2;
link3 = W3;
link4 = W4;
link33 = W33;
link44 = W44;
link6 = W6;
link7 = W7;
plot(x,link3,'r', x,link4,'b',x,link33,'g',x,link44,'c',x,link6,'m',x,link7,'k')
legend('Link3','Link4','Link33','Link44','Link6','Link7')
grid on;
title('Jensen Links velocity Analysis'); xlabel('Angle(\theta_2)')
ylabel('Velocity');
figure(3)
x = A2;
link3 = Alf3;
link4 = Alf4;
link33 = Alf33;
link44 = Alf44;
link6 = Alf6;
link7 = Alf7;
plot(x,link3,'r', x,link4,'b',x,link33,'g',x,link44,'c',x,link6,'m',x,link7,'k')
legend('Link3','Link4','Link33','Link44','Link6','Link7')
grid on;
title('Jensen Links Acceleration Analysis'); xlabel('Angle(\theta_2)')
ylabel('Acceleration');
function [T3,T4]= fourbarpos(L1,L2,L3,L4,T1,T2)
s1=-1;
s2=1;
P=2*L4*(L1*cos(T1)-L2*cos(T2));
Q=2*L4*(L1*sin(T1)-L2*sin(T2));
R=L1^2+L2^2-L3^2+L4^2-2*L1*L2*cos(T1-T2);
T4=2*atan2(-Q+(s1)*sqrt(P.^2+Q.^2-R.^2),R-P);
D=2*L3*(L2*cos(T2)-L1*cos(T1));
E=2*L3*(L2*sin(T2)-L1*sin(T1));
F=L1^2+L2^2+L3^2-L4^2-2*L1*L2*cos(T2-T1);
T3=2*atan2(-E+(s2)*sqrt(D.^2+E.^2-F.^2),F-D);
end
Bill of Materials
Items | Quantity | Cost | Source |
---|---|---|---|
Arduino Uno | 1 | $24 | Amazon |
5V Stepper Motor & Darlington Arrays | 5 | $14 | Amazon |
1 Set of Jumper Wires | 120 | $6.89 | Amazon |
Power Module | 1 | $17 | Amazon |
Computer Cable | 1 | $2.60 | Amazon |
Lead Screw Set | 1 | $12 | Amazon |
Caster Wheels | 1 | $10.79 | Amazon |
Dowels, Wood, and 3D Printed Material | 6 | Free | TIW |
5 Sets of Ball Bearings | 50 | $57.4 | Amazon |
1 Set of Sliders | 2 | $17 | Amazon |
Welcome to the University Wiki Service! Please use your IID (yourEID@eid.utexas.edu) when prompted for your email address during login or click here to enter your EID. If you are experiencing any issues loading content on pages, please try these steps to clear your browser cache.