Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algoritmo Matlab de Un Sistema de Pendulos PDF
Algoritmo Matlab de Un Sistema de Pendulos PDF
Se aprecia la ventana de MATLAB abierta y dentro de ella todas líneas del algoritmo respectivo, todas estas líneas se
encuentran más abajo, solo deberá copiarlas y ejecutarlas en MATLAB, asi de fácil. Ademas cada línea importante
esta comentada.
Posteriormente estaré publicando líneas de programación en MATLAB de diversas aplicaciones como Sistema Gravitacional,
Interacción de partículas, Cinemática Directa y Cinemática Inversa para robótica, Comunicación RS232 con
microcontroladores, etc.
En siguientes publicaciones estaré comentando acerca de la comunicación RS232 en Visual Basic 6.0 con un
microcontrolador para controlar un sistema de conteo en display siete segmentos de cuatro dígitos pero desarrollado en
hardware, estar atentos.
Este deberá ser el grafico que deberá visualizar del sistema de péndulos en pleno movimiento, espero sea de mucha
utilidad.
LINEAS DEL ALGORITMO DESARROLLADO EN MATLAB
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Programa PENDULOS para validar operaciones del desplazamiento de varios pendulos
%
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear
clc
% Parametros iniciales
h = 0.12; % Constante del paso de integracion
C = 0.75; % Constante de fricción viscosa
g = 9.81; % gravedad terrestre
m = 50; % masa del pendulo en gramos
L1 = 9.00; % Longitud del péndulo 1
L2 = 8.70; % Longitud del péndulo 2
L3 = 8.40; % Longitud del péndulo 3
L4 = 8.10; % Longitud del péndulo 4
L5 = 7.80; % Longitud del péndulo 5
L6 = 7.50; % Longitud del péndulo 6
L7 = 7.20; % Longitud del péndulo 7
L8 = 6.90; % Longitud del péndulo 8
L9 = 6.60; % Longitud del péndulo 9
L10 = 6.30; % Longitud del péndulo 10
L11 = 6.00; % Longitud del péndulo 11
L12 = 5.70; % Longitud del péndulo 12
L13 = 5.40; % Longitud del péndulo 13
L14 = 5.10; % Longitud del péndulo 14
L15 = 4.80; % Longitud del péndulo 15
v1 = 0; % Velocidad lineal del pendulo 1
v2 = 0; % Velocidad lineal del pendulo 2
v3 = 0; % Velocidad lineal del pendulo 3
v4 = 0; % Velocidad lineal del pendulo 4
v5 = 0; % Velocidad lineal del pendulo 5
v6 = 0; % Velocidad lineal del pendulo 6
v7 = 0; % Velocidad lineal del pendulo 7
v8 = 0; % Velocidad lineal del pendulo 8
v9 = 0; % Velocidad lineal del pendulo 9
v10 = 0; % Velocidad lineal del pendulo 10
v11 = 0; % Velocidad lineal del pendulo 11
v12 = 0; % Velocidad lineal del pendulo 12
v13 = 0; % Velocidad lineal del pendulo 13
v14 = 0; % Velocidad lineal del pendulo 14
v15 = 0; % Velocidad lineal del pendulo 15
% Entrada inicial
Alpha1 = -(L1*w1*C + m*g*sin(Theta1))/(L1*m); % Aceleracion angular 1
Alpha2 = -(L2*w2*C + m*g*sin(Theta2))/(L2*m); % Aceleracion angular 2
Alpha3 = -(L3*w3*C + m*g*sin(Theta3))/(L3*m); % Aceleracion angular 3
Alpha4 = -(L4*w4*C + m*g*sin(Theta4))/(L4*m); % Aceleracion angular 4
Alpha5 = -(L5*w5*C + m*g*sin(Theta5))/(L5*m); % Aceleracion angular 5
Alpha6 = -(L6*w6*C + m*g*sin(Theta6))/(L6*m); % Aceleracion angular 6
Alpha7 = -(L7*w7*C + m*g*sin(Theta7))/(L7*m); % Aceleracion angular 7
Alpha8 = -(L8*w8*C + m*g*sin(Theta8))/(L8*m); % Aceleracion angular 8
Alpha9 = -(L9*w9*C + m*g*sin(Theta9))/(L9*m); % Aceleracion angular 9
Alpha10 = -(L10*w10*C + m*g*sin(Theta10))/(L10*m); % Aceleracion angular 10
Alpha11 = -(L11*w11*C + m*g*sin(Theta11))/(L11*m); % Aceleracion angular 11
Alpha12 = -(L12*w12*C + m*g*sin(Theta12))/(L12*m); % Aceleracion angular 12
Alpha13 = -(L13*w13*C + m*g*sin(Theta13))/(L13*m); % Aceleracion angular 13
Alpha14 = -(L14*w14*C + m*g*sin(Theta14))/(L14*m); % Aceleracion angular 14
Alpha15 = -(L15*w15*C + m*g*sin(Theta15))/(L15*m); % Aceleracion angular 15
figure(1)
hold off
plot(x1(1),x1(2),'o', 'MarkerFaceColor','g','MarkerSize',15); % Grafico de la masa del pendulo 1
hold on
plot([0;x1(1)],[0;x1(2)],'g'); % Grafico de la cuerda del pendulo 1
hold on
plot(x2(1),x2(2),'o', 'MarkerFaceColor','r','MarkerSize',15); % Grafico de la masa del pendulo 2
hold on
plot([0;x2(1)],[0;x2(2)],'r'); % Grafico de la cuerda del pendulo 2
hold on
plot(x3(1),x3(2),'o', 'MarkerFaceColor','b','MarkerSize',15); % Grafico de la masa del pendulo 3
hold on
plot([0;x3(1)],[0;x3(2)],'b'); % Grafico de la cuerda del pendulo 3
hold on
plot(x4(1),x4(2),'o', 'MarkerFaceColor','c','MarkerSize',15); % Grafico de la masa del pendulo 4
hold on
plot([0;x4(1)],[0;x4(2)],'c'); % Grafico de la cuerda del pendulo 4
hold on
plot(x5(1),x5(2),'o', 'MarkerFaceColor','m','MarkerSize',15); % Grafico de la masa del pendulo 5
hold on
plot([0;x5(1)],[0;x5(2)],'m'); % Grafico de la cuerda del pendulo 5
hold on
plot(x6(1),x6(2),'o', 'MarkerFaceColor','y','MarkerSize',15); % Grafico de la masa del pendulo 6
hold on
plot([0;x6(1)],[0;x6(2)],'y'); % Grafico de la cuerda del pendulo 6
hold on
plot(x7(1),x7(2),'o', 'MarkerFaceColor','black','MarkerSize',15); % Grafico de la masa del pendulo 7
hold on
plot([0;x7(1)],[0;x7(2)],'black'); % Grafico de la cuerda del pendulo 7
hold on
plot(x8(1),x8(2),'o', 'MarkerFaceColor','g','MarkerSize',15); % Grafico de la masa del pendulo 8
hold on
plot([0;x8(1)],[0;x8(2)],'g'); % Grafico de la cuerda del pendulo 8
hold on
plot(x9(1),x9(2),'o', 'MarkerFaceColor','r','MarkerSize',15); % Grafico de la masa del pendulo 9
hold on
plot([0;x9(1)],[0;x9(2)],'r'); % Grafico de la cuerda del pendulo 9
hold on
plot(x10(1),x10(2),'o', 'MarkerFaceColor','b','MarkerSize',15); % Grafico de la masa del pendulo 10
hold on
plot([0;x10(1)],[0;x10(2)],'b'); % Grafico de la cuerda del pendulo 10
hold on
plot(x11(1),x11(2),'o', 'MarkerFaceColor','c','MarkerSize',15); % Grafico de la masa del pendulo 11
hold on
plot([0;x11(1)],[0;x11(2)],'c'); % Grafico de la cuerda del pendulo 11
hold on
plot(x12(1),x12(2),'o', 'MarkerFaceColor','m','MarkerSize',15); % Grafico de la masa del pendulo 12
hold on
plot([0;x12(1)],[0;x12(2)],'m'); % Grafico de la cuerda del pendulo 12
hold on
plot(x13(1),x13(2),'o', 'MarkerFaceColor','y','MarkerSize',15); % Grafico de la masa del pendulo 13
hold on
plot([0;x13(1)],[0;x13(2)],'y'); % Grafico de la cuerda del pendulo 13
hold on
plot(x14(1),x14(2),'o', 'MarkerFaceColor','black','MarkerSize',15); % Grafico de la masa del pendulo 14
hold on
plot([0;x14(1)],[0;x14(2)],'black'); % Grafico de la cuerda del pendulo 14
hold on
plot(x15(1),x15(2),'o', 'MarkerFaceColor','g','MarkerSize',15); % Grafico de la masa del pendulo 15
hold on
plot([0;x15(1)],[0;x15(2)],'g'); % Grafico de la cuerda del pendulo 15
title(['Proceso de simulacion : ' num2str(step)]); % Titulo con el avance del proceso de
simulacion
grid on % Activamos las rejillas
axis([-(L1+2) (L1+2) -(L1+2) 0]); % Sistema de ejes fijo con la longitud
mayor
set(gca,'dataAspectRatio',[1 1 1])
pause(0.001); % Velocidad del proces de simulacion
Theta1_ant = Theta1;
Theta2_ant = Theta2;
Theta3_ant = Theta3;
Theta4_ant = Theta4;
Theta5_ant = Theta5;
Theta6_ant = Theta6;
Theta7_ant = Theta7;
Theta8_ant = Theta8;
Theta9_ant = Theta9;
Theta10_ant = Theta10;
Theta11_ant = Theta11;
Theta12_ant = Theta12;
Theta13_ant = Theta13;
Theta14_ant = Theta14;
Theta15_ant = Theta15;
w1_ant = w1;
w2_ant = w2;
w3_ant = w3;
w4_ant = w4;
w5_ant = w5;
w6_ant = w6;
w7_ant = w7;
w8_ant = w8;
w9_ant = w9;
w10_ant = w10;
w11_ant = w11;
w12_ant = w12;
w13_ant = w13;
w14_ant = w14;
w15_ant = w15;
% Paso de integración
wpm1 = w1_ant + (h/2)*Alpha1;
wpm2 = w2_ant + (h/2)*Alpha2;
wpm3 = w3_ant + (h/2)*Alpha3;
wpm4 = w4_ant + (h/2)*Alpha4;
wpm5 = w5_ant + (h/2)*Alpha5;
wpm6 = w6_ant + (h/2)*Alpha6;
wpm7 = w7_ant + (h/2)*Alpha7;
wpm8 = w8_ant + (h/2)*Alpha8;
wpm9 = w9_ant + (h/2)*Alpha9;
wpm10 = w10_ant + (h/2)*Alpha10;
wpm11 = w11_ant + (h/2)*Alpha11;
wpm12 = w12_ant + (h/2)*Alpha12;
wpm13 = w13_ant + (h/2)*Alpha13;
wpm14 = w14_ant + (h/2)*Alpha14;
wpm15 = w15_ant + (h/2)*Alpha15;
w1 = w1_ant + h*Alpha1_pm;
w2 = w2_ant + h*Alpha2_pm;
w3 = w3_ant + h*Alpha3_pm;
w4 = w4_ant + h*Alpha4_pm;
w5 = w5_ant + h*Alpha5_pm;
w6 = w6_ant + h*Alpha6_pm;
w7 = w7_ant + h*Alpha7_pm;
w8 = w8_ant + h*Alpha8_pm;
w9 = w9_ant + h*Alpha9_pm;
w10 = w10_ant + h*Alpha10_pm;
w11 = w11_ant + h*Alpha11_pm;
w12 = w12_ant + h*Alpha12_pm;
w13 = w13_ant + h*Alpha13_pm;
w14 = w14_ant + h*Alpha14_pm;
w15 = w15_ant + h*Alpha15_pm;
x1 = [L1*sin(Theta1);-L1*cos(Theta1)];
x2 = [L2*sin(Theta2);-L2*cos(Theta2)];
x3 = [L3*sin(Theta3);-L3*cos(Theta3)];
x4 = [L4*sin(Theta4);-L4*cos(Theta4)];
x5 = [L5*sin(Theta5);-L5*cos(Theta5)];
x6 = [L6*sin(Theta6);-L6*cos(Theta6)];
x7 = [L7*sin(Theta7);-L7*cos(Theta7)];
x8 = [L8*sin(Theta8);-L8*cos(Theta8)];
x9 = [L9*sin(Theta9);-L9*cos(Theta9)];
x10 = [L10*sin(Theta10);-L10*cos(Theta10)];
x11 = [L11*sin(Theta11);-L11*cos(Theta11)];
x12 = [L12*sin(Theta12);-L12*cos(Theta12)];
x13 = [L13*sin(Theta13);-L13*cos(Theta13)];
x14 = [L14*sin(Theta14);-L14*cos(Theta14)];
x15 = [L15*sin(Theta15);-L15*cos(Theta15)];
end
Espero que esta aplicación sea de mucha utilidad y de seguro debera tener mejoras, las que posteriormente estare publicando. Gracias