پروژه دینامیک ماشین ( مکانیزم 2 درجه آزادی) تحلیل
برنامه متلب برای تحلیل سرعت و شتاب به روش اعداد مختلط
% velocity & acceleration analysis
clear all; clc; close all; format long
fprintf('velocity & acceleration analysis \n')
fprintf('Results \n\n')
AB = 0.15 ;
AC = 0.10 ;
CD = 0.15 ;
DF = 0.40 ;
AG = 0.30 ;
phi = pi/6 ;
fprintf('phi = phi1 = %g (degrees) \n', phi*180/pi)
fprintf('\n')
fprintf('Position analysis \n\n')
xA = 0; yA = 0; rA = [xA yA 0];
fprintf('rA = [ %g, %g, %g ] (m)\n', rA)
xC = 0; yC = AC; rC = [xC yC 0];
fprintf('rC = [ %g, %g, %g ] (m)\n', rC)
xB = AB*cos(phi); yB = AB*sin(phi); rB = [xB yB 0];
fprintf('rB = [ %g, %g, %g] (m)\n', rB)
eqnD1 = '( xDsol - xC )^2 + ( yDsol - yC )^2 = CD^2';
eqnD2 = '(yB-yC)/(xB-xC)=(yDsol-yC)/(xDsol-xC)';
solD = solve(eqnD1, eqnD2, 'xDsol, yDsol');
xDpositions = eval(solD.xDsol);
yDpositions = eval(solD.yDsol);
xD1 = xDpositions(1); xD2 = xDpositions(2);
yD1 = yDpositions(1); yD2 = yDpositions(2);
if(phi>=0&&phi<=pi/2)||(phi >=3*pi/2&&phi<=2*pi)
if ...
xD1 <= xC , xD=xD1; yD=yD1; else xD=xD2; yD=yD2;end
else
if ...
xD1 >= xC , xD=xD1; yD=yD1; else xD=xD2; yD=yD2;end
end
rD = [xD yD 0];
fprintf('rD = [ %g, %g, %g ] (m)\n', rD)
phi2 = atan((yB-yC)/(xB-xC)); phi3 = phi2;
phi4 = atan((yD-yA)/(xD-xA))+pi; phi5 = phi4;
xF=xD+DF*cos(phi3); yF=yD+DF*sin(phi3);
rF=[xF yF 0];
fprintf('rF = [ %g, %g, %g ] (m)\n', rF)
xG=xA+AG*cos(phi5); yG=yA+AG*sin(phi5);
rG=[xG yG 0];
fprintf('rG = [ %g, %g, %g ] (m)\n', rG)
fprintf('phi2 = phi3 = %g (degrees) \n', phi2*180/pi)
fprintf('phi4 = phi5 = %g (degrees) \n', phi4*180/pi)
fprintf('\n')
xC1 = xB/2; yC1 = yB/2; rC1 = [xC1 yC1 0];
fprintf('rC1 = [ %g, %g, %g ] (m)\n', rC1)
rC2 = rB;
fprintf('rC2 = rB = [ %g, %g, %g ] (m)\n', rC2)
xC3 = (xD+xF)/2; yC3 = (yD+yF)/2; rC3 = [xC3 yC3 0];
fprintf('rC3 = [ %g, %g, %g ] (m)\n', rC3)
rC4 = rD;
fprintf('rC4 = rD = [ %g, %g, %g ] (m)\n', rC4)
xC5 = (xA+xG)/2; yC5 = (yA+yG)/2; rC5 = [xC5 yC5 0];
fprintf('rC5 = [ %g, %g, %g ] (m)\n', rC5)
% Graphic of the mechanism
plot([0,xB],[0,yB],'r-o',[xD,xF],[yD,yF],...
[xA,xG],[yA,yG],'g-o'),...
xlabel('x (m)'), ylabel('y (m)'),...
title('positions for \phi = 30 (deg)'),...
text(xA,yA,' A'), text(xB,yB,' B=C2'),...
text(xC,yC,' C'), text(xD,yD,' D=C4'),...
text(xF,yF,' F'),text(xG,yG,' G'),...
text(xC1,yC1,' C1'), text(xC3,yC3,' C3'),...
text(xC5,yC5,' C5'), ...
axis([-0.3 0.3 -0.3 0.3]), grid on
fprintf('\n')
fprintf('Velocity and acceleration analysis \n\n')
n = 50.;
omega1 = [ 0 0 pi*n/30 ]; alpha1 = [0 0 0 ];
vA = [0 0 0 ]; aA = [0 0 0 ];
vB1 = vA + cross(omega1,rB); vB2 = vB1;
aB1 = aA + cross(alpha1,rB) - ...
dot(omega1,omega1)*rB;
aB2 = aB1;
fprintf ...
('aB1 = aB2 = [ %g, %g, %g ] (m/s^2)\n', aB1)
omega3z=sym('omega3z','real');
alpha3z=sym('alpha3z','real');
vB32=sym('vB32','real');
aB32=sym('aB32','real');
omega3 = [ 0 0 omega3z ];
vC = [0 0 0 ];
vB3 = vC + cross(omega3,rB-rC);
vB3B2 = vB32*[ cos(phi2) sin(phi2) 0];
eqvB = vB3 - vB2 - vB3B2;
eqvBx = eqvB(1); eqvBy = eqvB(2);
solvB = solve(eqvBx,eqvBy);
omega3zs=eval(solvB.omega3z);
vB32s=eval(solvB.vB32);
Omega3 = [0 0 omega3zs]; Omega2 = Omega3;
v32 = vB32s*[cos(phi2) sin(phi2) 0];
vD3 = vC + cross(Omega3,rD-rC); vD4 = vD3;
aB3B2cor = 2*cross(Omega3,v32);
alpha3 = [ 0 0 alpha3z ];
aC = [0 0 0 ];
aB3 = aC + cross(alpha3,rB-rC) - ...
dot(Omega3,Omega3)*(rB-rC);
aB3B2 = aB32*[ cos(phi2) sin(phi2) 0];
eqaB = aB3 - aB2 - aB3B2 - aB3B2cor;
eqaBx = eqaB(1); eqaBy = eqaB(2);
solaB = solve(eqaBx,eqaBy);
alpha3zs=eval(solaB.alpha3z);
aB32s=eval(solaB.aB32);
Alpha3 = [0 0 alpha3zs]; Alpha2 = Alpha3;
aD3 = aC + cross(Alpha3,rD-rC) - ...
dot(Omega3,Omega3)*(rD-rC);
aD4 = aD3;
fprintf('aD3 = aD4 = [ %g, %g, %g ] (m/s^2)\n', aD3)
omega5z=sym('omega5z','real');
alpha5z=sym('alpha5z','real');
vD54=sym('vD54','real');
aD54=sym('aD54','real');
omega5 = [ 0 0 omega5z ];
vD5 = vA + cross(omega5,rD-rA);
vD5D4 = vD54*[ cos(phi5) sin(phi5) 0];
eqvD = vD5 - vD4 - vD5D4;
eqvDx = eqvD(1); eqvDy = eqvD(2);
solvD = solve(eqvDx,eqvDy);
omega5zs = eval(solvD.omega5z);
vD54s = eval(solvD.vD54);
Omega5 = [0 0 omega5zs];
v54 = vD54s*[cos(phi5) sin(phi5) 0];
Omega4 = Omega5;
aD5D4cor = 2*cross(Omega5,v54);
alpha5 = [ 0 0 alpha5z ];
aD5 = aA + cross(alpha5,rD-rA) - ...
dot(Omega5,Omega5)*(rD-rA);
aD5D4 = aD54*[ cos(phi5) sin(phi5) 0];
eqaD = aD5 - aD4 - aD5D4 - aD5D4cor;
eqaDx = eqaD(1); eqaDy = eqaD(2);
solaD = solve(eqaDx,eqaDy);
alpha5zs = eval(solaD.alpha5z);
aD54s = eval(solaD.aD54);
Alpha5 = [0 0 alpha5zs]; Alpha4 = Alpha5;
aF = aC + cross(Alpha3,rF-rC) - ...
dot(Omega3,Omega3)*(rF-rC);
aG = aA + cross(Alpha5,rG-rA) - ...
dot(Omega5,Omega5)*(rG-rA);
fprintf('aF = [ %g, %g, %g ] (m/s^2)\n', aF)
fprintf('aG = [ %g, %g, %g ] (m/s^2)\n', aG)
fprintf ...
('omega4=omega5 = [%g, %g, %g] (rad/s)\n', Omega5)
fprintf('\n')
fprintf ...
('alpha1 = [%g, %g, %g] (rad/s^2)\n', alpha1)
fprintf ...
('alpha2=alpha3 = [%g, %g, %g](rad/s^2)\n', Alpha3)
fprintf ...
('alpha4=alpha5 = [%g, %g, %g](rad/s^2)\n', Alpha5)
fprintf('\n')
aC1 = aB1/2;
fprintf('aC1 = [ %g, %g, %g ] (m/s^2)\n', aC1)
aC2 = aB2;
fprintf('aC2=aB2 = [ %g, %g, %g ] (m/s^2)\n', aC2)
aC3 = (aD3+aF)/2;
fprintf('aC3 = [ %g, %g, %g ] (m/s^2)\n', aC3)
aC4 = aD3;
fprintf('aC4=aD4 = [ %g, %g, %g ] (m/s^2)\n', aC4)
aC5 = (aA+aG)/2;
fprintf('aC5 = [ %g, %g, %g ] (m/s^2)\n', aC5)
fprintf('\n')
'
سلام