informe proyecto

23
CAPTURA DE DATOS ARDUINO MATLAB CARLOS ORTIZ; GORDY GARZON 2014 6 DE AGOSTO DE 2014

Upload: krlos-ortiz

Post on 27-Dec-2015

29 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Informe Proyecto

Proyecto Estocásticos Tercer Parcial

Carlos Ortiz; Gordy Garzon

6 DE AGOSTO DE 2014

Page 2: Informe Proyecto

1 CONTENIDO

2 Objetivos..........................................................................................................................................2

3 Marco Teórico.....................................................................................................................................2

3.1 LM35............................................................................................................................................2

3.1.1 Características......................................................................................................................2

3.2 Matlab.........................................................................................................................................2

3.3 Arduino........................................................................................................................................3

3.4 Correlación..................................................................................................................................3

3.4.1 Sentido y forma de la correlación........................................................................................3

3.4.2 Coeficientes de correlación..................................................................................................4

3.4.3 Interpretación geométrica...................................................................................................4

3.4.4 Distribución del coeficiente de correlación..........................................................................5

4 Capítulo I.............................................................................................................................................6

4.1 Aplicación 1.................................................................................................................................6

4.2 Aplicación 2.................................................................................................................................7

5 Captura de Datos y Autocorrelación de dos Señales.........................................................................10

6 Análisis de Resultados.......................................................................................................................14

6.1 Captura de Datos.......................................................................................................................14

6.2 Correlación y Autocorrelación...................................................................................................15

6.3 Autocorrelacion Cruzada...........................................................................................................16

7 Conclusiones......................................................................................................................................16

1

Page 3: Informe Proyecto

Control de Temperatura Arduino-Matlab

2 OBJETIVOS

Implementar un sistema de control de temperatura a través de un LM35 muestreado por arduino y graficado por Matlab

Comprobar las temperaturas de los dos sensores mediante la auto correlación Aplicar los conocimientos de digitalización de señales

3 MARCO TEÓRICO

3.1 LM35El LM35 es un sensor de temperatura con una precisión calibrada de 1ºC. Su rango de medición abarca desde -55°C hasta 150°C. La salida es lineal y cada grado centígrado equivale a 10mV, por lo tanto:

150ºC = 1500mV

-55ºC = -550mV1

3.1.1 CaracterísticasSus características más relevantes son:

Está calibrado directamente en grados Celsius. La tensión de salida es proporcional a la temperatura. Tiene una precisión garantizada de 0.5°C a 25°C. Opera entre 4 y 30 voltios de alimentación. Baja impedancia de salida. Baja corriente de alimentación (60uA). Bajo costo.

3.2 MATLABMATLAB (abreviatura de MATrix LABoratory, "laboratorio de matrices") es una herramienta de software matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación propio (lenguaje M) y servicio de especie. Está disponible para las plataformas Unix, Windows, Mac OS X y GNU/Linux.

Entre sus prestaciones básicas se hallan: la manipulación de matrices, la representación de datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario (GUI) y la comunicación con programas en otros lenguajes y con otros dispositivos hardware. El paquete MATLAB dispone de dos herramientas adicionales que expanden sus prestaciones, a saber,

2

Page 4: Informe Proyecto

Simulink (plataforma de simulación multidominio) y GUIDE (editor de interfaces de usuario - GUI). Además, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas (toolboxes); y las de Simulink con los paquetes de bloques (blocksets).

Es un software muy usado en universidades y centros de investigación y desarrollo. En los últimos años ha aumentado el número de prestaciones, como la de programar directamente procesadores digitales de señal o crear código VHDL.

3.3 ARDUINOArduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.2 3

El hardware consiste en una placa con un microcontrolador Atmel AVR y puertos de entrada/salida.4 Los microcontroladores más usados son el Atmega168, Atmega328, Atmega1280, ATmega8 por su sencillez y bajo coste que permiten el desarrollo de múltiples diseños. Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programación Processing/Wiring y el cargador de arranque que es ejecutado en la placa.4

Arduino se puede utilizar para desarrollar objetos interactivos autónomos o puede ser conectado a software tal como Adobe Flash, Processing, Max/MSP, Pure Data). Las placas se pueden montar a mano o adquirirse. El entorno de desarrollo integrado libre se puede descargar gratuitamente.

3.4 CORRELACIÓNEn probabilidad y estadística, la correlación indica la fuerza y la dirección de una relación lineal y proporcionalidad entre dos variables estadísticas. Se considera que dos variables cuantitativas están correlacionadas cuando los valores de una de ellas varían sistemáticamente con respecto a los valores homónimos de la otra: si tenemos dos variables (A y B) existe correlación si al aumentar los valores de A lo hacen también los de B y viceversa. La correlación entre dos variables no implica, por sí misma, ninguna relación de causalidad (Véase cum hoc ergo propter hoc).

3.4.1 Sentido y forma de la correlaciónLa relación entre dos variables cuantitativas queda representada mediante la línea de mejor ajuste, trazada a partir de la nube de puntos. Los principales componentes elementales de una línea de ajuste y, por lo tanto, de una correlación, son la fuerza, el sentido y la forma:

La fuerza extrema según el caso, mide el grado en que la línea representa a la nube de puntos: si la nube es estrecha y alargada, se representa por una línea recta, lo que indica que la relación es fuerte; si la nube de puntos tiene una tendencia elíptica o circular, la relación es débil.

El sentido mide la variación de los valores de B con respecto a A: si al crecer los valores de A lo hacen los de B, la relación es directa (pendiente positiva); si al crecer los valores de A disminuyen los de B, la relación es inversa (pendiente negativa).

3

Page 5: Informe Proyecto

La forma establece el tipo de línea que define el mejor ajuste: la línea recta, la curva monotónica o la curva no monotónica

3.4.2 Coeficientes de correlaciónExisten diversos coeficientes que miden el grado de correlación, adaptados a la naturaleza de los datos. El más conocido es el coeficiente de correlación de Pearson (introducido en realidad por Francis Galton), que se obtiene dividiendo la covarianza de dos variables entre el producto de sus desviaciones estándar. Otros coeficientes son:

Coeficiente de correlación de Spearman Correlación canónica Coeficiente de Correlación Intraclase

3.4.3 Interpretación geométrica

Dados los valores muéstrales de dos variables aleatorias e , que pueden ser consideradas como vectores en un espacio a n dimensiones, pueden construirse los "vectores centrados" como:

E .

El coseno del ángulo alfa entre estos vectores es dado por la fórmula siguiente:

Pues es el coeficiente de correlación muestral de Pearson. El coeficiente de correlación es el coseno entre ambos vectores centrados:

Si r = 1, el ángulo °, ambos vectores son colineales (paralelos).

Si r = 0, el ángulo °, ambos vectores son ortogonales.

Si r =-1, el ángulo °, ambos vectores son colineales de dirección opuesto.

Más generalmente: .

Por supuesto, del punto vista geométrica, no hablamos de correlación lineal: el coeficiente de correlación tiene siempre un sentido, cualquiera sí que sea su valor entre -1 y 1. Nos informa de modo preciso, no tanto sobre el grado de dependencia entre las variables, que sobre su distancia angular en la hiperesfera a n dimensiones.

4

Page 6: Informe Proyecto

La Iconografía de las correlaciones es un método de análisis multidimensional que reposa en esta idea. La correlación lineal se da cuando en una nube de puntos estos se encuentran o se distribuyen alrededor de una recta.

La fórmula de correlación para dos series distintas con cierto desfase "k", está dada por la fórmula:

3.4.4 Distribución del coeficiente de correlaciónEl coeficiente de correlación muestral de una muestra es de hecho una variable aleatoria, eso significa que si repetimos un experimento o consideramos diferentes muestras se obtendrán valores diferentes y por tanto el coeficiente de correlación muestral calculado a partir de ellas tendrá valores ligeramente diferentes. Para muestras grandes la variación en dicho coeficiente será menor que para muestras pequeñas. R. A. Fisher fue el primero en determinar la distribución de probabilidad para el coeficiente de correlación.

Si las dos variables aleatorias que trata de relacionarse proceden de una distribución gaussiana bivariante entonces el coeficiente de correlación r sigue una distribución de probabilidad dada por:

Donde:

Es la distribución gamma

Es la función gaussiana hipergeométrica.

Nótese que , por tanto r es estimador sesgado de .

Puede obtenerse un estimador aproximado no sesgado resolviendo la ecuación:

For

Aunque, la solución:

5

Page 7: Informe Proyecto

Es subóptima. Se puede obtener un estimador sesgado con mínima varianza para grandes

valores de n, con sesgo de orden buscando el máximo de la expresión:

, i.e.

En el caso especial de que , la distribución original puede ser reescrita como:

Donde es la función beta.

4 CAPÍTULO IEn esta práctica se estudiará el uso de la auto correlación y de la correlación cruzada. Estas operaciones se van a utilizar principalmente para el reconocimiento de determinados patrones dentro de una señal, para la identificación de pautas y para la determinación de la relación existente entre sucesivas muestras.

4.1 APLICACIÓN 1La primera aplicación de la auto correlación de una señal es determinar las posibles repeticiones de patrones en la señal. Para comprobar este punto se va a generar una sinusoide de frecuencia igual a 100 Hz con amplitud uno y muestreada a 1 kHz.

%Generación de la señaln = 0:99;x = cos(2*pi*n*0.1);%Cálculo de la autocorrelación normalizaday = xcorr(x,'coeff');%Representación de las dos señalessubplot(221), stem(x,'k'), title('(a)')subplot(222), plot(x,'k'), title('(b)')subplot(223), stem(y,'k'), title('(c)')subplot(224), plot(y,'k'), title('(d)')

La gráfica obtenida al emplear este código se muestra en la figura siguiente. Podemos apreciar que la autocorrelación tiene una longitud doble a la señal temporal. Este hecho se debe a que los desplazamientos, a la hora de calcular la autocorrelación, pueden ser positivos o negativos. El índice central se corresponde con un desplazamiento cero y, se corresponde, lógicamente, con el valor máximo de dicha correlación.

6

Page 8: Informe Proyecto

4.2 APLICACIÓN 2Para la siguiente aplicación vamos hacer la captura en tiempo real de dos señales analógicas procesadas por medio de un arduino y graficadas en Matlab. Las conversión de las señales tienen una resolución de 10 bits y los voltajes referenciales son de 0 – 5 lo que lo hace ideal para varios sensores que se los puede conectar en las entradas analógicas A0 y A1.

%Apertura del serie (COM)%Borrar previosdelete(instrfind({'Port'},{'COM4'}));%Crear objeto series = serial('COM4','BaudRate',9600,'Terminator','CR/LF');warning('off','MATLAB:serial:fscanf:unsuccessfulRead');%Abrir puertofopen(s);%Parámetros de medidastmax = 10; % tiempo de captura en srate = 33; % resultado experimental (comprobar) %Preparar la figuraf = figure('Name','Captura');a = axes('XLim',[0 tmax],'YLim',[0 5.1]);l1 = line(nan,nan,'Color','r','LineWidth',2);l2 = line(nan,nan,'Color','b','LineWidth',2); xlabel('Tiempo (s)')

7

Page 9: Informe Proyecto

ylabel('Voltaje (V)')title('Captura de voltaje en tiempo real con Arduino')grid onhold on %Inicializar Capturav1 = zeros(1,tmax*rate);v2 = zeros(1,tmax*rate);i = 1;t = 0; %Ejecutar Bucle Temporizadoticwhile t<tmax t = toc; % Leer del puerto serie a = fscanf(s,'%d,%d')'; v1(i)=a(1)*5/1024; v2(i)=a(2)*5/1024; % Dibujar en la figura x = linspace(0,i/rate,i); set(l1,'YData',v1(1:i),'XData',x); set(l2,'YData',v2(1:i),'XData',x); drawnow i = i+1;end%Resultado del cronometroclc;fprintf('%g s de captura a %g cap/s \n',t,i/t);

% Cerrar y Borrar Puertofclose(s);delete(s);clear s;

Para la Parte del Arduino la conexión es la siguiente

void setup()

8

Page 10: Informe Proyecto

{// inicializar puerto serieSerial.begin(9600);int out1 = 0;int out2 = 0;

}void loop() {

// leer pinesout1 = analogRead(A0);out2 = analogRead(A1);// enviarSerial.print(out1);Serial.print(",");Serial.println(out2);// esperardelay(20);

}

Mediante el código enviamos los datos transformados por el conversor ADC integrado en el arduino y lo enviamos mediante una comunicación R232 de tal forma que Matlab lo pueda leer y trabajar con estos valores en forma de vector. Y obtenemos la gráfica de los dos sensores en escala de grados centígrados en tiempo real de 20 segundos

9

Page 11: Informe Proyecto

5 CAPTURA DE DATOS Y AUTOCORRELACIÓN DE DOS SEÑALES

Para realizar la implementación de los sensores de temperatura vamos a capturar los valores enviados desde el arduino hasta Matlab, una vez ahí los datos los almacenaremos en vectores para poder trabajar con los datos.

Cuando se tiene los dos vectores con los parámetros de la temperatura y el tiempo obtendremos la autocorrelación de las señales para verificar si los dos sensores están trabajando de igual forma y ver cuál es el error uno frente a otro.

Mediante el código de obtención de datos de Matlab una vez obtenidos los dos vectores calcularemos la autocorrelación de cada una de las señales para luego realizar una comparación.

En el arduino mientras estaremos enviando los valores en temperatura a una pantalla lcd y a su vez al puerto serie por medio de una comunicación R232 a Matlab.

Código de Matlab

%% Apertura del serie (COM)%borrar previosdelete(instrfind({'Port'},{'COM8'}));%crear objeto series = serial('COM8','BaudRate',9600,'Terminator','CR/LF');warning('off','MATLAB:serial:fscanf:unsuccessfulRead');%abrir puertofopen(s); % parámetros de medidastmax = 20; % tiempo de captura en srate = 23; % resultado experimental (comprobar) % preparar la figuraf = figure('Name','Captura');a = axes('XLim',[0 tmax],'YLim',[0 100.1]);l1 = line(nan,nan,'Color','r','LineWidth',2);l2 = line(nan,nan,'Color','b','LineWidth',2); xlabel('Tiempo (s)')ylabel('Voltaje (V)')title('Captura de voltaje en tiempo real con Arduino')grid onhold on % inicializarv1 = zeros(1,tmax*rate);v2 = zeros(1,tmax*rate);i = 1;t = 0; % ejecutar bucle cronometradotic

10

Page 12: Informe Proyecto

while t<tmax t = toc; % leer del puerto serie a = fscanf(s,'%d,%d')'; v1(i)=a(1)*100/204; v2(i)=a(2)*100/204; % dibujar en la figura x = linspace(0,i/rate,i); set(l1,'YData',v1(1:i),'XData',x); set(l2,'YData',v2(1:i),'XData',x); drawnow % seguir i = i+1;end

% Autocorrelacion de las señaleslegend('Temperatura 1','Temperatura 2');figure(2)d=xcorr(v1,'coeff');[z lag1] =xcorr(v1,'coeff');subplot(211)plot(v1,'k'); title('Grafica en tiempo real primera senal')subplot(212)stem(d,'b')title('autoccorrelacion de la primera senal')figure(3)h=xcorr(v2,'coeff');subplot(211)plot(v2,'k'); title('Grafica en tiempo real primera senal')subplot(212)stem(h,'b')title('autoccorrelacion de la segunda senal') figure(4)[zz lag2] = xcorr(v1,v2,'coeff'); %correlacion cruzada%Representación de las señalesplot(lag1,z,'Color','g')hold ongrid onplot(lag2, zz,'Color','r','LineWidth',2) if d==h disp('las temperaturas son iguales'); end% resultado del cronometro clc;fprintf('%g s de captura a %g cap/s \n',t,i/t); %% Borrar Puerto fclose(s);delete(s);

11

Page 13: Informe Proyecto

clear s;Programa en Arduino

#include <LiquidCrystal.h>void setup() {

// inicializar puerto serieSerial.begin(9600);lcd.begin(16,2);pinMode(A1,INPUT);lcd.setCursor(0,0);lcd.print("PE PROYECTO");lcd.setCursor(0,1); lcd.print("GARZON - ORTIZ"); delay(1000);

} void loop() {

// leer pines out1 = analogRead(A0); out2 = analogRead(A1); // enviar Serial.print(out1); Serial.print(","); Serial.println(out2); // esperar delay(10); float Centigrados = centi(); float Centigrados1= centi1(); lcd.setCursor(0,0); lcd.print("T1="); lcd.print(Centigrados); lcd.print(" \337C "); lcd.setCursor(0,1); lcd.print("T2="); lcd.print(Centigrados1); lcd.print(" \337C "); delay(10); }

float centi(){

// Funcion para leer el dato analogico y convertirlo a digital:int dato=0,dato1=0;

12

Page 14: Informe Proyecto

float c; dato=analogRead(A0); c = (500.0 * dato)/1023; return (c); }

float centi1(){

// Funcion para leer el dato analogico y convertirlo a digital:int dato1=0;

float c; dato1=analogRead(A1); c = (500.0 *dato1)/1023; return (c); }

El circuito a implementar es el siguiente:

13

Page 15: Informe Proyecto

6 ANÁLISIS DE RESULTADOS

6.1 CAPTURA DE DATOSEn la siguiente imagen podemos ver la captura de datos en Matlab de los dos sensores en una escala de temperatura de 0 – 100 grados centígrados en un tiempo de 20 segundos

Y en la segunda figura la captura de datos en el arduino y mostrada en una pantalla LCD

Figura 1

Figura 2

14

Page 16: Informe Proyecto

6.2 CORRELACIÓN Y AUTOCORRELACIÓNEn las siguientes graficas se muestra la auto correlación de las dos señales hechas vector mediante el código mostrado anteriormente

15

Page 17: Informe Proyecto

6.3 AUTOCORRELACIÓN CRUZADAEn la siguiente grafica se puede observar la autocorrelacion esta desfasa por lo tanto las señales en el periodo no fueron iguales a cierta temperatura.

Por medio de la autocorrelacion cruzada se puede observar cuando las señales son iguales en el intervalo de tiempo establecido nunca llegaran a ser iguales puesto que a bajos voltajes existe la introducción de ruido en la señal por causa de los generadores de voltaje pero en gran parte si, si variamos la temperatura de un sensor se podrá ver un desfase de una de las dos señales mas pronunciado.

7 CONCLUSIONES

Mediante la correlacion podemos ver como cambia una señal en función de otro parámetro en este caso la temperatura en función del tiempo

Con la correlacion cruzada podemos ver si dos señales son iguales Con Matlab podemos obtener datos muestreados y enviados por el puerto serial los cuales

podemos almacenarlos en forma de vector para poder trabajar con estos.

16

Page 18: Informe Proyecto

La función de correlación cruzada muestral (FCCM) entre una serie de tiempo y los residuos de un modelo propuesto para representar dicha serie constituye una herramienta de gran utilidad para verificar si este modelo puede considerarse apropiado para la serie en consideración.

Si los elementos del lado izquierdo del croscorrelograma no muestran ninguna estructura y los elementos del lado derecho reproducen la estructura de autocorrelación de la serie, el modelo propuesto es correcto; en caso contrario, el lado derecho del autocorrelograma contiene elementos de la estructura de autocorrelación del modelo correcto que permiten su identificación.

El procedimiento presentado en este artículo es de gran utilidad en el análisis de series de tiempo univariadas porque se puede iniciar con modelo muy aproximado, incluso errado, y se logra determinar si el modelo propuesto es correcto. En caso contrario se tienen nuevos elementos que permiten una identificación correcta del modelo buscado.

8 BIBLIOGRAFÍA

1. Bartlett, M. S. (1985), Stochastic Processes, Cambridge University Press, Cambridge, USA.2. Beguin, J. M., Gourieroux, C. & Monfort, A. (1980), Identification of a Mixed Autoregressive-

Moving Average Process: The Corner Method, Time Series, Amsterdam, Nederlans.3. Box, G. E. P. & Jenkins, G. M. (1976), Time Series Analysis: Forecasting and Control, Holden-

Day, San Francisco, USA.4. Castaño, E. (2005), La función de correlación cruzada en series no estacionarias:

identificación, tendencias determinísticas y raíces unitarias, Tesis de maestría, Universidad Nacional de Colombia, Sede Medellín, Facultad de Ciencias, Escuela de Estadística.

5. Rosales, L. F. (2004), La función de correlación cruzada como elemento de diagnóstico para los modelos ARMA(p,q), Trabajo de grado, Universidad Nacional de Colombia, Sede Medellín, Facultad de Ciencias, Escuela de Estadística.

6. Schwarz, G. (1978), ‘Estimating the Dimension of a Model’, Ann. Statist 6(2), 461– 464.7. Tsay, R. S. & Tiao, G. C. (1984), ‘Consistent Estimates of Autoregresive Parameters and

Extended Sample Autocorrelation Function for Stationary and Non-stationary ARMA Models’, Journal of the American Statistical Association 79, 84–96.

8. Tsay, R. S. & Tiao, G. C. (1985), ‘Use of Canonical Analysis in Time Series Model Identification’, Biometrika 72, 299–315.

9. Wei,W.W. S. (1990), Time Series Analysis, Univariate and Multivariate Methods, Addison-Wesley, California, USA.

17