CODIGO MATLAB clear all; close all; clc; T_m=linspace(0,2*pi,360); L_m=input('Ingrese longitud de la manivela = '); L_b=input('Ingrese longitud de la biela = '); vOm=input('Ingrese velocidad de la manivela (rad/seg) = '); aOm=input('Ingrese aceleracion de la manivela = '); m_m=input('Ingrese masa de la manivela (DIFERENTE DE 0) = '); m_b=input('Ingrese masa de la biela (DIFERENTE DE 0) = '); m_c=input('Ingrese masa de la corredera (DIFERENTE DE 0) = '); u=input('Ingrese fricción = '); g=input ('Ingrese gravedad (9.81 si no especifica)= '); fom=input('INGRESE 1) FUERZA O 2) MOMENTO : '); I_m=0.8*m_m*(L_m^2); I_b=0.8*m_b*(L_b^2); if fom ==1 dat=input('Ingrese Fuerza = '); df=1; dm=0; end if fom==2 dat=input('Ingrese Momento = '); dm=1; df=0; end if(L_m<=L_b) T_b=asin(L_m/L_b*sin(T_m)); C=L_m*cos(T_m)+L_b*cos(T_b); ymin=abs(L_m-L_b); ymax=abs(L_m+L_b); else T_m=linspace(0,2*pi,360); T_b=asin(L_m/L_b*sin(T_m)); C=L_m*cos(T_m)+L_b*cos(T_b); ymin=abs(L_m-L_b); ymax=abs(L_m+L_b); T_m=T_m*180/pi; T_b=T_b*180/pi; disp('NO FUNCIONA BIEN EL MECANISMO\n LA LONGITUD DE LA BIELA DEBE SER MAYOR O IGUAL A LA MANIVELA'); end %CALCULO DE CINEMATICA y CINETICA MECANISMO BIELA-MANIVELA for i=1:1:360 tb=T_b(i); tm=T_m(i); if aOm==0 vtm=vOm; else vtm=((vOm^2) + 2*aOm*tm)^1/2; la aceleración
%velocidad cambia respecto a
end MX=[L_b*sin(tb) 1; L_b*cos(tb) 0];
%matriz patrón no cambia
vf=[sin(tm)*(-L_m)*vtm; L_m*vtm*cos(tm)]; x=inv(MX)*vf; vOb(i)=x(1,1); vC(i)=x(2,1); vtb=vOb(i);
%matriz de la velocidad
af=[-L_m*vtm^2*cos(tm)-L_m*aOm*sin(tm)-L_b*vtb^2*cos(tb); %matriz aceleración -L_m*vtm^2*sin(tm)+L_m*aOm*cos(tm)+L_b*vtb^2*sin(tb)]; y=inv(MX)*af; aOb(i)=y(1,1); aC(i)=y(2,1); A_B=aOb(i); a_c=aC(i); A_mx(i)=L_m/2*aOm*sin(tm)+L_m/2*vtm^2*cos(tm); en x,y de la biela y manivela A_my(i)=L_m/2*aOm*cos(tm)-L_m/2*vtm^2*sin(tm); A_bx(i)=L_b/2*A_B*sin(tb)+L_b/2*vtb^2*cos(tb); A_by(i)=L_b/2*A_B*cos(tb)-L_b/2*vtb^2*sin(tb); a_mx=A_mx(i); a_my=A_my(i); a_bx=A_bx(i); a_by=A_by(i);
%aceleraciones
MB=[m_m*a_mx; %MATRIZ DE REACCIONES EN EL MECANISMO m_m*(a_my + g); I_m*aOm + m_m*L_m*0.5*(a_mx*sin(tm)+ a_my*cos(tm) + g*cos(tm)); m_b*a_bx; m_b*(a_by + g); -I_b*A_B - m_b*L_b*0.5*(a_bx*sin(tb) + a_by*cos(tb) + g*cos(tb)); m_c*a_c; m_c*g; dat;]; MA=[-1 0 -1 0 0 0 0 0 0; 0 1 0 1 0 0 0 0 0; 0 0 -L_m*sin(tm) L_m*cos(tm) 0 0 1 0 0; 0 0 -1 0 1 0 0 0 0; 0 0 0 -1 0 1 0 0 0; 0 0 L_b*sin(tb) L_b*cos(tb) 0 0 0 0 0; 0 0 0 0 -1 0 0 1 u; 0 0 0 0 0 -1 0 0 1; 0 0 0 0 0 0 dm df 0]; z=inv(MA)*MB; Ax(i)=z(1,1); Ay(i)=z(2,1); Bx(i)=z(3,1);
By(i)=z(4,1); Cx(i)=z(5,1); Cy(i)=z(6,1); M(i)=z(7,1); F(i)=z(8,1); N(i)=z(9,1); end T_m=T_m*180/pi; T_b=T_b*180/pi; %REACCIONES MAXIMAS [Axmax,Vectornroa]=max(Ax(:)) [Aymax,Vectornrob]=max(Ay(:)) [Bxmax,Vectornroc]=max(Bx(:)) [Bymax,Vectornrod]=max(By(:)) [Cxmax,Vectornroe]=max(Cx(:)) [Cymax,Vectornrof]=max(Cy(:))
%IMPRESIONES subplot (2,4,1); plot(T_m,T_b); grid on; title('Tb vs Tm'); xlabel('Tm') ylabel('Tb')
%Tb vs Tm
subplot(2,4,2); %S vs Tm plot(T_m,C); grid on; title ('S vs Tm'); xlabel('Tm') ylabel('S') subplot (2,4,3); %Vs vs Tm plot(T_m,vC); grid on; title('Tm vs Vs'); xlabel('Tm') ylabel('vS')
subplot (2,4,4); plot(T_m,vOb); grid on; title('Vb vs Tm'); xlabel('Tm') ylabel('vTb')
%Vb vs Tm
subplot (2,4,5); %Vm VS Tm plot(T_m,vtm); grid on; title('Vm vs Tm');
subplot (2,4,6); plot(T_m,aC); grid on; title('As vs Tm'); xlabel('Tm') ylabel('aS')
%As vs Tm
subplot (2,4,7); plot(T_m,aOm); grid on; title('Am vs Tm'); xlabel('Tm') ylabel('aTm')
%Am vs Tm
subplot (2,4,8); plot(T_m,aOb); grid on; title('Ab vs Tm'); xlabel('Tm') ylabel('aTb')
%Ab vs Tm
GRAFICOS RESULTANTES
REACCIONES MAXIMAS RESULTANTES (SE TOMO F=50 Y MASAS =1)
En el primer caso
θ=0°
Vp= 0 m/s En el segundo caso
Wbd= 39.27 rad/s
θ=90.25°
Vp= -6.272 m/s
Wbd= -0.1854 rad/s
El programa nos devuelve la solución dada por el libro.
En el primer caso
θ=6 0.17 °
Vp= -6.526 m/s
Wbd= 20.66 rad/s
El programa nos devuelve la solución dada por el libro.
En el primer caso
θ=60.17°
Ap= -146.3m/s El programa nos devuelve la solución dada por el libro.