0% encontró este documento útil (0 votos)
49 vistas6 páginas

Simulación de Mecanismos en MATLAB

El documento presenta el código de una simulación numérica en MATLAB de un mecanismo de tres eslabones con juntas rotativas. El código calcula las posiciones, velocidades y aceleraciones de los puntos del mecanismo en función del ángulo de entrada y grafica el mecanismo en movimiento y sus respuestas cinemáticas.

Cargado por

The3edzon XD
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
49 vistas6 páginas

Simulación de Mecanismos en MATLAB

El documento presenta el código de una simulación numérica en MATLAB de un mecanismo de tres eslabones con juntas rotativas. El código calcula las posiciones, velocidades y aceleraciones de los puntos del mecanismo en función del ángulo de entrada y grafica el mecanismo en movimiento y sus respuestas cinemáticas.

Cargado por

The3edzon XD
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

.

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');

También podría gustarte