Реле влажности. Что не так?

Megazillion
Offline
Зарегистрирован: 19.07.2017

В наличии arduino nano, реле и датчик влажности DHT11.

Задача собрать реле влажности в ванну. Логика следующая: в ванне установлен проходной выключатель, человек включив его включает свет и отключает ардуину, выйдя из ванны выключает свет и влючает ардуину и привязаный к ней через реле вентилятор, например на 10 минут. Затем ардуина приостанавливает свою работу до момента когда либо снова включат свет либо влажность поднимется до 70%.

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

Подскажите, чем это может быть вызвано?



#include "DHT.h"
 
#define DHTPIN 6    

#define DHTTYPE DHT11 

int Relay = 8;

DHT dht(DHTPIN, DHTTYPE);
 
void setup() 
{
  pinMode(Relay, OUTPUT);
  digitalWrite(Relay, LOW);  
  delay(60000);
  digitalWrite(Relay, HIGH);
  
  dht.begin();
}

void loop() 
{
  delay(10000);
  float h = dht.readHumidity();
if (h > 70)
  {
digitalWrite(Relay, HIGH);
delay(30000);
  }
  else 
{
digitalWrite(Relay, LOW);
  }
  
}
kalapanga
Offline
Зарегистрирован: 23.10.2016

В строках 27 и 32 High и Low не попутали, не наоборот должно быть? Ваше реле каким уровнем включается?

Megazillion
Offline
Зарегистрирован: 19.07.2017

Нагрузка на нормально открытом контакте. Включаю реле выоским уровнем.

kalapanga
Offline
Зарегистрирован: 23.10.2016

А судя по описанию и операторам в setup вроде как наоборот. У Вас написано, что при включении ардуино  включается на некоторое время вентилятор. И у Вас сначала устанавливается LOW, а после паузы HIGH. Разве это не включение и выключение?

Megazillion пишет:

выйдя из ванны выключает свет и влючает ардуину и привязаный к ней через реле вентилятор, например на 10 минут. 

void setup() 
{
  pinMode(Relay, OUTPUT);
  digitalWrite(Relay, LOW);  
  delay(60000);
  digitalWrite(Relay, HIGH);
  
  dht.begin();
}