Ultrasonic Wireless Water Level Indicator - Solar Powered

Prøv Instrumentet Vårt For Å Eliminere Problemer





En ultrasonisk vannstandsregulator er en enhet som kan oppdage vannivåer i en tank uten fysisk kontakt og sende dataene til en fjern LED-indikator i trådløs GSM-modus.

I dette innlegget skal vi konstruere en ultralydbasert soldrevet trådløs vannstandsindikator ved hjelp av Arduino der Arduinos vil sende og motta med 2,4 GHz trådløs frekvens. Vi vil oppdage vannstanden i tanken ved hjelp av ultralyd i stedet for tradisjonell elektrodemetode.



Oversikt

Vannnivåindikator er en må-gadget, hvis du eier et hus eller til og med bor i et leid hus. EN vannstandsindikator viser en viktig data for huset ditt som er like viktig som energimålerens avlesning, det vil si hvor mye vann som er igjen? Slik at vi kan holde rede på vannforbruket og vi ikke trenger å klatre opp etasjen for å få tilgang til vanntanken for å sjekke hvor mye vann som er igjen og ikke mer plutselig stopp av vann fra kranen.

Vi lever i 2018 (i skrivende stund av denne artikkelen) eller senere, vi kan kommunisere til hvor som helst i verden øyeblikkelig, vi lanserte en elektrisk racerbil til verdensrommet, vi lanserte satellitter og rovers til mars, vi kunne til og med lande mennesker vesener på månen, fremdeles ikke noe ordentlig kommersielt produkt for å oppdage hvor mye vann som er igjen i vanntankene våre?



Vi kan finne at vannstandsindikatorer er laget av 5. klasse-studenter for vitenskapsmesse på skolen. Hvordan slike enkle prosjekter ikke gjorde hverdagen vår? Svaret er at vanntanknivåindikatorer ikke er enkle prosjekter som en 5. klassing kan lage en for vårt hjem. Det er mange praktiske hensyn før vi designer en.

• Ingen ønsker å bore hull på vanntankens kropp for elektroder som kan lekke vann senere.
• Ingen vil kjøre 230/120 VAC-ledning i nærheten av vanntanken.
• Ingen ønsker å bytte batterier hver måned.
• Ingen vil kjøre ekstra lange ledninger som henger på et rom for vannstandsindikasjon, da det ikke er planlagt mens du bygger huset.
• Ingen ønsker å bruke vannet som er blandet med metallkorrosjon av elektroden.
• Ingen ønsker å fjerne oppsettet for vannstandsindikatoren mens du rengjør tanken (inne).

Noen av årsakene nevnt ovenfor kan se dumme ut, men du vil finne mindre tilfredsstillende med kommersielt tilgjengelige produkter med disse ulempene. Derfor er penetrasjonen av disse produktene veldig mindre blant de gjennomsnittlige husholdningene *.
* På det indiske markedet.

Etter å ha vurdert disse viktige punktene, har vi designet en praktisk vannstandsindikator som skal fjerne de nevnte ulempene.

Vårt design:

• Den bruker ultralydssensor for å måle vannstanden, uten korrosjonsproblemer.
• Trådløs indikasjon på vannstand sanntid ved 2,4 GHz.
• God trådløs signalstyrke, nok til to etasjer høye bygninger.
• Solstrøm ikke mer strøm eller skifte batteri.
• Tank full / overløpsalarm mens du fyller tanken.

La oss undersøke kretsdetaljene:

Sender:

De trådløs senderkrets som er plassert på tanken, vil sende vannstandsdata hvert 5. sekund 24/7. Senderen består av Arduino nano, ultralydsensor HC-SR04, nRF24L01-modul som vil koble senderen og mottakeren trådløst ved 2,4 GHz.

Et solcellepanel på 9 V til 12 V med strømutgang på 300 mA vil drive senderkretsen. Et batterikontrollkort vil lade Li-ion-batteriet, slik at vi kan overvåke vannstanden selv når det ikke er sollys.

La oss undersøke hvordan du plasserer ultralydssensoren ved vanntanken:

Vær oppmerksom på at du må bruke kreativiteten din til å have kretsløpet og beskytte mot regn og direkte sollys.

Skjær et lite hull over tankens lokk for å plassere ultralydsensoren og forsegl den med en slags lim du kan finne.

plassere ultralydssensor i en vanntank

Mål nå tankens fulle høyde fra bunn til lokk, skriv den ned i meter. Mål nå høyden på vanntankens kapasitet som vist på bildet ovenfor og skriv ned i meter.
Du må oppgi disse to verdiene i koden.

Skjematisk diagram av senderen:

ultralydsendertilkoblinger for vannstandskontroll

MERKNAD: nRF24L01 bruker 3.3V da Vcc ikke kobles til 5V utgang fra Arduino.

Strømforsyning for sender:

ultralyd vannstand kontroller strømforsyning design

Forsikre deg om at solcellepanelets utgangseffekt, dvs. utgang (volt x strøm) er større enn 3 watt. De solcellepanel skal være 9V til 12V.

12V og 300mA panel anbefales som du enkelt kan finne på markedet. Batteriet skal være rundt 3,7 V 1000 mAh.

5V 18650 Li-ion-lademodul:

Følgende bilde viser en standard 18650 ladekrets

Inngangen kan være USB (ikke brukt) eller ekstern 5V fra LM7805 IC. Forsikre deg om at du får riktig modul som vist ovenfor, den burde ha TP4056 beskyttelse, som har lavt batterikutt og kortslutningsbeskyttelse.

Utgangen på dette skal mates til XL6009's inngang som vil øke til høyere spenning, ved hjelp av en liten skrutrekkerutgang på XL6009 skal justeres til 9V for Arduino.

Illustrasjon av XL6009 DC til DC boost converter:

Det konkluderer senderens maskinvare.

Kode for sender:

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

Endre følgende verdier i koden du målte:

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

Det avslutter senderen.

Mottakeren:

skjematisk kontroller for ultralyd vannnivåmottaker

Mottakeren kan vise 5 nivåer. Alarm når tanken nådde absolutt maksimal vannholdingskapasitet mens du fylte tanken. 100 til 75% - Alle fire lysdioder vil lyse, 75 til 50% tre lysdioder vil lyse, 50 til 25% to lysdioder vil lyse, 25% og mindre en LED vil lyse.
Mottakeren kan drives fra 9V batteri eller fra smarttelefonlader til USB mini-B-kabel.

Kode for mottaker:

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

Det avslutter mottakeren.

MERKNAD: hvis ingen lysdioder lyser, noe som betyr at mottakeren ikke kan få signal fra senderen. Du bør vente i 5 sekunder på å motta signalet fra senderen etter at du har slått på mottakerkretsen.

Forfatterens prototyper:

Sender:

prototype for ultralydsender

Mottaker:

prototype for ultralydmottaker

Hvis du har spørsmål angående denne solenergidrevne trådløse vannstandsregulatorkretsen, kan du gjerne uttrykke i kommentaren, du kan forvente å få et raskt svar.




Forrige: Hvordan lage enkle Boost Converter-kretser Neste: Hvordan lage en Flyback Converter - omfattende veiledning