Documente Academic
Documente Profesional
Documente Cultură
Autor:
V. J. M. J. / A. M. M. J.
ndice general
Introduccin
2.- Matrices de giro con ngulos de Euler en el mismo sentido de las agujas del reloj
3.- Matrices de giro con ngulos de Euler en el sentido opuesto de las agujas del reloj
6. Lneas del algoritmo del programa: SERIAL_ROTACIONXN1 (Dibujar la rotacin de un vector sobre el Eje X en un sistema
3D)
7. Lneas del algoritmo del programa que ser grabado en el microcontrolador PIC16F877A para controlar la rotacin de un
vector sobre el Eje X en un sistema 3D
8. Circuito electrnico implementado en PROTEUS con la Conversin Analgica a Digital de la seal de un Potencimetro
para que controle la rotacin de un vector sobre el Eje Z de un sistema 3D
9. Programacin de la interface Virtual Serial Ports Emulator para crear puertos RS232 virtuales
10. Secuencia del funcionamiento del control de posicin del vector en un sistema 3D.
Introduccin
Los ngulos de Euler constituyen un conjunto de tres coordenadas angulares que sirven para especificar la orientacin de un sistema de referencia de ejes
ortogonales, normalmente mvil, respecto a otro sistema de referencia de ejes ortogonales normalmente fijos.
Fueron introducidos por Leonhard Euler en mecnica del slido rgido para describir la orientacin de un sistema de referencia solidario con un slido rgido
en movimiento.
Dados dos sistemas de coordenadas xyz y XYZ con origen comn, es posible especificar la posicin de un sistema en trminos del otro
usando tres ngulos , y .
La definicin matemtica es esttica y se basa en escoger dos planos, uno en el sistema de referencia y otro en el triedro rotado. En el
esquema adjunto seran los planos xy y XY. Escogiendo otros planos se obtendran distintas convenciones alternativas, las cuales se
llaman de Tait-Bryan cuando los planos de referencia son no-homogneos (por ejemplo, xy y XY son homogneos, mientras xy y XZ no
lo son).
La interseccin de los planos coordenados xy y XY escogidos se llama lnea de nodos, y se usa para definir los tres ngulos:
es el ngulo entre el eje x y la lnea de nodos.
es el ngulo entre el eje z y el eje Z.
es el ngulo entre la lnea de nodos y el eje X.
Ms adelante se establecer que los tres ngulos de Euler descritos son los valores de las tres rotaciones intrnsecas que describen el
sistema.
1.- Rotaciones con respecto a los ejes X, Y y Z
2.- Matrices de giro con ngulos de Euler en el mismo sentido de las agujas del reloj
1 0 0 0 0
0 0 1 0 0
0 0 0 0 1
Matriz de giro en el Eje X Matriz de giro en el Eje Y Matriz de giro en el Eje Z
3.- Matrices de giro con ngulos de Euler en el sentido opuesto de las agujas del reloj
1 0 0 0 0
0 0 1 0 0
0 0 0 0 1
Matriz de giro en el Eje X Matriz de giro en el Eje Y Matriz de giro en el Eje Z
4. Lneas del algoritmo de la funcin: vector3d (Vector en tres dimensiones)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Programa que permite visualizar el grafico de vectores. Importante en esta funcion las lineas se encuentran comentadas
% Esta funcion puede graficar vectores 2D y vectores 3D con flechas dependiendo de las dimensiones de entrada
%
% Ejemplo de un vector 3D: p0 = [1 2 3]; % Coordenadas del punto inicial p0
% p1 = [4 5 6]; % Coordenadas del punto final p1
% color = 'r' % Color rojo seleccionado
% ancho = 10 % Grozor del vector
% vector3d(p0,p1,color,ancho)
%
% Ejemplo de un vector 2D: p0 = [1 2]; % Coordenadas del punto inicial p0
% p1 = [4 5]; % Coordenadas del punto final p1
% color = 'r' % Color rojo seleccionado
% ancho = 10 % Grozor del vector
% vector3d(p0,p1,color,ancho)
%
% Debe ingresar los valores de p0 p1 color tal como se indica lineas arriba en el Command Window
% Tipeando vector3d(p0,p1,color,ancho) en el Command Window se graficara la linea de un vector con una flecha
% desde el punto p0 al punto p1 en color rojo y con un grozor de 10
% Otra alternativa es que puede tipear directamente en el Command Window:
% vector3d([1 2 3],[4 5 6],'r',10) % Visulizara un vector en 3D
% vector3d([1 2],[4 5],'r',10) % Visulizara un vector en 2D
% Puede seleccionar cualquier color tan solo cambiando el tercer elemento de la funcion
% Puede seleccionar cualquier grozor tan solo cambiando el cuarto elemento de la funcion
% Si no desea trabajar directamente con la funcion, puede ejecutar el archivo VECTOR2D1.
%
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% p0, p1, color, ancho son parametros de entrada. Se dibuja una flecha que representa un vector desde p0 a p1
function vector3d(p0,p1,color,ancho)
p = p1-p0; % Restamos los valores del punto final (p1) menos los valores del punto inicial (p0)
alpha = 0.07; % Tamao de la cabeza de flecha relativo a la longitud del vector
beta = 0.2; % Ancho de la base de la cabeza de flecha relativo a su longitud
p = p1-p0; % Restamos los valores del punto final (p1) menos los valores del punto inicial (p0)
alpha = 0.1; % Tamao de la cabeza de flecha relativo a la longitud del vector
beta = 0.1; % Ancho de la base de la cabeza de flecha relativo a su longitud
hold on
plot(hu(:),hv(:),color,'LineWidth',ancho) % Se grafica la cabeza de flecha
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Estas lineas se activaran SOLO si se ejecuta la funcion desde el Command Window tal como se sugiere en los comentarios de cabecera%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% grid on
% xlabel('EJE X','Color','r') % Dar nombre al eje X
% ylabel('EJE Y','Color','g') % Dar nombre al eje Y
% hold off
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
else
error('p0 y p1 deben tener las mismas dimensiones') % ALERTA para solo aceptar que p0 y p1 seab de igual extension
end
else
error('ATENCION: Esta funcion solo acepta vectores 2D o 3D') % ALERTA que indica los dos tipos de sistemas vectoriales a graficar
end
Se tipea la funcion vector3d en el Command Window con sus respectivos datos para obtener un vector 2D
function circunferencia1(puntox,puntoy,puntoz,x,y,z,radio,angulo1,angulo2,color,ancho)
if puntoz == 0 & puntoy == 1 & puntox == 1 % Graficamos el circulo en el plano XY (El Eje Z puede tener cualquier valor)
h = x; % Valor del Eje X (Punto central de la circunferencia)
i = y; % Valor del Eje Y (Punto central de la circunferencia)
j = z; % Valor del Eje Z (Punto central de la circunferencia)
end
if puntoz == 1 & puntoy == 0 & puntox == 1 % Graficamos el circulo en el plano XZ (El Eje Y puede tener cualquier valor)
h = x; % Valor del Eje X (Punto central de la circunferencia)
i = y; % Valor del Eje Y (Punto central de la circunferencia)
j = z; % Valor del Eje Z (Punto central de la circunferencia)
end
if puntoz == 1 & puntoy == 1 & puntox == 0 % Graficamos el circulo en el plano YZ (El Eje X puede tener cualquier valor)
h = x; % Valor del Eje X (Punto central de la circunferencia)
i = y; % Valor del Eje Y (Punto central de la circunferencia)
j = z; % Valor del Eje Z (Punto central de la circunferencia)
end
end
%Borra datos que se encuentren previos y vuelve a declarar el puerto y la velocidad de transmisin
delete(instrfind({'port'},{'COM2'})); % Borramos cualquier eleccion de puerto seria RS232 anterior
puerto = serial('COM2'); % seleccionamos un nuevo puerto serial RS232
puerto.BaudRate = 4800; % Establecemos la velocidad de comunicacion en Baudios
% Matriz de rotacion en el eje X en el sentido opuesto a las agujas del reloj del espacio 3D
%Rx = [1 0 0;0 cos((valor_entrada/255)*pi)) sin((valor_entrada/255)*pi));0 -sin((valor_entrada/255)*pi)) cos((valor_entrada/255)*pi))];
% Matriz de rotacion en el eje X en el mismo sentido a las agujas del reloj del espacio 3D
% Rx = [1 0 0;0 cos((valor_entrada/255)*pi)) -sin((valor_entrada/255)*pi));0 sin((valor_entrada/255)*pi)) cos((valor_entrada/255)*pi))];
% Py2 = Rx*Py % Rotacion del vector Py en el eje X originando el vector Py2
% Pz3 = Rx*Pz % Rotacion del vector Pz en el eje X originando el vector Pz3
Py2 = (rotx((valor_entrada/255)*pi))*Py; % Ecuacion con la funcion rotx semejante a la matriz Rx
Pz3 = (rotx((valor_entrada/255)*pi))*Pz; % Ecuacion con la funcion rotx semejante a la matriz Rx
%Cierra y borra el puerto utilizado, borra todas las variables utilizadas dando mensaje de Termino de Comunicacion RS232
fclose(puerto);
delete(puerto);
fprintf('\n FIN de la transmision RS232\n')
Programa MATLAB mostrando en la ventana Editor el programa SERIAL_ROTACIONXN1 (Dibujar la rotacin de un vector sobre el Eje X en un sistema 3D)
Grafico de rotacion 3D sobre el Eje Y (Color verde) con el programa SERIAL_ROTACIONXN1 (Dibujar la rotacin de un vector sobre el Eje X en un sistema 3D)
7. Lneas del algoritmo del programa que ser grabado en el microcontrolador PIC16F877A para controlar la rotacin de un
vector sobre el Eje X en un sistema 3D
'****************************************************************
'* Name : ADC5_2A.BAS *
'* Author : Mg. MONTEZA ZEVALLOS FIDEL T. *
'* Notice : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 14/11/2011 *
'* Version : 1.0 *
'* Notes : Conversion Analogico a Digital de un potenciometro*
'* y visualizar la velocidad parpadeo de un LED *
'* : Circuito PROTEUS ADC_5(MATLAB) *
'****************************************************************
DEFINE LCD_DREG PORTD 'Setea el puerto D para el bus de datos LCD D0,D1,D2,D3,D4,D5,D6,D7
DEFINE LCD_DBIT 4 'Setea el bit de comienzo de datos (0 o 4), 4 si el bus comienza en el bit 4 (PORTD4)
DEFINE LCD_RSREG PORTE 'Setea el puerto E para el port LCD Register Select (RS)
DEFINE LCD_RSBIT 0 'Setea el puerto E0 para el LCD Register Select
DEFINE LCD_EREG PORTE 'Setea el puerto E para el port LCD Enable (E)
DEFINE LCD_EBIT 1 'Setea el puerto E1 para el LCD Enable
DEFINE LCD_BITS 4 'Setea el tamao del bus LCD (4 o 8 bits)
DEFINE LCD_LINES 2 'Setea el numero de lineas en el LCD
Inicio:
ADCIN 0, datos 'Leer PORTA.0 y guardarlo en datos
Programa Micro CodeStudio con el que implementa el programa ADC5_2A que ser grabado en el microcontrolador PIC16F877A para controlar la rotacin de un
vector sobre el Eje X en un sistema 3D
8. Circuito electrnico implementado en PROTEUS con la Conversin Analgica a Digital de la seal de un Potencimetro para
que controle la rotacin de un vector sobre el Eje Z de un sistema 3D