Tutorial sobre sensores de temperatura y humedad para Arduino, ESP

En este tutorial aprenderás todo lo que necesitas saber sobre el sensor de temperatura y humedad y también sobre los módulos de sensores más populares.

En este tutorial aprenderás todo lo que necesitas saber sobre los sensores de temperatura y humedad:

  • Sensor de temperatura de un cable
  • Sensor de temperatura y humedad DHT11
  • Sensor de temperatura y humedad DHT22

Después de este tutorial conocerás las diferencias entre sensor y módulo.

Hay dos categorías de sensores de temperatura y / o humedad. La primera categoría incluye sensores de temperatura de un cable que proporcionan una entrada analógica como temperatura. La segunda categoría son los sensores DHT que proporcionan temperatura y humedad a través de una entrada digital para microcontroladores Arduino, ESP8266 y ESP32.

La siguiente tabla le brinda una descripción general de todos los componentes y partes que utilicé para este tutorial.

Arduino NanoAmazonAliExpress
Arduino Pro MiniAmazonAliExpress
Arduino UnoAmazonAliExpress
Arduino MegaAmazonAliExpress
ESP32 ESP-WROOM-32AmazonAliExpress
ESP8266 NodeMCUAmazonAliExpress
ESP8266 WeMos D1 MiniAmazonAliExpress
Módulo DHT22AmazonAliExpress
Módulo DHT11AmazonAliExpress
Sensor DHT11AmazonAliExpress
Sensor DHT22AmazonAliExpress
Sensor de temperatura LM35 de un solo cableAmazonAliExpress

Sensor de temperatura de un cable

El sensor de temperatura de un cable cambia la resistencia según la temperatura actual. Un sensor de temperatura de un cable de uso frecuente es el LM35 con un rango de temperatura de funcionamiento de -55 ° C… 150 ° C. Para cada grado de cambio de temperatura, el sensor cambia su resistencia y el voltaje de salida cambia en 10 mV. Por lo tanto, el voltaje de salida máximo es (150 ° C – (- 55 ° C)) * 10 mV / ° C = 2.05 V.

Si conecta el LM35 con un pin de entrada digital Arduino, la conversación interna de analógico a digital (ADC) de Arduino convierte el voltaje analógico a un valor digital entre 0 y 1023.

El voltaje ADC máximo predeterminado de la placa Arduino es 5V y es equivalente al valor de 1023. Basado en el voltaje ADC máximo, la entrada digital del sensor de temperatura LM35 está entre 0 y 1023 * 2.05 / 5 = 420. Esta solución funciona pero solo usará 2.05V / 5V = 41% del rango numérico.
Es por eso que puede establecer el voltaje ADC máximo en otros valores que no sean 5V. La siguiente tabla le dará una descripción general de los voltajes ADC máximos posibles, cómo cambiar el parámetro en el script y qué parte del rango de valores se usa.

Máxima tensión del ADCFunciónPorcentaje del rango de valores utilizado
5Vreferencia analógica(DEFAULT)0,41
3,3Vreferencia analógica(EXTERNO)0,62
1,1Vreferencia analógica(INTERNO)1,86

¿También puede utilizar el voltaje ADC máximo de 1,1 V en este caso? La respuesta es sí, pero restringirá el rango de valores del sensor de temperatura. El voltaje de salida máximo va de 2.05V a 1.1V y sabemos que el factor de escala del sensor es 10mV / ° C.Por lo tanto, la temperatura máxima con voltaje ADC establecido en 1.1 V es 1.1V / 10mV / ° C = 110 ° C. El rango de temperatura es de 0 ° C a 110 ° C, que es para uso en interiores, buscando una solución buena y más precisa.

El cableado es bastante simple y directo. Si el lado plano del sensor de temperatura de un solo cable LM35 lo está mirando, el contenedor izquierdo es el pin de alimentación que conecta al pin Arduino 5V. El pin derecho está conectado a tierra, así que conecte el pin derecho a GND. Y el pin del medio es el pin de datos que puede conectar a cada pin de entrada analógica. Conecté el pin de datos a A0 en el Arduino Uno

Debe usar un pin analógico en su placa de microcontrolador para leer el valor analógico del sensor de temperatura de un cable. Si tiene un Arduino, no tendrá ningún problema porque las placas Arduino tienen bastantes pines de entrada analógica. Pero si tiene un microcontrolador ESP8266 con solo un pin de entrada analógica, puede tener un problema cuando ese pin ya está en uso y no quiere usar un multiplexor analógico.

Si desea saber cómo usar un multiplexor analógico en combinación con su NodeMCU para leer múltiples valores analógicos, consulte este artículo.

Encontrará la hoja de datos del sensor de temperatura LM35 usado de Texas Instruments aquí.

Arduino LM35

Después de conectar correctamente el sensor de temperatura, podemos usar el siguiente boceto para trazar la temperatura correspondiente con el trazador en serie del Arduino IDE. Configuraremos la velocidad en baudios en 9600. Asegúrese de que la velocidad en baudios en el boceto y en su trazador de serie sea la misma.

float tempc; //variable temperature (degree Celsius)
float tempf; //variable temperature (Fahreinheit)
float vout; //temporary variable sensor reading

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

void loop() {
vout=analogRead(A0); //Reading the value from sensor

//analogReference(DEFAULT);
//// convert analog values between 0 and 1023 with 5000mV ADC
//vout = (vout/1023) * 5000;

analogReference(EXTERNAL);
// convert analog values between 0 and 1023 with 3300mV ADC
vout = (vout/1023) * 3000;

//analogReference(INTERNAL);
//// convert analog values between 0 and 1023 with 1100mV ADC
//vout = (vout/1023) * 1100;

// for every degree the output voltage changes 10 mV
tempc=vout/10;

tempf=(vout*1.8)+32; // Converting to Fahrenheit

Serial.print("in DegreeC=");
Serial.print(" ");
Serial.print(tempc);
Serial.print("t");
Serial.print("in Fahrenheit=");
Serial.print(" ");
Serial.print(tempf);
Serial.println();
delay(2000);
}

Sensor de temperatura y humedad DHT11 y DHT22

Puede adquirir la temperatura y la humedad DHT11 y DHT22 como sensor o módulo. Cuando se trata de rendimiento, no hay diferencia entre comprar el sensor en sí o el módulo. Solo hay 2 diferencias entre el sensor o el módulo. El módulo es básicamente el sensor impreso en una placa de circuito impreso (PCB) en combinación de una resistencia pull-up de 10k Ohm entre la señal y la conexión de 5V. La segunda diferencia es que el sensor tiene un paquete de 4 pines del cual solo se usarán tres pines mientras que el módulo tiene solo los tres pines relevantes.

Si quieres saber cuál es la función de una resistencia pull-up, lee este artículo.

Los sensores DHT miden la temperatura con un sensor de temperatura NTC montado en la superficie (termistor). Si desea saber cómo funciona un termistor, aquí hay un artículo adicional sobre termistores. La humedad se mide por el cambio de resistencia entre dos electrodos y un sustrato que retiene la humedad entre los dos electrodos.

La siguiente imagen muestra cómo conectar un sensor de temperatura y humedad DHT11 o DHT22 a su Arduino y NodeMCU. Una imagen para la versión con alta resistencia y una versión sin la resistencia pull-up en el PCB, donde debe agregar la resistencia usted mismo.

Sensor DHTMódulo DHTArduino, ESP8266, ESP32
VCCVCC5V / VIN
DatosDatosPin de E/S digital XXX
Nc
GNDGNDGND
Pinout DHT22

Para usar el sensor DHT11 o DHT22 en su boceto, debe descargar la biblioteca de sensores. La biblioteca correspondiente se llama: «DHT.h»

Aquí encontrará un artículo sobre cómo instalar una biblioteca externa a través del IDE de Arduino.

Una vez instalada la biblioteca, puede incluirla a través de: #include. Esto llamará a la biblioteca externa y se encargará de su boceto. El siguiente esquema leerá la temperatura y la humedad de un sensor DHT11, sensor DHT22 y módulo DHT22 cada 10 segundos e imprimirá el valor en la salida en serie.

Esquema de sensores de temperatura y humedad.
#include "DHT.h"
 
#define DHT11PIN 7        // define the digital I/O pin
#define DHT22PIN 6        // define the digital I/O pin
#define DHT22modulePIN 5  // define the digital I/O pin
 
#define DHT11TYPE DHT11         // DHT 11 
#define DHT22TYPE DHT22         // DHT 22
#define DHT22moduleTYPE DHT22   // DHT 22 module

DHT dht11(DHT11PIN, DHT11TYPE);
DHT dht22(DHT22PIN, DHT22TYPE);
DHT dht22module(DHT22modulePIN, DHT22moduleTYPE);
 
void setup() {
  Serial.begin(9600); 
   
  dht11.begin();
  dht22.begin();
  dht22module.begin();
}
 
void loop() {
  // Read all temperature and humidity sensor data
  float h11 = dht11.readHumidity();
  float t11 = dht11.readTemperature();
  float h22 = dht22.readHumidity();
  float t22 = dht22.readTemperature();
  float h22module = dht22module.readHumidity();
  float t22module = dht22module.readTemperature();
 
  // check if returns are valid and print the sensor data
  if (isnan(t11) || isnan(h11)) {
    Serial.println("Failed to read from DHT #1");
  } else {
    Serial.print("Humidity 11: "); 
    Serial.print(h11);
    Serial.print(" %t");
    Serial.print("Temperature 11: "); 
    Serial.print(t11);
    Serial.println(" *C");
  }
  if (isnan(t22) || isnan(h22)) {
    Serial.println("Failed to read from DHT #2");
  } else {
    Serial.print("Humidity 22: "); 
    Serial.print(h22);
    Serial.print(" %t");
    Serial.print("Temperature 22: "); 
    Serial.print(t22);
    Serial.println(" *C");
  }
  if (isnan(t22module) || isnan(h22module)) {
    Serial.println("Failed to read from DHT #2");
  } else {
    Serial.print("Humidity 22module: "); 
    Serial.print(h22module);
    Serial.print(" %t");
    Serial.print("Temperature 22module: "); 
    Serial.print(t22module);
    Serial.println(" *C");
  }
  Serial.println();   // print a free line to make the output nicer
  delay(10000);       // print new values every 10 seconds
}

La siguiente imagen muestra la salida en serie del script. Ves que el sensor de humedad de mi sensor DHT11 está roto. Las diferencias de humedad (~ 2%) y temperatura (~ 1,5 * C) están dentro del rango normal.

Comparision_Screenshot

¿Cómo elegir el sensor de temperatura y humedad adecuado?

La siguiente tabla le ofrece una descripción general de las especificaciones del sensor de temperatura y humedad. Siempre elegiría el sensor DHT22 porque en cada proyecto quiero saber la temperatura, también quiero la humedad. Además, el rango de temperatura y la precisión son mucho mejores que los del sensor DHT11.

 DHT11 (azul)DHT22 (blanco)LM35
Rango de temperatura0°C…50°C-40°C…80°C-55°C…150°C
Precisión de la temperatura+- 2°C+- 0,5°C+- 0,5°C
Gama de humedad20%…90%0%…100%n.a.
Precisión de la humedad+- 5%+- 3%n.a.
Velocidad de muestreo1Hz (una cada 1 segundo)0,5Hz (una vez cada 2 segundos=
Tensión de funcionamiento3V…5V3V…5V4V…30V
Consumo de corriente2,5mA2,5mA60μA

Conclusión

Espero que haya disfrutado de este artículo sobre sensores de temperatura y humedad. Aprendimos mucho sobre los dos sensores de temperatura diferentes: el sensor de temperatura de un cable y el sensor de temperatura con sensor de humedad incorporado DHT11 y DHT22.

¿Tiene más preguntas sobre los sensores de temperatura y humedad? Utilice la sección de comentarios a continuación para hacer sus preguntas.


Deja un comentario