El sensor de temperatura digital DS18B20 (datasheet) es un sensor de alta precisión de ±0.5ºC, que no requiere muchos componentes externos y de aceptable rango de temperatura de trabajo -55ºC hasta +125ºC. Además posee una resolución programable de 9 a 12 bits, configuración de alarma de temperatura no-volátil y se puede conectar hasta 128 esclavos en paralelo. Es muy utilizado en aplicaciones como: Control de Termostatos, Sistemas Industriales, temperatura de productos de consumo, sistemas térmicos, etc.
Este sensor DS18B20 es muy utilizado en la Industria ya que es digital y es prácticamente imune al ruido y pueden tomarse 2 muestras cada 1.5 segundos. Para poder enviar y recibir datos del sensor DS18B20 es necesario utilizar el protocolo de comunicación OneWire (1 Linea), y además conocer los registro involucrados y la secuencia de comandos para poder leer la temperatura a este sensor. A continuación se muestra algunos registro involucrados:
CARACTERÍSTICAS DEL SENSOR DS18B20:
- Interfaz OneWire (1 Linea).
- No requiere componentes externos.
- Memoria ROM de 64Bits.
- Alimentación: 3.0v – 5.0v.
- Temperatura desde: -55°C – 125°C.
- ±0.5°C de Presición en el rango de: -10°C – 85°C.
- Resolución configurable de 9,10,11,12 bits.
- Tiempo de conversión de 750ms (max).
MAPA DE MEMORIA.
La secuencia para la lectura de temperatura del sensor DS18B20 puede ser extensa y tediosa, pero gracias a que existe ejemplos y librerías en Arduino todo se hace más sencillo.
EJEMPLO.
#include
#include
// Define el pin que se utiliza como sensor
#define ONE_WIRE_BUS 2
// Configura y carga el pin sensor al protocolo OneWire.
OneWire oneWire(ONE_WIRE_BUS);
// Pasa como referenia el pin sensor a libreria Dallas.
DallasTemperature sensors(oneWire);
void setup(void){
// Configura el Puerto Serial.
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
// Configura e inicializa OnWire y Dallas library.
sensors.begin();
delay(1000);
}
void loop(void){
// Envia comando y prepara al sensor para ser Leido.
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Envia comando para lectura.
Serial.println("DONE");
// Lee la temperatura en Grados Celcius.
Serial.print("Grados Celcius");
Serial.println(sensors.getTempCByIndex(0));
// Lee la temperatura en Grados Celcius.
Serial.print("Grados Faharenheit");
Serial.println(sensors.getTempFByIndex(0));
}
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.