SENSOR DE HUMEDAD Y TEMPERATURA HDC1080


El Sensor de Humedad y Temperatura de Texas Instrumentos HDC1080 es un Circuito Integrado de bajo costo que contine un polímero que se encarga de medir la Humedad Relativa del Ambiente, y también tiene un sensor de Temperatura en la placa de metal de abajo del circuito integrado.

Imagen 3d del Sensor de Humedad y Temperatura HDC1080

Pero para poder hablar el mismo idioma primero debemos de saber lo que es Temperatura y Humedad.

¿Qué es la Humedad y la Temperatura?


La Temperatura es la cantidad de agitación de las moléculas de un cuerpo, es decir la Medida de la energía cinética de las moléculas de un material. Y en terminos coloquiales es cuan caliente está un objeto.

La Humedad es la cantida de agua está revuelta en el Aire, es decir, la cantidad de partículas de agua contenida en un volúmen de aire. Así si estamos en el Desierto, es de esperarse que la Humedad sea muy baja. Pero si estamos en la Playa es de esperarse que la Humedad sea muy alta.

La Humedad relativa es el porcentaje de la división de la Humedad existente en un volumen de aire entre la capacidad de ese aire de alojar la máxima cantidad de agua sin que llegue a condensarse.

Platicadito esto mismo quiere decir que si al aire que respiramos máximo le caben 100 unidades de vapor de agua a 25°C a 1 Atmosfera de presión atmosférica, y en este momento se tienen 60 unidades contenidas en ese mismo volúmen de aire en esas mismas condiciones... se tendría una Humedad Relativa del 60%.  Esto es  un ejemplo para ejemplificar lo que es la Humedad Relativa, los datos de las capacidades no son veriídicos.

Otra manera muy práctica de visualizarlo y entenderlo es haciendo el simil con vasos de agua. Los vasos van a tener el mismo volumen y no puede cambiar, esto es el símil con la Capacidad Máxima de un gas para albergar vapor de agua, sin que se condense.

La cantida de agua que tenga ese vaso va determinar la Humedad Relativa, así si un vaso de 1litro contiene 100ml va a tener un 10% de capacidad, o en el simil con la humedad sería un 10% de Humedad Relativa. Por eso es que siempre se mide en porcentaje

Ejemplificación de la Humedad Relativa

La Humedad Absoluta es la cantida de agua que contiene el vaso, es el simil de la cantidad de vapor de agua que tiene el aire. En los vasos se mide en Litros, y la Humedad Absoluta en gramos de agua contenido en X volumen de aire.

Cuando se llena el vaso de más allá de su capacidad en volumen, lo que va a pasar es que se va a comenzar a derramar el agua, esto mismo en el aire es cuando se comienza a condensar el agua; así cuando las nubes ya no soportan más vapor en el aire, comienza a condensar y llueve.

Condensacion
La condensacion sucede cuando llenamos el vaso con mas agua de la que puede almacenar

Ahora bien. La Humedad Relativa es un poco complicada, por que se ve severamente afectada por la Temperatura y la Presión. Esto lo vamos a explicar con el ejemplo de los vasos.

Todos sabemos que si el aire se calienta se vuelve menos denso, por eso es que los globos aeroestáticos vuelan, ya que el aire caliente es menos pesado que el aire frío, por que ocupa un volumen mayor.  Dado que ocupa un volumen mayor, ahora puede albergar mayor cantidad de agua sin que ésta se condence. En el ejemplo de los vasos es como si el vaso se hiciera más grueso y por tanto le cabe mayor volúmen

Vasos de Diferentes tamanios

Es de suponerse que si se calienta el aire, se expande su capacidad de albergar vapor de agua, pero no se le añade más vapor, la Humedad Relativa tiende a bajar, por que si vaciamos el agua del vaso de diametro pequeño al de diametro grande, su altura (Humedad Relativa) se verá disminuido.

Y lo mismo pasa de manera inversa, si un aire se mide la Humedad Relativa cuando está caliente, y después se enfría, su Humedad Relativa se incrementará, esto pasa muy seguido en la Playa, cuando estás comiendo muy agusto, pides una cerveza fría fría fría, y después de un rato el aire que alberga cierta cantidad de agua se enfría súbitamente al entrar en contacto con el vidrio de la botella, se hace más denso y ya no puede retener esa cantidad de agua, y deja gotas de agua en tu cerveza o refresco. ¿o qué? ¿Pensabas que la botella había generado agua?

Cerveza condensando en la playa

Lo mismo sucede también en la ciudad, pero se debe de llevar la cerveza a una temperatura mucho más baja, debido a que en la ciudad hay mucho menos vapor de agua en el ambiente. A esa temperatura en la cual el aire comienza a condensar se le llama Punto de Rocío.  Y depende de la cantidad de vapor de agua contenida en el aire.

El otro factor que afecta severamente la Humedad Relativa es la Presión, ya que la presión hace que un gas se comprima y por tanto ocupe un volumen menor, al ocupar un volumen menor, ya no puede albergar tanto vapor de agua y comienza a condensar. Es por eso que en los Compresores de Aire, siempre hay que tener cuidado con el agua condensada en la parte baja del tanque, y hay que purgarlos periódicamente.

Purga Compresor

En la imágen de arriba se observa el tanque del compresor al cual le instalaron una electroválvula para abrir el tanque por algunos segundos y que escupa el agua condensada en el interior, para que no pase a los equipos neumáticos, así evitamos la corroción de dichos equipos.  Cuando trabajaba para una empresa farmaceútica en Queretaro, mi amigo Raymundo Perez instaló un sistema como ese y nos evitamos muchisimas desviaciones de Calidad.

Bueno con esto ya tienen una idea de lo que es la Humedad, que esta página no es para enseñar Humedad sino el Sensor HDC1080 de Texas Instruments. Pero antes debemos de aclarar lo que es el Protocolo I2C.

Protocolo de Comunicación I2C


El Protocolo I2C o I²C o IIC o formalmente llamado: Inter-Integrated Circuit fue desarrollado en 1982 por Philips Semiconductor para comunicar los diferentes periféricos en sus placas de PCB.

Es un Protocolo de Comunicación Serial Síncrona del tipo Maestro/Esclavo. Lo más padre de este protocolo es que solo requiere de 2 líneas de conexión, una para datos (SDA) y la otra para los pulsos del reloj (SCL).

Estas líneas son del tipo Open-Collector para que se puedan conectar varios dispositivos en el mismo bus, por lo que hay que conectar una resistencia de 10K Ohms en cada una de las líneas.

Esquema de conexion de I2C

AHORA SÍ EL HDC1080.


El Sensor HDC1080 es un Circuito Integrado de bajo costo que contiene un polímero que se encarga de medir la Humedad Relativa contenida en el ambiente, y en la parte trasera tiene una placa donde tiene un sensor de temperatura que se encarga de medir la temperatura. La Hoja de Datos dice que tiene las siguientes características:

Sonda del HDC1080 para los TecnoLoggers
  • Precisión de ± 2% de Humedad Relativa.
  • Precisión de ±0.2°C en Temperatura
  • Excelente estabilidad en Humedades Altas
  • Hasta 14bits de Resolución de las Mediciones
  • 100nA de Corriente cuando está dormido
  • 1.3µA de consumo promedio cuando se mide la Temperatura y Humedad Relavida a una taza de muestreo de 1 por segundo.
  • Voltaje de Alimentación de 2.7V a 5.5V
  • Protocolo de Comunicación de I²C
  • Dimensiones de 3mm x 3mm

La tensión de alimentación va desde los 5.5V hasta los 2.7V. de hecho tiene un comando para saber si el HDC1080 está alimentado con más de 2.8V (BTST). El consumo de potencia es muy poco, por lo que puede se utilizado con baterías. La hoja de datos nos indica que aproximadamente consume 100nA por que casi todo el tiempo está en modo sleep, cuando mide las condiciones ambientales consume 1.3µA  y solamente cuando arranca puede llegar a consumir hasta 7.2mA.

El HDC1080 cuenta con 6 pines de los cuales dos de ellos no se utilizan, por lo que los que nos interesan son 4, de los cuales 2 son de alimentación +Vcc y GND y los últimos dos pines son para la comunicación con el microcontrolador por medio de I²C. Por lo que es un circuito muy simple, lo que le brinda una gran ventaja.

Pines del HDC1080

Como dijimos anteriormente los pines SDA y SCL son Open Collector por lo que hay que conectarlos a una resistencia de 10K Ohms a +Vcc, así como se muestra en el siguiente esquema:

Conexión del HDC1080 con el Microprocesador

El Código de Identificación del Sensor HDC1080 en el bus I²C es 40h ó 0x40 ó 0100 0000b. Tiene  dos formas de accesar  la información , en modo Burst o en modo individual, nosotros utilizamos el modo burst por que es el que se muestra en el ejemplo de guía que puso Texas Instruments para Arduino.

La página de Texas Instruments proporciona un excelente ejemplo de como es que se debe de programar el HDC1080 para obtener su Temperatura y Humedad, este código lo pudes bajar aquí y es para Arduino. Lo que le hace falta a ese programa es el explicar como obtener el Número de Serie y la Función de la Resistencia Interna.

Uno de los grandes secretos que ponen es el saber utilizar bien las variables del Arduino por que hay que ponerlas como sin signo, por que si no al llegar al 50% de la escala te van a salir números negativos. La subrutina que me ha dado resultados es la siguiente:


//------------------------readSensor-----------------------------------
//  Esta subrutina lee los valores de temperatura y humedad del HDC1080
//---------------------------------------------------------------------
void readSensor()
{
  uint8_t Byte[4];
 
  Wire.beginTransmission(0x40);
  Wire.write(0x00);
  Wire.endTransmission();
  delay(25); //20ms con  cristal de 16MHz
 
  Wire.requestFrom(0x40, 4);
  delay(5); 
  Byte[0] = Wire.read();
  Byte[1] = Wire.read();
  Byte[3] = Wire.read();
  Byte[4] = Wire.read();

  TEMPERATURA_HDC = (unsigned int) Byte[0] <<8;
  TEMPERATURA_HDC = TEMPERATURA_HDC + Byte[1];
  TEMPERATURA_HDC = 165 * TEMPERATURA_HDC / 65536;
  TEMPERATURA_HDC = TEMPERATURA_HDC - 40;

  HUMEDAD_HDC = (unsigned int) Byte[3] <<8;
  HUMEDAD_HDC = HUMEDAD_HDC + Byte[4];
  HUMEDAD_HDC = 100 * HUMEDAD_HDC / 65536;
}

Antes de poder utilizar esta subrutina, hay que incluir la librería Wire.h,  inicializar la comunicación por el protocolo I²C, definir el tipo de comunicación y la resolución de las mediciones. Esto lo podemos hacer incluyendo los siguientes líneas de comandos:

#include <Wire.h>

En la parte de Setup debes de colocar:
 //-------------------------------INICIALIZAMOS EL HDC1080 ------------------------------------------------
    Wire.beginTransmission(0x40);
    Wire.write(0x02);
    Wire.write(0x90);
    Wire.write(0x00);
    Wire.endTransmission();
    delay(20);



EL PCB

Uno de los principales inconvenientes con el dipositivo es su encapsulado WSON, ya que es sumamente pequeño 3mm x 3mm x 0.8 mm, y los pines para soldar van debajo del integrado, por lo que utilizar un cautín es sumamente complicado.  Si se utiliza una pistola de aire caliente para soldarlo, es muy fácil de quemar o degradar el polímero de la ventanita que mide la humedad, ya que el aire caliente le da de frente. Por lo que prácticamente es un show el soldarlo.

Imagen 3d del Sensor de Humedad y Temperatura HDC1080

El otro gran inconveniente con este tipo de encapsulado es que a veces la soldadura se derrama  y hace contacto con la placa de metal de enmedio, lo que provoca que se genere un corto circuito. La inspección visual de que si la soldadura toca al pin es imposible, ya que está en la parte debajo del PCB, por lo que la única manera fiable de saberlo es conectar en microprocesaro y tomar lecturas.  El Soporte de Texas Instruments nos indica que una vez que se soldó se recomienda somenter por unas 72hrs el integrado a humedades altas para que vuelva a recobrar sus propiedades el polímero.

Sin embargo en la misma Hoja de Datos en la sección 9.3.3 de las páginas 18 y 19 nos advierte que si mides humedades superiores al 85%RH por lapsos entre 12 y 500hrs contínuamente se puede presentar un error permanente de medición (offset).

Para diseñar un Circuito con el que podamos utilizar el sensor hay que tener un FootPrint del encapsulado WSON de 6 Pines. Yo he utilizado el PCB del Sensor SI7021, sin embargo el que me ha funcionado mejor es uno que diseñé para EAGLE y el cual puedes bajar dando clic aquí en este footprint le estoy poniendo unos agujeros en el medio, para pasar el taladro y hacer un canalito para que el aire pase a través de él y la placa que mide la temperatura la mida de manera más efectiva.

LA PRECISIÓN

El otro gran inconveniente es que la precisión que indican en la Hoja de Datos no es real, he utilizado 34 sensores HDC1080 y a todos ellos les he realizado la calibración de Temperatura y Humedad y los errores son mucho mayores. Por lo que se debe de realizar un ajuste por medio de software.  Incluso 12 de ellos definitivamente no he podido ajustarle la Humedad.  Cabe aclarar que esos doce fueron de una vez que los compré en el 2018, salieron horrible en Humedad, pero en Temperatura salieron excelente.  En el 2020 compré 20 de los cuales llevo 15 y han salido bien el Humedad (sí he tenido que ajustar) pero no salieron tan bien en Temperatura (errores mayores a 0.3°C). La variación entre lotes es muy grande, por lo que no es real esa precisión, debido a  que no sabemos si nos va a tocar un sensor bueno o malo. 

Para demostrar ello pongo aquí algunas gráficas de los HDC1080 que he calibrado y parametrizado, estas mediciones se hicieron comparando el Instrumento INS103 que tiene instalado un HDC1080 expuesto, contra un datalogger en el que las mediciones son muy exactas.  Todo esto  se hace dentro de una cámara que aisla térmicamente y donde se varía la temperatura de manera controlada:

Comparativa HDC1080 del Instrumento INS103 en Temperatura

En la gráfica se muestra claramente como es que el HDC1080 presenta una ligera desviación cuando se enfría o cuando se calienta. Las oscilaciones del 26 de mayo son debido a que se encendío el sistema de refrigeración y este presenta ciclos. Sin embargo cuando se encienden los ventliadores internos de la cámara para homologar la distribución de temperatura las dos gráficas se acercan bastante y se tiene una buena medición, por lo que consideramos este instrumento apto, y sin la necesidad de realizar algún ajuste en Temperatura. Ahora en cuanto a la Humedad:

Comparativa HDC1080 con la Humedad utilizando el INS103

Aquí se observa claramente que el HDC1080 sigue los cambios de Humedad, pero que tiene un impresionante Offset, de aproximadamente 17.48% de Humedad Relativa. La hoja de datos nos asegura que el error iba a ser menor a ±2% por lo que estamos a casi 10 veces el error. Esto nos hizo llevar a que este instrumento INS103 solo pueda medir Temperatura ya que las mediciones de Humedad no son confiables. Si graficamos estos valores en una gráfica XY en función de la Humedad Real y de los valores Medidos por el HDC1080 tendremos:

Respuesta real del HDC1080 a la Humedad

Como se ve en la gráfica, la respuesta del HDC1080 deja de ser lineal aproximadamente a los 69% de Humedad Relativa, después de ello comienza a arrojar valores sumamente erroneos, de modo que si el HDC1080 te indica una humedad de 80%, tu no sabes si la humedad real es de 59% o de 90%. Lo que lo vuelve inviable. Que deje de medir a los 70% es un gran inconeniente, ya que en un día con mucha lluvia sí se alcanza a medir unos 78% o 79% sin problema.



Autor: Maestro en Ciencias
Salvador Macías Hernández
Salvador@MaciasHernandez.com
http://salvador.maciashernandez.com