Консоль правления насосной станцией

454d7b8d6a746186485176721531f87f.jpg

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

Что это и зачем нужно

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

Посвящу, пожалуй абзац тому, как дошел до такого. Конечно, всем хочется сделать свою жизнь комфортнее, избавиться от бытовой рутины. Были в жизни периоды, когда приходилось ходить за питьевой водой с ведрами к колодцу в любую погоду. Потом данную задачу облегчил погружной насос, который включался вручную при помощи коридорного выключателя на D-триггере (если не ошибаюсь), было это нужно для того, чтобы запустить насос из нескольких помещений дома. Позднее был приобретен гидроаккумулятор с реле давления. Несколькими года позднее ко мне в руки попала «ардуина» и пришла идея сделать процесс поинтереснее. Отдельное спасибо AlexGyver за популяризацию данной темы, и за библиотеки, использованные в реализации.

Внешне устройство выглядит так (собрано из того, что было)Внешне устройство выглядит так (собрано из того, что было)

Итак, вот что устройство позволяет на данном этапе:

  • управлять насосом как на основе сигналов от реле давления, либо от аналогового датчика давления;

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

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

  • переходить в режим блокировки, если реле давления подвело, уровень воды в источнике опустился ниже допустимого (спасет насос от работы вхолостую) или датчик давления вышел из строя;

  • мониторить давление в системе, объем воды в гидроаккумуляторе, уровень воды в источнике, состояние реле и датчика давления.

    Функционал зависит от установленного режима работы.

Сборка

Законченное устройство вид изнутриЗаконченное устройство вид изнутри

Основой данного устройства является Arduino Nano (не оригинал) на Atmega 328p. Вывод информации осуществляется на жидкокристаллический дисплей LCD 1602 с адаптером I2C. Управление устройством осуществляется с помощью кнопки и энкодера. Микросхема КР1533ЛИ1 не является необходимостью, было решено установить для предохранения от возможных программных ошибок, поскольку в ранних версиях прошивки не предполагась работа не было защиты от зависания программы и т.п. Оптопары служат для гальванической развязки пинов контроллера от внешних цепей, в принципе могут быть исключены, разве что подтягивающие резисторы следует оставить.

Итак, в сборке использованы следующие компоненты

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

Принципиальная схема устройства приведена ниже.

Принципиальная схемаПринципиальная схема

Указания по подключению внешних устройств описаны в прилагаемых файлах.

Печатная платаПечатная плата

Часть устройство А1.2 (см. принципиальную схему)собрана на другой плате, исходники не предоставлены. Черными линиями обозначены проводники.

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

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

Несколько слов о структуре программы. Основной код написан в src\pump_station_console.cpp. Рабочия логика описана в классе PumpStation, теоретически можно релизовать управление несколькими станциями, применив несколько экземпляров класса. В классе InputF описаны статические методы для ввода информации: целые, вещественные числа, время, элемент списка.

Надеюсь кому-то проект окажется полезным. Не исключаю, что проект будет развиваться в рамках текущей задачи. Для себя я установил в корпусе RJ45 разъем, подключенные к RX, TX, RESET, +5V, GND пинам ардуины, чтобы загрузить обновление прошивки. Есть желание сделать плату с bluetooth модулем, чтобы подключать к RJ45 и загружать HEX-файл с андроид смартфона, есть в наличии два HC-05 модуля, но настроить его на загрузку не удалось. Буду признателен, если кто-то может поделиться опытом. Весь конструктив можете направлять вконтакт.

Ссылки

© Habrahabr.ru