Powered By Blogger

miércoles, 21 de febrero de 2018

Monitoreo de Temperatura con MATLAB y ARDUINO

En esta practica consiste en monitorear la temperatura obtenida del sensor DS18B20 en MATLAB utilizando como tarjeta de adquisición de datos a la placa ARDUINO.

Material:

Placa ARDUINO (Cualquier modelo).
Sensor DS18B20
Resistor de 4.7 kΩ
Protoboard
Cables para conexión


El sensor a utilizar en esta practica es el dallas temperature DS18B20, este sensor tiene la peculiaridad para su comunicación ya que utiliza la librería One Wire y  la libreria Dallas temperature esto nos permite conectar varios sensores de este mismo modelo en la misma linea de señal y evita el uso de varios pines de conexión.

Características:
Sensor Digital.
Resolución de 9 y 12 bits
Rango de operación de -50 a 125 grados Centígrados.
Precisión +- 0.5 grados.
Protocolo OneWire.



Figura 1. Sensor DS18B20.

Figura 2. Sensor DS18B20 en modelo a prueba de agua.

Como primer paso vamos a realizar la conexion de nuestro sistema en la protoboard, en la siguiente figura se muestra la representación sugerida.




Figura 3. Conexión el protoboard.

Abrimos ARDUINO IDE y cargamos el siguiente sketch a la placa ARDUINO (previo a esto es necesario tener instaladas la librerías mencionadas anteriormente).

#include <OneWire.h>                 //Se importan las librerías
#include <DallasTemperature.h>
#define Pin 2                        //Se declara el pin donde se conectará la DATA
OneWire ourWire(Pin);                //Se establece el pin declarado como bus para la comunicación OneWire
DallasTemperature sensors(&ourWire); //Se llama a la librería DallasTemperature

void setup() {
delay(1000);
Serial.begin(9600);
sensors.begin();                     //Se inician los sensores
}
 
void loop() {
sensors.requestTemperatures();       //Prepara el sensor para la lectura
 
Serial.print(sensors.getTempCByIndex(0)); //Se lee e imprime la temperatura en grados Centigrados
Serial.println(" Grados Centigrados");
 
delay(1000);                         //Se provoca una parada de 1 segundo antes de la próxima lectura
 
}



 En tercer paso creamos un nuevo script en MATLAB y creamos en siguiente codigo:

clear all;clc; % limpia la ventana de comandos
delete(instrfind({'port'},{'COM3'})); % cierra toda conexion serial con el puerto com1
pserial=serial('COM3','BaudRate',9600); % configura la conexion serial
fopen(pserial); % abrir puerto serial
figure('Name','Grafica de valores obtenidos')
title('LECTURA EN TIEMPO REAL DEL SENSOR');
lHandle = line(nan, nan);
xlabel('Muestreo c/d 100m/s');
ylabel('la temperatura es ');
val=zeros(1,50);
for i=1:50
ylim([0 400.1]);
xlim([i-100 i+10]);
lectura=fscanf(pserial,'%d');
val(i)= lectura;%*100*5/1024;
hold on
plot(i,val(i),'x');
drawnow
end
dlmwrite('Valores_Obtenidos.dat', val, 'delimiter', '\n', 'precision', '%.2f')
fclose(pserial);
delete(pserial);

clear all;





No hay comentarios:

Publicar un comentario