Академический Документы
Профессиональный Документы
Культура Документы
Espoch
ESCUELA:
Ingeniera automotriz
FACULTAD:
Mecnica
Carrera:
Ingeniera automotriz (3ero a)
NOMBRE:
Edgar Javier loor Solrzano (1672)
Asignatura:
Computacin ii
Docente:
Ing. Alexandra Pazmio Armijos
Tema:
Creacin de una interfaz con MATLAB
FECHA:
23- 01 2015
INTRODUCCIN
La fsica engloba un sinnmero de temas, pero sin duda alguna, el tema central de esta,
es la cinemtica.
La cinemtica es una rama de la fsica, la cual se encarga del estudio del movimiento de
los cuerpos, y entre sus movimientos encontraremos los tres ms importantes:
movimiento rectilneo, movimiento circular y movimiento parablico.
En este proyecto se hizo uso de la interfaz de desarrollo de Matlab, denominada
GUIDE, para as poder crear un programa que nos permita resolver ejercicios sobre
estos temas, dando como resultado los datos necesarios para que se produzcan estos
movimientos.
Bsicamente este programa est orientado para aquellos estudiantes que inician en los
temas mencionados, ya que podr ir ingresando sus datos e ir comparando si la
resolucin de sus ejercicios est bien, adems este programa cuenta con la animacin de
las grficas que se dan en estos movimientos, lo que lo hace un programa muy prctico
y verstil.
OBJETIVOS
OBJETIVO GENERAL
Aprender a desarrollar un programa en la interfaz de Matlab, a partir de los conocimientos
adquiridos durante todo el semestre.
OBJETIVOS ESPECIFICOS
MARCO TEORICO
LA CIINEMATICA
La cinemtica es una rama de la fsica dedicada al estudio del movimiento de los
cuerpos en el espacio, sin atender a las causas que lo producen. Por tanto la cinemtica
slo estudia el movimiento en s, a diferencia de la dinmica que estudia las
interacciones que lo producen.
La cinemtica est regida por tres movimientos principales:
El movimiento rectilneo
El movimiento parablico
Y el movimiento circular
El movimiento rectilneo
El movimiento rectilneo es aquel cuya trayectoria que describe el mvil es una lnea
recta. Pueden existir dos tipos de movimiento rectilneo, el movimiento rectilneo
uniforme y el movimiento rectilneo uniformemente variado, el primero se caracteriza
en que su velocidad siempre ser constante, sea no cambia, se mueve con la misma
velocidad durante todo el recorrido, teniendo una aceleracin igual a cero; mientas que
en el segundo va a haber una variacin de velocidad, y por lo tanto su aceleracin ser
distinta a cero.
A continuacin se presentan las frmulas que se utilizan para resolver este tipo de
movimiento:
El movimiento parablico
Se denomina movimiento parablico a aquel realizado por un objeto cuya trayectoria
describir una parbola. Corresponde con la trayectoria ideal de un proyectil que se
mueve en un medio que no ofrece resistencia al avance y que est sujeto a un campo
gravitatorio uniforme.
Puede ser analizado como la composicin de dos movimientos rectilneos: un
movimiento rectilneo uniforme horizontal y un movimiento rectilneo uniformemente
acelerado vertical.
En este movimiento la aceleracin no depende del tiempo (la cual es constante), pero la
velocidad y la posicin del cuerpo s que dependen del tiempo. En el tiro parablico son
de inters la altura mxima y el desplazamiento horizontal conseguido.
La altura mxima se alcanza cuando la componente vertical vy de la velocidad se hace
cero.
En los ejercicios de aplicacin, para encontrar los diferentes resultados se hace uso de
las siguientes formulas:
El movimiento circular
Un movimiento circular es el que se basa en un eje de giro y radio constante, por lo cual
la trayectoria es una circunferencia.
Este tipo de movimiento puede ser, al igual que el movimiento rectilneo, uniforme o
uniformemente variado. En el primer caso se mantiene constante el mdulo de la
velocidad angular, no as su direccin ni su sentido; pero en el segundo caso hay una
variacin en su velocidad angular.
Los ejercicios de este tipo de movimiento, pueden ser resueltos mediantes las siguientes
formulas:
Una vez que se desplieguen los botones con las distintas opciones, el usuario puede
proceder a la edicin de la ventana de trabajo GUI, presionando cualquier de estos para
ejecutar su respectiva accin, este proceso se lo conoce como funcin Callback.
Al usar el entorno de desarrollo GUIDE se obtendrn dos archivos:
Es importante saber, que para trabajar posteriormente con nuestra GUI, los archivos .fig
y .m debern estar guardados con el mismo nombre y estar ubicados en el mismo
directorio.
Para abrir el entorno de desarrollo GUIDE, se lo puede hacer de dos maneras:
La primera forma es haciendo clic sobre el icono de GUIDE, que se encuentra en la
parte superior de la ventana de MATLAB. La segunda manera es escribiendo en la lnea
de comandos, el comando guide, y posteriormente dar enter.
Despus de haber utilizado cualquiera de las dos formas anteriores, aparecer una
ventana, la cual nos presenta la opcin de seleccionar una plantilla para nuestra GUI que
crearemos o su vez podemos abrir alguna GUI ya existente.
5. imread . Sirve para leer una imagen, la imagen deber estar guardada en el
mismo directorio que la interfaz, su sintaxis es:
a=imread('nombre_de_la_imagen.formato_de_la_imagen')
Estas son las funciones que se requerir para trabajar, a continuacin daremos una breve
explicacin de cmo realizamos cada interfaz.
- El botn CALCULAR, sirve para que se muestre todos los resultados numricos de
la interfaz, su cdigo de programacin es:
% --- Executes on button press in calcular.
function calcular_Callback(hObject, eventdata, handles)
M1=get(handles.menu2,'Value');
M2=get(handles.menu3,'Value');
Vi=str2double(get(handles.vo,'String'));
Vf=str2double(get(handles.vf,'String'));
Tf=str2double(get(handles.tf,'String'));
t=linspace(0,Tf,5);
ac=(Vf-Vi)/Tf;
es=(Vi.*t)+(0.5*ac*t.^2);
if M1==M2&M1~=1
set(handles.text13,'String',t(1));
set(handles.text14,'String',t(2));
set(handles.text15,'String',t(3));
set(handles.text16,'String',t(4))
set(handles.text17,'String',t(5));
set(handles.text28,'String',es(1));
set(handles.text33,'String',es(2));
set(handles.text34,'String',es(3));
set(handles.text35,'String',es(4));
set(handles.text36,'String',es(5));
set(handles.text38,'String',ac);
set(handles.menu4,'Value',M1);
elseif M1==2&M2==3
T1ac=3.28*ac;
T1es=3.28.*es;
set(handles.text13,'String',t(1));
set(handles.text14,'String',t(2));
set(handles.text15,'String',t(3));
set(handles.text16,'String',t(4))
set(handles.text17,'String',t(5));
set(handles.text28,'String',T1es(1));
set(handles.text33,'String',T1es(2));
set(handles.text34,'String',T1es(3));
set(handles.text35,'String',T1es(4));
set(handles.text36,'String',T1es(5));
set(handles.text38,'String',T1ac);
set(handles.menu4,'Value',M2);
elseif M1==3&M2==2
T2ac=0.304*ac;
T2es=0.304.*es;
set(handles.text13,'String',t(1));
set(handles.text14,'String',t(2));
set(handles.text15,'String',t(3));
set(handles.text16,'String',t(4))
set(handles.text17,'String',t(5));
set(handles.text28,'String',T2es(1));
set(handles.text33,'String',T2es(2));
set(handles.text34,'String',T2es(3));
set(handles.text35,'String',T2es(4));
set(handles.text36,'String',T2es(5));
set(handles.text38,'String',T2ac);
set(handles.menu4,'Value',M2);
end
Para graficar tomamos los valores que se mostraran en cada una de las casillas de los
resultados, como son datos numricos hacemos uso de str2double, y se los procede a
guardar en cada una de las variable que se observan.
Creamos un vector tiempo con los valores de las variables a1, a2, a3, a4, a5, y otro
vector espacio con los valores b1, b2, b3, b4,b5. El ciclo for se lo utiliza para que
vaya graficando cada punto de los vectores mencionados, tomndolos en pareja.
La sintaxis para graficar es: plot(handles.nombre_del_axes,x,y), o tambin plot(,x,y);
el primero se lo puede utilizar cuando tengamos uno o varias grficas, pero el segundo
solo es posible utilizarlo solo si tenemos una grafica, en este caso utilizamos la primera
forma, ya que como se mencion nos da el mismo resultado cuando tengamos una o
varias grficas.
Otra cosa que se observa es que aparece al graficar tiempo(1:i),espacio(1:i), lo que se
trata de obtener poniendo esto es que cuando el ciclo comience me va a graficar el par
de ordenadas desde la 1er posicin hasta la posicin i, lo que hace que la grfica tenga
una animacin, pero este ciclo va a ir tan rpido que no vamos a ver la animacin es por
eso que hacemos uso de pause(n), para que as n ser el tiempo en que se demore en
graficar cada punto.
- El botn BORRAR, sirve para que se borren todos los datos que se visualicen en la
interfaz, su cdigo de programacin es:
% --- Executes on button press in borrar.
function borrar_Callback(hObject, eventdata, handles)
set(handles.vo,'String',' ');
set(handles.vf,'String',' ');
set(handles.tf,'String',' ');
set(handles.text13,'String',' ');
set(handles.text14,'String',' ');
set(handles.text15,'String',' ');
set(handles.text16,'String',' ');
set(handles.text17,'String',' ');
set(handles.text28,'String',' ');
set(handles.text33,'String',' ');
set(handles.text34,'String',' ');
set(handles.text35,'String',' ');
set(handles.text36,'String',' ');
set(handles.text38,'String',' ');
set(handles.menu2,'Value',1);
set(handles.menu3,'Value',1);
set(handles.menu4,'Value',1);
plot(handles.axes1,0,0)
Se observa que se utiliza la misma sintaxis que se usa para ingresar un valor en un
objeto, pero en este caso, en vez de insertar un valor numrico u otro, lo que estamos
insertando es un espacio en blanco, el cual se lo coloca entre comillas, para que as los
valores que se encuentra en esos objetos se reemplacen por lo que est entre las
comillas.
Para los popupmenus, lo que hacemos es que al editar sus opciones, al principio en la
edicin de la interfaz, en la posicin uno dejamos un espacio en blanco, y entonces en
esta parte del borrado lo que hacemos es ingresarles el valor de 1, para que as el
popupmenu se coloque en esa posicin.
Para borrar lo que se encuentra dibujado en la grfica, lo que hacemos es, definir el
axes a borrar, y ordenarle que se dibuje un punto en las coordenadas (0,0), y as solo se
presentara un pequeo punto, el cual es indivisible para la vista.
INTERFAZ DEL MOVIMIENTO PARABOLICO
Como se mencion lo que vamos a programar en cada interfaz
son los push button que creamos, en esta interfaz se crearon
tambin tres botones.
En este caso lo que hacemos primero es obtener los valores que se escribirn como
datos de entrada, y se procede a guardarlos en las variables vo, x (velocidad inicial,
ngulo). Aqu tambin en esta interfaz existe un popupmenu, del cual obtendremos su
valor de posicin, que se presentara al elegir las unidades de los datos de entrada.
Al tener en el popupmenu solo tres opciones realizamos un comparacin con el valor
que se le asigne a c haciendo uso de la funcin if,(se puede notar que aparece if
c==2&c~=1, se coloca as ya que en la posicin uno del popupmenu hay un espacio en
blanco que despus nos servir para hacer uso del botn borrar).
Dependiendo del valor de c la funcin tomara un camino, y realizara el debido
proceso, para luego usando set insertar los resultados en los diferentes objetos, para ser
visualizados.
- El botn GRAFICAR, sirve para que se muestre la grfica a partir de los resultados
obtenidos, su cdigo de programacin es:
% --- Executes on button press in graficar.
function graficar_Callback(hObject, eventdata, handles)
me=get(handles.menu,'Value');
vo1=str2double(get(handles.edit2,'String'));
x1=str2double(get(handles.edit3,'String'));
tv1=str2double(get(handles.text13,'String'));
s1=str2double(get(handles.text14,'String'));
H1=str2double(get(handles.text15,'String'));
vx1=str2double(get(handles.text16,'String'));
vy1=str2double(get(handles.text17,'String'));
vf1=str2double(get(handles.text18,'String'));
if me==2
g=9.8;
t=0:0.01:tv1;
for i=1:length(t);
d=(vo1*cosd(x1))*t(i);
a(i)=d;
h=((vo1*sind(x1))*t(i))-((0.5)*g*(t(i))^2);
b(i)=h;
plot(a(1:i),b(1:i),'or')
axis([0 (s1+0.1) 0 H1]);
pause(0.02)
end
elseif me==3
g=32.2;
t=0:0.01:tv1;
for i=1:length(t);
d=(vo1*cosd(x1))*t(i);
a(i)=d;
h=((vo1*sind(x1))*t(i))-((0.5)*g*(t(i))^2);
b(i)=h;
plot(a(1:i),b(1:i),'or')
axis([0 (s1+0.1) 0 H1]);
pause(0.02)
end
end
Para graficar tomamos los valores que se mostraran en cada una de las casillas en los
text static de los resultados, como son datos numricos hacemos uso de str2double, y
se los procede a guardar en cada una de las variables me, vo1, x1, tv1, s1, H1, vx1,
vy1, vf1.
Aqu nuevamente hacemos uso de la funcin if, esto debido a que si se escoge como
unidades de entrada m/s (sea me toma un valor de 2) la gravedad tomara un valor de
9.8, pero si se escoge ft/s (me=3) tomara un valor de 32.2.
Como se mencion en la anterior interfaz de movimiento rectilneo, se puede usar
cualquiera de las dos sintaxis para graficar, en este caso se tom la segunda forma, al
existir un solo axes, y nuevamente hacemos uso del ciclo for para realizar una
animacin de la grfica, y colocamos una pausa para que se grafique cada punto.
Tambin puedo darle un diseo a la grafica a dibujarse en este caso la lnea la edito para
que se vea en forma de crculos vacios y de un color rojo (or).
- El botn BORRAR, sirve para que se borren todos los datos que se visualicen en la
interfaz, su cdigo de programacin es:
% --- Executes on button press in borrar.
function borrar_Callback(hObject, eventdata, handles)
set(handles.edit2,'String',' ');
set(handles.edit3,'String',' ');
set(handles.menu,'Value',1);
set(handles.menu2,'Value',1);
set(handles.menu3,'Value',1);
set(handles.text13,'String',' ');
set(handles.text14,'String',' ');
set(handles.text15,'String',' ');
set(handles.text16,'String',' ');
set(handles.text17,'String',' ');
set(handles.text18,'String',' ');
plot(handles.axes2,0,0)
set(handles.edit6,'String',r);
set(handles.edit7,'String',t);
set(handles.edit8,'String',wo);
set(handles.edit9,'String',wf);
set(handles.edit10,'String',da);
set(handles.edit11,'String',aa);
set(handles.edit12,'String',at);
elseif e==3&f==2&f~=1
r=r*0.304;
aa=(wf-wo)/t;
da=(wo*t)+(0.5*aa*t^2);
at=aa*r;
set(handles.popupmenu4,'Value',f);
set(handles.edit6,'String',r);
set(handles.edit7,'String',t);
set(handles.edit8,'String',wo);
set(handles.edit9,'String',wf);
set(handles.edit10,'String',da);
set(handles.edit11,'String',aa);
set(handles.edit12,'String',at);
elseif e==3&f==4&f~=1
r=r*30.48;
aa=(wf-wo)/t;
da=(wo*t)+(0.5*aa*t^2);
at=aa*r;
set(handles.popupmenu4,'Value',f);
set(handles.edit6,'String',r);
set(handles.edit7,'String',t);
set(handles.edit8,'String',wo);
set(handles.edit9,'String',wf);
set(handles.edit10,'String',da);
set(handles.edit11,'String',aa);
set(handles.edit12,'String',at);
elseif e==4&f==2&f~=1
r=r*0.01;
aa=(wf-wo)/t;
da=(wo*t)+(0.5*aa*t^2);
at=aa*r;
set(handles.popupmenu4,'Value',f);
set(handles.edit6,'String',r);
set(handles.edit7,'String',t);
set(handles.edit8,'String',wo);
set(handles.edit9,'String',wf);
set(handles.edit10,'String',da);
set(handles.edit11,'String',aa);
set(handles.edit12,'String',at);
elseif e==4&f==3&f~=1
r=r*0.0328;
aa=(wf-wo)/t;
da=(wo*t)+(0.5*aa*t^2);
at=aa*r;
set(handles.popupmenu4,'Value',f);
set(handles.edit6,'String',r);
set(handles.edit7,'String',t);
set(handles.edit8,'String',wo);
set(handles.edit9,'String',wf);
set(handles.edit10,'String',da);
set(handles.edit11,'String',aa);
set(handles.edit12,'String',at);
end
El procedimiento es el mismo que en las otras interfaces, obtener los valores de que se
ingresan al principio y guardarlo en las variables correspondientes, para luego ser
usados.
Para graficar tomamos el valor de uno de los resultados, como es un dato numrico
hacemos uso de str2double, y se los procede guarda en la variable r, luego creamos
un vector que va de desde -r hasta r con 100 valores, en donde utilizaremos cada valor
de ese vector para formar otro vector x, para ello haciendo uso de la ecuacin de la
circunferencia, y as darle forma a la grfica.
Se us el ciclo for para animar la grfica, aqu observamos que hacemos uso de la
segunda forma de sintaxis para graficar, sea poniendo el nombre del axes, ya existen
dos axes (para la grfica y uno de imagen de fondo) adems nos damos cuenta de que
existen tres pares ordenados para graficarse: (x(1:i),y(1:i),'or',x(1:i), -y(1:i),'or',0,0,'*k'),
esto se debe a que como es una circunferencia, entonces la grfica seria simtrica, pero
con sentido contrario (por eso se pone -y), as se dibujara en ambos lados y en el
ltimo se coloca 0,0 porque este sera el punto centro de la circunferencia.
Podemos tambin dar un diseo a las lneas de la grfica ('or', '*k').
- El botn BORRAR, sirve para que se borren todos los datos que se visualicen en la
interfaz, su cdigo de programacin es:
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
set(handles.popupmenu1,'Value',1);
set(handles.popupmenu2,'Value',1);
set(handles.popupmenu4,'Value',1);
set(handles.edit6,'String',' ');
set(handles.edit7,'String',' ');
set(handles.edit8,'String',' ');
set(handles.edit9,'String',' ');
set(handles.edit10,'String',' ');
set(handles.edit11,'String',' ');
set(handles.edit12,'String',' ');
set(handles.edit1,'String',' ');
set(handles.edit2,'String',' ');
set(handles.edit3,'String',' ');
set(handles.edit4,'String',' ');
plot(handles.axes6,0,0)
Para poner una imagen de fondo se coloca primero un axes de fondo y se lo expande
por todo la ventana, y se lo programa:
% --- Executes just before MENU is made visible.
function MENU_OpeningFcn(hObject, eventdata, handles, varargin)
a=imread('calavera.jpg');
image(a)
axis off
Entrada de datos
Aqu se puede observar, que existe un men desplegable, en los cuales ingresaremos las
unidades de la Vo y la Vf
Salida de datos
Aqu en este panel es en donde obtendremos nuestros resultados, para ello es necesario
elegir las unidades en las que queramos que se nos muestre el espacio que recorri el
cuerpo, mas as no es necesario que elijamos las unidades de la aceleracin, ya que estas
se mostrara automticamente, dependiendo de que unidad elijamos anteriormente para
nuestro resultado.
Tambin podemos observar la presencia de un recuadro denominado Grafica de
espacio vs tiempo, aqu se podr visualizar la grfica de lo mencionado en el ttulo, la
cual ser una especie de curva, ya que es la que tuene relacin con la variacin de
velocidad con respecto al tiempo.
Operacin
En este panel se sitan los distintos botones, con los cuales se interactuara con el
programa.
-
Instrucciones
Como su nombre nos indica, este panel se refiere a las instrucciones para poder ejecutar
el programa de una forma correcta, por eso es necesario seguir paso a paso este.
MOVIMIENTO PARABOLICO
Si elegimos la opcin de MOVIMIENTO RECTILINEO, se nos desplegara la
siguiente ventana:
Como podemos observar, en esta ventana se presentan los mismos paneles, que en la
anterior ventana, siendo:
Entrada de datos
Vo, es la velocidad con la que inicia el cuerpo su movimiento.
Angulo, es el angulo con el que el cuerpo parte, esto tomando como referencia el
suelo.
Aqu se puede observar, que existe un men desplegable, en los cuales ingresaremos las
unidades de la Vo.
Salida de datos
Tiempo de vuelo de cuerpo, sea el tiempo que se demora desde que inicia hasta
punto de cada.
Altura mxima alcanzada, es el punto ms alto que alcanza al lanzarse el cuerpo.
Velocidad horizontal en x, es la componente en x del vector de la velocidad
inicial.
Velocidad vertical en y, es la componente en y del vector de la velocidad
inicial.
Velocidad cundo toca el suelo, es la velocidad con la que el cuerpo llega al final
del vuelo.
Tambin podemos observar que aqu en este panel aparecen dos mens
desplegables, en donde no es necesario elegir las unidades para nuestros resultados,
ya que estas saldrn automticamente al elegir las unidades de ingreso de datos.
Operacin
En este panel se sitan los distintos botones, con los cuales se interactuara con el
programa.
-
Instrucciones
Como su nombre nos indica, este panel se refiere a las instrucciones para poder ejecutar
el programa de una forma correcta, por eso es necesario seguir paso a paso este.
Como podemos observar, en esta ventana se presentan los mismos paneles, que en la
anterior ventana, siendo:
Entrada de datos
Radio, es el radio que forma el cuerpo al moverse en un movimiento circular.
T, es el tiempo de movimiento, desde que parte hasta que finaliza
Wo, es la velocidad angular inicial con la que parte el cuerpo.
Wf, es la velocidad angular final con la que termina el cuerpo
Aqu se puede observar, que existe un men desplegable, en los cuales ingresaremos las
unidades del radio.
Salida de datos
Radio
Tiempo
Velocidad angular inicial
Velocidad angular final
Desplazamiento angular, siento el espacio recorrido por el cuerpo.
Aceleracin angular, siendo la aceleracin con la que se mueve el cuerpo.
Aceleracin tangencial, siendo un vector que est sobre la tangente del punto de
la circunferencia y cuyo sentido es igual al de giro.
Tambin podemos observar que aqu en este panel aparecen dos mens
desplegables, en donde en el primero elegiremos las unidades a las que quisiramos
transformar nuestro radio, pero en el segundo no es necesario elegir las unidades
para nuestros resultados, ya que estas saldrn automticamente al realizar el paso
anterior.
Operacin
En este panel se sitan los distintos botones, con los cuales se interactuara con el
programa.
Indica los pasos para poder ejecutar el programa de una forma correcta, por eso es
necesario seguir paso a paso este.
MOVIMIENTO RECTILINEO
MOVIMIENTO PARABOLICO
CONCLUSIONES
BIBLIOGRAFIA
https://www.youtube.com/watch?v=VgPp0hvUFyw
https://www.youtube.com/watch?v=D3iMp1hn1N8
tutorial de axes en guide en Matlab
https://www.youtube.com/watch?v=Yw8r-LpzG6g
Vallejo. Jorge, Fisica basica, pags.105-144, 1999, Ecuador-Riobamba.
http://es.wikipedia.org/wiki