Создание автоматического долива воды в чайник — своими руками

в 8:01, , рубрики: arduino, timeweb_статьи_выходного_дня, автодолив, автодолив воды в кофемашину, автодолив воды в чайник, автоматический долив, автоматический долив воды, умный чайник
image

Во время наших ежедневных утренних ритуалов часто возникает момент, когда нужно включить кофемашину или чайник, и если не повезет, то можно услышать их молчаливую просьбу: «Пожалуйста, добавьте воды» И Вам приходится искать подходящую емкость, терпеливо ждать, пока она заполнится водой из фильтра, а потом аккуратно переливать воду из емкости в чайник, рискуя при этом разлить ее. Знакомая вам ситуация?

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

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

Видео

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

Водопровод

Наибольшие опасения у меня вызывала необходимость прокладывать водопровод к чайнику. Однако, когда я в очередной раз менял фильтры для воды, я осознал, что нет необходимости прокладывать масивную полипропиленовую трубу. Вместо этого можно использовать тонкую и гибкую трубку, которую можно легко спрятать за кухонной мебелью и которая почти не отличается от обычного электрического провода. Эта трубка надежная легко монтируется и не занимает много места. Для ее соединения я использовал проверенные временем быстросъемные соединители John Guest, которые позволяют соединять трубу без необходимости пайки или сварки. К ним можно подобрать большое количество различных фитингов.

image

Чайник

Система долива воды без проблем работает с кофемашинами, увлажнителями и аквариумами. Однако, с чайниками с прямым нагревом воды ситуация сложнее. Поплавковый клапан, который будет постоянно подвергаться воздействию кипящей воды, скорее всего, быстро выйдет из строя. Я не проводил экспериментов в этом направлении и не могу, что-то утверждать.

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

Я все еще удивлен, почему его продавцы называют его термопотом? Это определенно не термопот. В термопоте сначала кипятится весь объем воды, а потом весь день поддерживается ее температура, тратя на это электроэнергию 30-70 Ватт в час.

Я бы назвал его чайником с проточным нагревом, но это звучит слишком сложно для среднестатистического человека. Возможно бы ему подошло название «Экочайник», но я не занимаюсь их продажей или производством, так что пусть они сами разбираются, как его правильно называть.

image

Встроенный датчик уровня воды

Датчик нижнего уровня воды в чайнике, подобно многим бытовым приборам, включает в себя геркон и поплавок с магнитом.

image

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

image

Датчик минимального уровня соединен одним контактом геркона с GND, а другим — с микроконтроллером чайника и подключен через подтягивающий резистор к 5 В. Для соединения с Ардуино требуется лишь два провода. Однако, поскольку я для Arduino использую встроенный в чайник источник питания, я так же подсоединяю еще один провод к 5В.

image

Поплавковый клапан

Я приобрел поплавковый клапан, предназначенный для поддержания уровня воды в аквариуме. Механизм его работы аналогичен работе клапана в туалетном бачке.

image

Заполнение емкости продолжается до тех пор, пока поплавок, поднимаемый водой, не перекроет поток воды. Когда уровень воды понижается, устройство автоматически открывается.

image

Электромагнитный клапан

Электромагнитный клапан должен быть закрытым в неактивном состоянии. Я заказал модель на 12 В, но продавец отправил мне версию на 24 В. Чтобы избежать долгого ожидания нового клапана, я нашел для него у себя в запасах блок питания на 24 В. Так же возможно использование повышающего преобразователя XL6009, но в моем случае он был бы избыточным.

Ток потребления электромагнитного клапана в открытом состоянии составляет 200 мА.

image

Механизм работы электромагнитного клапана усиливает уверенность в безопасности системы автоматического долива воды. Он почти всегда находится в закрытом положении и открыть его намного труднее, чем закрыть. Электромагнитное поле — единственное, что может открыть клапан, и никакие другие средства не могут этого сделать. Я попытался открыть его с помощью обычного неодимового магнита, но мне это не удалось.

Как это работает? На схеме изображено, что вода, поступающая через маленькое отверстие в диафрагме, оказывает давление на диафрагму сверху, прижимая резиновое кольцо запорного клапана к проходному отверстию. Чем выше давление воды, тем сильнее прижимается клапан. Если давление в водопроводе снижается, то на диафрагму также давит пружина сверху, и нет причин для беспокойства. Однако, если электромагнит поднимет подпружиненный стержень и откроет маленький обратный клапан в центре диафрагмы, то вода начнет вытекать через это отверстие, давление на диафрагму уменьшится, и она поднимется вверх, открывая проходное отверстие для воды.

image

Источник питания для электроклапана

Поскольку я получил ЭМ-клапан на 24 В, то я нашел в своих запасах блок питания от старого настольного светильника, который подходит мне по напряжению и току. Ток, который он выдает, превышает максимальный ток нагрузки, которая будет подключена к нему, более чем в два раза, что очень благоприятно для надежности и долговечности. Более того, большую часть времени блок питания будет находиться в состоянии покоя, поскольку добавление воды происходит не слишком часто.

image

Микроконтроллер

Я выбрал для использования Arduino Pro Mini, потому что у меня их много и я доверяю микроконтроллерам больше, чем дискретной логике. В микроконтроллере можно включить режим WDT (Watchdog Timer), который в случае любой непредвиденной ситуации немедленно восстановит его работу и выведет из зависшего состояния.
Конечно для такой простой задачи, можно было бы использовать и Attiny, но, как я уже упоминал, у меня есть много Arduino, и было бы неразумно их не использовать.

image

Многие новички боятся прошивать Arduino Pro Mini из-за отсутствия в ней USB-UART моста. Но хочу вас успокоить, если использовать USB-TTL мост FTDI FT232, то даже соединительные провода не понадобятся. Просто соедините две платы, как показано на изображении. Чтобы обеспечить надежный контакт, немного придавите их друг к другу и нажмите кнопку «Прошить» в Arduino IDE. Это все, ничего сложного.

image

Алгоритм работы автодолива

Основные шаги работы можно представить следующим образом:

Вода подключается через тройник к выходу водоочистного фильтра с использованием трубки диаметром 1/4". Эта трубка протягивается к чайнику и подключается к электромагнитному клапану.

Когда штатный датчик минимального уровня воды сигнализирует о необходимости долить воду, электромагнитный клапан открывается. Важно, чтобы он открылся на время, достаточное для долива половины объема емкости чайника. Это предотвращает случайный перелив и исключает необходимость использования датчика максимального уровня воды.

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

Также, чтобы обеспечить безопасность, долив воды осуществляется только в присутствии человека. Для определения наличия человека можно использовать датчик наличия воды. Если в чайнике вода заканчивается, то это происходит из-за того, что кто-то хочет выпить чай, и система будет оповещена о необходимости долить воду.

Для обеспечения дополнительной защиты, можно так же установить датчик протечки воды с управляемым электромеханическим клапаном на водопроводной трубе. В случае обнаружения протечки, датчик отправит сигнал электромагнитному клапану для перекрытия водопровода. Однако, учитывая надежную защиту чайника, использование этого датчика может быть необязательным.

Таким образом, можно использовать 5 степеней защиты:

  1. Электромагнитный клапан.
  2. Уменьшенный в 2 раза объем долива воды.
  3. Механический, поплавковый запорный клапан.
  4. Присутствие человека при срабатывании долива воды.
  5. Датчик протечки воды с исполнительным клапаном на стояке.

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

image

Схема

Я осознаю, что задача достаточно базовая и можно было бы использовать схему одновибратора на микросхеме NE555, модифицировав реле с таймером под эти нужды. Однако, для меня более простым и экономичным вариантом было использование Arduino Pro mini. Во-первых, у меня их достаточно много. Во-вторых, мне не нужно будет ничего сверлить, травить или переделывать.

Так как питание микроконтроллера Arduino будет происходить от встроенного в чайник стандартного линейного стабилизатора, идеи о Wi-Fi отпали сами собой. Впрочем, эти функции не особо нужны, я планирую использовать их в следующем проекте при модернизации кофемашины. Для снижения нагрузки на уже загруженный штатный линейный стабилизатор, я удалил светодиод «Power» с Ардуино и программно перевожу контроллер в спящий режим. В этом режиме он потребляет всего 2 мА и почти не влияет на общее потребление тока заводских плат в чайнике.

Керамический конденсатор 0,22 мкФ защищает не только от дребезга контактов геркона, но и от ложных срабатываний, поскольку помехи от мотора помпы слегка зашумляют линию питания. Конечно, можно было бы установить LC фильтр питания, но, как показывает практика, все работает отлично и без него.

Диод 1N4007 защищает от выбросов ЭДС самоиндукции электромагнитного клапана.

Резистор 10 кОм, подключенный к GND и базе транзистора, блокирует транзистор, на случай, когда в спящем режиме вывод микроконтроллера находится в третьем состоянии и любая мощная электромагнитная помеха может его открыть.

Резистор 1 кОм защищает управляющий выход микроконтроллера.

Транзистор КТ972 работает в режиме ключа и управляет электромагнитным клапаном.

image

Реализация

Прокладываю трубку в пустых пространствах за кухонной мебелью. Со стороны фильтра для воды подсоединяю тройник: одним концом к фильтру, вторым — к крану для питьевой воды и третьим — к трубке, которая ведет к чайнику. Для большей надежности устанавливаю кран для ручного перекрытия подачи воды.

К чайнику прикрепляю коробку с электроклапаном и подсоединяю к нему вход и выход воды.

image

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

Внутри корпуса чайника достаточно места. Я без труда размещаю в нем источник питания 24В для электромагнитного клапана. Там же находит свое место и микроконтроллер Arduino pro mini.

image

Код для Ардуино

Я представляю два скетча. Первый является более надежным, так как в нем постоянно активен WDT, но, к сожалению, при этом Arduino потребляет 15 мА, так как работает без перехода в спящий режим. Учитывая, что я использую уже достаточно загруженный встроенный в чайник стабилизатор, для меня важно не перегружать его и по этому я использую другой скетч.

Нажмите, чтобы посмотреть

#include <avr/wdt.h>

#define valve 3                             // выход управления электроклапаном
#define INT0_PIN 2                          // вход прерывания INT0
#define interval 10000                      // Интервал времени долива в ms (рассчитывается опытным путем)

void setup() 
{
  wdt_enable(WDTO_4S);                      // включаем WDT 
  pinMode (valve, INPUT);                   // На всякий случай для безопасности отключаем управление электроклапаном.
  pinMode (INT0_PIN, INPUT_PULLUP);         // Подтягиваем вход INT0 внутренним резистором
  attachInterrupt(INT0, myISR, FALLING);    // Настраиваем прерывание на срабатывание при смене значения с HIGH на LOW (FALLING)
}

void loop() 
{
  wdt_reset();                              // кормим собаку
}  
   
void myISR()                                // Обработчик внешнего прерывания INT0
{
  detachInterrupt(INT0);                    // запрещаем обработку внешнего прерывания INT0
    //*****************************
    pinMode (valve, OUTPUT);                // назначаем выход для управление электроклапаном
    digitalWrite(valve, HIGH);              // открываем клапан для долива воды
      for(uint16_t i=0; i<interval; i++)    // выдерживаем заданный интервал, для требуемого объема долива
      {
        delayMicroseconds(500);             // примерно 1 ms
        wdt_reset();                        // кормим собаку
      }
    pinMode (valve, INPUT);                 // отключаем управление электроклапаном и переводим выход в 3-е состояние на всякий случай
    //*****************************
  attachInterrupt(INT0, myISR, FALLING);    // Настраиваем прерывание на срабатывание при смене значения с HIGH на LOW (FALLING)
}  

Второй скетч является гибридным. Он использует два режима: WDT и Sleep. В коде перед переходом микроконтроллера в спящий режим отключается режим Watchdog Timer (WDT), и контроллер можно пробудить только изменением сигнала от встроенного магнитного датчика «Закончилась вода». После пробуждения контроллера в коде немедленно запускается WDT. Такой режим не представляет опасности при зависании из-за невозможности пробуждения, так как управляющий выход после каждого включения клапана перепрограммируется на вход, исключая его случайное включение от проходящих через него высокоэнергетических частиц, прилетевших из космоса.

Нажмите, чтобы посмотреть

#include <avr/sleep.h>
#include <avr/wdt.h>

#define valve 3                          // выход управления электроклапаном
#define interval 10000                   // Интервал времени долива в 1:10ms. Интервал рассчитывается опытным путем
#define int0_pin 2                       // вход внешнего прерывания INT0

void setup() 
{
  wdt_enable(WDTO_4S);                    // включаем WDT с интервалом 4 сек
  pinMode (valve, INPUT);                 // Для безопасности отключаем управление электроклапаном. 
  pinMode (int0_pin, INPUT_PULLUP);       // Подтягиваем вход INT0 внутренним резистором
  attachInterrupt(INT0, myISR, FALLING);  // Настраиваем прерывание. Сработает при изменении сигнала на входе D2 с HIGH на LOW
}

void loop() 
{                
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);  // SLEEP_MODE_PWR_DOWN - самый экономичный режим 
  sleep_enable();                       // разрешить режим сна
  wdt_disable();                        // отключаем WDT перед сном     
  sleep_mode();                         // Переводим МК в сон и ждем когда в чайнике закончится вода 
}  
   
void myISR()                              // Обработчик внешнего прерывания INT0
{
  detachInterrupt(INT0);                  // запрещаем обработку внешнего прерывания
    wdt_enable(WDTO_4S);                  // включаем WDT с интервалом 4 сек
   //*****************************
    pinMode (valve, OUTPUT);              // Активируем вывод для управление электроклапаном
    digitalWrite(valve, HIGH);            // открываем клапан для долива воды
    for(uint16_t i=0; i<interval; i++)    // выдерживаем заданный интервал, для требуемого объема долива
    {
      delayMicroseconds(5000);            // примерно 10 ms
      wdt_reset();                        // кормим собаку
    }
    pinMode (valve, INPUT);               // отключаем управление электроклапаном (переводим пин в 3-е состояние)
    //*****************************
  attachInterrupt(INT0, myISR, FALLING);  // Настраиваем прерывание 0 на срабатывание при смене значения с HIGH на LOW (FALLING)
}

Заключение

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

Сейчас я переделываю кофемашину так, чтобы проект был легко повторим. Я создал устройство без необходимости подключения к штатным платам аппарата. Это позволит подключить систему долива к кофемашине или чайнику без необходимости их вскрытия.

Благодарю вас за то, что дочитали материал до конца! Я надеюсь, что эта статья была вам интересна и вы сможете применить мою DIY самоделку в своих проектах. Если у вас есть какие-либо вопросы, не стесняйтесь задать их в комментариях. Я с удовольствием на них отвечу.


Автор: Алекс

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js