You are on page 1of 4

UFPS. Ing. Electromecánica.

Comunicaciones Industriales

Sistema de comunicación entre Arduino y Matlab para medir


temperatura utilizando comunicación SPI
Andderson Eduardo Fuentes Guerrero, estudiante 1090791
anddersoneduardofg@ufps.edu.com
Jhon Jairo Rodríguez Gómez, estudiante 1090888
jhonjairorg@ufps.edu.com

RESUMEN: En este informe mediremos la a cualquier microcontrolador a través de una


temperatura en un ambiente deseado por medio de un interfaz SPI unidireccional. Dentro de este
termopar tipo K conectado al módulo interfaz MAX6675 pequeño circuito se encuentra la electrónica
que me envía los datos a la plataforma Arduino necesaria para amplificar, compensar y convertir a
comunicado por la interfaz SPI unidireccional, se digital el voltaje generado por el termopar, lo que
comunica el Arduino al software Matlab donde se
programa para que este reciba los datos generados por
hace muy sencilla la tarea de conectar un termopar
el Arduino y así realizar una gráfica en tiempo real. a un microcontrolador. 
SPI El Bus SPI (del inglés Serial Peripheral
PALABRAS CLAVE: Interfaz, modulo, SPI, termo Interface) es un estándar de comunicaciones,
par tipo k usado principalmente para la transferencia de
información entre circuitos integrados en equipos
ABSTRACT: In this report we will measure the electrónicos. El bus de interfaz de periféricos serie
temperature in a desired environment by means of a K- o bus SPI es un estándar para controlar casi
type thermocouple connected to the interface module
MAX6675 that sends the data to the Arduino platform
cualquier dispositivo electrónico digital que acepte
communicated by the unidirectional SPI interface, the un flujo de bits serie regulado por un reloj
Arduino is communicated to the Matlab software where it (comunicación sincrónica).
is programmed so that This receives the data generated Incluye una línea de reloj, dato entrante, dato
by the Arduino and thus make a graph in real time. saliente y un pin de chip select, que conecta o
desconecta la operación del dispositivo con el que
KEYWORDS: Interface, module, SPI, term k type uno desea comunicarse. De esta forma, este
. estándar permite multiplexar las líneas de reloj.

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.
. Figura 1: diagrama de comunicación entre maestro esclavo
2 OBJETIVOS utilizado en el protocolo SPI

Operación
 Interpretar como funciona la comunicación SPI El SPI es un protocolo síncrono. La
maestro/esclavo sincronización y la transmisión de datos se realiza
por medio de 4 señales:
SCLK (Clock): Es el pulso que marca la
3 MARCO TEÓRICO
sincronización. Con cada pulso de este reloj, se lee
Arduino es una plataforma de prototipos o se envía un bit. También llamado TAKT (en
electrónica de código abierto (open-source) Alemán).
basada en hardware y software flexibles y fáciles MOSI (Master Output Slave Input): Salida de
de usar. Está pensado para artistas, diseñadores, datos del Master y entrada de datos al Slave.
como hobby y para cualquiera interesado en crear También llamada SIMO.
objetos o entornos interactivos. MISO (Master Input Slave Output): Salida de
El MAX6675 es un convertidor Analógico a digital datos del Slave y entrada al Master. También
especializado para termopares tipo K. Con este conocida por SOMI.
módulo es posible conectar fácilmente un termopar

1
UFPS. Ing. Electromecánica. Comunicaciones Industriales

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 title('TEMPERATURA VS MUESTRAS');


no tendrá un control automático de la línea SS. xlabel('Muestra');
Este debe ser manejado por software antes de que ylabel('Temperatura');
la comunicación pueda empezar, cuando esto es ylim([0 100]);
realizado, escribiendo un byte en el registro de la xlim([0 (A-1)/fs]);
SPI comienza el reloj de la SPI, y el hardware grid
cambia los 8 bits dentro del Esclavo. Después de
cambiar un Byte, el reloj del SPI para, habilitando Stop=1;
el fin de la transmisión ( SPIF ). Si la interrupción uicontrol('style','pushbutton','string
del SPI está habilitado (SPIE) en el registro SPCR, ','parar','callback','stop=y(end);');
una interrupción es requerida. El Master podría
continuar al cambio del siguiente byte escribiendo tic
dentro del SPDR, o señalizar el fin del paquete while Stop
colocando en alto el Esclavo seleccionado, línea if toc> 1/fs
SS. El último byte llegado se mantendrá en el tic
registro Buffer para luego usarse. y(1:end-1)=y(2:end);
Cuando lo configuramos como un Esclavo, la y(end)=fscanf(pserial,'%e');
interfaz ISP permanecerá durmiendo con MISO en set(l1,'XData',t,'YData',y)
tres-estados siempre y cuando el pin SS este
deshabilitado. En este estado, por el software se
drawnow
podría actualizar el contenido del registro SPDR,
end
pero los datos no serán desplazados por la llegada
end
del pulso de reloj en el pin 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 el comando se inicia llamando el puerto a donde
interrupción SPI, SPIE en SPCR, está habilitada, está conectado el Arduino para el caso (COM5) y
una interrupción es solicitada. El Esclavo podría se manda a iniciar la comunicación entre Arduino y
continuar para colocar nuevos datos para ser Matlab con (fopen), a continuación se establece
enviados dentro del SPDR antes de seguir leyendo (fs) que es la frecuencia de muestreo, (A) es el
la data que va llegando. El último byte que entra rango de muestras en el tiempo donde matlab
permanecerá en el buffer para luego usarse. muestra una gráfica y se visualiza las últimas 100
(MSTR en SPCR es seteado), el usuario puede muestras medidas en tiempo real, se utiliza el
determinar la dirección del pin SS. comando linspace que funciona de la siguiente
Si SS es configurado como salida, el pin es una manera ‘x=linspace(a,b,n) Genera un vector n
salida general la cual no afecta el sistema SPI. puntos desde a hasta b, cuyos componentes están
Típicamente, el pin SS será manejado desde el espaciados linealmente’ referenciado de Matlab
Esclavo. para ingenieros
Si es como entrada, este debe ser enviado a alto Conociendo el principio del comando (t) toma
para asegurar la operación SPI del Master. valores de (A) puntos ‘100’ que inicia en ,(A-
1)/fs hasta (A), a continuación se plantean
 Programación de Matlab características generales para la gráfica y con el
bucle (while) se configura para que las muestras
clear all;clc;close all; se inicien desde el lado derecho y almacene en la
gráfica la toma de datos de la temperatura
delete(instrfind({'Port'},{'COM5'})); anteriores.
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

 Diagrama de conexión entre el Arduino y el CONCLUSIONES.


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 BIBLIOGRAFICAS.
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

You might also like