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

Тема в разделе "Arduino & Shields", создана пользователем Megazillion, 19 июл 2017.

  1. Megazillion

    Megazillion Нуб

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

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

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

    Подскажите, чем это может быть вызвано?
    Код (C++):

    #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);
      }
     
    }
     
  2. Karabas

    Karabas Гик

    Во первых у вас в сетапе перепутанны включение и выключение реле, по идее нужно сначала включить, а затем выключить.
    Второе, как вы контролируете влажность? Есть мысль, что датчик тупо глючит. Смотрите значения в терминале, так будет проще понять, что именно происходит.
     
  3. mcureenab

    mcureenab Гуру

    Конденсат на датчике?
     
  4. Airbus

    Airbus Радиохулиган Модератор

    А для чего эта цветомузыка в setup?И еще выключение Ардуино для чего?Экономия энергии?
     
    Последнее редактирование: 20 июл 2017
  5. Tomasina

    Tomasina Сушитель лампочек Модератор

    Большинство китайских реле (точнее платок с модулем реле) включаются именно по LOW.
     
  6. Karabas

    Karabas Гик

    Ну тогда все понятно, при снижении влажности она и сработает.
     
  7. Airbus

    Airbus Радиохулиган Модератор

    А вот так?
    Код (C++):
        #include "DHT.h"
        #define DHTPIN 6
        #define DHTTYPE DHT11
        int Relay = 8; //реле пинна 8 ноге
        DHT dht(DHTPIN, DHTTYPE);
        void setup()
        {
          pinMode(Relay, OUTPUT); //на выход
          DitalWrite(Relay, LOW); //и выключен
           
        }

        void loop()
        {
           dht.begin(); //запускаем датчик
          float h = dht.readHumidity(); //если влажность больше 70
        if (h > 70)
          {
        digitalWrite(Relay, HIGH); //включаем вытяжку
        delay(300);
          }
          else
        {
        digitalWrite(Relay, LOW); //иначе выключаем
          }
       
        }