Вы находитесь на странице: 1из 5

ESCUELA POLITCNICA NACIONAL

Facultad de Ingeniera Mecnica


Teora de mquinas

Nombre: Martnez Juan Grupo: Gr-2


Rojas Jhohan
Fecha: 2017-08-04

Consideramos un cuadriltero articulado compuesto por los tres elementos de la figura. El


mecanismo se modeliza mediante dos puntos fijos A y B, y mediante tres puntos mviles 1, 2 y 3
y el ngulo . Las longitudes de las barras son L1A = 1, L12 = 3, L13 = 2, L23 = 2, L2B = 3, LAB = 2.
Deseamos calcular la posicin, velocidad y aceleracin del punto 3 en una revolucin completa
del ngulo , que cumple la ley de movimiento = 2t. Asimismo, deseamos realizar una
animacin del mecanismo que nos permita ver el movimiento de forma directa e intuitiva.

Incluimos en matlab las tres funciones principales del programa:


-ProbPosicion
-ProbVelocidad
-ProbAceleracion

Posicin

%Resuelve el problema de posici_on


function [q] = ProbPosicion()
global q angDato;
%Inicializa las variables
error = 1e10;
epsilon = 1e-10;
deltaQ = zeros(7,1);
fi = zeros(7,1);
%Bucle hasta que el error sea menor que la tolerancia
while (error > epsilon),
%Extrae las coordenadas
x1=q(1); y1=q(2); x2=q(3); y2=q(4);
x3=q(5); y3=q(6); ang=q(7);
%Calcula los residuos
fi(1)= x1^2+y1^2-1;
fi(2)=(x2-x1)^2+(y2-y1)^2-9;
fi(3)=(x3-x1)^2+(y3-y1)^2-4;
fi(4)=(x2-x3)^2+(y2-y3)^2-4;
fi(5)=(x2-2)^2+y2^2-9;
fi(6)= x1-cos(ang);
fi(7)= y1-sin(ang);
fi(8)= ang - angDato;
deltaQ =-Jacob\fi; %Calcula la variaci_on de q
q = q+deltaQ; %Actualiza las posiciones
error = norm(deltaQ); %Calcula el error
end

-Velocidad.

%Resuelve el problema de velocidad


function qp = ProbVelocidad
global q qp;
%Inicializa las variables
b = zeros(8,1);
b(8) = 2*3.141592; %Introduce la velocidad del gdl
qp = Jacob\b; %Calcula la variaci_on de q
end

-Aceleracin.

%Resuelve el problema de aceleraci_on


function qpp = ProbAceleracion
global q qp qpp
%Inicializa las variables
b =zeros(8,1);
%Extrae las velocidades
x1p=qp(1); y1p=qp(2);
x2p=qp(3); y2p=qp(4);
x3p=qp(5); y3p=qp(6);
angp=qp(7);ang=q(7) ;
%Calcula el producto fiqp*qp
b(1) = 2*x1p^2 + 2*y1p^2;
b(2) = 2*(x2p-x1p)^2 + 2*(y2p-y1p)^2;
b(3) = 2*(x3p-x1p)^2 + 2*(y3p-y1p)^2;
b(4) = 2*(x2p-x3p)^2 + 2*(y2p-y3p)^2;
b(5) = 2*x2p^2 + 2*y2p^2;
b(6) = cos(ang)*angp^2;
b(7) = sin(ang)*angp^2;
b(8) = 0;
%Resuelve el sistema
qpp=-Jacob\b; %Calcula la aceleraci_on
end

-Jacobiano.

% Calcula la matriz jacobiana


function jac = Jacob
global q;
%Inicializa a cero la matriz jacobiana
jac=zeros(8,7);
%Extrae las coordenadas
x1=q(1); y1=q(2); x2=q(3); y2=q(4);
x3=q(5); y3=q(6); ang=q(7);
%Monta la matriz jacobiana
jac(1,1)= 2*x1 ; jac(1,2)= 2*y1 ;
jac(2,1)=-2*(x2-x1) ; jac(2,2)=-2*(y2-y1);
jac(2,3)= 2*(x2-x1) ; jac(2,4)= 2*(y2-y1);
jac(3,1)=-2*(x3-x1) ; jac(3,2)=-2*(y3-y1);
jac(3,5)= 2*(x3-x1) ; jac(3,6)= 2*(y3-y1);
jac(4,3)= 2*(x2-x3) ; jac(4,4)= 2*(y2-y3);
jac(4,5)=-2*(x2-x3) ; jac(4,6)=-2*(y2-y3);
jac(5,3)= 2*(x2-2) ; jac(5,4)= 2*y2 ;
jac(6,1)=1 ; jac(6,7)= sin(ang) ;
jac(7,2)=1 ; jac(7,7)=-cos(ang) ;
jac(8,7)=1;
end

-Dibuja el Mecanismo.

%Dibuja el mecanismo
function DibujaMecanismo
global q;
%Limpia la pantalla
cla;
%Extrae los 3 puntos m_oviles del cuadril_atero
x1=q(1); y1=q(2); x2=q(3); y2=q(4);
x3=q(5); y3=q(6);
%Dibuja el tri_angulo del acoplador en rojo
fill([x1,x3,x2],[y1,y3,y2],'r');
%Dibuja tres barras m_oviles entre las cuatro articulaciones
line([0,x1,x2,2],[0,y1,y2,0],'lineWidth',3);
%Vacia el buffer de dibujo
drawnow;
end

-Main.

%Programa principal
%Limpia la memoria
clear;
%Inicializa variables q, qp (=q_prima) y qpp (=q_segunda)
global q qp qpp
q=zeros(7,1); qp=zeros(7,1); qpp=zeros(7,1);
%Valor inicial de las coordenadas x1, y1, x2, y2, x3, y3, ang
q(1)=1; q(2)=0; q(3)=3; q(4)=1; q(5)=1.5; q(6)=3; q(7)=0;
%Establece el n_umero de incrementos para 360o o 1 seg
numIncr=500;
%Inicializa las variables q(t), q_prima(t) y q_segunda(t)
q_t =zeros(7,numIncr+1);
qp_t =zeros(7,numIncr+1);
qpp_t =zeros(7,numIncr+1);
%Crea la figura que contendr_a la animaci_on
fig1=figure(1);
hold on;
axis([-2,5,-2,4]); %Establece los l__mites [xmin,xmax,ymin,ymax]
axis manual; %Congela los l__mites anteriores
axis off %Elimina el dibujo de los ejes
%Bucle de animaci_on
global angDato;
for i=0:numIncr
angDato=2*pi*(i/numIncr);
q = ProbPosicion;
qp = ProbVelocidad;
qpp = ProbAceleracion;
DibujaMecanismo;
%Almacena informaci_on
q_t (:,i+1)=q;
qp_t (:,i+1)=qp;
qpp_t(:,i+1)=qpp;
end
%Crea la figura con los plots del punto 3
fig2=figure(2);
%Plot de x3, y3
subplot(3,2,1); plot(q_t(7,:),q_t(5,:)); xlabel('\xi'); ylabel('x3');
subplot(3,2,2); plot(q_t(7,:),q_t(6,:)); xlabel('\xi'); ylabel('y3');
%Plot de x3_prima, y3_prima
subplot(3,2,3); plot(q_t(7,:),qp_t(5,:)); xlabel('\xi'); ylabel('xp3');
subplot(3,2,4); plot(q_t(7,:),qp_t(6,:)); xlabel('\xi'); ylabel('yp3');
%Plot de x3_segunda, y3_segunda
subplot(3,2,5); plot(q_t(7,:),qpp_t(5,:)); xlabel('\xi'); ylabel('xpp3');
subplot(3,2,6); plot(q_t(7,:),qpp_t(6,:)); xlabel('\xi'); ylabel('ypp3');

Resultados

Вам также может понравиться