Hay varios sensores de humedad y temperatura disponibles, como el LM35. Algunos integrados en mĂłdulos para su uso especĂfico con Arduino. Pero por lo general, son para medir temperatura en seco, es decir, temperatura del aire. Pero existe un modelo concreto que funciona para medir temperatura en lĂquidos y se llama DS18B20. Una peculiaridad que quizás te venga bien para algunos de tus proyectos de DIY más exĂłticos donde juegues tambiĂ©n con algĂşn tipo de lĂquido del que necesitas conocer este parámetro.
Realmente el DS18B20 no mide solo temperatura dentro de lĂquidos, sino que puede ser muy Ăştil para medir temperatura en ambientes hĂşmedos y tambiĂ©n bajo algĂşn lĂquido. AsĂ que tambiĂ©n lo podrás usar para medir la temperatura de aire si el entorno está bastante cargado de humedad. Y como digo, la caracterĂstica de poderlo sumergir en un lĂquido para que mida su temperatura es una de las caracterĂsticas que lo hacen increĂblemente práctico.
¿Qué es el DS18B20?
Bueno, creo que ya ha quedado bastante claro, es un sensor electrĂłnico capaz de medir la temperatura de medios gaseosos o lĂquidos. Además, existen diferentes encapsulados o empaquetados del DS18B20, como por ejemplo el básico que ves en la imagen principal, o tambiĂ©n puede venir integrado en algunos PCBs, sondas sumergibles, etc. Para tu proyecto deberĂas elegir el formato más adecuado segĂşn lo que quieras.
Por ejemplo, aparte de los tĂpicos TO-92, existe tambiĂ©n el microSOP. Posiblemente para integrar con Arduino el más apropiado sea el TO-92, ya que con sus tres pines es muy sencillo de insertar en el protoboard para su conexiĂłn.
Pinout
El pinout del DS18B20 es sencillo de identificar. Por ejemplo, tomando como referencia el encapsulado TO-92 de Dallas, que es uno de los más populares, podrás ver que tiene tres pines o patillas. Si lo pones de frente, es decir, con la secciĂłn redondeada hacia atrás y mirando la cara plana donde aparecen las inscripciones, el pin que tienes a tu izquierda es el 1 y el de tu derecha el 3. Por tanto, el 1 serĂa para GND o tierra, el 2 es el de datos y el 3 el de voltaje de alimentaciĂłn.
AquĂ tenemos que decir que, los valores que debes conocer:
- Pin 1: debes conectarlo al pin GND de Arduino, es decir, a 0v.
- Pin 2: este pin es DQ o de datos, el que enviará las temperaturas medidas por el sensor a Arduino a través de un protocolo particular conocido como 1-Wire y que necesitará de unas funciones y biblioteca especial para Arduino IDE. Eso permitirá usar solo un pin de Arduino para conectar varios sensores con este protocolo…
- Pin 3: puede alimentarse de 3 a 5,5v, asĂ que puedes conectarlo a la salida de 5v de Arduino.
CaracterĂsticas tĂ©cnicas del DS18B20 y datasheet
Como siempre, es interesante conocer las caracterĂsticas tĂ©cnicas del sensor para saber cĂłmo funciona, para no dañarlo, y sobre todo para que sepamos dĂłnde están sus lĂmites de mediciĂłn, ya que si los valores que queremos medir no se encuentran entre ellos no nos servirá y deberĂas buscar otra alternativa.
Para ello, lo mejor es que descargues un datasheet del fabricante, como el de Dallas que puedes ver aquĂ. AllĂ encontrarás toda la informaciĂłn necesaria. Y recuerda que aunque todos los DS18B20 puedan ser similares, segĂşn el fabricante o encapsulado podrĂas encontrar algunos cambios…
Pero independientemente de las peculiaridades, aquà tienes algunos datos técnicos básicos:
- Rango de temperatura: -55 a 125ÂşC, por tanto, puede medir en gas o lĂquido a temperaturas muy bajas y tambiĂ©n elevadas.
- Errores: el DS18B20 es sensible a ruido externo o alteraciones que pueden dar valores errĂłneos en las mediciones. El margen de error es de más menos 2ÂşC, aunque a temperaturas entre -10ÂşC y 85ÂşC, es decir, cuando no estamos cerca de los lĂmites, podrĂa ser de solo medio grado.
- ResoluciĂłn: puedes trabajar con varias resoluciones o variaciones mĂnimas que puedas detectar con los pines analĂłgicos de Arduino. Admite 9-bit, 10-bit, 11-bit y 12-bit (por defecto). Es decir, puede medir de medio en medio grado, de un cuarto en un cuarto de grado, de 0,125 en 0,125ÂşC, o de 0,0625ÂşC respectivamente. Puedes alterar esta programaciĂłn a travĂ©s del cĂłdigo de programaciĂłn.
- Voltaje de alimentaciĂłn: 3 a 5,5v
- Precio: 1 a 3€
IntegraciĂłn con Arduino
Aunque hay varias formas de conectarlo, la más adecuada es la que ves en este esquema. Es bastante simple, con el pin GND en la conexión correspondiente de la placa Arduino, el de alimentación igual y luego el de datos al analógico de Arduino que hayas elegido en tu código de programación en Arduino IDE. Pero también es bueno configurar una resistencia pull-up de 4,7k (si la distancia del cable de la sonda del sensor es mayor, la resistencia debe ser más baja, por ejemplo, para 5m de 3,3k, para 10 de 2,2k,…) para el pin de datos y asà mantenerlo siempre en alto.
Para la programaciĂłn en Arduino IDE y su buena integraciĂłn con el DS18B20 y ese protocolo tan particular, es recomendable que bajes las bibliotecas Dallas Temperature y OneWire desde el entorno. Y el cĂłdigo base, podrĂa ser algo asĂ como este ejemplo que muestro:
#include <OneWire.h> #include <DallasTemperature.h> // Pin donde se conecta el bus 1-Wire (DQ) const int pinDatosDQ = 9; // Instancia a las clases OneWire y DallasTemperature OneWire oneWireObjeto(pinDatosDQ); DallasTemperature sensorDS18B20(&oneWireObjeto); void setup() { // Iniciamos la comunicación serie a 9600 baudios Serial.begin(9600); // Iniciamos el bus 1-Wire del sensor sensorDS18B20.begin(); } void loop() { // Indicamos que tome la temperatura Serial.println("Midiendo temperatura"); sensorDS18B20.requestTemperatures(); // Lee y muestra la temperatura (recuerda que puedes conectar más de uno con 1-wire) Serial.print("La temperatura del sensor 0 es de: "); Serial.print(sensorDS18B20.getTempCByIndex(0)); Serial.println(" C"); Serial.print("La temperatura del sensor x es de: "); Serial.print(sensorDS18B20.getTempCByIndex(1)); Serial.println(" ºC"); delay(1000); }
Más inforamción – Manual de programación de Arduino (PDF gratis)