Herramientas de usuario

Herramientas del sitio


proyectos:monitorclima_temperatura

Comparaciones

LM35 DHT11 DHT22 DS18B20 BME280 BMP180/BMP185 DPS310 MCP9808
Mide Temperatura Temperatura y Humedad Temperatura y Humedad Temperatura Temperatura, Humedad y Presión Atmosférica Temperatura, Humedad y Presión Atmosférica Temperatura y Presión Atmosférica Temperatura
Protocolo Analógo One-wire One-wire One-wire I2C, SPI I2C I2C, SPI I2C
Voltaje 4 to 30 V DC 3 to 5.5V DC 3 to 6V DC 3 to 5.5V DC 1.7 to 3.6V (para el chip) 3.3 a 5V para la tarjeta 1.7 to 3.6V (para el chip) 3.3 a 5V para la tarjeta 1.7V a 3.6V 2.7V to 5.5V
Rango Temp -55 to 150ºC 0 to 50ºC -40 to 80ºC -55 to 125ºC -40 to 85ºC 0 to 65ºC -40.0 °C 85.0 °C -40°C to +125°C
Precisión +/-0.5°C (a 25°C) +/- 2°C (de 0 a 50°C) +/- 0.5ºC (de -40 a 80°C) +/-0.5°C (de -10 a 85°C) +/-0.5°C (a 25°C) +/-0.5°C (a 25°C) ±0.5C° 0.25°C de -40°C a 125°C (0.5°C de -20°C a 100°C)
Muestras Cada 1/segundo Cada 2/segundo
Precio $2.60/cu $2.10/cu $5.50/cu $2.2/cu $4.25/cu $5.99/cu $6.95 /cu $4.95 c/u

Probados

Los sensores de temperatura que se han utilizado son:

  1. DS18B20 Solo temperatura impermeable
  2. DHT11 Para temperatura humedad*

Sensor DHT11

Diagrama de conexión:

#include <Adafruit_Sensor.h>
#include <DHT_U.h>
#include <DHT.h>
 
// Definimos el pin digital donde se conecta el sensor
#define DHTPIN 4
// Dependiendo del tipo de sensor
#define DHTTYPE DHT11
 
// Inicializamos el sensor DHT11
DHT dht(DHTPIN, DHTTYPE);
 
 
void setup() {
  // Inicializamos comunicación serie
  Serial.begin(9600);
 
  // Comenzamos el sensor DHT
  dht.begin();
}
 
void loop() {
    // Esperamos 5 segundos entre medidas
  delay(5000);
 
  // Leemos la humedad relativa
  float h = dht.readHumidity();
  // Leemos la temperatura en grados centígrados (por defecto)
  float t = dht.readTemperature();
  // Leemos la temperatura en grados Fahrenheit
  float f = dht.readTemperature(true);
 
  // Comprobamos si ha habido algún error en la lectura
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Error obteniendo los datos del sensor DHT11");
    return;
  }
 
  // Calcular el índice de calor en Fahrenheit
  float hif = dht.computeHeatIndex(f, h);
  // Calcular el índice de calor en grados centígrados
  float hic = dht.computeHeatIndex(t, h, false);
 
  Serial.print("Humedad: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperatura: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Índice de calor: ");
  Serial.print(hic);
  Serial.print(" *C ");
  Serial.print(hif);
  Serial.println(" *F");
 
}

Sensor DS18B20

Esquema del sensor: Diagrama de conexión, aca son dos sensores conectados

 
#include <DallasTemperature.h>
#include <OneWire.h>
 
 
 
// Pin donde se conecta el bus 1-Wire
const int pinDatosDQ = 9;
 
// Instancia a las clases OneWire y DallasTemperature
OneWire oneWireObjeto(pinDatosDQ);
DallasTemperature sensorDS18B20(&oneWireObjeto);
 
void setup() {
    // Iniciamos la comunicación serie
    Serial.begin(9600);
    // Iniciamos el bus 1-Wire
    sensorDS18B20.begin(); 
}
 
void loop() {
    // Mandamos comandos para toma de temperatura a los sensores
    Serial.println("Mandando comandos a los sensores");
    sensorDS18B20.requestTemperatures();
 
    // Leemos y mostramos los datos de los sensores DS18B20
    Serial.print("Temperatura sensor 0: ");
    Serial.print(sensorDS18B20.getTempCByIndex(0));
    Serial.println(" C");
 
    delay(1000); 
}

Prueba de sensores

Se realizó una prueba de sensores DHT11 (error de +-2C y RH ± 5%) y de los DS18B20 (error de +-0.5C) para elegir los sensores que mostraran mas uniormidad. De entre estos sensores se usaron dos compradores de los DHT11:

#include <DallasTemperature.h>
#include <OneWire.h>
#include <Adafruit_Sensor.h>
#include <DHT_U.h>
#include <DHT.h>
 
// Pin donde se conecta el bus 1-Wire
const int pinDatosDQ = 2;
 
// Definimos el pin digital donde se conecta el sensor
#define DHTPIN1 13
#define DHTPIN2 12
#define DHTPIN3 11
#define DHTPIN4 10
#define DHTPIN5 9
#define DHTPIN6 8
#define DHTPIN7 7
#define DHTPIN8 6
#define DHTPIN9 5
 
// Dependiendo del tipo de sensor
 
#define DHTTYPE DHT11
 
DHT dht1(DHTPIN1, DHTTYPE);
DHT dht2(DHTPIN2, DHTTYPE);
DHT dht3(DHTPIN3, DHTTYPE);
DHT dht4(DHTPIN4, DHTTYPE);
DHT dht5(DHTPIN5, DHTTYPE);
DHT dht6(DHTPIN6, DHTTYPE);
DHT dht7(DHTPIN7, DHTTYPE);
DHT dht8(DHTPIN8, DHTTYPE);
DHT dht9(DHTPIN9, DHTTYPE);
 
// Instancia a las clases OneWire y DallasTemperature
OneWire oneWireObjeto(pinDatosDQ);
DallasTemperature sensorDS18B20(&oneWireObjeto);
 
void setup() {
      // Iniciamos la comunicación serie
      Serial.begin(9600);
      // Iniciamos el bus 1-Wire
      sensorDS18B20.begin(); 
 
      dht1.begin();
      dht2.begin();
      dht3.begin();
      dht4.begin();
      dht5.begin();
      dht6.begin();
      dht7.begin();
      dht8.begin();
      dht9.begin();
}
 
void loop() {
     delay(5000);
 
    // Mandamos comandos para toma de temperatura a los sensores
    Serial.println("Mandando comandos a los sensores");
    sensorDS18B20.requestTemperatures();
 
 // Leemos y mostramos los datos de los sensores DS18B20
    Serial.print("Temperatura DS18B20: ");
    Serial.print(sensorDS18B20.getTempCByIndex(0));     Serial.print(" - ");
    Serial.print(sensorDS18B20.getTempCByIndex(1));     Serial.print(" - ");
    Serial.print(sensorDS18B20.getTempCByIndex(2));    Serial.print(" - ");
    Serial.print(sensorDS18B20.getTempCByIndex(3)); 
    Serial.println(" C");
 
    Serial.print("Temperaturas DH : ");
    Serial.print(dht1.readTemperature());     Serial.print(" - ");
    Serial.print(dht2.readTemperature());     Serial.print(" - ");
    Serial.print(dht3.readTemperature());     Serial.print(" - ");
    Serial.print(dht4.readTemperature());     Serial.print(" - ");
    Serial.print(dht5.readTemperature());     Serial.print(" - ");
    Serial.print(dht6.readTemperature());     Serial.print(" - ");
    Serial.print(dht7.readTemperature());     Serial.print(" - ");
    Serial.print(dht8.readTemperature());     Serial.print(" - ");
    Serial.print(dht9.readTemperature());
    Serial.println("  ");    
 
    Serial.print("Humedad DH : ");
    Serial.print(dht1.readHumidity());     Serial.print(" - ");
    Serial.print(dht2.readHumidity());     Serial.print(" - ");
    Serial.print(dht3.readHumidity());     Serial.print(" - ");
    Serial.print(dht4.readHumidity());     Serial.print(" - ");
    Serial.print(dht5.readHumidity());     Serial.print(" - ");
    Serial.print(dht6.readHumidity());     Serial.print(" - ");
    Serial.print(dht7.readHumidity());     Serial.print(" - ");
    Serial.print(dht8.readHumidity());     Serial.print(" - ");
    Serial.print(dht9.readHumidity());     Serial.println("  ");   
 
    delay(3000); 
}

Lecturas:

Mandando comandos a los sensores
Temperatura DS18B20: 32.00 - 31.87 - 31.94 - 31.94 C
Temperaturas DH : 33.50 - 33.60 - 33.10 - 32.50 - 32.30 - 32.00 - 32.10 - 32.40 - 34.10  
Humedad DH : 41.00 - 40.00 - 52.00 - 41.00 - 44.00 - 48.00 - 40.00 - 43.00 - 65.00  
Mandando comandos a los sensores
Temperatura DS18B20: 31.94 - 31.94 - 31.87 - 31.94 C
Temperaturas DH : 33.40 - 33.50 - 33.00 - 32.60 - 32.30 - 31.90 - 32.10 - 32.40 - 34.20  
Humedad DH : 41.00 - 40.00 - 52.00 - 41.00 - 44.00 - 48.00 - 40.00 - 43.00 - 49.00  
Mandando comandos a los sensores
Temperatura DS18B20: 31.94 - 31.94 - 31.94 - 31.94 C
Temperaturas DH : 33.40 - 33.60 - 33.10 - 32.60 - 32.20 - 32.00 - 32.10 - 32.40 - 34.20  
Humedad DH : 42.00 - 41.00 - 54.00 - 42.00 - 44.00 - 48.00 - 40.00 - 44.00 - 49.00  
Mandando comandos a los sensores
Temperatura DS18B20: 32.00 - 31.94 - 31.94 - 32.00 C
Temperaturas DH : 33.40 - 33.60 - 33.10 - 32.50 - 32.30 - 32.00 - 32.10 - 32.40 - 34.20  
Humedad DH : 42.00 - 41.00 - 53.00 - 41.00 - 44.00 - 48.00 - 40.00 - 44.00 - 49.00  
Mandando comandos a los sensores
Temperatura DS18B20: 32.00 - 31.94 - 31.87 - 32.00 C
Temperaturas DH : 33.50 - 33.60 - 33.10 - 32.50 - 32.30 - 32.00 - 32.10 - 32.40 - 34.20  
Humedad DH : 41.00 - 40.00 - 52.00 - 41.00 - 44.00 - 48.00 - 40.00 - 43.00 - 49.00  
Mandando comandos a los sensores
Temperatura DS18B20: 32.00 - 31.94 - 31.94 - 32.00 C
Temperaturas DH : 33.40 - 33.60 - 33.10 - 32.50 - 32.30 - 32.00 - 32.10 - 32.40 - 34.20  
Humedad DH : 41.00 - 40.00 - 52.00 - 41.00 - 44.00 - 48.00 - 40.00 - 43.00 - 48.00  
Mandando comandos a los sensores
Temperatura DS18B20: 32.00 - 31.94 - 31.94 - 32.00 C
Temperaturas DH : 33.50 - 33.60 - 33.10 - 32.50 - 32.30 - 32.00 - 32.20 - 32.40 - 34.20  
Humedad DH : 41.00 - 40.00 - 52.00 - 41.00 - 43.00 - 48.00 - 39.00 - 43.00 - 48.00  
Mandando comandos a los sensores
Temperatura DS18B20: 32.00 - 31.94 - 31.94 - 32.00 C
Temperaturas DH : 33.50 - 33.60 - 33.10 - 32.50 - 32.30 - 32.00 - 32.20 - 32.40 - 34.20  
Humedad DH : 40.00 - 39.00 - 52.00 - 41.00 - 43.00 - 48.00 - 39.00 - 43.00 - 48.00  
Mandando comandos a los sensores
Temperatura DS18B20: 32.06 - 31.94 - 31.94 - 32.00 C
Temperaturas DH : 33.50 - 33.70 - 33.10 - 32.60 - 32.30 - 32.00 - 32.20 - 32.40 - 34.30  
Humedad DH : 40.00 - 39.00 - 52.00 - 41.00 - 43.00 - 48.00 - 39.00 - 43.00 - 48.00  
Mandando comandos a los sensores
Temperatura DS18B20: 32.00 - 32.00 - 31.94 - 32.00 C
Temperaturas DH : 33.60 - 33.70 - 33.20 - 32.60 - 32.30 - 32.10 - 32.20 - 32.50 - 34.30  
Humedad DH : 42.00 - 40.00 - 53.00 - 42.00 - 43.00 - 48.00 - 40.00 - 43.00 - 49.00  
Mandando comandos a los sensores
Temperatura DS18B20: 32.06 - 32.00 - 32.00 - 32.06 C
Temperaturas DH : 33.60 - 33.70 - 33.20 - 32.60 - 32.30 - 32.10 - 32.20 - 32.50 - 34.30  
Humedad DH : 42.00 - 40.00 - 52.00 - 41.00 - 44.00 - 48.00 - 40.00 - 44.00 - 49.00  

Interpretacion:

  1. Sensores NOYITO: 4,5,6,7
  2. Sensores Gowoops: 1,2,3,8,9

Resultados: Tomando como referencia los sensores DS18B20, los sensores que mas se acercan a esos valores son los sensores NOYITO 5,6,7 que nos dan valores mas cercanos. Por lo que esos sensores se usaran para las lecturas.

Referencias:

proyectos/monitorclima_temperatura.txt · Última modificación: por manuel.floresv