Discrepancias entre valores obtenidos por diferentes modulos transductores (BM280 y HT10)

Excelente inicio de año a todo el amable foro.

En estos dias de asueto me decidi a ensamblar un circuito para conocer las condiciones ambientales de mi jardin y sus alrededores, basado en el Modulo BME280 y en conjunto con el HT10 manejados desde un ESP32 via I2C, asi que buscando una par de librerias para el IDE arduino, logre sin mayor esfuerzo presentar los datos obtenidos por estos modulos/sensores.

La finalidad es obtener la temperatura y humedad relativa en mis dos entornos; el externo, el jardin y el interno, un garage. Todos estos datos los subo a una tabla de Mysql via Http a un servidor WEB que tengo cada 5 minutos; hasta aqui todo bien.

Ahora viene el motivo de abrir este tema, revisando las tablas de la informacion obtenida, encontre que entre la temperatura interna y externa existia una diferencia importante de hasta 8 grados, lo cual en un principio asumi como real pero sorprendente, hasta que se me courrio revisar con un termometro portatil comparar las temperaturas y solo encontre una diferencia de 1 a dos grados entre los dos ambiente. Total que me decidi a dejar juntos los modulos con la idea de obtener la misma temperatura y humedad. ¡ZAZ! :eek: Vi que no es asi; aun estando juntos encontre que el Modulo HT10 siempre me marca una temperatura superior (1 a 2 grados) lo cual ya me hizo dudar de la certeza de la informacion que entrega este modulo.

¿Alguno a pasado por esta situacion?

Mucho agradecere sus comentarios.

Saludos!!!
 

Adjuntos

  • ESP32_Ht10_bm280.jpeg
    ESP32_Ht10_bm280.jpeg
    233.8 KB · Visitas: 5
Es raro.
El HT10 tiene mejor resolucion (0.01°C) que el BME280 (0.5°C).

Error en el programa o librería?

Sube el programa con sus librerías, y los datasheet de ambos.
 
Dejo el programa que estoy usando para los dos sensores.

uso estas dos librerias

para el BME280

para el HT10

Ojala me ayuden a entender que sucede y la razon de las discrepancias.

Saludos y disculpa por la demora para compartir el codigo, estaba en otras faenas.

C++:
#include <BME280I2C.h>// Libreria para comunicacion con sensor BME280
#include <Wire.h>// Libreria para comunicacion I2C de sensor BME280
#include <AHTxx.h> //ibreria para sensor AHT10
BME280I2C bme;    // Default : forced mode, standby time = 1000 ms
                  // Oversampling = pressure ×1, temperature ×1, humidity ×1, filter off,

//declaramos variables
float temp(NAN), hum(NAN), pres(NAN);//variables para almacenar Temperatura, Humedad y presion del sensor BME280
float Lux; //Variable para almacenar el nivel de luz obtenida por la fotoresistencia LDR
float TempInt; //En esta variable se contener La temperatura interna del sensor AHT15
float HumInt; //Vaiavle que contiene la humedad interna del sensor AHT15
AHTxx aht10(AHTXX_ADDRESS_X38, AHT1x_SENSOR); //sensor address, sensor type



void setup() {
  // put your setup code here, to run once:
Serial.begin(115200);
Wire.begin();// Iniciamos el servicio para comunicacion I2C "sensor BME280"
//sensors.begin();// iniciamos la libreria para 18B20

//Iniciamos el sensor BME280 y verificamos que este disponible
while(!bme.begin())
  {
    Serial.println("No se encontro el sensor BME280");
    delay(1000);
  }

  switch(bme.chipModel())
  {
     case BME280::ChipModel_BME280:
       Serial.println("Sensor BME280 Encontrado.");
       break;
     case BME280::ChipModel_BMP280:
       Serial.println("Sensor BMP280 Encontrado sin Humedad Disponible");
       break;
     default:
       Serial.println("Error desconosido en el bus I2C");
  }
  //iniciamos chequeo del sensor AHT15 
while (aht10.begin() != true)
  {
    Serial.println(F("AHT10 no conectado"));

 
  }

  Serial.println(F("AHT10 Disponible"));


}


// Subrutina para sensor BMP
void SensorBMP(){
BME280::TempUnit tempUnit(BME280::TempUnit_Celsius);
BME280::PresUnit presUnit(BME280::PresUnit_Pa);
bme.read(pres, temp, hum, tempUnit, presUnit); 
}
//Fin rutina SensorBMP

//Subrutina para sensor AHT15
void SensorAHT10(){

  TempInt = aht10.readTemperature(); //Obtenemos la temperatura Interna

  HumInt = aht10.readHumidity(); //Obtenemos la humedad interna


 
}
//Fin de subrutina AHT15

void loop() {
  // put your main code here, to run repeatedly:

SensorBMP();
SensorAHT10();

      Serial.print("Temperatura externa:=");Serial.print(temp);
      Serial.print("  Humedad externa:=");Serial.print(hum);
      Serial.print("  Presion Pa:=");Serial.println(pres);
  
      Serial.print("Temperatura interna:=");Serial.print(TempInt);
      Serial.print("  Humedad interna:=");Serial.println(HumInt);
      
delay(5000); //este delay solo se usa a manera ilustrativa del ejemplo

}
 
Finalmente encontre parte del problema en una pagina WEB aqui la liga de un comparativo de diferentes sensores...

Usando el traductor de Google tomo un parrafo que tome de esa pagina y lo dejo por aqui:

Testing-temperature-sensors-charts.png



"Si observa más de cerca los gráficos, 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 un poco y las medidas de temperatura pueden estar 1 ó 2 grados por encima del valor de temperatura real."

Saludos y gracias
 
Última edición:
Atrás
Arriba