Как стать автором
Обновить

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

Время на прочтение4 мин
Количество просмотров12K

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

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

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

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

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

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

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

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

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

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

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

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

Сборка

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

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

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

Название

Количество

Arduino Nano

1

LCD 1602 с адаптером I2C

1

Микросхема КР1533ЛИ1

1

Энкодер

1

Механическая кнопка (встраиваемая)

1

Оптопара PC817

3

Адресный RGB светодиод WS2812

1

МОП-транзистор IRF840

1

двойной клеммный блок

11

Светодиод

2

Резистор

9

Диод

1

Разъем для подключения блока питания

1

Блок питания 12 В

1

Датчик давления

1

Реле давления (опционально)

1

Поплавковый выключатель

1

Реле коммутации насоса к сети 220В, управляемое постоянным напряжением 12В

1

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

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

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

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

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

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

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

Прошивка написана в Atom с установленным PlatformIO. Исходники опубликованы здесь, прочая документация и схемы. Интерфейс программы русскоязычный с некоторыми нюансами, так как дисплей не поддерживает кириллицу: 8 символов кириллицы загружаются из программы, оставшиеся заменены латинницей. Руководство по использованию есть в прилагаемых файлах. Для сборки нужно загрузить следующие библиотеки себе на компьютер: GyverEncoder, GyverButton, CyberLib, LiquidCrystal_I2C. Затем прописать в параметре lib_extra_dirs в файле platformio.ini путь к папке с библиотеками (можно изменить через менеджер проекта).

Указать путь к папке с библиотеками
Указать путь к папке с библиотеками

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

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

Ссылки

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 9: ↑8 и ↓1+10
Комментарии30

Публикации

Истории

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань