Una de las maneras más fáciles y baratas de añadir la detección de la temperatura en su proyecto Arduino es utilizar DS18B20 1-Wire Temperature Sensor. Estos sensores son bastante precisos y no necesitan componentes externos para funcionar. Por lo tanto, con sólo unas pocas conexiones y un poco de código Arduino estarás detectando la temperatura en poco tiempo!

DS18B20 1-Wire Temperature Sensor

DS18B20 es un sensor de temperatura de interfaz 1-Wire fabricado por Dallas Semiconductor Corp. La única interfaz 1-Wire® requiere sólo un pin digital para la comunicación bidireccional con un microcontrolador.

El sensor viene generalmente en dos factores de forma. Uno que viene en el paquete TO-92 se ve exactamente como un transistor ordinario. Otro en un estilo de sonda a prueba de agua que puede ser más útil cuando se necesita medir algo lejos, bajo el agua o bajo el suelo.

Tipos de sensor de temperatura DS18B20

El sensor de temperatura DS18B20 es bastante preciso y no necesita componentes externos para funcionar. Puede medir temperaturas de -55°C a +125°C con una precisión de ±0,5°C.

La resolución del sensor de temperatura es configurable por el usuario a 9, 10, 11 o 12 bits. Sin embargo, la resolución por defecto en el encendido es de 12 bits (es decir, 0,0625°C de precisión).

El sensor puede ser alimentado con una fuente de alimentación de 3V a 5,5V y consume sólo 1mA durante las conversiones de temperatura activas.

Aquí están las especificaciones completas:

Fuente de alimentación 3V a 5.5V
Consumo de corriente 1mA
Rango de temperatura -55 a 125°C
Exactitud ±0.5°C
Resolución 9 a 12 bits (seleccionable)
Tiempo de conversión < 750ms

Múltiples DS18B20 en un solo bus

Una de las mayores ventajas del DS18B20 es que pueden coexistir múltiples DS18B20 en el mismo bus de 1cable. Como cada DS18B20 tiene un código de serie único de 64 bits grabado en fábrica, es más fácil diferenciarlos entre sí.

Esta característica puede ser una gran ventaja cuando se quieren controlar muchos DS18B20s distribuidos en un área grande.

Para saber cómo leer la temperatura de múltiples sensores de temperatura DS18B20, por favor revisa este tutorial.

Interfaz de múltiples sensores digitales de temperatura DS18B20 con Arduino

Una de las mayores ventajas de DS18B20 es que múltiples DS18B20 pueden coexistir en el mismo bus de 1-Wire. Como cada DS18B20 tiene un único 64 bits…

DS18B20 Sensor Pinout

GND es un pin de tierra.

DQ es el bus de datos de 1-Wire debe ser conectado a un pin digital en el microcontrolador.

El pin VD suministra energía para el sensor que puede estar entre 3,3 y 5V.

Conexión del sensor de temperatura DS18B20 a Arduino

¡Basta de teoría, vamos a la práctica! Vamos a conectar el DS18B20 al Arduino.

Las conexiones son bastante sencillas. Comienza conectando VDD al pin de salida de 5V en Arduino y GND a tierra.

A continuación, conecta el pin de señal digital restante DQ al pin digital 2 en arduino. También tendrás que añadir la resistencia pull-up de 4,7k entre la señal y el pin de alimentación para mantener la transferencia de datos estable. (Los pull-ups internos en el arduino no funcionan)

Tenga cuidado de poner el DS18B20 al revés. Si lo pones al revés, se calentará y se romperá.

Conexión del sensor de temperatura DS18B20 a Arduino

Si estás usando la versión resistente al agua del DS18B20, conecta la franja Roja a 5V, la Negra se conecta a tierra y la Franja Amarilla son los datos que van al pin digital 2 de arduino. Todavía tienes que conectar una resistencia pullup de 4,7K de los datos a 5V.

Conexión del sensor de temperatura DS18B20 impermeable a Arduino

Instalación de la librería para el DS18B20

El protocolo Dallas 1-Wire es algo complejo, y requiere un montón de código para analizar la comunicación. Para ocultar esta complejidad innecesaria vamos a instalar la biblioteca DallasTemperature.h para que podamos emitir comandos simples para obtener las lecturas de temperatura del sensor.

Para instalar la biblioteca navegue hasta el Sketch > Incluir Biblioteca > Gestionar Bibliotecas…Espere a que el Administrador de Bibliotecas descargue el índice de bibliotecas y actualice la lista de bibliotecas instaladas.

Filtre su búsqueda escribiendo ‘ds18b20’. Debería haber un par de entradas. Busca DallasTemperature de Miles Burton. Haga clic en esa entrada, y luego seleccione Instalar.

Esta biblioteca de Dallas Temperature es una biblioteca específica de hardware que maneja funciones de nivel inferior. Necesita ser emparejada con One Wire Library para comunicarse con cualquier dispositivo de un solo cable, no sólo con el DS18B20. Instala esta librería también.

Código Arduino

El siguiente sketch te dará una comprensión completa de cómo leer las lecturas de temperatura del sensor de temperatura DS18B20 y puede servir como base para más experimentos y proyectos prácticos.

#include <OneWire.h>#include <DallasTemperature.h>// Data wire is plugged into digital pin 2 on the Arduino#define ONE_WIRE_BUS 2// Setup a oneWire instance to communicate with any OneWire deviceOneWire oneWire(ONE_WIRE_BUS);// Pass oneWire reference to DallasTemperature libraryDallasTemperature sensors(&oneWire);void setup(void){ sensors.begin();// Start up the library Serial.begin(9600);}void loop(void){ // Send the command to get temperatures sensors.requestTemperatures(); //print the temperature in Celsius Serial.print("Temperature: "); Serial.print(sensors.getTempCByIndex(0)); Serial.print((char)176);//shows degrees character Serial.print("C | "); //print the temperature in Fahrenheit Serial.print((sensors.getTempCByIndex(0) * 9.0) / 5.0 + 32.0); Serial.print((char)176);//shows degrees character Serial.println("F"); delay(500);}

Así es como se ve la salida en el monitor serial.

Explicación del código:

El sketch comienza incluyendo las librerías OneWire.h y DallasTemperature.h y declarando el pin de Arduino al que se conecta el pin de señal del sensor.

#include <OneWire.h>#include <DallasTemperature.h>#define ONE_WIRE_BUS 2

A continuación creamos un objeto one-wire pasando el pin de señal del sensor a su constructor. Este objeto monocable nos permite comunicarnos con cualquier dispositivo monocable, no sólo con el DS18B20. Para comunicarnos con el sensor DS18B20, necesitamos crear un objeto de la librería DallasTemperature y pasar la referencia del objeto one-wire como parámetro.

OneWire oneWire(ONE_WIRE_BUS);DallasTemperature sensors(&oneWire);

Una vez creado el objeto DallasTemperature, podemos emitir los siguientes comandos simples para interactuar con el sensor.

  • begin() función busca los sensores conectados en el bus y establece la resolución de bits (12 bits) para cada uno.
  • requestTemperatures() función envía el comando para todos los sensores en el bus para realizar una conversión de temperatura.
  • getTempCByIndex(deviceIndex) función lee y devuelve la lectura de la temperatura del sensor. deviceIndex no es más que la ubicación del sensor en el bus. Si usted está usando sólo un DS18B20 en el bus, establecerlo en 0.

Otras funciones útiles en DallasTemperature.h library

Hay algunas funciones útiles que puede utilizar con el objeto DallasTemperature. Algunas de ellas se enumeran a continuación:

  • setResolution() La función establece la resolución del convertidor analógico-digital interno del DS18B20 a 9, 10, 11 o 12 bits, correspondientes a incrementos de 0,5°C, 0,25°C, 0,125°C y 0,0625°C, respectivamente.
  • bool getWaitForConversion() La función devuelve el valor de la bandera waitForConversion. Puede ser útil cuando se quiere comprobar si una conversión de temperatura se ha completado.
  • setHighAlarmTemp() & setLowAlarmTemp() función establece las alarmas internas de alta & baja temperatura para un dispositivo en grados Celsius. El rango válido es de -55 a 125°C
  • bool hasAlarm() La función devuelve true si el dispositivo tiene una condición de alarma cuando la temperatura excede la configuración de la alarma de alta & baja.

admin

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

lg