Sensor de Temperatura y Humedad AHT10, Pic C Compiler

En esta sección aprenderás a programar un sensor digital de temperatura y humedad modelo AHT10 I2C , el objetivo es obtener la medición de humedad y temperatura del sensor y mostrar los valores en un Display OLED.

Sensor AHT10

El AHT10 es un sensor digital de humedad y temperatura producido por ASAIR Technologies. Utiliza un sensor de humedad capacitivo MEMS y un sensor de temperatura de banda de energía para medir la humedad relativa y la temperatura. El sensor tiene una interfaz de comunicación I2C. Es adecuado para su uso en una amplia variedad de aplicaciones, como sistemas de climatización, electrodomésticos, equipos médicos y más.

Características:

  • Modelo: Módulo AHT10
  • Tipo de interfaz: I2C (0x38)
  • Voltaje de funcionamiento: 3.3V –  5V
  • Rango de medición:
    • Temperatura: -40°C a 85°C
    • Humedad: 0% a 100% ±2 %RH
  • Precisión de temperatura: ±0.3 °C
  • Resolución de temperatura: 0.01 °C
  • Resolución de humedad: 0.024%
  • Precisión de humedad: 2%
  • Dimensiones: 15.2mm x 10.6mm
  • Peso: 2g

Circuito de conexión

Programación 

Inicialmente se definen los parámetros de la comunicación I2c para el sensor.


#use i2c(Master,Fast, sda=PIN_B0, scl=PIN_B1, force_sw, stream=AHT10_stream)

Se incluye la librería del sensor ATH10.


#include "AHT10.c"

Se inicializan los parámetros del sensor.


AHT10_Begin();

Se definen las variables de tipo flotante para el registro de los valores de temperatura y humedad.


float hum, temp;

Se utiliza la función para hacer la lectura del valor de temperatura y humedad. 


AHT10_Read(&hum, &temp);

Finalmente se muestran los valores en el Display OLED.


      sprintf(texto,"HUM %f %c ",hum ,'%');
      OLED_DrawText(1,1,texto,1);
 
      sprintf(texto,"TEMP %f C ",temp);
      OLED_DrawText(1,10,texto,1);
         
      OLED_Display();//Muestra la informacion en la pantalla

Código completo 


#FUSES NOMCLR

#use i2c(Master,Fast, sda=PIN_B0, scl=PIN_B1, force_sw, stream=AHT10_stream)

#use i2c(Master,Fast, sda=PIN_B0, scl=PIN_B1, force_sw, stream=OLED_stream)

#define SH1106_128_64 //DEFINE EL MODELO DE LA PANTALLA OLED
//#define SSD1306_128_64

#include "OLED_I2C.c"

#include "AHT10.c"

void main()
{ 
   OLED_Begin();
   OLED_ClearDisplay();
 
   AHT10_Begin();
   
   float hum=0, temp=0;
   
   char texto[20];
   
   while(TRUE)
   {   
      AHT10_Read(&hum, &temp);
      
      sprintf(texto,"HUM %f %c ",hum ,'%');
      OLED_DrawText(1,1,texto,1);
 
      sprintf(texto,"TEMP %f C ",temp);
      OLED_DrawText(1,10,texto,1);
         
      OLED_Display();//Muestra la informacion en la pantalla
   }
}

Scroll al inicio