Автоматический дозатор воды на Arduino Uno


Примерно 71% поверхности земли покрыто водой, но только 2,5% этой воды пригодно для питья. При этом запасы питьевой воды на нашей планете сокращаются с каждым годом. Эксперты прогнозируют, что в ближайшем будущем человечество может столкнуться с нехваткой питьевой воды. Чтобы уменьшить потребление воды вместо обычных механических кранов можно использовать "умные" краны, которые будут открываться только когда необходимо. Поэтому в данной статье мы рассмотрим создание на основе платы Arduino и соленоидного клапана автоматического дозатора воды (Automatic Water Dispenser), который будет автоматически включать подачу воды когда рядом с ним (под краном) будет помещаться стакан.

Внешний вид автоматического дозатора воды на Arduino Uno

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Соленоидный клапан (Solenoid Valve) (купить на AliExpress).
  3. Ультразвуковой датчик HCSR04 (купить на AliExpress).
  4. IRF540 MOSFET (купить на AliExpress).
  5. Резисторы 1 кОм и 10 кОм (купить на AliExpress).
  6. Макетная плата.
  7. Соединительные провода.

Принцип работы автоматического дозатора воды

Принцип работы проектируемого нами дозатора воды достаточно прост – мы будем использовать ультразвуковой датчик HCSR04 для определения того помещен ли перед дозатором какой-нибудь объект (например, стакан). Для подачи воды будет использоваться соленоидный клапан, который будет открывать подачу воды когда на него подано питание и закрывать подачу воды когда питание на него не подано. То есть программа для Arduino будет постоянно проверять не помещен ли какой-нибудь объект под кран, если помещен, то будет подаваться питание на соленоид. А как только объект после этого будет убираться из-под крана подача питания на соленоид будет автоматически прекращаться и, соответственно, поток воды будет перекрываться.

Более подробно об использовании ультразвукового датчика HCSR04 вместе с платой Arduino можно прочитать в этой статье.

Работа схемы

Схема автоматического дозатора воды на основе платы Arduino Uno представлена на следующем рисунке.

Схема автоматического дозатора воды на основе платы Arduino Uno

Соленоидный клапан, используемый в нашем проекте, питается от 12V и имеет максимальный потребляемый ток 1.2A, а в обычном режиме он потребляет ток примерно 700mA. То есть чтобы держать клапан в открытом состоянии необходима сила тока примерно 700mA. Как мы знаем, плата Arduino не может на своих выходах обеспечить такой ток, поэтому нам необходима отдельная цепь для включения и выключения соленоидного клапана.

Для этой цели мы использовали в нашем проекте MOSFET транзистор IRF540N с N-каналом. Он имеет три вывода: затвор, исток и сток. Как видно из представленной схемы, положительный контакт соленоида запитывается от контакта Vin платы Arduino. Поскольку для питания платы Arduino мы используем адаптер на 12V, поэтому на ее контакте 12V мы можем использовать 12V для питания соленоида. Отрицательный контакт соленоида подключен к земле через исток и сток MOSFET транзистора. То есть питание на соленоид будет подаваться только тогда, когда MOSFET транзистор находится в открытом состоянии.

Соответственно, затвор MOSFET транзистора используется для его переключения между открытым и закрытым состоянием. Когда на затвор будет подаваться напряжение высокого уровня (логическая 1) транзистор будет открываться, а когда логический 0 – транзистор будет закрываться. Затвор транзистора подключен к контакту платы 12 Arduino через резистор на 1 кОм, который служит для ограничения протекающего тока, а к земле схемы затвор транзистора подключен через резистор 1 кОм.

Ультразвуковой датчик запитывается от контакта 3,3В платы Arduino. Его контакты Echo и Trigger подключены к контактам 8 и 9 платы Arduino соответственно.

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

Конструкция проекта после ее сборки на макетной плате

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим ее основные фрагменты.

Основная функция программы будет заключаться в измерении расстояния с помощью ультразвукового датчика HCSR-04. Когда расстояние до объекта будет меньше 10 см мы будем открывать MOSFET транзистор, в противном случае мы будем закрывать его. Также мы будем включать встроенный светодиод на плате Arduino, подключенный к ее контакту 13 чтобы было наглядно видно открыт или закрыт MOSFET транзистор.
Вначале в программе мы должны инициализировать используемые контакты.

Внутри функции setup мы зададим режим работы контактов – на ввод или вывод данных.

Внутри функции loop мы будем вызывать функцию measure_distance(), которая использует ультразвуковой датчик для определения расстояния до объекта и на основе этого обновляет значение переменной ‘distance’. Для измерения расстояний с помощью ультразвукового датчика нам необходимо подать на его контакт trigger сигнал низкого уровня на 2 микросекунды и затем сигнал высокого уровня на 10 микросекунд, а затем снова сигнал низкого уровня на 2 микросекунды. Это приведет к тому, что датчик излучит в окружающее пространство ультразвуковую волну, которая отразится от препятствия. После приема отраженной ультразвуковой волны датчик сформирует соответствующий сигнал на своем контакте echo – по времени появления этого сигнала можно затем рассчитать расстояние до препятствия. Более подробно все эти процессы описаны в статье про измерение расстояний с помощью ультразвукового датчика и Arduino. Фрагмент программы для определения расстояния до препятствия будет выглядеть следующим образом:

После определения расстояния до объекта нам необходимо сравнить его с заранее определенной границей (10 см). Если измеренное расстояние меньше 10 см мы будем открывать MOSFET транзистор и включать светодиод, если оно больше 10 см – то мы будем закрывать MOSFET транзистор и выключать светодиод.

Тестирование работы автоматического дозатора воды

Сделайте все соединения, показанные на выше приведенной схеме, и загрузите программу в плату Arduino. Закрепите провода, идущие к ультразвуковому датчику и соленоидному клапану чтобы они не мешали наливу воды в стакан. Убедитесь в том, что встроенный в плату Arduino светодиод не горит – это будет свидетельствовать о том, что соленоидный клапан закрыт. Вид собранной нами конструкции для тестирования работы проекта показан на следующем рисунке.

Тестирование работы проекта

Когда мы будем подносить сигнал под кран ультразвуковой датчик будет определять это, соответственно плата Arduino будет давать сигнал на открытие клапана и вода будет поступать в стакан. Как только мы будем убирать стакан плата Arduino будет закрывать клапан и подача воды будет прекращаться. Более подробно все эти процессы показаны на видео, приведенном в конце статьи.

Предупреждение: различные соленоидные клапаны имеют различное рабочее напряжение и потребляемый ток, поэтому для реализации данного проекта убедитесь в том, что вы выбрали соленоид работающий от 12V и с потребляемым током не более 1.5A.

Исходный код программы (скетча)

Видео, демонстрирующее работу автоматического дозатора воды

(Проголосуй первым!)
Загрузка...
3 636 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *