Ultrazvukový bezdrôtový indikátor hladiny vody - solárny

Vyskúšajte Náš Nástroj Na Odstránenie Problémov





Ultrazvukový regulátor hladiny vody je zariadenie, ktoré dokáže detekovať hladinu vody v nádrži bez fyzického kontaktu a odosielať údaje na vzdialený indikátor LED v bezdrôtovom režime GSM.

V tomto príspevku skonštruujeme bezdrôtový indikátor hladiny vody na báze slnečného žiarenia využívajúci Arduino, v ktorom by Arduinos vysielal a prijímal na bezdrôtovej frekvencii 2,4 GHz. Hladinu vody v nádrži budeme zisťovať pomocou ultrazvuku namiesto tradičnej elektródovej metódy.



Prehľad

Ukazovateľ hladiny vody je nevyhnutnosťou, ak vlastníte dom alebo dokonca žijete v prenajatom dome. A indikátor hladiny vody zobrazuje jeden dôležitý údaj pre váš dom, ktorý je rovnako dôležitý ako údaj z elektromera, to znamená, koľko vody ešte zostáva? Aby sme mohli sledovať spotrebu vody a nemuseli sme vyliezť na horné poschodie, aby sme dosiahli prístup k nádrži na vodu, aby sme skontrolovali, koľko vody ešte zostáva, a už žiadne náhle zastavenie vody z kohútika.

Žijeme v roku 2018 (v čase písania tohto článku) alebo neskôr, môžeme okamžite komunikovať kdekoľvek na svete, do vesmíru sme vypustili elektrické závodné auto, vypustili sme satelity a rovery do Marsu, dokonca dokážeme pristáť aj s ľuďmi bytosti na Mesiaci, stále neexistuje vhodný komerčný produkt na zisťovanie toho, koľko vody zostalo v našich vodných nádržiach?



Môžeme nájsť ukazovatele hladiny vody, ktoré vytvárajú žiaci 5. ročníka pre vedecký veľtrh v škole. Ako sa také jednoduché projekty nedostali do nášho každodenného života? Odpoveďou je, že ukazovatele hladiny vodnej nádrže nie sú jednoduché projekty, ktoré môže žiak 5. ročníka vyrobiť pre náš domov. Je ich veľa praktické úvahy predtým, ako nejaký navrhneme.

• Nikto nechce vyvŕtať otvor na tele nádrže na elektródy, z ktorých by neskôr mohla unikať voda.
• Nikto nechce viesť vodič 230/120 VAC v blízkosti nádrže na vodu.
• Nikto nechce vymeniť batérie každý mesiac.
• Nikto nechce viesť ďalšie dlhé vodiče zavesené na miestnosti na indikáciu hladiny vody, pretože to nie je vopred naplánované pri stavbe domu.
• Nikto nechce používať vodu zmiešanú s kovovou koróziou elektródy.
• Počas čistenia nádrže (vo vnútri) nikto nechce odstrániť nastavenie indikátora hladiny vody.

Niektoré z vyššie uvedených dôvodov môžu vyzerať hlúpo, ale s komerčne dostupnými produktmi s týmito nevýhodami budete menej spokojní. Preto je penetrácia týchto výrobkov v priemerných domácnostiach * veľmi nízka.
* Na indickom trhu.

Po zvážení týchto kľúčových bodov sme navrhli praktický indikátor hladiny vody, ktorý by mal odstrániť uvedené nevýhody.

Náš dizajn:

• Používa ultrazvukový senzor na meranie hladiny vody, aby nedochádzalo k problémom s koróziou.
• Bezdrôtová indikácia hladiny vody v reálnom čase na 2,4 GHz.
• Dobrá sila bezdrôtového signálu, dosť pre 2 poschodové budovy.
• Solárne napájanie už nevyžaduje sieťové napájanie ani výmenu batérie.
• Alarm plnenia / preplnenia nádrže pri plnení nádrže.

Poďme preskúmať podrobnosti okruhu:

Vysielač:

The obvod bezdrôtového vysielača ktorý je umiestnený na nádrži, bude každých 24 sekúnd odosielať údaje o hladine vody nepretržite. Vysielač sa skladá z Arduino nano, ultrazvukového senzora HC-SR04, modulu nRF24L01, ktorý bezdrôtovo prepojí vysielač a prijímač na frekvencii 2,4 GHz.

Solárny panel 9 V až 12 V s prúdovým výstupom 300 mA bude napájať obvod vysielača. Li-ion batéria bude nabitá doskou na správu batérií, aby sme mohli monitorovať hladinu vody, aj keď na ňu nie je slnečné svetlo.

Poďme preskúmať, ako umiestniť ultrazvukový senzor do nádrže na vodu:

Upozorňujeme, že musíte použiť svoju tvorivosť na to, aby ste okruh obopli a chránili pred dažďom a priamym slnečným žiarením.

Vyrežte malý otvor nad vekom nádrže na umiestnenie ultrazvukového senzora a zalepte ho lepidlom, ktoré nájdete.

umiestnenie ultrazvukového snímača do nádrže na vodu

Teraz zmerajte celú výšku nádrže od spodu po veko, zapisujte ju v metroch. Teraz zmerajte výšku schopnosti zadržiavať vodu v nádrži, ako je to znázornené na obrázku vyššie, a zapisujte ju v metroch.
Tieto dve hodnoty musíte zadať do kódu.

Schéma vysielača:

prípojky ultrazvukového vysielača na reguláciu hladiny vody

POZNÁMKA: nRF24L01 používa 3,3 V, pretože Vcc sa nepripojuje k 5V výstupu Arduina.

Napájanie vysielača:

návrh napájania ultrazvukového regulátora hladiny vody

Uistite sa, že výstupný výkon solárneho panelu, tj. Výstup (volt x prúd), je väčší ako 3 watty. The solárny panel by malo byť 9V až 12V.

Odporúča sa panel 12V a 300mA, ktorý ľahko nájdete na trhu. Batéria by mala byť okolo 3,7V 1 000 mAh.

Li-ion nabíjací modul 5V 18650:

Nasledujúci obrázok zobrazuje štandard Obvod nabíjačky 18650

Vstup môže byť USB (nepoužíva sa) alebo externé 5V z LM7805 IC. Uistite sa, že máte správny modul, ako je uvedené vyššie, ktorý by mal mať TP4056 ochrana, ktorá má slabé odpojenie batérie a ochranu proti skratu.

Výstup z toho by mal byť napájaný na vstup XL6009, ktorý sa zvýši na vyššie napätie. Malý výstup skrutkovača XL6009 by mal byť pre Arduino nastavený na 9V.

Obrázok konvertora zosilňovača DC na DC XL6009:

Týmto sa končí hardvér vysielača.

Kód pre vysielač:

// ----------- 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 kóde, ktorú ste namerali, zmeňte nasledujúce hodnoty:

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

Tým je vysielač uzavretý.

Prijímač:

ultrazvukový prijímač úrovne vody schematicky

Prijímač môže zobraziť 5 úrovní. Alarm, keď nádrž počas plnenia nádrže dosiahla absolútne maximálnu kapacitu zadržiavania vody. 100 až 75% - všetky štyri LED budú svietiť, 75 až 50% budú svietiť tri LED, 50 až 25% budú svietiť dve LED, bude svietiť 25% a menej jedna LED.
Prijímač môže byť napájaný z 9V batérie alebo z nabíjačka pre smartphone na USB kábel mini-B.

Kód pre prijímač:

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

To prijímač uzatvára.

POZNÁMKA: ak nesvietia žiadne LED, znamená to, že prijímač nemôže prijímať signál z vysielača. Po zapnutí obvodu prijímača by ste mali počkať 5 sekúnd na príjem signálu z vysielača.

Autorské prototypy:

Vysielač:

prototyp ultrazvukového vysielača

Prijímač:

prototyp ultrazvukového prijímača

Ak máte akékoľvek otázky týkajúce sa tohto solárneho ultrazvukového bezdrôtového regulátora hladiny vody, neváhajte a vyjadrite sa v komentári. Môžete očakávať rýchlu odpoveď.




Dvojica: Ako si vyrobiť obvody prevodníka Simple Boost Ďalej: Ako navrhnúť prevodník Flyback - komplexný návod