DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180

Si estás buscando el sensor de temperatura ideal para tu proyecto de electrónica, es posible que te hayas encontrado con una amplia gama de opciones. En este artículo compararemos diferentes sensores de temperatura populares como el DHT11, DHT22, LM35, DS18B20, BME280 y BMP180. Descubre cuál se adapta mejor a tus necesidades y obtén una visión general de las ventajas y desventajas de cada uno. ¡Sigue leyendo para encontrar el sensor perfecto para tu aplicación!

Existe una variedad de sensores de temperatura compatibles con Arduino, ESP32, ESP8266 y otras placas de desarrollo. Por lo tanto, puede resultar complicado elegir el sensor más adecuado para su proyecto. En este artículo comparamos 6 sensores de temperatura muy utilizados: DHT11, DHT22, LM35, DS18B20, BME280 y BMP180.

DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180

Comparamos los sensores en términos de protocolo de comunicación, rango de temperatura, precisión, facilidad de uso y mucho más.

También realizamos un experimento simple en el que medimos la temperatura en el mismo entorno utilizando todos los sensores de temperatura durante un período de tiempo. Este experimento nos permitió ver cómo reaccionan los sensores a los cambios de temperatura. Realizamos este experimento durante aproximadamente 36 horas y le mostraremos los resultados más adelante en este artículo.

Recomendaciones de literatura: 9 sensores de temperatura compatibles con Arduino para tus proyectos de electrónica

Comparación de sensores de temperatura: DHT11 vs. DHT22 vs. LM35 vs. DS18B20 vs. BME280 vs. BMP180

Para una comparación rápida de sensores, hemos compilado la siguiente tabla que muestra la información más importante al elegir un sensor de temperatura, a saber: protocolo de comunicación, voltaje de suministro, rango de temperatura y precisión.

Nota: La tabla se desplaza horizontalmente en computadoras de escritorio, así como en tabletas y dispositivos móviles.

DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180
DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180
DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180
DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180
DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180
DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180
sensorDHT11DHT22 (AM2302)LM35DS18B20BME280BMP180
Medidastemperatura
humedad
temperatura
humedad
temperaturatemperaturatemperatura
humedad
Presión
temperatura
Presión
comunicación
protocolo
Cable únicoCable únicoAnálogoCable únicoI2C
SPI
I2C
Entrega
Voltaje
3 a 5,5 VCC3 a 6 VCC4 a 30 VCC3 a 5,5 VCC1,7 a 3,6 V (para el chip) 3,3 a 5 V para la placa1,8 a 3,6 V (para el chip) 3,3 a 5 V para la placa
temperatura
Rango
0 a 50ºC-40 a 80ºC-55 a 150ºC-55 a 125ºC-40 a 85ºC0 a 65ºC
exactitud+/- 2ºC (de 0 a 50ºC)+/- 0,5ºC (de -40 a 80ºC)+/-0,5ºC (a 25ºC)+/-0,5ºC (de -10 a 85ºC)+/-0,5ºC (a 25ºC)+/-0,5ºC (a 25ºC)
Apoyo
(Arduino-IDE)
Biblioteca Adafruit DHT

Biblioteca de sensores unificada de Adafruit
Biblioteca Adafruit DHT

Biblioteca de sensores unificada de Adafruit
lectura analógica()Dallastemperatura

Un cable

Biblioteca Adafruit BME280

Biblioteca de sensores unificada de Adafruit
Adafruit BME085

Biblioteca de sensores unificada de Adafruit
Apoyo
(MicroPython)
dht Módulo (incluido en el firmware MicroPython)dht Módulo (incluido en el firmware MicroPython)desde la máquina importación ADC
ADC().leer
ds18b20 Módulo (incluido en el firmware MicroPython)Biblioteca BME280 Adafruitmódulo BMP180
¿Donde comprar?Comparar preciosComparar precios Comparar precios Comparar precios
Consultar precios (impermeable)
Comparar precios Comparar precios

DHT11 frente a DHT22 (AM2302)

DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180

El DHT11 Y DHT22 (AM2302) Son sensores de temperatura digitales que miden la temperatura y la humedad. Se ven muy similares y funcionan igual, pero tienen especificaciones diferentes.

Ambos sensores pueden funcionar con 3,3 V o 5 V. Para que puedas usarlos fácilmente en tus proyectos Arduino o ESP.

El sensor DHT22 tiene mejor resolución y un mayor rango de medición de temperatura y humedad. Sin embargo, es un poco más caro y sólo puedes solicitar lecturas en intervalos de 2 segundos.

El DHT11 es un poco más barato, tiene un alcance más corto y es menos preciso. Puede recuperar los valores del sensor cada segundo.

A pesar de sus diferencias, funcionan de manera similar y puedes usar el mismo código para leer la temperatura y la humedad. Todo lo que tienes que hacer es seleccionar el tipo de sensor que estás utilizando en el código.

Entonces, si estás dispuesto a gastar un dólar más, te recomendamos esto. DHT22 a través del DHT11.

Disponemos de varias guías sobre cómo utilizar los sensores DHT11 y DHT22:

  • ESP32 (ArduinoIDE) con sensor de temperatura y humedad DHT11/DHT22
  • ESP8266 (Arduino-IDE) Servidor web de temperatura y humedad DHT11/DHT22
  • arduino con sensor de humedad y temperatura DHT11/DHT22
  • ESP32/ESP8266 (MicroPython) con servidor web DHT11/DHT22

LM35, LM335 y LM34

DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180

El LM35, LM335 Y LM34 Son sensores de temperatura lineales que emiten un voltaje proporcional al valor de temperatura. El LM35 está calibrado en Celsius, el LM335 en Kelvin y el LM34 en Fahrenheit. Dependiendo de las unidades de temperatura que utilice en su proyecto, uno de estos sensores puede resultar más práctico que el otro.

Recomendamos usar LM35 o LM34 en lugar del LM335, ya que restar un número grande de las mediciones del LM335 para convertir la temperatura de Kelvin puede afectar la precisión de los resultados.

Según la hoja de datos, los sensores LM35 y LM34 requieren muy poca energía, alrededor de 60uA. Esto da como resultado un autocalentamiento muy bajo (alrededor de 0,08 ºC en aire en calma), lo que significa que las mediciones de temperatura no se ven afectadas por el propio sensor.

Para leer la temperatura de estos sensores, sólo necesita leer el voltaje de salida del sensor a través de un pin analógico. Si estás usando un Arduino, sólo necesitas el lectura analógica() función y obtienes valores de temperatura con dos decimales.

Entonces, si necesita un sensor de monitoreo de temperatura económico y fácil de usar, el LM35 puede ser una buena opción. Además, dado que utiliza muy poca energía, es ideal para proyectos portátiles donde se requiere un bajo consumo de energía.

Aprenda a utilizar los sensores de temperatura LM35, LM335 y LM34 con Arduino:

  • Instrucciones para sensores de temperatura LM35, LM335 y LM34 con Arduino

Sensor de temperatura DS18B20

DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180

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

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.

Cada sensor de temperatura DS18B20 tiene un código de serie único de 64 bits. Esto le permite conectar varios sensores al mismo cable de datos. Esto le permite obtener la temperatura de múltiples sensores a través de un solo GPIO.

Además, la resolución del sensor de temperatura se puede configurar en 9, 10, 11 o 12 bits, correspondientes a incrementos de 0,5°C, 0,25°C, 0,125°C y 0,0625°C, respectivamente. La resolución de encendido predeterminada es de 12 bits.

El sensor de temperatura DS18B20 también está disponible en una versión resistente al agua, ideal para proyectos en exteriores o para medir la temperatura de líquidos.

DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180

Puede seguir nuestras guías para aprender a usar el sensor de temperatura DS18B20 con ESP32, ESP8266 y Arduino usando Arduino IDE o MicroPython:

  • ESP32 (ArduinoIDE) Sensor de temperatura DS18B20 (único, múltiple, servidor web)
  • ESP8266 (Arduino-IDE) Sensor de temperatura DS18B20 (único, múltiple, servidor web)
  • ESP32 y ESP8266 (MicroPython) con sensor de temperatura DS18B20
  • arduino con sensor de temperatura DS18B20

BME280 frente a BMP180

DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180

El BME280 Y BMP180 Son sensores barométricos que miden la presión del aire. El BME280 también está equipado con un sensor de temperatura y humedad, el BMP180 con un sensor de temperatura. Dado que la presión cambia con la altitud, estos sensores también se pueden utilizar para estimar la altitud.

En cuanto al rango de temperatura, el BME280 tiene un rango de medición más amplio: -40 a 85ºC, mientras que el BMP180 sólo mide de 0 a 65ºC. Debes tener en cuenta que el módulo BME280 se calienta un poco, por lo que las mediciones de temperatura pueden ser 1 o 2 grados superiores al valor de temperatura real.

El BME280 puede utilizar el protocolo de comunicación I2C o SPI, mientras que el BMP180 sólo puede utilizar la comunicación I2C.

El sensor BME280 es más caro pero tiene más funciones. Por ejemplo, puede crear un proyecto de estación meteorológica utilizando únicamente este sensor. Sin embargo, si no está interesado en medir la presión o la humedad, puede adquirir un sensor de temperatura más económico.

Gracias a las librerías de Adafruit conectar estos sensores a Arduino, ESP8266 y ESP32 es muy sencillo.

Consulte nuestras guías para aprender a utilizar estos sensores:

  • BMP180:
    • arduino con sensor barométrico BMP180
    • ESP32 (ArduinoIDE) con sensor barométrico BMP180
  • BME280:
    • ESP32 (ArduinoIDE) con sensor BME280 (presión, temperatura, humedad)
    • ESP8266 (Arduino-IDE) con BME280 (presión, temperatura, humedad)
    • arduino con sensor BME280 (presión, temperatura, humedad)

También tenemos otros proyectos que utilizan el BME280 que podrían interesarle:

  • Registrador de datos de estación meteorológica de bajo consumo que utiliza ESP8266 y BME280 con MicroPython
  • Servidor web ESP32 con BME280 – mini estación meteorológica
  • Inserte datos ESP32/ESP8266 en la base de datos MySQL usando PHP y Arduino IDE

Probando todos los sensores de temperatura

En este experimento, se registraron los valores de temperatura de diferentes sensores de temperatura durante un período de tiempo en las mismas condiciones.

DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180

Tenemos todos los siguientes sensores de temperatura en arduino mega:

Los datos se registraron en una tarjeta microSD con un módulo de tarjeta microSD. El experimento duró aproximadamente 36 horas y los valores de temperatura se registraron cada 5 minutos.

Conectamos los pines de datos de los sensores de temperatura a los siguientes pines en Arduino Mega:

  • DHT11: clavija 11
  • DHT22: clavija 12
  • DS18B20: clavija 14
  • LM35: Bolígrafo A0
  • BME280: Software SPI en estos pines: Pin 4 (MISO), Pin 5 (CS), Pin 6 (SCK), Pin 7 (MOSI)
  • BMP180: Pin 20 (SDA) y Pin 21 (CSL)

El módulo de la tarjeta microSD se conectó mediante hardware SPI: Pin 51 (MOSI), Pin 50 (MISO), Pin 52 (SCK), Pin 53 (CS).

Este es el código que se ejecuta en Arduino Mega.

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

#include "DHT.h"

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

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#include <Wire.h>
#include <Adafruit_BMP085.h>

#include <SD.h> // for the SD card

const int DHT11sensorPin = 11;  
const int DHT22sensorPin = 12;  

DHT dht11(DHT11sensorPin, DHT11);
DHT dht22(DHT22sensorPin, DHT22);

float DHT11temperature;
float DHT22temperature;

const int DS18B20sensorPin = 14;

OneWire oneWire(DS18B20sensorPin);
DallasTemperature ds18b20(&oneWire);

float DS18B20temperature1;
float DS18B20temperature2;

const int BME_SCK = 6;
const int BME_MISO = 4;
const int BME_MOSI = 7;
const int BME_CS = 5;

Adafruit_BME280 bme280(BME_CS, BME_MOSI, BME_MISO, BME_SCK);

Adafruit_BMP085 bmp180;
 
const int LM35sensorPin = A0; 
float LM35sensorValue;
float LM35voltageOut;
float LM35temperature;

const int chipSelectSDCard = 53; 
File myFile;

void setup() {
  Serial.begin(9600);

  dht11.begin();
  delay(2000);
  dht22.begin();

  ds18b20.begin();

  bme280.begin();

  bmp180.begin();
 
  pinMode(LM35sensorPin, INPUT);

  if(!SD.begin(chipSelectSDCard)) {
    Serial.println("SD card initialization failed!");
    return;
  }
  Serial.println("SD card initialization done.");
  
  myFile=SD.open("DATA.txt", FILE_WRITE);
  if (myFile) {
    Serial.println("File opened ok");
    // print the headings for our data
    myFile.println("DHT11,DHT22,DS18B20-1,DS18B20-2,BME280,BMP180,LM35");
  }
  myFile.close();  
}

void loop() {

  /*-------------------------------------------------------*/
  //DHT11
  DHT11temperature = dht11.readTemperature();
  if (isnan(DHT11temperature)) {
    Serial.println("Failed to read from DHT11 sensor!");
    return;
  }
  Serial.print("Temperature DHT11(ºC): ");
  Serial.println(DHT11temperature);
  
  /*-------------------------------------------------------*/
  //DHT22  
  DHT22temperature = dht22.readTemperature();
  if (isnan(DHT22temperature)) {
    Serial.println("Failed to read from DHT22 sensor!");
    return;
  }
  Serial.print("Temperature DHT22(ºC): ");
  Serial.println(DHT22temperature);

/*-------------------------------------------------*/  
  //DS18B20
  ds18b20.requestTemperatures();  
  DS18B20temperature1 = ds18b20.getTempCByIndex(0);
  DS18B20temperature2 = ds18b20.getTempCByIndex(1);

  Serial.print("Temperature DS18B20-1(ºC): ");
  Serial.println(DS18B20temperature1);
  
  Serial.print("Temperature DS18B20-2(ºC): ");
  Serial.println(DS18B20temperature2);

/*-------------------------------------------------*/
//BME280

  Serial.print("Temperature BME280(ºC): ");
  Serial.println(bme280.readTemperature());

/*-------------------------------------------------*/
//BMP180
  Serial.print("Temperature BMP180(ºC): ");
  Serial.println(bmp180.readTemperature());

/*-------------------------------------------------*/ 
  //LM35 SENSOR
  LM35sensorValue = analogRead(LM35sensorPin);
  LM35voltageOut = (LM35sensorValue * 5000) / 1024;
  
  // calculate temperature for LM35 (LM35DZ)
  LM35temperature = LM35voltageOut / 10;

  Serial.print("Temperature LM35(ºC): ");
  Serial.println(LM35temperature);

  Serial.println("");

  myFile = SD.open("DATA.txt", FILE_WRITE);
  if (myFile) {
    Serial.println("File open with success");
    myFile.print(DHT11temperature);
    myFile.print(",");
    myFile.print(DHT22temperature);
    myFile.print(",");
    myFile.print(DS18B20temperature1);
    myFile.print(",");
    myFile.print(DS18B20temperature2);
    myFile.print(",");
    myFile.print(bme280.readTemperature());
    myFile.print(",");
    myFile.print(bmp180.readTemperature());
    myFile.print(",");
    myFile.print(LM35temperature);
    myFile.println(",");
  }
  myFile.close();
  
  delay(6000);
}

Ver código sin formato

Nota: Para compilar y ejecutar este código, debe instalar todas las bibliotecas de sensores mencionadas en la tabla de comparación al principio de este artículo en su IDE de Arduino.

Resultados: Comparación de valores de temperatura.

Después de aproximadamente 36 horas, retiramos la tarjeta microSD y copiamos los resultados en una hoja de cálculo. Registramos todas las mediciones para comparar mejor las mediciones de los diferentes sensores de temperatura.

DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180
Temperatura en grados Celsius (ºC)
DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180
Temperatura en grados Fahrenheit (ºF)

Este gráfico no tiene un grupo de control (no usamos un sensor de temperatura calibrado), pero tenemos una idea de cómo se comportan estos sensores.

Si observa más de cerca los diagramas, puede ver que el BME280 midió valores ligeramente más altos que los otros sensores de temperatura. Este comportamiento es normal y se describe en la hoja de datos. El módulo se autocalienta ligeramente y las mediciones de temperatura pueden ser 1 o 2 grados superiores al valor de temperatura real.

Sin embargo, el BME280 es también el sensor de temperatura que proporcionó lecturas de temperatura más estables sin grandes fluctuaciones entre mediciones. Esto está relacionado con la resolución del sensor. Puede detectar cambios de hasta 0,01ºC.

Con los sensores de temperatura DS18B20 podemos notar algunas fluctuaciones entre los valores medidos y también se nota que la resolución no es tan buena como con el BME280. Además, el sensor de temperatura DS18B20 fue el único que dio algunas lecturas «cero» durante todo el experimento. Medimos dos sensores de temperatura DS18B20 en la misma línea de datos y uno de los sensores no pudo medir la temperatura 6 veces durante todo el experimento (durante 36 horas).

El DHT22 y el BMP180 se comportan de manera muy similar con pequeñas fluctuaciones. El DHT11 no puede detectar pequeñas fluctuaciones de temperatura porque su resolución es de 1ºC.

Finalmente, el sensor de temperatura LM35 detectó cambios de temperatura entre 24ºC y 26ºC, aunque con grandes fluctuaciones entre mediciones.

Este cuadro que compara los diferentes sensores de temperatura muestra claramente en qué se diferencia cada sensor de los demás. Esto le facilitará comprender cómo funcionan y si son adecuados para los proyectos que desea implementar.

Envolver

En este artículo, comparamos varios sensores de temperatura que puedes usar con ESP32, ESP8266, Arduino y otras placas de desarrollo. Todos estos sensores miden la temperatura pero se comportan de manera diferente cuando se prueban simultáneamente en el mismo entorno.

Esperamos que este artículo le haya resultado útil y le ayude a elegir el mejor sensor de temperatura para las necesidades de su proyecto.

Usted también puede estar interesado en:

  • 9 sensores de temperatura compatibles con Arduino para tus proyectos de electrónica
  • ESP32/ESP8266: muestra los valores del sensor en diagramas en tiempo real
  • Regístrate a nuestros cursos de electrónica y a nuestro eBook

Si desea ver más sensores en esta comparación, deje un comentario a continuación.

Gracias por leer.

[automatic_youtube_gallery type=»search» search=»DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180

» limit=»1″]

DHT11 frente a DHT22 frente a LM35 frente a DS18B20 frente a BME280 frente a BMP180

Existen una amplia variedad de sensores de temperatura compatibles con Arduino, ESP32, ESP8266 y otras placas de desarrollo. Por lo tanto, puede ser difícil elegir el sensor más adecuado para tu proyecto. En este artículo, compararemos 6 sensores de temperatura ampliamente utilizados: DHT11, DHT22, LM35, DS18B20, BME280 y BMP180.

Comparación de los Sensores de Temperatura

Compararemos los sensores en cuanto al protocolo de comunicación, rango de temperatura, precisión, facilidad de uso y mucho más.

También realizamos un experimento simple en el que medimos la temperatura en el mismo entorno utilizando todos los sensores de temperatura a lo largo del tiempo. Con este experimento pudimos ver cómo reaccionan los sensores ante los cambios de temperatura. Ejecutamos este experimento durante aproximadamente 36 horas y te mostraremos los resultados más adelante en este artículo.

Para una comparación rápida de los sensores, hemos elaborado la siguiente tabla que muestra la información más importante a la hora de seleccionar un sensor de temperatura, a saber: protocolo de comunicación, voltaje de alimentación, rango de temperatura y precisión.

  1. Sensor DHT11
  2. Sensor DHT22 (AM2302)
  3. Sensor LM35
  4. Sensor DS18B20
  5. Sensor BME280
  6. Sensor BMP180

Nota: la tabla se desplaza horizontalmente tanto en computadoras de escritorio, tabletas y dispositivos móviles.

DHT11 vs DHT22 (AM2302)

El DHT11 y el DHT22 (AM2302) son sensores digitales de temperatura que miden la temperatura y la humedad. Se ven muy similares y funcionan de la misma manera, pero tienen especificaciones diferentes.

Ambos sensores pueden ser alimentados con 3.3V o 5V. Por lo tanto, puedes usarlos fácilmente en tus proyectos de Arduino o ESP.

El sensor DHT22 tiene una mejor resolución y un rango de medición de temperatura y humedad más amplio. Sin embargo, es un poco más caro y solo puedes solicitar lecturas con intervalos de 2 segundos.

El DHT11 es ligeramente más barato, tiene un rango más pequeño y es menos preciso. Pero puedes obtener lecturas de sensor cada segundo.

A pesar de sus diferencias, funcionan de manera similar, y puedes utilizar el mismo código para leer la temperatura y la humedad. Simplemente debes seleccionar en el código el tipo de sensor que estás utilizando.

Por lo tanto, si estás dispuesto a gastar un dólar extra, te recomendamos el DHT22 en lugar del DHT11.

Contamos con numerosos guías sobre cómo utilizar los sensores DHT11 y DHT22:

LM35, LM335 y LM34

El LM35, LM335 y LM34 son sensores de temperatura lineales que producen un voltaje proporcional al valor de temperatura. El LM35 viene calibrado en grados Celsius, el LM335 en Kelvin y el LM34 en Fahrenheit. Por lo tanto, dependiendo de las unidades de temperatura que utilices en tu proyecto, uno de estos sensores podría ser más práctico que el otro.

Recomendamos utilizar el LM35 o el LM34 en lugar del LM335, ya que restar un número grande a las mediciones del LM335 para convertir la temperatura de Kelvin puede comprometer la precisión de los resultados.

Según la hoja de datos, los sensores LM35 y LM34 requieren muy poca corriente para funcionar, unos 60µA. Esto resulta en un auto-calentamiento muy bajo (alrededor de 0,08ºC en aire quieto), lo que significa que las mediciones de temperatura no se verán afectadas por el propio sensor.

Para leer la temperatura de estos sensores, solo necesitas leer el voltaje de salida del sensor utilizando un pin analógico. Si usas un Arduino, solo necesitas usar la función analogRead() y obtendrás lecturas de temperatura con dos puntos decimales.

Por lo tanto, si necesitas un sensor barato y fácil de usar para monitorear la temperatura, el LM35 puede ser una buena opción. Además, debido a que consume muy poca energía, es ideal para proyectos portátiles donde se requiere un bajo consumo de energía.

Aprende cómo usar los sensores de temperatura LM35, LM335 y LM34 con Arduino:

Sensor de Temperatura DS18B20

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

Puede ser alimentado por una fuente de alimentación externa o puede derivar energía de 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 varios sensores a la misma línea de datos. Por lo tanto, puedes obtener la temperatura de varios sensores utilizando un solo GPIO.

Además, la resolución del sensor de temperatura se puede configurar en 9, 10, 11 o 12 bits, lo que corresponde a incrementos de 0,5°C, 0,25°C, 0,125°C y 0,0625°C, respectivamente. La resolución predeterminada al encender es de 12 bits.

El sensor de temperatura DS18B20 también está disponible en versión resistente al agua, ideal para proyectos al aire libre o para medir la temperatura de líquidos.

Sigue nuestras guías para aprender a usar el sensor de temperatura DS18B20 con el ESP32, ESP8266 y Arduino utilizando Arduino IDE o MicroPython:

BME280 vs BMP180

El BME280 y el BMP180 son sensores barométricos que significa que leen la presión atmosférica. El BME280 también está equipado con un sensor de temperatura y un sensor de humedad, y el BMP180 con un sensor de temperatura. Debido a que la presión cambia con la altitud, estos sensores también se pueden utilizar para estimar la altitud.

En cuanto al rango de temperatura, el BME280 tiene un rango de medición más amplio: -40 a 85ºC, mientras que el BMP180 solo mide de 0 a 65ºC. Debes tener en cuenta que el módulo BME280 se calienta ligeramente, por lo que las mediciones de temperatura pueden ser 1 o 2 grados por encima del valor real de temperatura.

El sensor BME280 puede utilizar tanto el protocolo de comunicación I2C como SPI, mientras que el BMP180 solo puede utilizar el protocolo de comunicación I2C.

El sensor BME280 es más caro, pero tiene más funcionalidades. Por ejemplo, puedes construir un proyecto de estación meteorológica solo con este sensor. Pero si no estás interesado en medir la presión o humedad, puedes optar por un sensor de temperatura más económico.

La interfaz de estos sensores con Arduino, ESP8266 y ESP32 es muy sencilla gracias a las bibliotecas de Adafruit.

Puedes utilizar nuestras guías para aprender a usar estos sensores:

También tenemos otros proyectos con el BME280 que te pueden interesar:

Pruebas con Todos los Sensores de Temperatura

Este experimento registró lecturas de temperatura de diferentes sensores de temperatura a lo largo del tiempo en las mismas condiciones.

Cableamos todos los siguientes sensores de temperatura a un Arduino Mega:

  • DHT11
  • DHT22
  • LM35
  • 2x DS18B20 en el mismo bus de datos
  • BME280
  • BMP180

Los datos se registraron en una tarjeta microSD utilizando un módulo de tarjeta microSD. El experimento se ejecutó durante aproximadamente 36 horas y se registraron las lecturas de temperatura cada 5 minutos.

Cableamos los pines de datos de los sensores de temperatura a los siguientes pines en el Arduino Mega:

  • DHT11: Pin 11
  • DHT22: Pin 12
  • DS18B20: Pin 14
  • LM35: Pin A0
  • BME280: SPI de software en estos pines: Pin 4 (MISO), Pin 5 (CS), Pin 6 (SCK), Pin 7 (MOSI)
  • BMP180: Pin 20 (SDA) y Pin 21 (CSL)

El módulo de tarjeta microSD se conectó a través de SPI de hardware: Pin 51 (MOSI), Pin 50 (MISO), Pin 52 (SCK), Pin 53 (CS).

Este es el código que se ejecuta en el Arduino Mega:

insertar código HTML aquí

Nota: para compilar y ejecutar este código, debes instalar en tu Arduino IDE todas las bibliotecas de sensores mencionadas en la tabla de comparación al principio de este artículo.

Resultados: Comparación de Lecturas de Temperatura

Después de aproximadamente 36 horas, retiramos la tarjeta microSD y copiamos los resultados a una hoja de cálculo. Hemos trazado todas las lecturas para comparar mejor las mediciones de los diferentes sensores de temperatura.

Temperatura en grados Celsius (ºC)

Temperatura en grados Fahrenheit (ºF)

Este gráfico no tiene un grupo de control (no usamos un sensor de temperatura calibrado), pero tenemos una idea de cómo se comportan estos sensores.

Si observas detenidamente los gráficos, el BME280 midió valores ligeramente más altos que los otros sensores de temperatura. Este comportamiento es normal y está descrito en la hoja de datos. El módulo se calienta ligeramente y las mediciones de temperatura pueden ser 1 o 2 grados por encima del valor real de temperatura.

Sin embargo, el BME280 también es el sensor de temperatura que proporcionó lecturas de temperatura más estables sin muchas oscilaciones entre las lecturas. Esto tiene que ver con la resolución del sensor. Puede detectar cambios de hasta 0.01ºC.

En el caso de los sensores de temperatura DS18B20, podemos ver algunas oscilaciones entre las lecturas y también es notable que la resolución no es tan buena como la del BME280. Además, el sensor de temperatura DS18B20 fue el único que dio algunas lecturas «nulas» a lo largo del experimento. Medimos dos sensores de temperatura DS18B20 en la misma línea de datos y uno de los sensores no pudo leer la temperatura 6 veces a lo largo del experimento (durante 36 horas).

El DHT22 y el BMP180 se comportan de manera muy similar con pocas oscilaciones. El DHT11 no pudo detectar pequeños cambios de temperatura, porque su resolución es de 1ºC.

Finalmente, el sensor de temperatura LM35 detectó cambios de temperatura entre 24ºC y 26ºC pero con muchas oscilaciones entre las mediciones.

Este gráfico que compara los diferentes sensores de temperatura muestra claramente cómo cada sensor difiere de los otros. Es más fácil entender cómo funcionan y si serán adecuados para los proyectos que deseas construir.

Conclusión

En este artículo hemos comparado varios sensores de temperatura que puedes utilizar con ESP32, ESP8266, Arduino y otras placas de desarrollo. Estos sensores miden todos la temperatura, pero se comportan de manera diferente cuando se ponen a prueba en el mismo entorno al mismo tiempo.

Esperamos que hayas encontrado útil este artículo y que te ayude a elegir el mejor sensor de temperatura para los requisitos de tu proyecto.

También te puede interesar leer:

Si hay algún otro sensor que te gustaría ver en esta comparación, publica un comentario a continuación.

Gracias por leer.

Deja un comentario