Ultralyd Trådløs vandstandsindikator - Solar Powered

Prøv Vores Instrument Til At Fjerne Problemer





En ultrasonisk vandstandsregulator er en enhed, der kan registrere vandniveauer i en tank uden fysisk kontakt og sende dataene til en fjern LED-indikator i en trådløs GSM-tilstand.

I dette indlæg skal vi konstruere en ultralydsbaseret, soldrevet trådløs vandstandsindikator ved hjælp af Arduino, hvor Arduinos vil transmittere og modtage ved 2,4 GHz trådløs frekvens. Vi registrerer vandniveauet i tanken ved hjælp af ultralyd i stedet for traditionel elektrodemetode.



Oversigt

Vandstandsindikator er en must have-gadget, hvis du ejer et hus eller endda bor i et lejet hus. EN vandstandsindikator viser en vigtig data for dit hus, der er lige så vigtig som din energimålers aflæsning, dvs. hvor meget vand er der tilbage? For at vi kan holde styr på vandforbruget, og vi ikke behøver at klatre ovenpå for at få adgang til vandtanken for at kontrollere, hvor meget vand der er tilbage og ikke mere pludselig standsning af vand fra vandhanen.

Vi lever i 2018 (på tidspunktet for skrivning af denne artikel) eller senere, vi kan kommunikere til hvor som helst i verden med det samme, vi lancerede en elektrisk racerbil til rummet, vi lancerede satellitter og rovers til Mars, vi kunne endda lande mennesker væsener på månen, stadig ikke noget ordentligt kommercielt produkt til at opdage, hvor meget vand der er tilbage i vores vandtanke?



Vi kan finde vandstandsindikatorer er lavet af studerende fra 5. klasse til videnskabsmesse i skolen. Hvordan sådanne enkle projekter ikke kom ind i vores hverdag? Svaret er, at vandtanksniveauindikatorer ikke er enkle projekter, som en 5. klasse kan lave en til vores hjem. Der er mange praktiske overvejelser inden vi designer en.

• Ingen ønsker at bore et hul på vandtankens krop efter elektroder, der senere kan lække vand.
• Ingen ønsker at køre 230/120 VAC-ledning nær vandtanken.
• Ingen ønsker at udskifte batterier hver måned.
• Ingen ønsker at køre yderligere lange ledninger, der hænger på et rum til vandstandsindikation, da det ikke er planlagt, mens man bygger huset.
• Ingen ønsker at bruge vandet, der er blandet med metalkorrosion af elektroden.
• Ingen ønsker at fjerne opsætningen af ​​vandstandsindikatoren under rengøring af tanken (indeni).

Nogle af grundene nævnt ovenfor kan se fjollet ud, men du finder mindre tilfredsstillende med kommercielt tilgængelige produkter med disse ulemper. Derfor er penetrationen af ​​disse produkter meget mindre blandt de gennemsnitlige husstande *.
* På det indiske marked.

Efter at have overvejet disse nøglepunkter har vi designet en praktisk vandstandsindikator, der skal fjerne de nævnte ulemper.

Vores design:

• Det bruger ultralydssensor til at måle vandstanden, så der ikke er noget korrosionsproblem.
• Trådløs indikation af vandstand i realtid ved 2,4 GHz.
• God trådløs signalstyrke, nok til 2 etagers høje bygninger.
• Solenergi ikke mere lysnettet eller udskiftning af batteri.
• Alarm for tank fuld / overløb under fyldning af tanken.

Lad os undersøge kredsløbsoplysningerne:

Sender:

Det trådløs transmitter kredsløb som er placeret på tanken, sender data om vandstand hvert 5. sekund 24/7. Senderen består af Arduino nano, ultralydssensor HC-SR04, nRF24L01-modul, som forbinder senderen og modtageren trådløst ved 2,4 GHz.

Et solpanel på 9 V til 12 V med en strømoutput på 300 mA vil drive transmitterkredsen. Et batteristyringskredsløb oplader Li-ion-batteriet, så vi kan overvåge vandstanden, selv når der ikke er sollys.

Lad os undersøge, hvordan ultralydssensoren placeres ved vandtanken:

Vær opmærksom på, at du skal bruge din kreativitet til at hæve kredsløbet og beskytte mod regn og direkte sollys.

Skær et lille hul over tankens låg for at placere ultralydssensoren, og forsegl den med en slags lim, du kan finde.

placering af ultralydssensor i en vandtank

Mål nu tankens fulde højde fra bund til låg, skriv den ned i meter. Mål nu tankens højde af vandkapacitet som vist i ovenstående billede, og skriv ned i meter.
Du skal indtaste disse to værdier i koden.

Skematisk diagram af senderen:

ultralydssenderforbindelser til vandstandskontrol

BEMÆRK: nRF24L01 bruger 3.3V, da Vcc ikke tilsluttes 5V-udgang fra Arduino.

Strømforsyning til transmitter:

ultralyds vandstandsregulator strømforsyningsdesign

Sørg for, at dit solpanels udgangseffekt, dvs. output (volt x strøm) er større end 3 watt. Det solpanel skal være 9V til 12V.

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

5V 18650 Li-ion opladningsmodul:

Det følgende billede viser en standard 18650 opladerkredsløb

Indgangen kan være USB (ikke brugt) eller ekstern 5V fra LM7805 IC. Sørg for, at du får det rigtige modul som vist ovenfor, det skulle have TP4056 beskyttelse, der har lavt batteriafbrydelse og kortslutningsbeskyttelse.

Outputtet af dette skal føres til XL6009's input, som vil boostes til højere spænding, ved hjælp af en lille skruetrækkeroutput på XL6009 skal justeres til 9V for Arduino.

Illustration af XL6009 DC til DC boost-konverter:

Det konkluderer transmitterens hardware.

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

Skift følgende værdier i den kode, som du målte:

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

Det afslutter senderen.

Modtageren:

skematisk controller til ultralydsmodstandsregulator

Modtageren kan vise 5 niveauer. Alarm, når tanken nåede den maksimale maksimale vandkapacitet under påfyldning af tanken. 100 til 75% - Alle fire lysdioder lyser, 75 til 50% tre lysdioder lyser, 50 til 25% to lysdioder lyser, 25% og mindre en LED lyser.
Modtageren kan få strøm fra 9V batteri eller fra smartphone-oplader til USB mini-B-kabel.

Kode for modtager:

// ----------- 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 konkluderer modtageren.

BEMÆRK: hvis ingen lysdioder lyser, hvilket betyder, at modtageren ikke kan få signal fra senderen. Du skal vente 5 sekunder på at modtage signalet fra senderen, når du har tændt modtagerens kredsløb.

Forfatterens prototyper:

Sender:

prototype til ultralydssender

Modtager:

ultralyds modtager prototype

Hvis du har spørgsmål vedrørende dette soldrevne ultralyds trådløse vandstandsregulator kredsløb, er du velkommen til at udtrykke i kommentaren, du kan forvente at få et hurtigt svar.




Forrige: Sådan oprettes enkle boostkonvertererkredsløb Næste: Sådan designer du en Flyback Converter - omfattende tutorial