В тази статия съветникът ще ни каже как да направим система за наблюдение и контрол на нивото на водата в резервоар. Това е проста и надеждна система.
Основните му характеристики са, както следва:
Мониторинг на нивото на водата в реално време.
Автоматична помпа за включване / изключване.
Спешно изключване на помпата.
Инструменти и материали:
-Arduino Pro mini
-Ултразвуков сензор HC-SR04;
- Модул MAX485;
- LCD модул i2c;
LCD 1602;
- Микроконтролер ATTINY45 / 85;
- регулатор на напрежението LM7805;
NPN транзистор (2n3904);
-N-канал MOSFET IRFD024PBF;
Диод 1N4007;
5-пинов конектор;
4-пинов конектор
-2 пинов конектор;
- Терминали с 2 контакта (син) - 2 бр;
- Терминал с 2 контакта (зелен);
DC Jack (- 2 бр.)
-Audio жак (мъжки / женски) - 2 бр;
- Резистор 1 kOhm;
- Резистор 10 kOhm - 3 бр;
- кондензатор 100 nF - 3 бр;
Кондензатор 100 uF;
- SMD бутон, 6x3.5mm;
-DIP превключватели (SPST 2) - 2 бр;
- бутон за захранване;
-Tumbler;
-12V DC реле;
-Релеен контактор;
- DC захранване 5 V (> 200 mA);
- DC 12V захранване (> 500 mA);
-Букси за случая с подходящ размер;
-Krepezh;
-Паялни аксесоари;
- отвертка;
seeing-;
Първа стъпка: сензорна единица
Този уред измерва нивото на водата и изпраща данни до главния контролер. Разполага с два сензора за измерване на нивото на водата. Единият е ултразвуков сензор за разстояние HC-SR04, а другият е два дълги винта, стърчащи навън, както е показано на снимката.
За да инсталирате сензорите, трябва да изпълните следните стъпки:
Поставете ултразвуковия преобразувател с главата надолу в предната част на капака близо до горната част и маркирайте двата отвора за ултразвуковия предавател и приемник.
Изрежете отвори и закрепете сензора на място с горещо лепило.
След това пробийте два отвора с диаметър 3 мм с пролука 2-3 см в центъра на капака.
Поставете дългите болтове M3 с клемата на проводника, притисната между двете шайби от задната страна на капака, и затегнете M3 гайките от другата страна.
Сензорният блок използва ATTINY45 като основен микроконтролер. Както бе споменато по-рано, HC-SR04 се използва за измерване на нивото на водата. Той работи, като измерва разстоянието от горната част на резервоара.
Също така контролът се осъществява с помощта на два болта във веригата, на които е инсталиран транзисторът. Микроконтролерът чете данни от двата сензора и изпраща данни до Arduino, инсталиран в контролния блок.
Първо, капитанът искаше да изпрати данни чрез HC-12 RF модули. Но обхватът на тези модули не съответства на изискванията.Съветникът използва преобразувателя MAX485 TTL към RS485 и направи малка дъска за щранг, за да инсталира вместо HC-12 модулите.
Схемата и връзката към дъската могат да бъдат изтеглени на този адрес.
Инсталирането е както следва:
HC-SR04 към основната верига:
Vcc - 5V (CN1).
trig - trigPin (CN1).
echo - echoPin (CN1).
Gnd - GND (CN1).
M3 болтове към основната верига:
Болт 1 - 5 V (CN1).
Болт 2 - 100 (CN1).
MAX485 (TX) модул:
VCC - 5V (HC-12 конектор)
A - 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).
DC жак (P1 конектор):
Съвет - 5V
Ръкав - GND
Стъпка втора: Контролер
Работата на контролера е проста. Arduino се използва като основен контролер. Той получава данни от сензора, изпратени от предавателната платка през модула max485. Той има 1602 LCD дисплей, който показва текущото ниво на водата и работата на помпата. Той използва 12 V реле като превключвател за включване на релейния контактор. Той има два превключвателя, един за подсветка на LCD и един за включване / изключване на аварийна помпа.
Намерена е връзка към схемата и дизайна на печатната платка за предавателя и приемника тук.
I2c LCD модулът е директно споен към 1602 LCD. Джъмперът на подсветката на i2c модула е свързан към превключвателя за включване / изключване. Аварийният бутон (голям) е свързан към основната верига чрез конектор P4.
I2c LCD модул към основната верига (CN4):
GND - CN4-1 (GND1).
VCC - CN4-2 (5V).
SCL - CN4-3 (A5).
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 е корекционният коефициент за преодоляване на грешката при измерване
връщане разстояние; // връща разстоянието до извикващата функция
Сега за Ардуино.
Във функцията Loop:
> Първо се проверява дали аварийният бутон е натиснат или не.
> Проверка на сензора. Част от програмата проверява за грешка в сензора. тоест, ако получените данни са невалидни (<= 1) 5 пъти, тогава дисплеят показва грешката на сензора и помпата се изключва.
> Следващата част показва текущото ниво на водата и дава команда за помпа 1, ако нивото на водата е малко, или 0, ако е 100% (пълно).
Тази програма използва две подфункции updtMotor () и getWaterLvl (). Функцията updtMotor () показва работата на помпата на LCD, а също така изпраща сигнал към релето.
Функцията getWaterLvl първо проверява дали има някаква грешка във връзката. Ако връзката между предавателя и приемника не е установена по време на изчакване (3000 ms). Показва грешка в сензора и изключва помпата.
Когато връзката се възстанови, работата се възобновява.
Всичко е готово, благодарение на майстора за интересно домашно приготвени.