Рубрики
Схемы на Arduino

Автомат по продаже воды на Arduino Uno

Различные автоматы по продаже каких-либо товаров стали особенно популярны в последнее время – они просты в использовании и не требуют участия человека в процессе продажи. В данной статье мы рассмотрим создание своими руками (DIY) автомата по продаже воды (Automatic Water Vending Machine) на основе платы Arduino Uno, который можно установить в любом публичном месте и продавать с его помощью воду.

Оплату покупки воды можно будет производить с помощью металлических монет. Прием монет будет осуществляться модулем приема монет (Coin Acceptor Module), а для розлива нужного объема воды будут использоваться симистор (TRIAC) и оптопара.

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

  1. Плата Arduino Uno (купить на AliExpress).
  2. Coin Acceptor Module (модуль приема монет) (купить на AliExpress, в точности такого модуля как в статье я на AliExpress на момент ее публикации не нашел, но, возможно, вы такой модуль сможете найти где-нибудь в другом магазине).
  3. Симистор BT136 (купить на AliExpress).
  4. Оптопара MOC3021 (купить на AliExpress).
  5. Светодиод (купить на AliExpress).
  6. Перфорированная плата.
  7. Соединительные провода.
  8. Водяной насос переменного тока 230V.
  9. Трубы и крепеж для них.

Принцип работы автомата по продаже воды

Структурная схема работы проекта представлена на следующем рисунке.

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

Принцип работы модуля приема монет

Модули приема монет используются для приема монет в различных торговых автоматах. Они бывают разных типов: для приема одиночных монет, для приема нескольких монет, смешанного типа и т.д. В нашем проекте мы будем использовать модуль для приема одиночных монет.

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

Устройство приема монет при каждой принятой монете формирует на своем выходном контакте соответствующий импульс. Подсчитав количество этих импульсов мы можем определить какое количество монет было вставлено. Это устройство также имеет три переключателя, с помощью которых мы можем выбрать тип сигнала, который будет формироваться на его выходе. Первый переключатель имеет три позиции – для выбора длины импульса. Второй переключатель используется для установки сигнала в +5 V(NC) или в 0 V(NO) как показано на рисунке ниже. С помощью третьего переключателя можно задать точность работы устройства.

Обучение модуля приема монет

Чтобы обучить модуль на прием конкретных монет, выполните следующую последовательность шагов:

— сначала нажмите кнопку, размещенную сверху устройства и удерживайте ее в течение 4-5 секунд до тех пор пока не зажгется красный светодиод;

— когда горит красный светодиод вставьте в модуль монету, на прием которых вы хотите настроить программу;

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

Принцип работы симистора

Симистор (симметричный триодный тиристор, в англ. TRIAC) представляет собой переключатель переменного тока с тремя выводами, который можно переключить при помощи подачи отпирающего импульса на его управляющий вывод (затвор). Но в отличие от других подобных переключателей, которые проводят ток в одном направлении, симистор может управлять током в обоих направлениях. В нашем проекте мы будем использовать симистор BT136.

Принцип управления симистора переменным током показан на следующем рисунке.

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

Частота сигнала переменного тока в нашей сети составляет 50 Гц, соответственно, период сигнала равен 1/f =20 миллисекунд. Значит, половина периода будет равна 10 мс. Поэтому мы можем изменять время t1 на приведенном графике для управления яркостью свечения лампы переменного тока в диапазоне от 0 до 10 мс (10000 мкс).

Оптопара

Оптопару также называют оптоизолятором. Она обычно применяется для развязки двух различных электрических цепей, например, цепи переменного и цепи постоянного тока. Чаще всего она состоит из светодиода, который излучает инфракрасный свет, и фотодатчика, который обнаруживает его. В нашем проекте мы будем использовать оптопару MOC3021 для управления водяным насосом переменного тока сигналами с микроконтроллера (платы Ардуино), которые являются сигналами постоянного тока.

Схема проекта

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

Более подробно схема соединений между оптопарой и симиситором представлена на следующем рисунке.

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

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

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

Первым делом в программе объявим контакты, которые мы будем использовать. Цифровой контакт 2 используется как контакт входного прерывания, а цифровые контакты 6 и 12 используются для подключения симистора и светодиода соответственно.

Далее, внутри функции setup, мы настроим обработку внешнего прерывания на контакте 2 для обнаружения вставления монеты в устройство. Для настройки обработки прерывания мы будем использовать функцию attachInterrupt. При срабатывании прерывания будет вызываться функция coinInterrupt. Более подробно об использовании прерываний в платах Arduino вы можете прочитать в этой статье.

Внутри функции loop() мы будем проверять вставлена ли монета в устройства или нет и если мы обнаружим успешное вставление монеты, то мы будем подавать управляющий сигнал на симистор, который будет включать водяной насос на определенное время. Спустя этого времени мы будем выключать насос.

Функция coinInterrupt будет вызываться при обнаружении внешнего прерывания на цифровом контакте 2 – это будет происходить когда модуль приема монет будет обнаруживать вставление в него корректной монеты.

Сборка конструкции проекта и тестирование его работы

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

Собранная конструкция автомата по продаже воды показана на следующем рисунке (вид спереди).

Сзади наш автомат выглядит следующим образом:

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

Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

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

Файл Coin_Acceptor.ino

Видео, демонстрирующее работу проекта

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

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