htu21d выдает 0%...

Angbor
Angbor аватар
Offline
Зарегистрирован: 26.10.2015

Всем привет. Пробую подключать датчик влажности htu21d к Mega2560. DA на 20, CL на 21 естественно. Питание 3.3 взял с ноги 3.3 на Mega. В итоге температура показывается адекватная, а влажность 0%. При этом, если подышать на датчик, влажность растет (что ожидаемо) и потом возвращается к 0%, что тоже ожидаемо за исключением 0% влажности в нормальном режиме.

Это глюк датчика, или влажность надо калибровать как-то перед использованием?

Скетч и либа от товарища enjoyneering79

/*********/
/* 
  This is an Arduino example for SHT21, HTU21D Digital Humidity & Temperature Sensor

  written by : enjoyneering79
  sourse code: https://github.com/enjoyneering/

  This sensor uses I2C bus to communicate, specials pins are required to interface
  Board:                                    SDA                    SCL
  Uno, Mini, Pro, ATmega168, ATmega328..... A4                     A5
  Mega2560, Due............................ 20                     21
  Leonardo, Micro, ATmega32U4.............. 2                      3
  Digistump, Trinket, ATtiny85............. 0/physical pin no.5    2/physical pin no.7
  Blue Pill, STM32F103xxxx boards.......... PB7*                   PB6*
  ESP8266 ESP-01:.......................... GPIO0/D5               GPIO2/D3
  NodeMCU 1.0, WeMos D1 Mini............... GPIO4/D2               GPIO5/D1

                                           *STM32F103xxxx pins B7/B7 are 5v tolerant, but bi-directional
                                            logic level converter is recommended

  Frameworks & Libraries:
  ATtiny Core           - https://github.com/SpenceKonde/ATTinyCore
  ESP8266 Core          - https://github.com/esp8266/Arduino
  ESP8266 I2C lib fixed - https://github.com/enjoyneering/ESP8266-I2C-Driver
  STM32 Core            - https://github.com/rogerclarkmelbourne/Arduino_STM32

  GNU GPL license, all text above must be included in any redistribution, see link below for details:
  - https://www.gnu.org/licenses/licenses.html
*/
/***************************/
#include <Wire.h>
#include <HTU21D.h>

/*
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
*/
HTU21D myHTU21D(HTU21D_RES_RH12_TEMP14);


void setup()
{
  Serial.begin(9600);
  Serial.println();
  
  while (myHTU21D.begin() != true)
  {
    Serial.println(F("HTU21D, SHT21 sensor is faild or not connected")); //(F()) saves string to flash & keeps dynamic memory free
    delay(5000);
  }
  Serial.println(F("HTU21D, SHT21 sensor is active"));
}


void loop()
{
  /* DEMO - 1 */
  Serial.println(F("DEMO 1: 12-Bit Resolution"));
  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.println(F("DEMO 1: 14-Bit Resolution")); 
  Serial.print(F("Temperature.........: ")); Serial.print(myHTU21D.readTemperature()); Serial.println(F(" +-0.3C"));

 
  /* DEMO - 2 */
  Serial.println(F("DEMO 2: 11-Bit Resolution"));
  myHTU21D.setResolution(HTU21D_RES_RH11_TEMP11);
  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.println(F("DEMO 2: 11-Bit Resolution"));
  Serial.print(F("Temperature.........: ")); Serial.print(myHTU21D.readTemperature()); Serial.println(F(" +-0.3C"));

  /* DEMO - 5 */
  Serial.println(F("DEMO 5:"));
  Serial.print(F("Sensor's ID.........: ")); Serial.println(myHTU21D.readDeviceID());


  /* back to lib. default resolution */
  myHTU21D.softReset();
  myHTU21D.setResolution(HTU21D_RES_RH12_TEMP14);


  /* DEMO - END */
  Serial.print(F("DEMO starts over again in 20 sec."));
  delay(20000);
}

Вывод в порт

DEMO 2: 11-Bit Resolution
Humidity............: 0.00 +-2%
Compensated Humidity: -0.31 +-2%
Temperature.........: 22.93 +-0.3C
sadman41
Offline
Зарегистрирован: 19.10.2016

Возьмите другой сенсор, библиотеку, прочитайте показания вручную... Почему от 3.3В питаете?

Angbor
Angbor аватар
Offline
Зарегистрирован: 26.10.2015

Если подышать, получаем

DEMO 2: 11-Bit Resolution
Humidity............: 35.29 +-2%
Compensated Humidity: 36.11 +-2%
Temperature.........: 30.28 +-0.3C

 

sadman41
Offline
Зарегистрирован: 19.10.2016

35 - мало. В 80 поверил бы. Меняйте один из компонентов системы.

Angbor
Angbor аватар
Offline
Зарегистрирован: 26.10.2015

sadman41 пишет:
35 - мало. В 80 поверил бы. Меняйте один из компонентов системы.

0% в простое - это и есть ненормальность. 35 - это просто повышение от "комнатной" влажности, которая естественно не может быть 0%

Если бы он температуру тоже 0 градусов показывал, было бы понятно что плата мертвая, но температура-то правильная...

Про смену компонентов системы я не понял. Есть мега, есть датчик. Что на что менять?

Что касается 3.3 В - на плате так написано, вот и питаю от 3.3В :)

sadman41
Offline
Зарегистрирован: 19.10.2016

Что на что менять я уже написал в #1

nik182
Offline
Зарегистрирован: 04.05.2015

У датчиков влажности окисляются серебряные электроды внутри и тогда они начинают работать именно так - дыхнёшь - зашкаливают, а потом быстро сваливаются до нуля. Только замена помогает.  

Angbor
Angbor аватар
Offline
Зарегистрирован: 26.10.2015

sadman41 пишет:
Что на что менять я уже написал в #1
сори, че-то не увидел сразу. буду пробовать

Angbor
Angbor аватар
Offline
Зарегистрирован: 26.10.2015

nik182 пишет:
У датчиков влажности окисляются серебряные электроды внутри и тогда они начинают работать именно так - дыхнёшь - зашкаливают, а потом быстро сваливаются до нуля. Только замена помогает. 
ну тут не сказать, что зашкаливает, просто повышается на 35%

попробую еще поковырять, но скорее всего, увы, датчик сдох... позже отпишусь