Контроль уровня воды в бочке для управления насосом. Нужна помощь!

Тема в разделе "Arduino & Shields", создана пользователем lextorlex, 25 сен 2019.

  1. Andrey12

    Andrey12 Гик

    Ну теоретически может быть все что угодно.
    Поэтому у меня, как у настоящего параноика, есть защита от таких ситуаций - сделан перелив, в верхнюю часть бака встроена труба, если автоматика не срабатывает и налив выше всех аварийных поплавков продолжается то вода будет уходить в трубу аварийного перелива.
    Опять же если будет уходить бесконечно то зальет все на улице или сгорит насосная станция, поэтому у налива есть так же лимит работы по времени.
    Ну и апогей паранойи! Хочу сделать контроль за работой насосной станции, исключить холостую работу насоса, это когда воды нет а насос молотит, ограничить время работы, и контролировать давление в магистрали. Но это очень далекое будущее....
     
    ИгорьК и SergeiL нравится это.
  2. SergeiL

    SergeiL Гуру

    И это правильно!
    Большую часть кода занимают проверки на ошибки.
    Кажется вроде все предусмотрел, но что то вылезет...:(
     
    Andrey12 нравится это.
  3. SergeiL

    SergeiL Гуру

    Я в начале лета делал слив грязной воды у тещи на даче.
    Слив через бочку, из которой насос откачивает воду в емкость за пределы участка.
    Датчики кондукторные, автоматика проверенная - Овен.
    Такая же система работает уже несколько лет на закачке воды из колодца в бочку 1500 литров. Ни одного сбоя.

    Все сделал, все работает.
    А тут смотрю, насос откачал воду, и продолжает работу.... Блин, как???
    Оказалось - на датчике стоит пластиковая разделительная пластинка.
    E2.png
    На чистой воде - все работает нормально, вода скатывается влияния не оказывает.
    На воде с мыльной пеной, пластинка покрылась пеной и стала проводящим элементом.
    Разнес электроды на расстояние 10 см - больше проблем не было.
     
    KindMan, Andrey12 и DetSimen нравится это.
  4. ИгорьК

    ИгорьК Гуру

    Попробуй, это очень вкусно: http://www.erman.ru/preobrazovateli...razovateli_erman_serii_er-g-220-02_ermangizer
     
    SergeiL и Andrey12 нравится это.
  5. Andrey12

    Andrey12 Гик

    От 15 000 рублей? Ничо си!
    У меня весь огород столько не стоит :)
    Но дело даже не в этом. у меня МК это хобби, так что самому интереснее собрать.
     
    KindMan и lextorlex нравится это.
  6. ИгорьК

    ИгорьК Гуру

    Если насос только огород поливает, то смысла нет. А если он еще и дачу водой снабжает, и там есть душ - смысл есть, вне зависимости от стоимости огорода. У меня лет семь была обычная система, потом разорился на эту штуку. "Оно того стоит," - сказали все обитатели.
     
  7. parovoZZ

    parovoZZ Гуру

    что-то усложняете всё. Вот схема для двух уровней без МК.
    [​IMG]
     
  8. Andycat

    Andycat Нерд

    а расскажите плиз чем он круче обычного электромагнитного клапана на гидроаккумуляторе в частном доме?
    у меня стоит уж 10 лет почти - вообще проблем нет
     
    Последнее редактирование: 27 сен 2019
    Andrey12 и KindMan нравится это.
  9. ИгорьК

    ИгорьК Гуру

    Проблемы у вас две:
    - прыгающее давление в системе
    - резкое включение насоса.

    Вы просто не знаете, что может быть по-иному.
     
  10. Andycat

    Andycat Нерд

    Вы наверное не знаете что реле можно регулировать и просадки давления нет в системе.
    А резкое включение насоса меня не напрягает, он в 20 метрах от дома и на 15 метрах глубины.

    Впрочем дело вкуса, я за 15000 лучше лишние дни в отпуске отдохну.
     
    Andrey12 нравится это.
  11. ИгорьК

    ИгорьК Гуру

    Ну, слава Богу! Теперь знаю.

    Поздравляю.

    Ну да, я тоже предпочитаю обсуждать вкус ананаса с тем, кто его ел.
     
  12. YeS

    YeS Гик

    Нет. Не может. Однако он вполне может не перейти в разомкнутое положение, либо не перейти в замкнутое, когда должен, если его конструкция имеет определенные недостатки. На первой странице этого обсуждения как раз и предлагали эти датчики сразу выкинуть по вышеуказанным причинам.
     
  13. SergeiL

    SergeiL Гуру

  14. ИгорьК

    ИгорьК Гуру

    Сказать "совсем нет" - нельзя, ибо вот в чем дело.
    Если расход воды покрывается мощностью насоса и отдачей скважины - то совсем нет. А если летом поливается участок с пары точек, открыта вода на кухне, кто-то умывается в туалете и ты полез в душ - давление плавно упадёт.

    Но если ты моешься в душе и кто-то открыл еще один кран - это незаметно.

    Ну и нет увеличения/уменьшения давления, связанных с работой насоса в целом. Причем, система не требует большого гидроаккумулятора, который постоянно норовит стравить воздух и требует подкачки.

    Из плюшек - можно дистанционно блокировать работу насоса и иметь сигнал об ошибке.

    Есть еще один плюс в этой шняге, но думаю, он будет касаться немногих.

    И поскольку я в отпуске бываю реже чем на даче, а иногда и провожу его там, полагаю покупка себя оправдывает.
     
    SergeiL нравится это.
  15. SergeiL

    SergeiL Гуру

    А у меня, лет 15 стоит самая простая насосная станция, там аккумулятор литров на 15-20 шумная!!!.
    Моешься в душе постоянно меняется напор.
    Открыл кран, пошла вода из аккумулятора. Насос включился - напор увеличился, качает - давление растет, выключился опять снижается.
    Но температура не меняется, так как давление одно и тоже, что у холодной, что у горячей.

    У себя давно планирую реконструкцию. Хочу уйти от насосных станций на погружной насос.
    Чтобы было просто слить воду уезжая зимой, и также просто все включить, приехав на дачу.
    Выключил насос, открыл кран, и вся вода стекла в колодец.
    Зимой включил заранее обогрев трубы, приехал, закрыл кран, включил насос и система заработала.
    Я раза 3-4 раза, за зиму езжу, а то и меньше, смысла нет никакого греть трубы и дом постоянно.
     
  16. lextorlex

    lextorlex Нерд

    Вопрос решен. Проблема была не в датчиках. Я думаю что проблема была в том что датчики опрашивались постоянно, без задержки по времени. Добавление delay в 5 секунд в конце функции loop решило проблему. Так же, в коде, состояния ошибок выведены в отдельную функцию куда оптом можно будет прописать аварийные диоды и выход из бесконечного цикла по нажатию кнопки. Так же был написан таймаут от перелива по подсчету циклов loop. Так как delay во всем коде один в конце цикла loop, то при срабатывании нижнего датчика булеан открывает доступ к счетчику циклов. Если сработал датчик верхнего уровня, то счетчик обнуляется и доступ к нему закрывается. Если нет, то через 180 циклов, которые эквивалентны 15 минутам ((15*60)/5) отключается реле насоса. Точность может и не атомная, но для этой цели вполне себе работает годно)))). Код ниже:

    Код (C++):
    // у датчиков нижнее положение +5в, верхнее 0в.
    #define MIN 2
    #define MAX 3
    #define ALARM 4
    #define RELEY 5
    boolean minlevel =0;
    boolean maxlevel =0;
    boolean alarmlevel =0;
    int countdown = 0;
    bool counter_enabler = false;
    void setup()
    {
    Serial.begin(9600);
    pinMode(MIN, INPUT_PULLUP);
    pinMode(MAX, INPUT_PULLUP);
    pinMode(ALARM, INPUT_PULLUP);
    pinMode(RELEY, OUTPUT);
    }

    void ReadSensors (boolean *p_minlevel, boolean *p_maxlevel, boolean *p_alarmlevel) //функция чтения датчиков
    {
    (*p_minlevel) = digitalRead(MIN);
    (*p_maxlevel) = digitalRead(MAX);
    (*p_alarmlevel) = digitalRead(ALARM);
    }

    void Error (int x) //функция бесконечного цикла для критических ошибок с заделом на подключение, диодов и кнопки снятия аварии
    {                
      if (x == 1)
        {
          Serial.println("Attention! ALARM_LEVEL was enabled ");
        }
      else if (x == 2)
        {
          Serial.println("Attention! TIMEOUT");
        }
      while(true)
      {
      ;
      }
    }

    void Diagnostics ()                       //функция отображения состояния датчиков на экран
    {
    Serial.print("MIN_LEVEL - ");
    Serial.print(minlevel);
    Serial.print("     ");
    Serial.print("MAX_LEVEL - ");
    Serial.print(maxlevel);
    Serial.print("     ");
    Serial.print("ALARM_LEVEL - ");
    Serial.print(alarmlevel);
    Serial.println();
    }

    void loop() {
    ReadSensors(&minlevel, &maxlevel, &alarmlevel);
    Diagnostics();

    if(alarmlevel)
    {
      digitalWrite(RELEY, LOW);
      Error (1);
    }

    if(minlevel&&(!maxlevel))
    {
      counter_enabler = true;                            // открывает доступ к счетчику циклов при срабатывания датчика минимального уровня
      digitalWrite(RELEY, HIGH);
    }

    if(maxlevel)
    {
      countdown = 0;                                       //обнуляет счетчик циклов и закрывает доступ к счетчику циклов
      counter_enabler = false;                         //при срабатывания датчика максимального уровня
      digitalWrite(RELEY, LOW);
    }

    if(counter_enabler)        //счетчик циклов
    {
      ++countdown;
      if(countdown == 180)                                //таймаут. 180 это количество циклов в 15 минутах разделенное на delay каждого цикла ((15*60)/5)
      {
        digitalWrite(RELEY, LOW);
        Error (2);
      }
    }

    delay(5000);
    }
     
    Последнее редактирование: 3 окт 2019