В этой статье мастер-самодельщик расскажет нам, как сделать систему мониторинга и управления уровнем воды в емкости. Это простая и надежная система.

Её ключевые особенности следующие:
Мониторинг уровня воды в реальном времени.
Автоматическое включение / выключение насоса.
Аварийное выключение насоса.

Инструменты и материалы:
-Arduino Pro mini;
-Ультразвуковой датчик HC-SR04;
-Модуль MAX485;
-ЖК-модуль i2c;
-ЖК-дисплей 1602;
— Микроконтроллер ATTINY45 / 85;
-Регулятор напряжения LM7805;
-NPN-транзистор (2n3904);
-N-канальный МОП-транзистор IRFD024PBF;
-Диод 1N4007;
-5-контактный разъем;
-4-контактный разъем;
-2-контактный разъем;
-Клеммы с 2 контактами (синие) — 2 шт;
-Клемма с 2 контактами (зеленая);
-Гнездо постоянного тока (- 2 шт
-Аудио разъем (папа/мама) — 2 шт;
-Резистор 1 кОм;
-Резистор 10 кОм — 3 шт;
-Конденсатор 100 нФ — 3 шт;
-Конденсатор 100 мкФ;
— Кнопка SMD,6×3.5mm;
-DIP-переключатели (SPST 2) — 2 шт;
-Кнопка включения;
-Тумблер;
-Реле 12 В постоянного тока;
-Релейный контактор;
-Блок питания постоянного тока 5 В (> 200 мА);
-Блок питания постоянного тока 12 В (> 500 мА);
-Коробки для корпуса подходящего размера;
-Крепеж;
-Паяльные принадлежности;
-Отвертка;
-Провода;

Шаг первый: блок датчиков
Этот блок измеряет уровень воды и отправляют данные на главный контроллер. Он имеет два датчика для измерения уровня воды. Один — ультразвуковой датчик расстояния HC-SR04, другой — два длинных винта, выступающих наружу, как показано на фото.

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

Прорежьте отверстия и горячим клеем закрепите датчик на месте.

Затем просверлите два отверстия диаметром 3 мм с промежутком в 2-3 см в центре крышки.
Вставьте длинные болты M3 с проволочной клеммой, зажатой между двумя шайбами с задней стороны крышки, и затяните гайками M3 с другой стороны.

Блок датчиков использует ATTINY45 в качестве основного микроконтроллера. Как упоминалось ранее, для измерения уровня воды используется HC-SR04. Он работает путем измерения расстояния от верхней части бака.

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

Сначала мастер хотел отправить данные через радиочастотные модули HC-12. Но диапазон этих модулей не соответствует запросам. Мастер использовал преобразователь MAX485 TTL в RS485 и сделал небольшую переходную плату, чтобы установить ее вместо модулей HC-12.
Схему и ссылку на плату можно скачать по этому адресу.
Монтаж осуществляется следующим образом:
HC-SR04 к главной цепи:
Vcc — 5 В (CN1).
trig — trigPin (CN1).
echo — echoPin (CN1).
Gnd — GND (CN1).

Болты М3 к главной цепи:
Болт 1 — 5 В (CN1).
Болт 2 — 100 (CN1).

Модуль MAX485 (TX):
VCC — 5 В (разъем HC-12)
А — 1/4-дюймовый аудиоразъем.
B — 1/4-дюймовый аудиоразъем.
GND — GND (разъем HC-12)
R0 — RX (разъем HC-12)
RE — VCC (MAX485) или 5V.
DE — RE (сокращенно RE и DE).
DI — TX (разъем HC-12).

Гнездо постоянного тока (разъем P1):
Tip — 5V
Sleeve — GND

Шаг второй: контроллер
Работа контроллера проста. Arduino используется в качестве основного контроллера. Он получает данные датчика, отправленные с платы передатчика через модуль max485. Он имеет 1602 ЖК-дисплея, который отображает текущий уровень воды и работу насоса. Он использует реле 12 В в качестве переключателя для включения релейного контактора. Он имеет два переключателя, один для подсветки ЖК-дисплея и еще один для аварийного включения / выключения насоса.

Ссылка на принципиальную схему и конструкции печатной платы для передатчика и приемника находится здесь.

ЖК-модуль i2c напрямую припаивается к 1602 LCD. Перемычка подсветки на модуле i2c подключена к тумблеру для включения / выключения. Аварийная кнопка (большая) подключается к главной цепи через разъем P4.
ЖК-модуль i2c к главной цепи (CN4):
GND — CN4-1 (GND1).
VCC — CN4-2 (5V).
SCL — CN4-3 (А5).
SDA — CN4-4(A4).

Соединения релейных контакторов:
A1 — 230 VAC1 (ноль).
A2 — NO (контакт реле).
S1 — 230 VAC1 (ноль).
S2 — 230 VAC2 (фаза)
L1 — Провод двигателя насоса 1
L2 — Провод двигателя насоса 2.
Подключите контакт COM реле к 230 VAC2 (линия).

Шаг третий: программное обеспечение и программирование
Теперь нужно запрограммировать контроллеры на обеих устройствах.

Для загрузки кода на ATTINY45 загружает библиотеку «SoftwareSerial.h».
В функции Loop,
> Сначала проверяется, заполнен бак или нет.
> Если он полон, он отправляет «255» .
> Если он не заполнен, он проверяет уровень воды с помощью ультразвукового датчика звука и передает данные через последовательную связь.
Эта программа использует подфункцию getwtrLvl () для получения текущего уровня воды. Сначала она измеряет время, необходимое датчику для передачи и приема ультразвуковых волн. Затем время преобразуется в расстояние, используя скорость звука.
dist = pulseIn (echoPin, HIGH); // время, затраченное звуковой волной.
dist = dist / 28/2; // переводим время в расстояние в см
dist = dist * 1.25; // здесь 1.25 — поправочный коэффициент для преодоления ошибки измерения
вернуть dist; // возвращает расстояние до вызывающей функции
Теперь для Ардуино.
В функции Loop:
> Сначала проверяется, нажата ли аварийная кнопка или нет.
> Проверка датчика. Часть программы проверяет ошибку датчика. т. е. если полученные данные недействительны (<= 1) 5 раз, тогда на дисплее отображается ошибка датчика и насос отключается.
> Следующая часть отображает текущий уровень воды и дает команду для насоса 1, если уровень воды маленький, или 0, если он равен 100% (полный).
Эта программа использует две подфункции updtMotor () и getWaterLvl (). Функция updtMotor () показывает работу насоса на ЖК-дисплее, а также подает сигнал на реле.
Функция getWaterLvl сначала проверяет, есть ли какая-либо ошибка соединения. Если связь между передатчиком и приемником не установлена в течение времени ожидания (3000 мс). Она показывает ошибку датчика и выключает насос.
Когда соединение восстанавливается, работа возобновляется.

Все готово, спасибо мастеру за интересную самоделку.

Источник (Source)

Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

Источник: usamodelkina.ru