Šiame straipsnyje vedlys papasakos, kaip sukurti vandens lygio rezervuare stebėjimo ir valdymo sistemą. Tai paprasta ir patikima sistema.
Pagrindinės jo savybės yra šios:
Vandens lygio stebėjimas realiu laiku.
Automatinis įjungimo / išjungimo siurblys.
Avarinis siurblio išjungimas.
Įrankiai ir medžiagos:
-Arduino Pro mini
-Ultrasonic jutiklis HC-SR04;
- modulis MAX485;
- LCD modulis i2c;
LCD 1602;
- Mikrovaldiklis ATTINY45 / 85;
- įtampos reguliatorius LM7805;
NPN tranzistorius (2n3904);
-N-kanalo MOSFET IRFD024PBF;
Diodas 1N4007;
5 kontaktų jungtis;
4 kontaktų jungtis
-2 kontaktų jungtis;
- gnybtai su 2 kontaktais (mėlyni) - 2 vnt;
- gnybtas su 2 kontaktais (žalias);
DC lizdas (- 2 vnt.)
-Audio lizdas (vyriškas / moteriškas) - 2 vnt;
- Rezistorius 1 kOhm;
- Rezistorius 10 kOhm - 3 vnt;
- kondensatorius 100 nF - 3 vnt;
Kondensatorius 100 uF;
- mygtukas SMD, 6x3,5mm;
-DIP jungikliai (SPST 2) - 2 vnt;
- maitinimo mygtukas;
-Tumbler;
-12 V nuolatinės srovės relė;
-Relių kontaktorius;
- 5 V nuolatinės srovės maitinimas (> 200 mA);
- 12 V nuolatinės srovės maitinimas (> 500 mA);
-Dėžutės tinkamo dydžio dėklui;
-Tvirtinimo detalės;
-Litavimo reikmenys;
- atsuktuvas;
-Vyras;
Pirmas žingsnis: Jutiklio blokas
Šis įrenginys matuoja vandens lygį ir siunčia duomenis pagrindiniam valdikliui. Jis turi du jutiklius vandens lygiui matuoti. Vienas iš jų yra ultragarsinis atstumo jutiklis HC-SR04, kitas yra du ilgi varžtai, išsikišantys į išorę, kaip parodyta nuotraukoje.
Norėdami įdiegti jutiklius, turite atlikti šiuos veiksmus:
Uždėkite ultragarso keitiklį aukštyn kojom priekinėje dangtelio dalyje šalia viršaus ir pažymėkite dvi ultragarso siųstuvo ir imtuvo angas.
Iškirpkite skyles ir pritvirtinkite jutiklį karštais klijais.
Tada dangtelio centre išgręžkite dvi 3 mm skersmens skylutes, kurių tarpas būtų 2-3 cm.
Įdėkite ilgus M3 varžtus su vieliniu gnybtu, užsegtu tarp dviejų poveržlių, esančių dangtelio gale, ir užveržkite M3 veržles kitoje pusėje.
Jutiklio blokas naudoja ATTINY45 kaip pagrindinį mikrovaldiklį. Kaip minėta anksčiau, vandens lygis matuojamas HC-SR04. Tai veikia matuojant atstumą nuo rezervuaro viršaus.
Taip pat valdymas atliekamas dviem varžtais grandinėje, į kuriuos įmontuotas tranzistorius. Mikrovaldiklis nuskaito duomenis iš abiejų šių jutiklių ir siunčia duomenis į „Arduino“, įmontuotą valdiklio bloke.
Pirmiausia meistras norėjo siųsti duomenis per HC-12 RF modulius. Bet šių modulių diapazonas neatitinka reikalavimų.Vedlys panaudojo keitiklį MAX485 TTL į RS485 ir padarė nedidelį pakeltą, kad galėtų įdiegti vietoje HC-12 modulių.
Galima atsisiųsti schemą ir nuorodą į plokštę šiuo adresu.
Įdiegiama taip:
HC-SR04 į pagrindinę grandinę:
Vcc - 5V (CN1).
trig - trigPin (CN1).
echo - echoPin (CN1).
„Gnd“ - GND (CN1).
M3 varžtai prie pagrindinės grandinės:
Varžtas 1 - 5 V (CN1).
2 varžtas - 100 (CN1).
MAX485 (TX) modulis:
VCC - 5V („HC-12“ jungtis)
A - 1/4 colių garso lizdas.
B - 1/4 colių garso lizdas.
GND - GND („HC-12“ jungtis)
R0 - RX („HC-12“ jungtis)
RE - VCC (MAX485) arba 5 V.
DE - RE (sutrumpintai RE ir DE).
DI - TX (jungtis HC-12).
DC lizdas (P1 jungtis):
Patarimas - 5 V
Rankovė - GND
Antras žingsnis: Valdiklis
Valdiklio valdymas yra paprastas. „Arduino“ naudojamas kaip pagrindinis valdiklis. Jis priima jutiklio duomenis, siunčiamus iš siųstuvo plokštės per „max485“ modulį. Jis turi 1602 skystųjų kristalų ekraną, kuris rodo esamą vandens lygį ir siurblio veikimą. Norėdami įjungti relės kontaktorių, ji naudoja 12 V relę kaip jungiklį. Jame yra du jungikliai, vienas skirtas LCD ekrano apšvietimui, o kitas - avarinio siurblio įjungimui / išjungimui.
Pateikiama nuoroda į siųstuvo ir imtuvo spausdintinės plokštės schemą ir schemą čia.
„I2c“ LCD modulis yra tiesiogiai lituojamas į „1602 LCD“. „I2c“ modulio foninis apšvietimas yra prijungtas prie įjungimo / išjungimo jungimo jungiklio. Avarinis mygtukas (didelis) yra prijungtas prie pagrindinės grandinės per jungtį P4.
I2c LCD modulis prie pagrindinės grandinės (CN4):
GND - CN4-1 (GND1).
VCC - CN4-2 (5V).
SCL - CN4-3 (A5).
SDA - CN4-4 (A4).
Relių kontaktorių jungtys:
A1 - 230 VAC1 (nulis).
A2 - NE (relės kontaktas).
S1 - 230 VAC1 (nulis).
S2 - 230 VAC2 (fazė)
L1 - siurblio variklio viela 1
L2 - siurblio variklio viela 2.
Prijunkite COM relės kontaktą prie 230 VAC2 (linija).
Trečias žingsnis: Programinė įranga ir programavimas
Dabar turite užprogramuoti valdiklius abiejuose įrenginiuose.
Norėdami atsisiųsti kodą į ATTINY45, jis atsisiunčia „SoftwareSerial.h“ biblioteką.
Funkcijoje „Loop“
> Pirmiausia patikrinkite, ar bakas pilnas, ar ne.
> Jei jis pilnas, jis siunčia „255.“
> Jei jis nėra pilnas, jis ultragarso garso jutikliu patikrina vandens lygį ir perduoda duomenis nuosekliojo ryšio priemonėmis.
Ši programa naudoja „getwtrLvl“ () subfunkciją dabartiniam vandens lygiui gauti. Pirma, jis matuoja laiką, reikalingą jutikliui perduoti ir priimti ultragarso bangas. Tada laikas paverčiamas atstumu pagal garso greitį.
dist = pulseIn (echoPin, HIGH); // laikas, praleistas garso bangos metu.
dist = dist / 28/2; // išverskite laiką į atstumą cm
dist = dist * 1,25; // čia 1.25 yra pataisos koeficientas, skirtas pašalinti matavimo paklaidą
grįžti dist; // grąžina atstumą iki iškvietimo funkcijos
Dabar Arduino.
Funkcijoje „Loop“:
> Pirmiausia patikrinama, ar paspaustas avarinis mygtukas.
> Jutiklio patikrinimas. Dalis programos tikrina, ar nėra jutiklio klaidos. y., jei gauti duomenys negalioja (<= 1) 5 kartus, tada ekrane rodoma jutiklio klaida ir siurblys išsijungia.
> Kitoje dalyje rodomas esamas vandens lygis ir nurodoma komanda 1 siurbliui, jei vandens lygis yra mažas, arba 0, jei jis yra 100% (pilnas).
Ši programa naudoja du subfunkcijas updtMotor () ir getWaterLvl (). Funkcija „updtMotor“ () rodo siurblio veikimą skystųjų kristalų ekrane, taip pat siunčia signalą į relę.
Pirmiausia „getWaterLvl“ funkcija patikrina, ar nėra ryšio klaidų. Jei laukimo metu (3000 ms) ryšys tarp siųstuvo ir imtuvo nenustatytas. Tai rodo jutiklio klaidą ir išjungia siurblį.
Atkūrus ryšį, darbas atnaujinamas.
Viskas paruošta, ačiū meistrui už įdomumą naminis.