paper de como medir temperatura utilizando comunicacion SPI entre el software Matlab y arduino...
UFPS. Ing. Electromecánica. Comunicaciones Industriales
Sistema de comunicación comun icación entre Arduino y Matlab Matlab para medir medir temperatura temperatura uti lizando lizando comunicación comun icación SPI Andderson Eduardo Fuentes Guerrero, estudiante 1090791
[email protected]
Jhon Jairo Rodríguez Gómez, estudiante 1090888
[email protected]
Juan Felipe Pinzón Pereira, estudiante 1090814
[email protected]
RESUMEN: En este informe mediremos la temperatura en un ambiente deseado por medio de un termopar tipo K conectado al módulo módulo interfaz MAX6675 MAX6675 que me envía los datos a la plataforma Arduino comunicado por la interfaz SPI unidireccional, se comunica el Arduino al software Matlab donde se programa para que este reciba los datos generados por el Arduino y así realizar una gráfica en tiempo real.
El MAX6675 es un convertidor Analógico a digital especializado para termopares tipo K. Con este módulo es posible conectar fácilmente un termopar a cualquier microcontrolador a través de una interfaz SPI unidireccional. Dentro de este pequeño circuito se encuentra la electrónica necesaria para amplificar, compensar y convertir a digital el voltaje generado por el termopar, lo que hace muy sencilla la tarea de conectar un termopar a un microcontrolador. SPI El Bus SPI (del inglés (del inglés Serial Peripheral Interface) es un estándar de comunicaciones, usado principalmente para la transferencia de información entre circuitos integrados en equipos electrónicos. El bus El bus de interfaz de interfaz de periféricos serie o bus SPI es un estándar para controlar casi cualquier dispositivo electrónico digital que acepte un flujo de bits serie regulado por un reloj (comunicación sincrónica). Incluye una línea de reloj, de reloj, dato entrante, dato saliente y un pin de chip select, que conecta o desconecta la operación del dispositivo con el que uno desea comunicarse. De esta forma, este estándar permite multiplexar las líneas de reloj.
PALABRAS CLAVE : Interfaz, modulo, SPI, termo par tipo k
ABSTRACT: AB STRACT: In this report we will measure the temperature in a desired environment by means of a Ktype thermocouple connected to the interface module MAX6675 that sends the data to the Arduino platform communicated by the unidirectional SPI interface, the Arduino is communicated to the Matlab Matlab software where it is programmed so that This receives the data generated by the Arduino and thus make a graph in real time. KEYWORDS: Interface, module, SPI, term k type .
1 INTRODUCCIÓN El proyecto consta de programar en Arduino utilizando el protocolo SPI, debido a que el módulo MAX6675 utiliza comunicación serial SPI, este hace la captura de datos del termopar, a su vez se programa el software de Matlab y por medio del puerto serial del Arduino que está conectado al pc, se ejecuta el comando para graficar en tiempo real los datos obtenidos del termo par. .
2 OBJETIVOS OBJ ETIVOS
Figura 1: diagrama de comunicación entre maestro esclavo
Interpretar como funciona la comunicación SPI maestro/esclavo
utilizado en el protocolo SPI
Operación El SPI es un protocolo síncrono. La sincronización y la transmisión de datos se realiza por medio de 4 señales: SCLK (Clock): Es el pulso que marca la sincronización. Con cada pulso de este reloj, se lee o se envía un bit. También llamado TAKT (en Alemán).
3 MARCO TEÓRICO Ardu Ar du ino in o es una plataforma de prototipos electrónica de código abierto (open-source) basada en hardware y software flexibles y fáciles de usar. Está pensado para artistas, diseñadores, como hobby y para cualquiera interesado en crear objetos o entornos interactivos.
1
UFPS. Ing. Electromecánica. Comunicaciones Industriales
MOSI (Master Output Slave Input): Salida de datos del Master y entrada de datos al Slave. También llamada SIMO. MISO (Master Input Slave Output): Salida de datos del Slave y entrada al Master. También conocida por SOMI. SS/Select: Para seleccionar un Slave, o para que el Master le diga al Slave que se active. También llamada SSTE. La Cadena de bits es enviada de manera síncrona con los pulsos del reloj, es decir con cada pulso, el Master envía un bit. Para que empiece la transmisión el Master baja la señal SSTE ó SS/Select a cero, con esto el Slave se activa y empieza la transmisión, con un pulso de reloj al mismo tiempo que el primer bit es leído. Nótese que los pulsos de reloj pueden estar programados de manera que la transmisión del bit se realice en 4 modos diferentes, a esto se llama polaridad y fase de la transmisión: 1. Con el flanco de subida sin retraso. 2. Con el flanco de subida con retraso. 3. Con el flanco de bajada sin retraso. 4. Con el flanco de bajada con retraso. PROGRAMACION
Programación hecha en Arduino
El SPI Master(servidor) inicializa el ciclo de comunicación cuando se coloca en bajo el Selector de Esclavo (SS-Selector Slave)(cliente). Master y Slave(servidor y cliente) preparan los datos a ser enviados en sus respectivos registros de desplazamiento y el Master genera el pulso del reloj en el pin SCK para el intercambio de datos. Los datos son siempre intercambiados desde el Maestro al Esclavo en MasterOut-SlaveIn, MOSI, y desde Esclavo al Maestro en MasterIn-SlaveOut, MISO. Después de cada paquete de datos el Maestro debe sincronizar el esclavo llevando a 'alto' el selector de Esclavo, SS.
2
UFPS. Ing. Electromecánica. Comunicaciones Industriales
Cuando se configure como Maestro, la interfaz SPI no tendrá un control automático de la línea SS. Este debe ser manejado por software antes de que la comunicación pueda empezar, cuando esto es realizado, escribiendo un byte en el registro de la SPI comienza el reloj de la SPI, y el hardware cambia los 8 bits dentro del Esclavo. Después de cambiar un Byte, el reloj del S PI para, habilitando el fin de la transmisión ( SPIF ). Si la interrupción del SPI está habilitado (SPIE) en el registro SPCR, una interrupción es requerida. El Master podría continuar al cambio del siguiente byte escribiendo dentro del SPDR, o señalizar el fin del paquete colocando en alto el Esclavo seleccionado, línea SS. El último byte llegado se mantendrá en el registro Buffer para luego usarse. Cuando lo configuramos como un Esclavo, la interfaz ISP permanecerá durmiendo con MISO en tres-estados siempre y cuando el pin SS este deshabilitado. En este estado, por el software se podría actualizar el contenido del registro SPDR, pero los datos no serán desplazados por la llegada del pulso de reloj en el pi n SCK hasta que el pin SS no sea habilitado (‘0’). Será visto como un byte completamente desplazado en el fin de la transmisión cuando SPIF se habilite. Si la interrupción SPI, SPIE en SPCR, está habilitada, una interrupción es solicitada. El Esclavo podría continuar para colocar nuevos datos para ser enviados dentro del SPDR antes de seguir leyendo la data que va llegando. El último byte que entra permanecerá en el buffer para luego usarse. (MSTR en SPCR es seteado), el usuario puede determinar la dirección del pin SS. Si SS es configurado como salida, el pin es una salida general la cual no afecta el sistema SPI. Típicamente, el pin SS será manejado desde el Esclavo. Si es como entrada, este debe ser enviado a alto para asegurar la operación SPI del Master.
title('TEMPERATURA VS MUESTRAS'); xlabel('Muestra'); ylabel('Temperatura'); ylim([0 100]); xlim([0 (A-1)/fs]); grid Stop=1; uicontrol('style','pushbutton','string ','parar','callback','stop=y(end);'); tic while Stop if toc> 1/fs tic y(1:end-1)=y(2:end); y(end)=fscanf(pserial,'%e'); set(l1,'XData',t,'YData',y) drawnow end end
el comando se inicia llamando el puerto a donde está conectado el Arduino para el caso ( COM5) y se manda a iniciar la comunicación entre Arduino y Matlab con (fopen), a continuación se establece (fs) que es la frecuencia de muestreo, (A) es el rango de muestras en el tiempo donde matlab muestra una gráfica y se visualiza las últimas 100 muestras medidas en tiempo real, se utiliza el comando linspace que funciona de la siguiente manera ‘x=linspace(a,b,n) Genera un vector n puntos desde a hasta b, cuyos componentes están espaciados linealmente’ referenciado de Matlab para ingenieros Conociendo el principio del comando (t) toma valores de (A) puntos ‘100’ que inicia en ,(A1)/fs hasta (A), a continuación se plantean características generales para la gráfica y con el bucle (while) se configura para que las muestras se inicien desde el lado derecho y almacene en la gráfica la toma de datos de la temperatura anteriores.
Programación de Matlab
clear all;clc;close all; delete(instrfind({'Port'},{'COM5'})); pserial=serial('COM5','BaudRate',9600 ); fopen(pserial); fs=1; A=100; y=zeros(A,1); t=linspace(0,(A-1)/fs,A); l1=line(nan,nan,'color','r');
3
UFPS. Ing. Electromecánica. Comunicaciones Industriales
CONCLUSIONES.
Diagrama de conexión entre el Arduino y el max6675
Se comprobó que la comunicación serial SPI solo se da entre el max6675 y el Arduino, entre el Arduino y Matlab se dispone es a llamar el puerto para la toma de datos y disponer de una programación adecuada para graficar en tiempo real Se observó experimentalmente la toma de muestras comprobando que la programación corresponde a lo que sería el valor de la temperatura real Se hizo difícil la graficacion en tiempo real la toma de muestras por lo que es necesario acudir a comando especiales que ejecuta el software de Matlab aplicando condicionales lo que nos hizo posible el muestreo en tiempo real.
REFERENCIAS BIBL IOGRAFICAS. http://www.esi2.us.es/~jaar/Datos/RegAuto/Practica1.pdf https://es.wikipedia.org/wiki/Serial_Peripheral_Interface www.arduino.cc
Figura 2 Diagrama de conexiones Arduino, Max6675
Se procedió a tomar muestras con un cautín para elevar la temperatura y posteriormente se colocó en un hielo observando que responde de acuerdo a lo que se espera que baje la temperatura de modo gradual.
Figura 8: muestras de temperatura tomadas por el termopar tipo k, graficadas en el software Matlab
4