Sensor de temperatura digital (Previsualizar)

Primero debes completar Sensor de luz LDR y divisor de tensión antes de ver esta lección

Introducción

El sensor digital de temperatura DS18B20 es un pequeño integrado para medir temperatura en tus proyectos. Es un sensor muy preciso, presenta un error de ±0.5°C y puede dar hasta 12 bits de precisión en el convertidor analógico-digital de la placa. Funciona muy bien con microcontroladores cuyo sistema va de 3 a 5V, se conecta a un pin digital, pudiendo incluso conectar varios sensores de temperatura DS18B20 al mismo pin.

ds18b20

Para funcionar, utiliza un protocolo no estándar que no forma parte del núcleo de Arduino. Por suerte, existe una librería externa para Arduino IDE, así que aprender a usarlo es muy fácil.

Explora

Librerías OneWire y DallasTemperature

Para descargar la librería DallasTemperature, vamos a su web y descargamos la última versión disponible de Temperature Control Library (TCL) bajo “Latest”.

http://www.milesburton.com/?title=Dallas_Temperature_Control_Library#Download

Descarga librería Dallas DS18B20

Más abajo, en la misma web, podemos descargar la librería OneWire, bajo el título de “One Wire Library”.

Descarga librería OneWire 2

Instala las librerías en tu directorio de librerías de Arduino IDE. Para ello, en Arduino IDE, Programa > Importar Librería… > Añadir librería… y selecciona el archivo zip descargado. Haz esto para las dos librerías.

Para comprobar que se han importado correctamente, puedes ir a Archivo > Ejemplos, y al final de la lista de ejemplos debes encontrar dos nuevas categorías: dallas-temperature-control y OneWire.

ds18b20-ide-ejemplo

Midiendo temperatura con el DS18B20

Para conectar el DS18B20 a Arduino construimos el circuito:

DS18B20 circuito

En Arduino IDE, vamos a Archivo > Ejemplos > dallas-temperature-control > Simple

 

El bloque de líneas antes de llegar a setup() es necesario para usar el DS18B20.

#include <OneWire.h>
#include <DallasTemperature.h>
 
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2
 
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
 
// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

De este bloque es importante que encontremos la línea #define ONE_WIRE_BUS 2, que define el pin al que se conectan los DS18B20. En nuestro caso lo hemos conectado al pin 2, así que podemos dejarlo como está.

void setup(void)
{
  // start serial port
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");

  // Start up the library
  sensors.begin();
}

Para inicializar el Dallas DS18B20 tan sólo tenemos que incluir la línea sensors.begin(); en nuestra función setup(). El resto de sentencias inicializan el monitor serie, donde obtendremos los datos de temperatura.

void loop(void)
{ 
  // call sensors.requestTemperatures() to issue a global temperature 
  // request to all devices on the bus
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.println("DONE");
  
  Serial.print("Temperature for the device 1 (index 0) is: ");
  Serial.println(sensors.getTempCByIndex(0));  
}

Por último, hay dos sentencias que debemos conocer para obtener la temperatura del sensor. Por una parte, debemos “capturar” los datos de temperatura haciendo uso de la sentencia sensors.requestTemperatures(). Una vez ejecutada esta sentencia, podemos leer los datos obtenidos con sensors.getTempCByIndex(0), lo que nos dará la temperatura del primer sensor encontrado en el bus (que no tiene por qué ser el primero del hilo). Para encontrar la temperatura de otros sensores podemos ir incrementando 0 a 1, 2…

El resultado de la función sensors.getTempCByIndex() lo podemos guardar en una variable para operar con él, aunque en el ejemplo se envía directamente el dato al puerto serie.

Sigue explorando

Construye un termostato

Utilizando un LED para simular un ventilador, diseña un termostato para el DS18B20 en el que a partir de cierta temperatura se active el “ventilador”, y se desactive al volver a bajar.

Sistema completo de frío-calor

Añade otro LED más al circuito anterior y, con dos umbrales, diseña el termostato de un sistema completo de calefacción y ventilación, encendiendo el “ventilador” cuando la temperatura sea muy alta y activando la “calefacción” cuando sea demasiado baja. Ten en cuenta que habrá una zona intermedia en la que no sea necesario activar ninguno de los dos dispositivos.

©2017 Fábrica Digital desde Jerez de la Frontera, España.

956 05 77 07 (llamadas) / 717 717 452 (Whatsapp) / hola@fabricadigital.org

De Lunes a Viernes de 9 a 13h y de 14 a 18h. Sábados de 10 a 14h.

Calle Manuel Yélamo Crespillo, Edif. Los Ramos, 11401 Jerez de la Frontera, Cádiz. - Cómo llegar

Información Legal - Aceptamos

 

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?

Create Account