Датчик температуры и влажности HTU21D (Arduino)

Цифровой датчик датчик HTU21D предназначен для точного измерения температуры и влажности, связь датчика с микроконтроллером осуществляется при помощи шины I2C.

В данной статье будет рассмотрен пример применения датчика HTU21D в виде модуля. Напряжение питания датчика должно быть в пределах от 1,9 до 3,6 В, на некоторые модули можно подавать напряжение питания 5 В, но при этом этот модуль должен быть оснащен стабилизатором напряжения 3,3 В. Ток потребления датчика в режиме измерения 300 μА, а в режиме ожидания 0,15 μА. Датчик снабжен детектором разряда батареи, если напряжение опускается ниже 2,25 В меняется флаг в регистре датчика.

Рабочий диапазон при измерении влажности от 0 до 100%, точность измерения ± 3% (макс. в диапазоне от 0 до 80%), диапазон измерения температуры от -40 до 125 °С, точность измерения ± 0,4 °С (макс. в диапазоне от -10 до 85 °С). Датчик измеряет температуру с разрешением 12…14 бит и влажность с разрешением 8…12 бит. Разрешение может быть изменено программно.

При тестировании датчика HTU21D была использована следующая библиотека — https://github.com/enjoyneering/HTU21D.git (HTU21D-master.zip)

#include <Wire.h>
#include <HTU21D.h>
 
/*
HTU21D_RES_RH12_TEMP14 - RH: 12Bit, Temperature: 14Bit, by default
HTU21D_RES_RH8_TEMP12  - RH: 8Bit,  Temperature: 12Bit
HTU21D_RES_RH10_TEMP13 - RH: 10Bit, Temperature: 13Bit
HTU21D_RES_RH11_TEMP11 - RH: 11Bit, Temperature: 11Bit
*/
HTU21D myHTU21D(HTU21D_RES_RH12_TEMP14);
 
 
void setup(){
  Serial.begin(9600);
  Serial.println();
  myHTU21D.begin();
  delay(5000);
 }
 
void loop(){
  Serial.print(F("Humidity............: ")); Serial.print(myHTU21D.readHumidity());Serial.println(F(" +-2%"));
  Serial.print(F("Compensated Humidity: ")); Serial.print(myHTU21D.readCompensatedHumidity());Serial.println(F(" +-2%"));
  Serial.print(F("Temperature.........: ")); Serial.print(myHTU21D.readTemperature()); Serial.println(F(" +-0.3C"));
 
  if(myHTU21D.batteryStatus() == 1){Serial.println(F("Battery.............: OK.  Level > 2.25v"));}
  else{Serial.println(F("Battery.............: LOW. Level < 2.25v"));}
 
  delay(20000);
}

По умолчанию подтягивающие резисторы (4,7 кОм) в модуле не подключены. Чтобы их задействовать, необходимо запаять имеющуюся на модуле перемычку, иначе необходимо предусмотреть внешние подтягивающие резисторы.

Ниже показан пример применения датчика температуры и влажности, информация о температуре и влажности будет выводится (с интервалом 10 секунд) на дисплей 0.54″ 14-segment LED на базе драйвера HT16K33 (ссылка на описание дисплея — http://rcl-radio.ru/?p=108647).

Дисплей 0.54″ 14-segment LED HT16K33 Backpact представляет собой четырех разрядный 14 сегментный (15 сегмент  — запятая на каждом разряде) индикатор которым управляет светодиодный драйвер HT16K33.

Для управления дисплеем используется библиотека 4x14LED.zip , которая рассчитана для работы в среде Arduino IDE и поддерживает платы Arduino Nano и UNO. Библиотека содержит несколько функций, которые позволяют выводить цифры и символы, управлять запятыми.

#include <Wire.h>
#include <HTU21D.h> // http://rcl-radio.ru/wp-content/uploads/2021/12/HTU21D-master.zip
#include <4x14LED.h> // http://rcl-radio.ru/wp-content/uploads/2021/09/4x14LED.zip
  HT4x14LED led;
  HTU21D myHTU21D(HTU21D_RES_RH12_TEMP14);
/*
HTU21D(resolution)
resolution:
HTU21D_RES_RH12_TEMP14 - RH: 12Bit, Temperature: 14Bit, by default
HTU21D_RES_RH8_TEMP12  - RH: 8Bit,  Temperature: 12Bit
HTU21D_RES_RH10_TEMP13 - RH: 10Bit, Temperature: 13Bit
HTU21D_RES_RH11_TEMP11 - RH: 11Bit, Temperature: 11Bit
*/
 
void setup(){
  Serial.begin(9600);
  Serial.println();
  myHTU21D.begin();
  delay(1000);
  led.init(1);
  led.brig(10);
  led.blink(1);
  led.clear();
 }
 
 
void loop(){
  led.print(myHTU21D.readHumidity()*10, 3,   0xf6, -1,-1,-1);
  delay(10000);
 
  led.print(myHTU21D.readTemperature()*10, 3,   0x1201, -1,-1,-1);
  delay(10000);
}

Добавить комментарий

Войти с помощью: