Traadita ultraheli veetaseme indikaator - päikeseenergial töötav

Traadita ultraheli veetaseme indikaator - päikeseenergial töötav

Ultraheli veetaseme kontroller on seade, mis suudab ilma füüsilise kontaktita tuvastada veetaseme paagis ja saata andmed traadita GSM-režiimis kaugele LED-indikaatorile.



Selles postituses ehitame Arduino abil ultraheli baasil päikeseenergial töötava traadita veetaseme indikaatori, milles Arduinos edastaksid ja võtaksid vastu 2,4 GHz traadita sagedust. Me tuvastame veetaseme paagis tavapärase elektroodimeetodi asemel ultraheli abil.

Ülevaade

Kui teil on maja või isegi elate üürimajas, peab veetaseme indikaator olema vidin. A veetaseme indikaator näitab teie maja jaoks üht olulist teavet, mis on sama oluline kui teie energiamõõturi näit, see tähendab, kui palju vett on alles? Selleks, et saaksime jälgida veetarbimist ja meil ei ole vaja veemahutile pääsemiseks ülespoole ronida, et kontrollida, kui palju vett on alles jäänud ja segistist vett enam ei peatu.



Elame 2018. aastal (selle artikli kirjutamise ajal) või hiljem, saame koheselt suhelda kõikjal maailmas, lasime kosmosesse elektrilise võistlusauto, lasime marsile satelliidid ja röövlid, suudame isegi inimmaanduda Kuu olendid, pole ikka veel korralikku kaubandustoodet selle tuvastamiseks, kui palju vett meie veepaakidesse on jäänud?

Leiame, et veetaseme näitajaid teevad 5. klassi õpilased koolis toimuvale teadusmessile. Kuidas sellised lihtsad projektid meie igapäevaellu ei jõudnud? Vastus on see, et veepaakide taseme näitajad ei ole lihtsad projektid, mille 5. klassi õpilane saab meie koju teha. Seal on palju praktilisi kaalutlusi enne kui ühe kujundame.



• Keegi ei taha puurida veepaagi korpusele elektroodide jaoks auku, mis võib hiljem vett lekitada.
• Keegi ei taha juhtida veemahuti läheduses 230/120 VAC traati.
• Keegi ei taha patareisid iga kuu välja vahetada.
• Keegi ei taha veetaseme näitamiseks ruumis riputada täiendavaid pikki juhtmeid, kuna see pole maja ehitamise ajal ette planeeritud.
• Keegi ei taha kasutada vett, mis on segatud elektroodi metallkorrosiooniga.
• Keegi ei soovi paagi (sees) puhastamise ajal veetaseme indikaatori seadistusi eemaldada.

Mõned ülalnimetatud põhjused võivad tunduda rumalad, kuid leiad, et nende miinustega kaubanduslikult saadaval olevad tooted on vähem rahuldavad. Sellepärast on nende toodete levik keskmiste leibkondade hulgas väga väike *.
* India turul.

Pärast nende põhipunktide kaalumist oleme välja töötanud praktilise veetaseme indikaatori, mis peaks eemaldama mainitud miinused.

Meie disain:

• See kasutab veetaseme mõõtmiseks ultraheliandurit, nii et korrosiooniprobleeme pole.
• Traadita veetaseme näit reaalajas sagedusel 2,4 GHz.
• Hea traadita signaali tugevus, piisavalt 2-korruseliste hoonete jaoks.
• Päikeseenergial töötavat enam mitte vahelduvvoolu ega patarei vahetamist.
• Paagi täitmise / ülevooluhäire paagi täitmise ajal.

Uurime vooluringi üksikasju:

Saatja:

The traadita saatja vooluring mis asetatakse paagile, saadab veetaseme andmeid iga 5 sekundi tagant 24/7. Saatja koosneb Arduino nanost, ultraheliandurist HC-SR04, nRF24L01 moodulist, mis ühendab saatja ja vastuvõtja juhtmevabalt sagedusega 2,4 GHz.

9 V kuni 12 V päikesepaneel voolu väljundiga 300 mA toidab saatja vooluahelat. Aku haldamise trükkplaat laadib liitiumioonaku, et saaksime veetaset jälgida ka siis, kui päikesevalgust pole.

Uurime, kuidas paigutada ultraheliandur veepaaki:

Pange tähele, et peate kasutama oma loovust vooluringi mähkimiseks ning vihma ja otsese päikesevalguse eest kaitsmiseks.

Lõigake paagi kaane kohal väike auk ultrahelianduri paigutamiseks ja sulgege see mingisuguse liimiga, mille leiate.

ultrahelianduri paigutamine veepaaki

Mõõtke nüüd paagi täiskõrgus põhjast kaaneni, kirjutage see meetritesse. Nüüd mõõtke paagi veemahutavuse kõrgus, nagu on näidatud ülaltoodud pildil, ja kirjutage see meetrites üles.
Peate need kaks väärtust koodi sisestama.

Saatja skemaatiline diagramm:

ultraheli saatja ühendused veetaseme reguleerimiseks

MÄRKUS. NRF24L01 kasutab 3,3 V, kuna Vcc ei ühenda Arduino 5 V väljundiga.

Saatja toiteallikas:

ultraheli veetaseme kontrolleri toiteallika kujundus

Veenduge, et teie päikesepaneeli väljundvõimsus, st väljund (volt x vool) on suurem kui 3 vatti. The päikesepaneel peaks olema 9V kuni 12V.

Soovitatav on 12V ja 300mA paneel, mille leiate hõlpsalt turult. Aku peaks olema umbes 3,7 V 1000 mAh.

5V 18650 liitiumioonmoodul:

Järgmisel pildil on standard 18650 laadija vooluring

Sisendiks võib olla USB (ei kasutata) või väline 5V LM7805 IC-st. Veenduge, et hankisite õige mooduli, nagu ülal näidatud, nagu see peaks olema TP4056 kaitse, millel on madal aku väljalülitus ja lühisekaitse.

Selle väljund tuleks suunata XL6009 sisendisse, mis suurendab kõrgemat pinget, kasutades väikest kruvikeeraja väljundit XL6009 tuleks Arduino jaoks reguleerida 9V-le.

XL6009 alalisvoolu alalisvoolu võimendi muunduri illustratsioon:

Sellega saate saatja riistvara kokku.

Saatja kood:

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

Mõõdetud koodis muutke järgmisi väärtusi:

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

Sellega saatja kokku jõuab.

Vastuvõtja:

ultraheli veetaseme vastuvõtja kontrolleri skeem

Vastuvõtja suudab näidata 5 taset. Alarm, kui paak on paagi täitmise ajal saavutanud absoluutse maksimaalse veemahutavuse. 100 kuni 75% - kõik neli valgusdioodi põlevad, 75 kuni 50% kolm valgusdioodi, 50 kuni 25% kaks valgusdioodi, 25% ja vähem üks LED põleb.
Vastuvõtjat saab toita 9V patareist või nutitelefoni laadija USB-le mini-B kaabel.

Vastuvõtja kood:

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

Sellega järeldub vastuvõtja.

MÄRKUS: kui ükski LED ei põle, tähendab see, et vastuvõtja ei saa saatjalt signaali. Pärast vastuvõtja vooluringi sisselülitamist peaksite ootama 5 sekundit, kuni saate signaali saatjalt.

Autori prototüübid:

Saatja:

ultraheli saatja prototüüp

Vastuvõtja:

ultraheli vastuvõtja prototüüp

Kui teil on selle päikesega töötava ultraheli traadita veetaseme regulaatori ahela kohta küsimusi, väljendage palun kommentaaris, võite oodata kiiret vastust.




Paar: Kuidas teha lihtsaid võimenduse muunduri ahelaid Järgmine: Kuidas kujundada Flyback Converter - põhjalik õpetus