Instrucciones para el sensor de temperatura DS18B20 con Arduino

¡Bienvenidos al tutorial sobre cómo utilizar el sensor de temperatura DS18B20 con Arduino! En este artículo te explicaremos paso a paso cómo conectar y programar este versátil sensor para que puedas medir la temperatura con precisión en tus proyectos Arduino. Sigue leyendo para descubrir todas las instrucciones necesarias para sacar el máximo provecho de este sensor.

Esta guía muestra cómo utilizar el sensor de temperatura DS18B20 con la placa Arduino. Aprenderá cómo cablear el sensor, instalar las bibliotecas necesarias y determinar la temperatura de uno o más sensores DS18B20.

Instrucciones para el sensor de temperatura DS18B20 con Arduino

Quizás también quieras leer otras guías de DS18B20:

  • Sensor de temperatura ESP32 DS18B20 con Arduino IDE
  • Sensor de temperatura ESP8266 DS18B20 con Arduino IDE
  • Sensor de temperatura ESP32/ESP8266 DS18B20 con MicroPython
  • ESP32 con múltiples sensores de temperatura DS18B20

Presentamos el sensor de temperatura DS18B20

El Sensor de temperatura DS18B20 Es un sensor de temperatura digital de un solo cable. Esto significa que sólo se requiere una línea de datos (y GND) para comunicarse con Arduino.

La energía se puede suministrar a través de una fuente de alimentación externa o a través de la línea de datos (el llamado «modo parásito»), eliminando la necesidad de una fuente de alimentación externa.

Instrucciones para el sensor de temperatura DS18B20 con Arduino

La siguiente tabla muestra cómo debes conectar el sensor DS18B20 a tu placa Arduino:

DS18B20 arduino
Tierra Tierra
DQ Cada pin digital (con resistencia pull-up de 4,7 kOhm)
VDD 5V (modo normal) o GND (modo parásito)

Cada sensor de temperatura DS18B20 tiene un código de serie único de 64 bits. Esto le permite conectar varios sensores a la misma línea de datos. Esto significa que puedes determinar la temperatura de múltiples sensores con un solo pin Arduino digital.

El sensor de temperatura DS18B20 también está disponible en diseño impermeable.

Instrucciones para el sensor de temperatura DS18B20 con Arduino

A continuación se muestra un resumen de las especificaciones clave del sensor de temperatura DS18B20:

  • Se comunica a través de comunicación de bus de un solo cable
  • Rango de fuente de alimentación: 3,0 V a 5,5 V
  • Rango de temperatura de funcionamiento: -55°C a +125°C
  • Precisión +/-0,5ºC (rango -10ºC a 85ºC)

Se puede encontrar más información en el Hoja de datos DS18B20.

Piezas requeridas

Para mostrarle cómo funciona el sensor, crearemos un ejemplo simple que utiliza Arduino para leer la temperatura del sensor DS18B20 y mostrar los valores en el monitor serie Arduino.

Aquí hay una lista de las piezas que necesitará para completar este tutorial.

Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!

Instrucciones para el sensor de temperatura DS18B20 con Arduino

Esquema

El sensor puede funcionar en dos modos:

  • Modo normal: Se requiere una conexión de 3 cables. Proporcionan energía al pin VDD. Aquí está el diagrama del circuito que debe seguir:
Instrucciones para el sensor de temperatura DS18B20 con Arduino
  • Modo parásito: Sólo necesitas datos y GND. El sensor obtiene su energía de la línea de datos. En este caso, es necesario seguir el siguiente esquema:
Instrucciones para el sensor de temperatura DS18B20 con Arduino

Con solo un pin digital Arduino, puedes leer la temperatura de más de un sensor al mismo tiempo. Todo lo que necesitas hacer es conectar todos los pines de datos del sensor a un pin digital Arduino.

Cargar código: único DS18B20

Para conectarse al sensor de temperatura DS18B20, debe Biblioteca One Wire de Paul Stoffregen y eso Biblioteca de temperatura de Dallas. Siga los siguientes pasos para instalar estas bibliotecas.

Instalar bibliotecas

1. Abra su IDE de Arduino y vaya a Bosquejo > incluir biblioteca > Administrar bibliotecas. El administrador de la biblioteca debería abrirse.

2. Ingrese «Un cable”en el campo de búsqueda e instale la biblioteca OneWire de Paul Stoffregen.

Instrucciones para el sensor de temperatura DS18B20 con Arduino

3. Luego busque «dallas”e instale la biblioteca Dallas Temperature de Miles Burton.

Instrucciones para el sensor de temperatura DS18B20 con Arduino

Después de instalar las bibliotecas necesarias, cargue el siguiente código en su placa Arduino. Este boceto se basa en un ejemplo de la biblioteca Dallas Temperature.

/*********
  Rui Santos
  Complete project details at https://randomnerdtutorials.com  
  Based on the Dallas Temperature Library example
*********/

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is conntec to the Arduino digital pin 4
#define ONE_WIRE_BUS 4

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature sensor 
DallasTemperature sensors(&oneWire);

void setup(void)
{
  // Start serial communication for debugging purposes
  Serial.begin(9600);
  // Start up the library
  sensors.begin();
}

void loop(void){ 
  // Call sensors.requestTemperatures() to issue a global temperature and Requests to all devices on the bus
  sensors.requestTemperatures(); 
  
  Serial.print("Celsius temperature: ");
  // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
  Serial.print(sensors.getTempCByIndex(0)); 
  Serial.print(" - Fahrenheit temperature: ");
  Serial.println(sensors.getTempFByIndex(0));
  delay(1000);
}

Ver código sin formato

Hay muchas formas diferentes de determinar la temperatura a partir de sensores de temperatura DS18B20. Si solo utiliza un único sensor, esta es una de las formas más sencillas y sencillas.

Instrucciones para el sensor de temperatura DS18B20 con Arduino

Cómo funciona el código

Comience por incluir el Un cable y eso Dallastemperatura Bibliotecas.

#include <OneWire.h>
#include <DallasTemperature.h>

Cree las instancias necesarias para el sensor de temperatura. El sensor de temperatura está conectado a Pluma 4.

// Data wire is conntec to the Arduino digital pin 4
const int oneWireBus = 4;          
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(oneWireBus);
// Pass our oneWire reference to Dallas Temperature sensor 
DallasTemperature sensors(&oneWire);

En el configuración()Inicialice el monitor serie con una velocidad de 9600 baudios.

Serial.begin(9600);

Inicialice el sensor de temperatura DS18B20:

sensors.begin();

En el Cinta() es de donde se obtiene la temperatura. Tienes que Solicitar temperaturas() método antes de obtener el valor de temperatura real.

sensors.requestTemperatures(); 

Luego encuentra la temperatura en grados Celsius e imprímela. Para obtener la temperatura en grados Celsius, use el obtenerTempCByIndex() Método:

Serial.print(sensors.getTempCByIndex(0)); 

O usa eso obtenerTempFByIndex() para obtener la temperatura en Fahrenheit.

Serial.println(sensors.getTempFByIndex(0));

El obtenerTempCByIndex() y eso obtenerTempFByIndex() Los métodos aceptan el índice del sensor de temperatura. Como solo usamos un sensor, su índice es 0. Si tiene más de un sensor, use el índice 0 para el primer sensor, el índice 1 para el segundo sensor, y así sucesivamente.

Cada segundo se solicitan nuevos valores de temperatura.

delay(5000);

demostración

Después de cargar el código, abra el monitor serie Arduino IDE con una velocidad de baudios de 9600. Debería ver la temperatura en grados Celsius y Fahrenheit:

Instrucciones para el sensor de temperatura DS18B20 con Arduino

Captura de temperatura de múltiples sensores DS18B20

Instrucciones para el sensor de temperatura DS18B20 con Arduino

El sensor de temperatura DS18B20 se comunica mediante un protocolo de un solo cable y cada sensor tiene un código de serie único de 64 bits, lo que le permite leer la temperatura de múltiples sensores usando un solo pin digital Arduino.

Esquema

Para leer la temperatura de varios sensores, solo necesita conectar todas las líneas de datos como se muestra en el siguiente diagrama esquemático:

Instrucciones para el sensor de temperatura DS18B20 con Arduino

Cargar código: varios DS18B20

Luego cargue el siguiente código. Busca todos los dispositivos en el pin 4 y genera la temperatura de cada uno. Este boceto se basa en el ejemplo de la biblioteca DallasTemperature.

/*
 * Rui Santos
 * Complete Project Details https://randomnerdtutorials.com
*/

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into port 4 on the Arduino
#define ONE_WIRE_BUS 4
// 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);

int numberOfDevices; // Number of temperature devices found

DeviceAddress tempDeviceAddress; // We'll use this variable to store a found device address

void setup(void) {
  // start serial port
  Serial.begin(9600);
  
  // Start up the library
  sensors.begin();
  
  // Grab a count of devices on the wire
  numberOfDevices = sensors.getDeviceCount();
  
  // locate devices on the bus
  Serial.print("Locating devices...");
  Serial.print("Found ");
  Serial.print(numberOfDevices, DEC);
  Serial.println(" devices.");

  // Loop through each device, print out address
  for(int i=0;i<numberOfDevices; i++) {
    // Search the wire for address
    if(sensors.getAddress(tempDeviceAddress, i)) {
      Serial.print("Found device ");
      Serial.print(i, DEC);
      Serial.print(" with address: ");
      printAddress(tempDeviceAddress);
      Serial.println();
		} else {
		  Serial.print("Found ghost device at ");
		  Serial.print(i, DEC);
		  Serial.print(" but could not detect address. Check power and cabling");
		}
  }
}

void loop(void) { 
  sensors.requestTemperatures(); // Send the command to get temperatures
  
  // Loop through each device, print out temperature data
  for(int i=0;i<numberOfDevices; i++) {
    // Search the wire for address
    if(sensors.getAddress(tempDeviceAddress, i)){
		
		// Output the device ID
		Serial.print("Temperature for device: ");
		Serial.println(i,DEC);

    // Print the data
    float tempC = sensors.getTempC(tempDeviceAddress);
    Serial.print("Temp C: ");
    Serial.print(tempC);
    Serial.print(" Temp F: ");
    Serial.println(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit
    } 	
  }
  delay(5000);
}

// function to print a device address
void printAddress(DeviceAddress deviceAddress) {
  for (uint8_t i = 0; i < 8; i++) {
    if (deviceAddress[i] < 16) Serial.print("0");
      Serial.print(deviceAddress[i], HEX);
  }
}

Ver código sin formato

Así es como funciona el código

El código utiliza varios métodos útiles para manejar múltiples sensores DS18B20.

ellos usan el getDeviceCount() Método para determinar la cantidad de sensores DS18B20 en la línea de datos.

numberOfDevices = sensors.getDeviceCount();

El obtener dirección() El método encuentra las direcciones del sensor:

if(sensors.getAddress(tempDeviceAddress, i)){

La dirección es única para cada sensor. Esto significa que cada sensor puede identificarse por su dirección.

Entonces usa eso obtenerTempC() Método que acepta la dirección del dispositivo como argumento. Puede utilizar este método para obtener la temperatura de un sensor específico:

float tempC = sensors.getTempC(tempDeviceAddress);

Para obtener la temperatura en grados Fahrenheit puedes usar: obtenerTemF(). Alternativamente, puedes convertir la temperatura en Celsius a Fahrenheit de la siguiente manera:

DallasTemperature::toFahrenheit(tempC)

Resumen

El sensor de temperatura DS18B20 es un sensor digital de un solo cable. Para utilizar este sensor con Arduino necesitarás las bibliotecas OneWire y DallasTemperature. Puede utilizar uno o más sensores en la misma línea de datos porque puede identificar cada sensor por su dirección única.

Ahora puedes llevar este proyecto más allá y mostrar los valores de tus sensores en una pantalla OLED, por ejemplo.

Tenemos más tutoriales para otros sensores compatibles con Arduino que pueden resultarle útiles:

  • Sensor de humedad y temperatura DHT11/DHT22 con Arduino
  • BME280 (temperatura, humedad, presión) con Arduino
  • Módulo de relé con Arduino
  • Sensor ultrasónico HC-SR04 con Arduino

Esperamos que esta guía le haya resultado útil.

Si desea obtener más información sobre Arduino, consulte nuestros recursos:

  • Curso de proyecto Arduino paso a paso.
  • Proyectos y tutoriales gratuitos de Arduino
  • mini curso arduino

¡Gracias por leer!

Actualizado el 2 de julio de 2019

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Instrucciones para el sensor de temperatura DS18B20 con Arduino

Este tutorial muestra cómo usar el sensor de temperatura DS18B20 con la placa Arduino. Aprenderás cómo conectar el sensor, instalar las librerías necesarias y obtener la temperatura de uno o varios sensores DS18B20.

Introducción al sensor de temperatura DS18B20

El sensor de temperatura DS18B20 es un sensor digital de una sola línea. Esto significa que solo requiere una línea de datos (y GND) para comunicarse con Arduino.

Puede ser alimentado por una fuente de alimentación externa o puede derivar energía desde la línea de datos (llamado «modo parásito»), lo que elimina la necesidad de una fuente de alimentación externa.

Cada sensor de temperatura DS18B20 tiene un código único de serie de 64 bits. Esto te permite conectar múltiples sensores a la misma línea de datos. Por lo tanto, puedes obtener la temperatura de varios sensores usando solo un pin digital de Arduino.

El sensor de temperatura DS18B20 también está disponible en versión impermeable.

Especificaciones relevantes del sensor DS18B20:

  1. Comunicación a través de bus de una sola línea
  2. Rango de alimentación: 3.0V a 5.5V
  3. Rango de temperatura de operación: -55ºC a +125ºC
  4. Precisión +/-0.5 ºC (en el rango -10ºC a 85ºC)

Para obtener más información, consulta la hoja de datos del DS18B20.

Partes requeridas:

  1. Arduino UNO
  2. Sensor de temperatura DS18B20 (uno o varios sensores) – versión impermeable
  3. Resistor de 4.7k Ohm
  4. Protoboard
  5. Cables jumper

Puedes encontrar todas las partes para tus proyectos al mejor precio en MakerAdvisor.com/tools.

Esquemático:

El sensor puede funcionar en dos modos: normal (3 cables) o parásito (solo datos y GND). Sigue el esquemático correspondiente según el modo de operación elegido.

Cargar código – Solo DS18B20:

Para interactuar con el sensor de temperatura DS18B20, debes instalar la librería OneWire de Paul Stoffregen y la librería Dallas Temperature. Sigue los siguientes pasos para instalar esas librerías:

  1. Abre tu Arduino IDE y ve a Sketch > Include Library > Manage Libraries.
  2. Escribe «OneWire» en el cuadro de búsqueda e instala la librería OneWire de Paul Stoffregen.
  3. Luego, busca «Dallas» e instala la librería Dallas Temperature de Miles Burton.

Después de instalar las librerías necesarias, carga el siguiente código en tu placa Arduino. Este sketch se basa en un ejemplo de la librería Dallas Temperature.

Para una explicación detallada sobre cómo funciona el código y cómo obtener la temperatura del sensor DS18B20, visita nuestra página de documentación.

Para obtener más tutoriales sobre sensores compatibles con Arduino, visita nuestras guías sobre el sensor DHT11/DHT22, el BME280, el módulo de relé y el sensor ultrasónico HC-SR04.

Esperamos que este artículo te haya sido útil. ¡Gracias por leer!

2 comentarios en «Instrucciones para el sensor de temperatura DS18B20 con Arduino»

Deja un comentario