Ultrazvočni brezžični indikator nivoja vode - na sončno energijo

Preizkusite Naš Instrument Za Odpravo Težav





Ultrazvočni regulator nivoja vode je naprava, ki lahko zazna nivo vode v rezervoarju brez fizičnega stika in pošlje podatke oddaljenemu LED indikatorju v brezžičnem načinu GSM.

V tem prispevku bomo izdelali ultrazvočni brezžični indikator nivoja vode na sončni pogon z uporabo Arduina, v katerem bi Arduinosi oddajali in sprejemali z brezžično frekvenco 2,4 GHz. Vodostaj v rezervoarju bomo zaznali z ultrazvokom, namesto s tradicionalno elektrodno metodo.



Pregled

Kazalnik nivoja vode je pripomoček, ki ga morate imeti, če ste lastnik hiše ali celo živite v najeti hiši. A kazalnik nivoja vode prikazuje en pomemben podatek za vašo hišo, ki je enako pomemben kot odčitek vašega števca energije, to je koliko vode je ostalo? Tako da lahko spremljamo porabo vode in se nam ni treba povzpeti po stopnicah, da bi dostopali do rezervoarja za vodo, da preverimo, koliko vode je ostalo in ne več nenadnega ustavljanja vode iz pipe.

Živimo v letu 2018 (v času pisanja tega članka) ali kasneje, lahko takoj komuniciramo s katerim koli krajem na svetu, lansirali smo električni dirkalnik v vesolje, lansirali satelite in roverje na Mars, lahko celo pristanemo na človeku bitja na Luni, še vedno ni ustreznega komercialnega izdelka za zaznavanje, koliko vode je ostalo v naših rezervoarjih za vodo?



Ugotovimo lahko, da indikatorje nivoja vode izdelujejo učenci 5. razreda za naravoslovni sejem v šoli. Kako tako preprosti projekti niso vstopili v naš vsakdan? Odgovor je, da kazalniki nivoja rezervoarja za vodo niso preprosti projekti, ki jih lahko učenec 5. razreda izdela za naš dom. Veliko jih je praktični premisleki preden ga oblikujemo.

• Nihče ne želi izvrtati luknje na telesu rezervoarja za vodo za elektrode, ki bi lahko kasneje puščale vodo.
• Nihče ne želi napeljati žice 230/120 VAC v bližini rezervoarja za vodo.
• Nihče ne želi zamenjati baterij vsak mesec.
• Nihče ne želi napeljati dodatnih dolgih žic, ki visijo na sobi za prikaz nivoja vode, saj to ni načrtovano med gradnjo hiše.
• Nihče ne želi uporabljati vode, ki je pomešana s kovinsko korozijo elektrode.
• Med čiščenjem rezervoarja (znotraj) nihče ne želi odstraniti nastavitve indikatorja nivoja vode.

Nekateri zgoraj navedeni razlogi se morda zdijo neumni, vendar boste s komercialno dostopnimi izdelki s temi slabostmi našli manj zadovoljive. Zato je v povprečju gospodinjstev vnos teh izdelkov zelo manjši *.
* Na indijskem trgu.

Po preučitvi teh ključnih točk smo oblikovali praktični kazalnik nivoja vode, ki naj odstrani omenjene slabosti.

Naš dizajn:

• Za merjenje nivoja vode uporablja ultrazvočni senzor, tako da ni težav s korozijo.
• Brezžična indikacija nivoja vode v realnem času pri 2,4 GHz.
• Dobra moč brezžičnega signala, dovolj za 2 nadstropne stavbe.
• Napajanje na sončno energijo ni več potrebno za izmenično napajanje ali zamenjavo baterije.
• Alarm za polnjenje / prelivanje rezervoarja med polnjenjem rezervoarja.

Raziščimo podrobnosti vezja:

Oddajnik:

The brezžični oddajnik ki je postavljen na rezervoar, bo podatke o nivoju vode pošiljal vsakih 5 sekund 24/7. Oddajnik je sestavljen iz Arduino nano, ultrazvočnega senzorja HC-SR04, modula nRF24L01, ki bo oddajnik in sprejemnik brezžično povezal na 2,4 GHz.

Solarna plošča od 9 V do 12 V s trenutnim izhodom 300 mA bo napajala oddajniško vezje. Vezje za upravljanje baterij bo napolnilo Li-ion baterijo, tako da bomo lahko spremljali nivo vode, tudi če ni sončne svetlobe.

Oglejmo si, kako postaviti ultrazvočni senzor na rezervoar za vodo:

Prosimo, upoštevajte, da morate s svojo ustvarjalnostjo zaskočiti vezje in zaščititi pred dežjem in neposredno sončno svetlobo.

Izrežite majhno luknjo nad pokrovom posode za namestitev ultrazvočnega senzorja in ga zatesnite s kakšnim lepilom, ki ga najdete.

namestitev ultrazvočnega senzorja v rezervoar za vodo

Zdaj izmerite celotno višino rezervoarja od spodaj do pokrova in ga zapišite v metrih. Zdaj izmerite višino rezervoarja za vodo, kot je prikazano na zgornji sliki, in zapišite v metre.
Ti dve vrednosti morate vnesti v kodo.

Shematski diagram oddajnika:

priključki ultrazvočnega oddajnika za nadzor nivoja vode

OPOMBA: nRF24L01 uporablja 3,3 V, saj se Vcc ne poveže z 5 V izhodom Arduina.

Napajanje oddajnika:

ultrazvočni načrt napajanja krmilnika nivoja vode

Prepričajte se, da je izhodna moč sončne celice, tj.izhodna napetost (volt x tok) večja od 3 vatov. The sončna celica mora biti 9V do 12V.

Priporočljiva je 12V in 300mA plošča, ki jo lahko enostavno najdete na trgu. Baterija naj bo približno 3,7 V 1000 mAh.

5V 18650 Li-ion polnilni modul:

Naslednja slika prikazuje standard 18650 vezje polnilnika

Vhod je lahko USB (ni uporabljen) ali zunanji 5V od LM7805 IC. Prepričajte se, da ste dobili pravi modul, kot je prikazano zgoraj, ki bi ga moral imeti TP4056 zaščita, ki ima izklop baterije in zaščito pred kratkim stikom.

Izhod tega je treba dovajati na vhod XL6009, ki se bo povečal na višjo napetost, z uporabo majhnega izvijača izhoda XL6009 pa naj bo za Arduino nastavljen na 9V.

Prikaz XL6009 pretvornika DC v DC:

S tem je zaključena strojna oprema oddajnika.

Koda za oddajnik:

// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //
#include
#include
RF24 radio(9, 10)
const byte address[6] = '00001'
const int trigger = 3
const int echo = 2
const char text_0[] = 'STOP'
const char text_1[] = 'FULL'
const char text_2[] = '3/4'
const char text_3[] = 'HALF'
const char text_4[] = 'LOW'
float full = 0
float three_fourth = 0
float half = 0
float quarter = 0
long Time
float distanceCM = 0
float distanceM = 0
float resultCM = 0
float resultM = 0
float actual_distance = 0
float compensation_distance = 0
// ------- CHANGE THIS -------//
float water_hold_capacity = 1.0 // Enter in Meters.
float full_height = 1.3 // Enter in Meters.
// ---------- -------------- //
void setup()
{
Serial.begin(9600)
pinMode(trigger, OUTPUT)
pinMode(echo, INPUT)
digitalWrite(trigger, LOW)
radio.begin()
radio.openWritingPipe(address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.stopListening()
full = water_hold_capacity
three_fourth = water_hold_capacity * 0.75
half = water_hold_capacity * 0.50
quarter = water_hold_capacity * 0.25
}
void loop()
{
delay(5000)
digitalWrite(trigger, HIGH)
delayMicroseconds(10)
digitalWrite(trigger, LOW)
Time = pulseIn(echo, HIGH)
distanceCM = Time * 0.034
resultCM = distanceCM / 2
resultM = resultCM / 100
Serial.print('Normal Distance: ')
Serial.print(resultM)
Serial.println(' M')
compensation_distance = full_height - water_hold_capacity
actual_distance = resultM - compensation_distance
actual_distance = water_hold_capacity - actual_distance
if (actual_distance <0)
{
Serial.print('Water Level:')
Serial.println(' 0.00 M (UP)')
}
else
{
Serial.print('Water Level: ')
Serial.print(actual_distance)
Serial.println(' M (UP)')
}
Serial.println('============================')
if (actual_distance >= full)
{
radio.write(&text_0, sizeof(text_0))
}
if (actual_distance > three_fourth && actual_distance <= full)
{
radio.write(&text_1, sizeof(text_1))
}
if (actual_distance > half && actual_distance <= three_fourth)
{
radio.write(&text_2, sizeof(text_2))
}
if (actual_distance > quarter && actual_distance <= half)
{
radio.write(&text_3, sizeof(text_3))
}
if (actual_distance <= quarter)
{
radio.write(&text_4, sizeof(text_4))
}
}
// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //

V kodi, ki ste jo izmerili, spremenite naslednje vrednosti:

// ------- CHANGE THIS -------//
float water_hold_capacity = 1.0 // Enter in Meters.
float full_height = 1.3 // Enter in Meters.
// ---------- -------------- //

S tem je oddajnik zaključen.

Sprejemnik:

shema ultrazvočnega sprejemnika nivoja vode

Sprejemnik lahko prikaže 5 stopenj. Alarm, ko je rezervoar med polnjenjem rezervoarja dosegel absolutno največjo zmogljivost zadrževanja vode. 100 do 75% - Vse štiri LED bodo svetile, 75 do 50% bodo svetile tri LED, 50 do 25% bodo svetile dve LED, 25% in manj bo ena LED svetila.
Sprejemnik se lahko napaja iz 9V baterije ali iz polnilec pametnega telefona na USB kabel mini-B.

Koda za sprejemnik:

// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //
#include
#include
RF24 radio(9, 10)
int i = 0
const byte address[6] = '00001'
const int buzzer = 6
const int LED_full = 5
const int LED_three_fourth = 4
const int LED_half = 3
const int LED_quarter = 2
char text[32] = ''
void setup()
{
pinMode(buzzer, OUTPUT)
pinMode(LED_full, OUTPUT)
pinMode(LED_three_fourth, OUTPUT)
pinMode(LED_half, OUTPUT)
pinMode(LED_quarter, OUTPUT)
digitalWrite(buzzer, HIGH)
delay(300)
digitalWrite(buzzer, LOW)
digitalWrite(LED_full, HIGH)
delay(300)
digitalWrite(LED_three_fourth, HIGH)
delay(300)
digitalWrite(LED_half, HIGH)
delay(300)
digitalWrite(LED_quarter, HIGH)
delay(300)
digitalWrite(LED_full, LOW)
delay(300)
digitalWrite(LED_three_fourth, LOW)
delay(300)
digitalWrite(LED_half, LOW)
delay(300)
digitalWrite(LED_quarter, LOW)
Serial.begin(9600)
radio.begin()
radio.openReadingPipe(0, address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.startListening()
}
void loop()
{
if (radio.available())
{
radio.read(&text, sizeof(text))
Serial.println(text)
if (text[0] == 'S' && text[1] == 'T' && text[2] == 'O' && text[3] == 'P')
{
digitalWrite(LED_full, HIGH)
digitalWrite(LED_three_fourth, HIGH)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
for (i = 0 i <50 i++)
{
digitalWrite(buzzer, HIGH)
delay(50)
digitalWrite(buzzer, LOW)
delay(50)
}
}
if (text[0] == 'F' && text[1] == 'U' && text[2] == 'L' && text[3] == 'L')
{
digitalWrite(LED_full, HIGH)
digitalWrite(LED_three_fourth, HIGH)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
}
if (text[0] == '3' && text[1] == '/' && text[2] == '4')
{
digitalWrite(LED_full, LOW)
digitalWrite(LED_three_fourth, HIGH)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
}
if (text[0] == 'H' && text [1] == 'A' && text[2] == 'L' && text[3] == 'F')
{
digitalWrite(LED_full, LOW)
digitalWrite(LED_three_fourth, LOW)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
}
if (text[0] == 'L' && text[1] == 'O' && text[2] == 'W')
{
digitalWrite(LED_full, LOW)
digitalWrite(LED_three_fourth, LOW)
digitalWrite(LED_half, LOW)
digitalWrite(LED_quarter, HIGH)
}
}
}
// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //

S tem sprejemnik zaključi.

OPOMBA: če nobena LED ne sveti, kar pomeni, da sprejemnik ne more dobiti signala od oddajnika. Po vklopu sprejemnega vezja počakajte 5 sekund, da sprejmete signal od oddajnika.

Avtorjevi prototipi:

Oddajnik:

prototip ultrazvočnega oddajnika

Sprejemnik:

prototip ultrazvočnega sprejemnika

Če imate kakršna koli vprašanja v zvezi s tem vezjem ultrazvočnega brezžičnega krmilnika nivoja vode na sončni pogon, vas prosimo, da izrazite v komentarju, lahko pričakujete hiter odgovor.




Prejšnja: Kako narediti enostavna vezja pretvornika Naprej: Kako oblikovati Flyback Converter - celovita vadnica