Mida la temperatura del agua con Arduino Uno: Sensor DS18B20

Última actualización el 1 de noviembre de 2023 por

En este tutorial, usaremos un DS18B20 para mostrar la temperatura del agua con Arduino Uno en un monitor en serie y controlar el brillo del LED según la temperatura. Este DS18B20 tiene amplias aplicaciones en entornos de control de temperatura. Se utiliza principalmente en termómetros y dispositivos portátiles para mantener actualizada la temperatura.

DS18B20 descripción

El DS18B20 es un componente o subsistema analógico utilizado por varios dispositivos para realizar un seguimiento de la temperatura.

Consiste en un circuito análogo que se diferencia con respecto a la temperatura y, como resultado, proporciona voltaje. Se comunica por un cable, significa que envía y recibe datos desde el mismo cable, esto sucede asignando tiempo para enviar y recibir datos.

La importancia de este sensor en el campo electrónico se debe a su ensamblaje a prueba de agua; normalmente viene con un cable largo y una parte superior de detección a prueba de agua.

Principio de funcionamiento de DS18B20

El circuito del sensor de temperatura DS18B20 convierte la temperatura analógica en voltaje digital.

La comunicación funciona a nivel de bits, en el que el controlador junto con su interfaz lee y escribe bits separados en un cable. Tiene una dirección única de 64 bits que le permite utilizar múltiples sensores en un cable.

Cuando el sensor recibe el comando de temperatura, convierte la temperatura interna a un valor digital de 12 bits según la resolución establecida para el sensor.

Este sensor de temperatura puede leer desde -55°C a +125°C.

El DS18B20 viene en 2 formatos diferentes, ambos funcionan de la misma manera: formato chip y cable impermeable. El cable resistente al agua le permite medir la temperatura del agua ya que puede sumergir el sensor en agua.

Tipos y sensores DS18B20

Lo que necesitamos

Como siempre, te sugiero agregar desde ahora al carrito de compras de tu e-commerce favorito todo el hardware necesario, para que al final puedas evaluar los costos generales y decidir si continuar con el proyecto o eliminarlos del carrito de compras. Entonces, el hardware será solo:

Procedimiento paso a paso

Diagrama de cableado del sistema de temperatura del agua con Arduino Uno y DS18B20

El DS18B20 requiere tres pines para conectarse con el microcontrolador, según Arduino UNO Pinout.

En el sensor de temperatura, hay 3 PIN: GND, Datos y VCC.

Los pines GND y VCC del sensor deben conectarse a GND y 5V de Arduino Uno respectivamente. El PIN de datos se conecta con el pin 10 de Arduino Uno.

El LED adicional proporciona información sobre la temperatura. El ánodo se conecta con el pin 5 de Arduino, mientras que el cátodo se conecta con GND con la resistencia.

sensor DS18B20ArduinoLED
Pin 1 (lado derecho) Tierra Pin 1 (con resistencia)
clavija 10
5V
clavija 5 Pin 2
3

Descripción de la conexión del cableado para sensor de inclinación, LED y zumbador

A continuación encontrará una imagen que muestra el sensor de temperatura, el LED y el diagrama de cableado de Arduino Uno:

Diagrama de cableado Sensor de temperatura DS18B20 con Arduino y otros componentes Cableado del sensor de cable largo de DS18B20 con Arduino Uno

Obtenga el código para el sensor de temperatura DS18B20 con Arduino

Conecte su PC a Arduino y abra Arduino IDE. Para conocer los primeros pasos, puede consultar el tutorial Conexión de una PC con Windows con Arduino. Puedes obtener el código .ino desde mi área de descargas con el siguiente enlace:

También necesita instalar las siguientes bibliotecas, de acuerdo con mi tutorial Instalar bibliotecas Arduino: métodos para agregar bibliotecas con Arduino IDE.

Explicación del código

Sección 1: Antes de la configuración

En esta sección, adjuntamos la biblioteca OneWire, ya que este sensor de temperatura funciona con un solo cable, mientras que la biblioteca DallasTemperature admite los comandos del sensor.

El sensor de temperatura está configurado para funcionar en el pin 10, por lo que su instancia crea una interfaz.

El LED se configura en el pin analógico 5 para proporcionar valores analógicos para el control de brillo más adelante.

#include <OneWire.h> #include <DallasTemperature.h> // Create a OneWire instance to communicate with the DS18B20 temperature sensor OneWire oneWire(10); // Create a DallasTemperature instance to interface with the OneWire bus DallasTemperature sensor(&oneWire); // Define the pin connected to the LED int LED = 5;

Sección 2: En la configuración

En la configuración, configuramos la velocidad en baudios del monitor serie en 9600.

Luego, inicializamos el sensor como sus instancias ya creadas antes de la configuración. También configuramos el LED como salida mediante pinMode.

void setup(void) {   // Start serial communication with a baud rate of 9600   Serial.begin(9600);   delay(2);   // Initialize the DallasTemperature sensor library   sensor.begin();   delay(20);   // Set the LED pin as an output pin   pinMode(LED, OUTPUT); }

Sección 3: Sección de bucle

Esta es la sección del bucle principal.

Comienza solicitando la lectura de temperatura, dada por el sensor. Después de que el sensor de temperatura devuelva el valor, que leemos mediante los comandos gettempCbyIndex(0). lo que significa que la temperatura en grados centígrados con cero puntos decimales, si se requiere una temperatura más precisa que cero, se puede cambiar.

void loop(void) {   // Request temperature readings from the DS18B20 sensor   sensor.requestTemperatures();   // Print the temperature in Celsius to the serial monitor   Serial.print("Temperature is: ");   delay(10);   // Read the temperature value in Celsius from the sensor   int value = sensor.getTempCByIndex(0);

El valor de temperatura se imprime en serial.println (valor), el valor del sensor de temperatura se asigna de 0 a 255 para dárselo al brillo del LED.

  // Print the temperature value to the serial monitor   Serial.println(value);   // Map the temperature value to LED brightness range (from -127°C to 125°C to 0-255 brightness)   int ledbrightness = map (value, -55 125, 0, 255);   // Print the mapped LED brightness value to the serial monitor   Serial.println(ledbrightness);

La escritura analógica (LED, brillo del LED) proporciona de 0 a 255 PWM al LED.

  // Set the LED brightness based on the mapped temperature value   analogWrite(LED, ledbrightness);      // Delay for 1 second before taking the next temperature reading   delay(1000); }

Resultados midiendo la temperatura del agua con Arduino Uno

Aquí están los resultados para el sensor de temperatura del agua y Arduino Uno, interconectados con el LED.

Las siguientes imágenes muestran pruebas de temperatura para -54, 0, 50 y 125 grados. En función de la temperatura aumenta el brillo del LED.

El monitor en serie muestra la temperatura de cada etapa y su valor asignado, que es el valor PWM que se le da al LED.

Temperatura -155 grados DS18B20 Sensor de temperatura con arduino Uno Resultado para temperatura 0 grados DS18B20 Sensor de temperatura con arduino Salida para temperatura 50 grados DS18B20 Sensor de temperatura con arduino Resultado para temperatura 127 grados DS18B20 Sensor de temperatura con arduino