Ultragarsinis belaidis vandens lygio indikatorius - saulės energija

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





Ultragarsinis vandens lygio valdiklis yra prietaisas, kuris gali nustatyti vandens lygį rezervuare be fizinio kontakto ir siųsti duomenis į tolimą LED indikatorių belaidžiu GSM režimu.

Šiame pranešime mes sukursime ultragarsu pagrįstą saulės energiją naudojančio belaidžio vandens lygio indikatorių, naudodami „Arduino“, kuriame „Arduinos“ būtų siunčiami ir priimami 2,4 GHz belaidžiu dažniu. Vandens lygį rezervuare nustatysime ultragarsu, o ne tradiciniu elektrodo metodu.



Apžvalga

Vandens lygio indikatorius privalo turėti įtaisą, jei turite namą ar net gyvenate nuomojamame name. A vandens lygio indikatorius rodo vieną svarbų jūsų namo duomenis, kurie yra tokie pat svarbūs kaip jūsų energijos skaitiklio rodmenys, tai yra, kiek vandens liko? Kad galėtume sekti vandens suvartojimą ir mums nereikia lipti į viršų, norint patekti į vandens rezervuarą, kad patikrintume, kiek vandens liko, ir nebebus staigaus vandens sustojimo iš maišytuvo.

Gyvename 2018-aisiais (šio straipsnio rašymo metu) ar vėliau, galime akimirksniu bendrauti su bet kuria pasaulio vieta, į kosmosą paleidome elektrinį lenktyninį automobilį, į Marsą paleidome palydovus ir roverius, net sugebėjome nusileisti žmogaus būtybės mėnulyje, vis dar nėra tinkamas komercinis produktas, skirtas nustatyti, kiek vandens liko mūsų vandens rezervuaruose?



Mes galime rasti vandens lygio rodiklius, kuriuos 5 klasių mokiniai rengia gamtos mokslų mugei mokykloje. Kaip tokie paprasti projektai nepadarė mūsų kasdienybės? Atsakymas yra tai, kad vandens rezervuaro lygio rodikliai nėra paprasti projektai, kuriuos 5 klasės mokinys gali sukurti mūsų namams. Yra daug praktiniai sumetimai prieš kurdami vieną.

• Niekas nenori išgręžti skylės ant vandens rezervuaro korpuso elektrodams, kurie vėliau gali nutekėti.
• Niekas nenori paleisti 230/120 VAC laido šalia vandens rezervuaro.
• Niekas nenori keisti baterijų kiekvieną mėnesį.
• Niekas nenori kabinti papildomų ilgų laidų, kabančių ant kambario vandens lygio rodymui, nes statant namą tai nėra iš anksto suplanuota.
• Niekas nenori naudoti vandens, sumaišyto su elektrodo korozija.
• Niekas nenori pašalinti vandens lygio indikatoriaus, kai valo baką (viduje).

Kai kurios iš aukščiau paminėtų priežasčių gali atrodyti kvailos, tačiau rasite mažiau patenkinamų su šiais trūkumais prekiaujančiuose produktuose. Štai kodėl vidutiniai namų ūkiai labai mažai įsiskverbia į šiuos produktus *.
* Indijos rinkoje.

Apsvarstę šiuos pagrindinius dalykus, mes sukūrėme praktišką vandens lygio indikatorių, kuris turėtų pašalinti minėtus trūkumus.

Mūsų dizainas:

• Jis naudoja ultragarso jutiklį vandens lygiui matuoti, todėl nėra korozijos problemų.
• Belaidis vandens lygio rodymas realiuoju laiku 2,4 GHz dažniu.
• Geras bevielio signalo stiprumas, pakankamas 2 aukštų pastatams.
• Saulės energija nebenaudojama kintamosios srovės maitinimo šaltinis arba keičiama baterija.
• Pripildant baką, pilnas rezervuaro / perpildymo signalas.

Panagrinėkime grandinės detales:

Siųstuvas:

The belaidžio siųstuvo grandinė kuris dedamas ant rezervuaro, vandens lygis bus išsiųstas kas 5 sekundes visą parą. Siųstuvą sudaro „Arduino nano“, ultragarso jutiklis HC-SR04, „nRF24L01“ modulis, kuris bevieliu ryšiu sujungs siųstuvą ir imtuvą 2,4 GHz dažniu.

Siųstuvo grandinę maitins saulės baterijų skydelis nuo 9 V iki 12 V, kurio srovės išėjimas yra 300 mA. Akumuliatoriaus valdymo plokštė įkraus ličio jonų bateriją, kad galėtume stebėti vandens lygį net ir tada, kai nėra saulės spindulių.

Panagrinėkime, kaip įdėti ultragarso jutiklį prie vandens rezervuaro:

Atkreipkite dėmesį, kad jūs turite pasitelkti kūrybiškumą, kad supurtytumėte grandinę ir apsaugotumėte nuo lietaus ir tiesioginių saulės spindulių.

Iškirpkite nedidelę skylę virš bako dangtelio, kad įdėtumėte ultragarso jutiklį, ir užklijuokite jį kokiais nors klijais, kuriuos galite rasti.

įdėdami ultragarso jutiklį į vandens rezervuarą

Dabar išmatuokite visą bako aukštį nuo dugno iki dangtelio, užrašykite jį metrais. Dabar išmatuokite bako vandens laikymo talpos aukštį, kaip parodyta aukščiau esančiame paveikslėlyje, ir užrašykite metrais.
Šias dvi reikšmes turite įvesti į kodą.

Siųstuvo schema:

ultragarso siųstuvo jungtys vandens lygio kontrolei

PASTABA: „nRF24L01“ naudoja 3.3 V įtampą, nes „Vcc“ neprisijungia prie „Arduino“ 5 V išėjimo.

Siųstuvo maitinimas:

ultragarso vandens lygio valdiklio maitinimo šaltinio projektavimas

Įsitikinkite, kad saulės kolektoriaus išėjimo galia, t. Y. Išėjimas (voltas x srovė) yra didesnis nei 3 vatai. The saulės kolektorius turėtų būti nuo 9 V iki 12 V.

Rekomenduojama 12V ir 300mA skydai, kuriuos galite lengvai rasti rinkoje. Baterija turėtų būti apie 3,7 V 1000 mAh.

5V 18650 ličio jonų įkrovimo modulis:

Šis paveikslėlis rodo standartą 18650 įkroviklio grandinė

Įvestis gali būti USB (nenaudojama) arba išorinė 5 V įtampa iš LM7805 IC. Įsitikinkite, kad gavote teisingą modulį, kaip parodyta aukščiau TP4056 apsauga, kuri turi mažai akumuliatoriaus atjungimo ir trumpojo jungimo apsaugą.

Tai turėtų būti paduodama į XL6009 įvestį, kuri padidins aukštesnę įtampą, naudojant mažą XL6009 sraigtinės suktuvo išvestį, „Arduino“ reikia sureguliuoti iki 9 V.

XL6009 DC į DC padidinimo keitiklio iliustracija:

Tuo baigiama siųstuvo aparatūra.

Siųstuvo kodas:

// ----------- 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 ----------- //

Pakeiskite šias matuojamo kodo reikšmes:

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

Tai padaro siųstuvą.

Imtuvas:

ultragarso vandens lygio imtuvo valdiklio schema

Imtuvas gali parodyti 5 lygius. Aliarmas, kai bakas pasiekia absoliučią didžiausią vandens laikymo talpą pripildant baką. 100–75% - šviečia visi keturi šviesos diodai, šviečia 75–50% trys šviesos diodai, 50–25% du šviesos diodai, 25% ir mažiau - vienas šviesos diodas.
Imtuvą galima maitinti iš 9 V baterijos arba iš išmaniojo telefono įkroviklį į USB mini-B kabelis.

Imtuvo kodas:

// ----------- 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 ----------- //

Tuo imtuvas baigiasi.

PASTABA: jei nedega šviesos diodai, tai reiškia, kad imtuvas negali gauti signalo iš siųstuvo. Įjungę imtuvo grandinę, turėtumėte palaukti 5 sekundes, kol gausite signalą iš siųstuvo.

Autoriaus prototipai:

Siųstuvas:

ultragarso siųstuvo prototipas

Imtuvas:

ultragarso imtuvo prototipas

Jei turite klausimų dėl šios saulės energiją naudojančios ultragarso belaidžio vandens lygio valdiklio grandinės, nedvejodami išreikškite komentarą, galite tikėtis greitai gauti atsakymą.




Pora: Kaip sukurti paprastas keitiklio keitimo grandines Kitas: Kaip sukurti „Flyback Converter“ - išsamią pamoką