Уровень воды в бочке

Тема в разделе "Arduino & Shields", создана пользователем mutabor, 30 май 2016.

  1. mutabor

    mutabor Нуб

  2. joman

    joman Гик

    Купить/сделать 2 датчика воды:
    https://www.google.ru/search?q=датч...S6AS6y46gCw#newwindow=1&q=датчик+воды+arduino
    Купить/сделать реле.
    Соединение, такое же как в искре:
    датчик сверху, датчик снизу, реле-насос.
    Скетч:
    Опрашивем датчики.
    Если нижний сухой - включаем насос.
    Если верхний мокрый и насос включен - выключаем насос.

    Примерно так.
     
  3. mutabor

    mutabor Нуб

    Спасибо, вся проблема в скетчЕ.
     
  4. joman

    joman Гик

    Нарисуйте схему, куда вы присоединили датчики и реле. Я помогу со скетчем.
     
  5. mutabor

    mutabor Нуб

  6. joman

    joman Гик

    Дык там iskra. Вы тоже накинули на 1 пин датчик? Т.е. Serial port вам в перспективе не нужен?
    Датчик скорости потока жидкости У вас тоже имеется?
    Как мне видится, он не нужен.
     
  7. mutabor

    mutabor Нуб

    Все воткнуто через Troyka Shield, датчик скорости не нужен Serial port вам в перспективе не нужен
     
  8. joman

    joman Гик

    Но зачем?
     
  9. mutabor

    mutabor Нуб

    Затем, что у меня уже работает полив с использованием датчика влажности
     
  10. joman

    joman Гик

    Вот скетч, в случае, если датчики (нижний и верхний) и реле подключены к 1,2 и 5 пинам соответственно.
    Код (C++):
    #define PIN_LOW_LEV 1
    #define PIN_HIGH_LEV 2
    #define PIN_RELAY 5

    void setup() {
      pinMode(PIN_LOW_LEV, INPUT);
      pinMode(PIN_HIGH_LEV, INPUT);
      pinMode(PIN_RELAY, OUTPUT);
      digitalWrite(PIN_RELAY, LOW);
    }

    void loop() {
      if(!digitalRead(PIN_LOW_LEV) && !digitalRead(PIN_HIGH_LEV)){
        // Воды нет ни на одном датчике, включаем насос
        digitalWrite(PIN_RELAY,HIGH);
      } else if(digitalRead(PIN_HIGH_LEV)){
        // Вода на верхнем датчике, отключаем насос
        digitalWrite(PIN_RELAY,HIGH);
      }
    }
    Вероятно Вы меня не так поняли, зачем использовать Troyka Shield? Почему не воткнуть в ардуино? 600 рублей - не малые деньги (для такого проекта), которые можно потратить на более нужные вещи.
     
  11. mutabor

    mutabor Нуб

    Спасибо, буду пробовать. Чем я могу отблагодарить?
     
  12. joman

    joman Гик

    Не много наврал Вам. Тот скетч будет работать, если притянуть датчики внешними резисторами к земле.
    Вот скетч, использующий внутренние резисторы ардуино:
    Код (C++):
    #define PIN_LOW_LEV 1
    #define PIN_HIGH_LEV 2
    #define PIN_RELAY 5

    void setup() {
      pinMode(PIN_LOW_LEV, INPUT_PULLUP);
      pinMode(PIN_HIGH_LEV, INPUT_PULLUP);
      pinMode(PIN_RELAY, OUTPUT);
      digitalWrite(PIN_RELAY, LOW);
    }

    void loop() {
      if(digitalRead(PIN_LOW_LEV) && digitalRead(PIN_HIGH_LEV)){
        // Воды нет ни на одном датчике, включаем насос
        digitalWrite(PIN_RELAY,HIGH);
      } else if(!digitalRead(PIN_HIGH_LEV)){
        // Вода на верхнем датчике, отключаем насос
        digitalWrite(PIN_RELAY,HIGH);
      }
    }
     
    motomac нравится это.
  13. mutabor

    mutabor Нуб

    Спасибо.
     
  14. JAJER122

    JAJER122 Нуб

    Использовал ваш код, не сработал. У меня два датчика с герконами как использовали в проекте амперке, и твердотельное реле https://ru.aliexpress.com/item/32903011194.html?spm=a2g0s.9042311.0.0.590a33edlpEUVc. На датчики никак не реагирует, постоянно подано напряжение на реле, независимо от положения датчиков... Что делаю не так может кто знает?
     
  15. ELITE

    ELITE Гик

    ппц... на ардуино делать такое - это надо быть мазахистом....

    ЗАЧЕМ тут ардуина вообще?!! если надо просто включить, когда бочка пустая и выключить, когда полная?!!
    это делается из 2 датчиков и 2 реле! ВСЁ!!!
    простая схема электро-механического перекрестного триггера 1/2 без памяти....
     
    Vovka нравится это.