Lección 35-1: Uso del sensor de temperatura HTU21D

Lección 35-1: Uso del sensor de temperatura HTU21D

En este tutorial, exploraremos cómo utilizar el sensor de temperatura y humedad HTU21D con un Arduino. El HTU21D es un sensor compacto que se comunica a través de I2C, lo que facilita su conexión con microcontroladores. Al final de esta lección, podrás leer los valores de temperatura y humedad y mostrarlos a través del monitor serial de Arduino.

HTU21D module

Para este proyecto, utilizaremos la biblioteca Adafruit diseñada específicamente para el sensor HTU21D. La biblioteca simplifica el proceso de lectura de datos del sensor, lo que nos permite centrarnos en integrar el sensor en nuestros proyectos. Puedes esperar ver las lecturas de temperatura del sensor en Celsius, Fahrenheit y Kelvin, así como el porcentaje de humedad relativa (en el video a las 03:15).

Hardware Explicado

El componente principal de este proyecto es el sensor de temperatura y humedad HTU21D. Este sensor opera con un voltaje de alimentación de 1.5 a 3.6 voltios y consume muy poca energía, lo que lo hace ideal para dispositivos que funcionan con batería. Se comunica con el Arduino usando el protocolo I2C, requiriendo solo dos líneas de datos: SDA para los datos y SCL para el reloj.

Para alimentar el sensor, lo conectaremos a una fuente de 3.3V o 5V, dependiendo del módulo específico que estés utilizando. La versión de Adafruit incluye un regulador de voltaje, lo que permite que funcione sin problemas con ambos niveles de voltaje. Esta flexibilidad lo convierte en una excelente opción para diversas aplicaciones.

Detalles de la hoja de datos

FabricanteTE Connectivity
Número de parteHTU21D-F
Voltaje de lógica/entrada-salida1.5 - 3.6 V
Tensión de alimentación3.3 V (típ.)
Consumo actual (en reposo)0.02 µA
Consumo actual (medición)450 µA (típ.)
Rango de temperatura-40 a +125 °C
Resolución de humedad0.04 %
PaqueteDFN de 6 pines

  • Asegúrese de niveles de voltaje adecuados para evitar dañar el sensor.
  • Utiliza resistencias de pull-up en las líneas I2C si no están incluidas en el módulo.
  • Mantén los cables cortos para minimizar la interferencia con la comunicación I2C.
  • Considera el disipador de calor si se utiliza en entornos de alta temperatura.
  • Verifique la orientación del sensor para asegurar conexiones de pines correctas.

Instrucciones de cableado

Arduino wiring for HTU21DF light intesity sensor
Arduino wiring for HTU21DF light intesity sensor

Para conectar el sensor HTU21D a tu Arduino, comienza conectando el pin VCC del sensor al pin de alimentación de 3.3V en el Arduino. Luego, conecta el pin GND del sensor al pin de tierra (GND) en el Arduino. A continuación, conecta el pin SDA del sensor al pin analógico A4 del Arduino, que sirve como la línea de datos I2C. Finalmente, conecta el pin SCL del sensor al pin analógico A5, que actúa como la línea de reloj I2C. Asegúrate de que tus conexiones estén seguras para evitar lecturas intermitentes.

Para mayor claridad, si estás utilizando una placa diferente, asegúrate de identificar los pines correctos para SDA y SCL, ya que pueden variar. Esta configuración de cableado permitirá que el Arduino se comunique eficazmente con el sensor HTU21D (en el video a las 05:00).

Ejemplos de Código y Guía paso a paso

A continuación se muestra un extracto de la función de configuración que inicializa la comunicación serial y verifica si se encuentra el sensor:

void setup() {
  Serial.begin(9600);
  if (!htu.begin()) {
    Serial.println("Couldn't find sensor!");
    while (1);
  }
}

Este código inicia la comunicación serie a una velocidad de 9600 baudios e intenta inicializar el sensor HTU21D. Si no se detecta el sensor, imprimirá un mensaje de error y detendrá la ejecución.

El bucle principal del programa lee continuamente los valores de temperatura y humedad:

void loop() {
    Serial.print(getHTU('C'));
    Serial.println("C");
    Serial.print("Humidity:");
    Serial.print(getHTU('H'));
    Serial.println("%");
    delay(1000);
}

En este bucle, llamamos a la función.getHTUcon 'C' para obtener la temperatura en Celsius y 'H' para obtener la humedad. Los resultados se imprimen en el monitor serial cada segundo. Esto permite la observación en tiempo real de las lecturas del sensor.

Además, tenemos una funcióngetHTUque devuelve la temperatura o la humedad basándose en una entrada de carácter:

float getHTU(char type) {
    float temp = htu.readTemperature();
    float rel_hum = htu.readHumidity();
    return (type == 'H') ? rel_hum : temp;
}

Esta función lee la temperatura y la humedad del sensor y devuelve el valor apropiado según el tipo especificado. Este enfoque modular mantiene el código limpio y fácil de mantener.

Demostración / Qué Esperar

Tras la configuración y ejecución exitosa del código, deberías ver los valores de temperatura y humedad impresos en el monitor serial. Si aplicas calor al sensor, las lecturas de temperatura deberían aumentar en consecuencia, mientras que la humedad puede disminuir. Si la temperatura excede el rango máximo del sensor, puede mostrar resultados inesperados, como cero (en el video a las 12:00).

Marcas de tiempo en el video

  • 00:00- Introducción
  • 03:15- Visión general del sensor
  • 05:00- Instrucciones de cableado
  • 10:00- Recorrido del código
  • 12:00- Demostración

Imágenes

Arduino wiring for HTU21DF light intesity sensor
Arduino wiring for HTU21DF light intesity sensor
HTU21D module
HTU21D module
HTU21D module-back
HTU21D module-back
512-Lesson 35: Using HTU21D Temperature Sensor | Arduino Step-by-Step Course
Idioma: C++
¡Copiado!

Cosas que podrías necesitar

Archivos📁

Hoja de datos (pdf)