Ultraljud Trådlös vattennivåindikator - soldriven

Prova Vårt Instrument För Att Eliminera Problem





En ultraljudsvattennivåkontroll är en enhet som kan upptäcka vattennivåer i en tank utan fysisk kontakt och skicka data till en avlägsen LED-indikator i ett trådlöst GSM-läge.

I det här inlägget ska vi konstruera en ultraljudbaserad soldriven trådlös vattennivåindikator med Arduino där Arduinos skulle sända och ta emot med 2,4 GHz trådlös frekvens. Vi kommer att upptäcka vattennivån i tanken med ultraljud istället för traditionell elektrodmetod.



Översikt

Vattennivåindikator är en måste-gadget om du äger ett hus eller till och med bor i ett hyrt hus. A vattennivåindikator visar en viktig data för ditt hus som är lika viktig som din energimätares avläsning, det vill säga hur mycket vatten som finns kvar? Så att vi kan hålla reda på vattenförbrukningen och vi inte behöver klättra uppför trappan för att komma åt vattentanken för att kontrollera hur mycket vatten som finns kvar och inget mer plötsligt stopp av vatten från kran.

Vi lever 2018 (när denna artikel skrivs) eller senare, vi kan kommunicera till var som helst i världen direkt, vi lanserade en elektrisk racerbil till rymden, vi lanserade satelliter och rovers till mars, vi kan till och med landa människor varelser på månen, fortfarande ingen riktig kommersiell produkt för att upptäcka hur mycket vatten som finns kvar i våra vattentankar?



Vi kan hitta att vattennivåindikatorer är gjorda av elever i femte klass för vetenskapsmässan i skolan. Hur gjorde så enkla projekt inte vår vardag? Svaret är att vattenbehållarnivåindikatorer inte är enkla projekt som en 5: e klassare kan göra en för vårt hem. Det är många praktiska överväganden innan vi designar en.

• Ingen vill borra ett hål på vattentankens kropp för elektroder som kan läcka vatten senare.
• Ingen vill köra 230/120 VAC-ledning nära vattentanken.
• Ingen vill byta batterier varje månad.
• Ingen vill köra ytterligare långa ledningar som hänger i ett rum för vattennivåindikering eftersom det inte är förplanerat när man bygger huset.
• Ingen vill använda vattnet som blandas med metallkorrosion i elektroden.
• Ingen vill ta bort inställningen av vattennivåindikatorn när du rengör tanken (inuti).

Några av anledningarna som nämns ovan kan se dumma ut men du kommer att hitta mindre tillfredsställande med kommersiellt tillgängliga produkter med dessa nackdelar. Därför är penetrationen av dessa produkter mycket mindre bland de genomsnittliga hushållen *.
* På den indiska marknaden.

Efter att ha övervägt dessa viktiga punkter har vi utformat en praktisk vattennivåindikator som ska ta bort de nämnda nackdelarna.

Vår design:

• Den använder ultraljudssensor för att mäta vattennivån så inget korrosionsproblem.
• Trådlös indikering av vattennivå i realtid vid 2,4 GHz.
• Bra trådlös signalstyrka, tillräckligt för två våningar höga byggnader.
• Solenergi inte längre nätström eller byta batteri.
• Tank full / överflödslarm när tanken fylls.

Låt oss undersöka kretsuppgifterna:

Sändare:

De trådlös sändarkrets som placeras på tanken skickar vattennivådata var 5: e sekund dygnet runt. Sändaren består av Arduino nano, ultraljudssensor HC-SR04, nRF24L01-modul som ansluter sändaren och mottagaren trådlöst vid 2,4 GHz.

En solpanel på 9 V till 12 V med en strömeffekt på 300 mA kommer att driva sändarkretsen. Ett kretskort för batterihantering laddar Li-ion-batteriet så att vi kan övervaka vattennivån även utan solljus.

Låt oss utforska hur man placerar ultraljudssensorn vid vattentanken:

Observera att du måste använda din kreativitet för att kasta kretsen och skydda mot regn och direkt solljus.

Klipp ett litet hål ovanför tankens lock för att placera ultraljudssensorn och försegla den med någon form av lim du kan hitta.

placera ultraljudssensor i en vattentank

Mät nu tankens fulla höjd från botten till locket, skriv ner den i meter. Mät nu tankens höjd på vatten som visas i bilden ovan och skriv ner i meter.
Du måste ange dessa två värden i koden.

Schematisk bild av sändaren:

ultraljudssändaranslutningar för vattennivåkontroll

OBS: nRF24L01 använder 3,3 V eftersom Vcc inte ansluter till 5 V-utgången från Arduino.

Strömförsörjning för sändare:

ultraljud vattennivåregulator strömförsörjning design

Se till att solpanelens uteffekt, dvs. utgången (volt x ström) är större än 3 watt. De solpanel bör vara 9V till 12V.

12V och 300mA panel rekommenderas som du lätt kan hitta på marknaden. Batteriet ska vara cirka 3,7 V 1000 mAh.

5V 18650 Li-ion laddningsmodul:

Följande bild visar en standard 18650 laddarkrets

Ingången kan vara USB (används inte) eller extern 5V från LM7805 IC. Se till att du får rätt modul som visas ovan, den borde ha TP4056 skydd som har lågt batteriavbrott och kortslutningsskydd.

Utgången från detta ska matas till XL6009-ingången som kommer att öka till högre spänning, med en liten skruvmejselutgång på XL6009 bör justeras till 9V för Arduino.

Illustration av XL6009 DC till DC boost-omvandlare:

Det avslutar sändarens hårdvara.

Kod för sändare:

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

Ändra följande värden i koden som du mätte:

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

Det avslutar sändaren.

Mottagaren:

schematisk styrenhet för ultraljudsvattenmottagare

Mottagaren kan visa 5 nivåer. Larm när tanken uppnådde absolut maximal vattenhållningskapacitet när tanken fylldes. 100 till 75% - Alla fyra lysdioderna lyser, 75 till 50% tre lysdioder lyser, 50 till 25% två lysdioder lyser, 25% och mindre en lysdiod lyser.
Mottagaren kan drivas från 9V batteri eller från smartphone-laddare till USB mini-B-kabel.

Kod för mottagare:

// ----------- 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 avslutar mottagaren.

OBS: om inga lysdioder lyser, vilket innebär att mottagaren inte kan få signal från sändaren. Du bör vänta 5 sekunder på att ta emot signalen från sändaren efter att du har slagit på mottagarkretsen.

Författarens prototyper:

Sändare:

prototyp för ultraljudssändare

Mottagare:

prototyp för ultraljudsmottagare

Om du har några frågor angående denna solenergidrivna ultraljudstrådlös krets för vattennivåkontroll är du välkommen att uttrycka i kommentaren, du kan förvänta dig att få ett snabbt svar.




Tidigare: Hur man gör enkla Boost Converter-kretsar Nästa: Hur man utformar en Flyback-omvandlare - omfattande handledning