Ручнаяя мастерская

Система контроля уровня воды

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

Её ключевые особенности следующие:
Мониторинг уровня воды в реальном времени.
Автоматическое включение / выключение насоса.
Аварийное выключение насоса.
Инструменты и материалы:
-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 мс). Она показывает ошибку датчика и выключает насос.
Когда соединение восстанавливается, работа возобновляется.
Система контроля уровня водыСистема контроля уровня водыСистема контроля уровня водыСистема контроля уровня водыСистема контроля уровня водыСистема контроля уровня водыСистема контроля уровня водыСистема контроля уровня водыСистема контроля уровня водыСистема контроля уровня водыВсе готово, спасибо мастеру за интересную самоделку.
Система контроля уровня воды

Присоединяйтесь!

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