.
Universidad Autónoma de San Luis Potosí
Síntesis y Dinámica de Mecanismos
Dr. Hugo Iván Medellín Castillo
Tarea 3
Alumno
Guzmán Narváez Cruz Noel
Posgrado en Ingeniería Mecánica, Facultad de Ingeniería, UASLP
Síntesis y Dinámica de Mecanismos
Tarea No. 3
Realizar la simulación numérica del mecanismo de máquina trituradora resuelto en clase usando Matlab, GNU
Octave, u otro programa o lenguaje de programación. En la simulación determinar las posiciones, velocidades y
aceleraciones de todos los eslabones como función del movimiento de entrada.
Considerar como datos de entrada: longitudes de los eslabones, distancias entre las articulaciones fijas, y el
movimiento de entrada (posición, velocidad y aceleración de entrada).
Como datos de salida proveer: posiciones, velocidades y aceleraciones de todos los eslabones del mecanismo.
Incluir la graficación de las variables articulares en función del movimiento de entrada.
Entregar
Un reporte con los resultados y análisis de la simulación. También entregar el código de simulación.
Fecha de asignación: 19 de septiembre de 2023.
Fecha de entrega: 3 de octubre de 2023. (Entrega en la plataforma DidacTIC UASLP)
El código que se presenta a continuación es un programa en MATLAB que simula y visualiza un
mecanismo de tres eslabones con juntas rotativas. El mecanismo consiste en tres eslabones (l, L, h)
conectados por tres juntas (A, B, C), y puedes ingresar valores para las longitudes de los eslabones, la
altura "a", la distancia "s", la posición inicial del eslabón “l” (θ en radianes), la velocidad angular de θ y
la aceleración angular de θ.
El código realiza las siguientes acciones:
• Pide al usuario que ingrese las longitudes de los eslabones (l, L, h), la altura "a", la distancia
"s", la posición inicial de θ en radianes, la velocidad angular de θ en rpm y la aceleración
angular.
• Calcula la posición, velocidad y aceleración de cada punto importante en el mecanismo (A, B,
C) en función de θ a medida que θ varía desde su posición inicial hasta un valor final en
incrementos de 1 radian por paso.
• Almacena los datos de posición, velocidad y aceleración.
• Dibuja el mecanismo en una gráfica en cada paso, mostrando las posiciones de A, B y C con
líneas que representan los eslabones. La función plot se utiliza para mostrar la posición actual
del mecanismo en cada paso.
• Muestra dos subgráficas adicionales que muestran las velocidades y aceleraciones de los
eslabones A, B y C en función de θ.
Para utilizar este código, sigue estos pasos:
• Ejecuta el código en Matlab.
• Sigue las instrucciones para ingresar las longitudes de los eslabones, la altura "a", la distancia
"s", la posición inicial de θ, la velocidad angular de θ y la aceleración angular de θ.
• El código generará una animación del mecanismo en movimiento y mostrará las gráficas de
velocidad y aceleración.
• Puedes ajustar los parámetros de entrada para ver cómo afectan al movimiento y las respuestas
del mecanismo.
%datos de entrada%
%longitudes de eslabones%
l= input('introduzca la longitud de l: ');
L= input('introduzca la longitud de L: ');
h= input('introduzca la longitud de h: ');
a= input('altura de a: ');
s= input('distancia s: ');
theta_P= input('pocición de theta en radianes: ');
theta_V= input('velocidad en rpm de theta: ');
theta_A= input('aceleración de theta: ');
Ox= 0;
Oy= 0;
valor_inicial = theta_P;
valor_final= theta_P + 2*pi;
for theta_P = valor_inicial:1:valor_final
%pocicion%
gama_D = 2 * atan2((-2 * L * l * cos(theta_P) + 2 * L * s) - sqrt((-2 * L * l *
cos(theta_P))^2 + (2 * L * l * sin(theta_P) - 2 * L * a)^2), (-2 * l * s * cos(theta_P) - 2
* l * a * sin(theta_P)^2) / ((-2 * l * s * cos(theta_P) - 2 * l * a * sin(theta_P))^2 - (2 *
L * l * sin(theta_P) - 2 * L * a)^2));
betha_D = 2 * atan( (-L * cos(gama_D) - l * sin(theta_P) + a) / (h + L* sin(gama_D) - l
* cos(theta_P) + s ) );
%velocidad%
gama_dot = (-l * theta_V * sin( theta_P - betha_D)) / (L * cos(gama_D - betha_D));
betha_dot = (-L * gama_dot * cos(gama_D) - l * theta_V * sin(theta_P) ) / ( h *
sin(betha_D));
%aceleracion%
gama_2dot = (l * theta_V * sin(betha_D - theta_P) - l* (theta_V)^2 * cos(betha_D -
theta_P ) - h * (betha_dot)^2 - L * (gama_dot)^2 * sin(betha_D - gama_D)) / (L * cos(betha_D
- gama_D));
betha_2dot = (-l * theta_A * sin(theta_P) - l * theta_V^2 * cos(theta_P) - h *
betha_dot^2 * cos(betha_D) - L * gama_2dot * cos(gama_D) + L * gama_dot^2 * sin(gama_D)) /
(h * sin(betha_D));
%Descripcion de l punto "A"%
A_Dx= l*cos(theta_P);
A_Dy= l*sin(theta_P);
A_D= [l * cos(theta_P), l * sin(theta_P)];
A_dotx= -l*theta_V*sin(theta_P);
A_doty= l * theta_V * cos(theta_P);
A_dot= [-l*theta_V*sin(theta_P), l * theta_V * cos(theta_P)];
A_2dotx= -l*(theta_V^2)*cos(theta_P)-l*theta_A*sin(theta_P);
A_2doty= -l*(theta_V^2)*sin(theta_P)+l*theta_A*cos(theta_P);
A_2dot= [-l*(theta_V^2)*cos(theta_P)-l*theta_A*sin(theta_P), -
l*(theta_V^2)*sin(theta_P)+l*theta_A*cos(theta_P)];
%Descripcion de h punto "B"%
Bx= A_Dx + h * cos(betha_D);
By= A_Dy + h * sin(betha_D);
B= [ l*cos(theta_P) + h * cos(betha_D) , l*sin(theta_P) + h * sin(betha_D)];
B_dotx= A_dotx + - h * betha_dot * sin(betha_D);
B_doty= A_doty + h * betha_dot * cos(betha_D);
B_dot= [-l * theta_V * sin(theta_P) - h * betha_dot * sin(betha_D) , l * theta_V *
cos(theta_P) + h * betha_dot * cos(betha_D) ];
B_2dotx= A_2dotx + - h * betha_dot^2 * cos(betha_D) - h * betha_2dot * sin(betha_D);
B_2doty= A_2doty - h * betha_dot^2 * sin(betha_D) + h * betha_2dot * cos(betha_D);
B_2dot= [ -l*(theta_V^2)*cos(theta_P)-l*theta_A*sin(theta_P) - h * betha_dot^2 *
cos(betha_D) - h * betha_2dot * sin(betha_D) , -
l*(theta_V^2)*sin(theta_P)+l*theta_A*cos(theta_P) -h * betha_dot^2 sin(betha_D) + h *
betha_2dot * cos(betha_D)];
%Descripcion de L punto "C"%
Cx= Bx + L *sin(gama_D);
Cy= By + L * cos(gama_D);
C= [ Cx , Cy ];
C_dotx= B_dotx - L * gama_dot * sin(gama_D);
C_doty= B_doty - L * gama_dot * sin(gama_D);
C_dot= [ C_dotx , C_doty ];
C_2dotx= B_2dotx + L * gama_dot^2 * sin(gama_D) - L * gama_2dot * cos(gama_D);
C_2doty= B_2doty - L * gama_dot^2 * cos(gama_D) - L * gama_2dot * sin(gama_D);
C_2dot= [ C_2dotx , C_2doty ];
hold on;
pause(0.5);
title('Posición del mecanismo');
plot([0 A_Dx],[0 A_Dy],'rd-');% line(0 - A)
plot([A_Dx Bx],[A_Dy By],'bd-');% line (A - B)
plot([Bx Cx],[By Cy],'gd-');% line(B - C)
xlim([-120 120]);
ylim([-120 120]);
end
subplot(2, 1, 1);
plot(theta_angulos, velocidades);
title('Velocidades de los eslabones');
legend('A_dotx', 'A_doty', 'B_dotx', 'B_doty', 'C_dotx', 'C_doty');
subplot(2, 1, 2);
plot(theta_angulos, aceleraciones);
title('Aceleraciones de los eslabones');
legend('A_2dotx', 'A_2doty', 'B_2dotx', 'B_2doty', 'C_2dotx', 'C_2doty');