Drahtlose Ultraschall-Wasserstandsanzeige - Solarbetrieben

Versuchen Sie Unser Instrument, Um Probleme Zu Beseitigen





Ein Ultraschall-Wasserstandsregler ist ein Gerät, das den Wasserstand in einem Tank ohne physischen Kontakt erfassen und die Daten in einem drahtlosen GSM-Modus an eine entfernte LED-Anzeige senden kann.

In diesem Beitrag werden wir eine solarbetriebene drahtlose Wasserstandsanzeige auf Ultraschallbasis mit Arduino konstruieren, bei der die Arduinos mit einer drahtlosen Frequenz von 2,4 GHz senden und empfangen würden. Wir werden den Wasserstand im Tank mithilfe von Ultraschall anstelle der herkömmlichen Elektrodenmethode erfassen.



Überblick

Die Wasserstandsanzeige ist ein Muss, wenn Sie ein Haus besitzen oder sogar in einem gemieteten Haus wohnen. EIN Wasserstandsanzeige zeigt wichtige Daten für Ihr Haus an, die genauso wichtig sind wie die Anzeige Ihres Energiezählers, dh wie viel Wasser ist noch übrig? Damit wir den Wasserverbrauch verfolgen können und nicht nach oben klettern müssen, um Zugang zum Wassertank zu erhalten, um zu überprüfen, wie viel Wasser noch vorhanden ist, und kein plötzliches Anhalten des Wassers aus dem Wasserhahn mehr.

Wir leben im Jahr 2018 (zum Zeitpunkt des Schreibens dieses Artikels) oder später können wir sofort mit jedem auf der Welt kommunizieren, wir haben einen elektrischen Rennwagen ins All gebracht, wir haben Satelliten und Rover zum Mars gestartet, wir können sogar Menschen landen Wesen auf dem Mond, immer noch kein richtiges kommerzielles Produkt, um festzustellen, wie viel Wasser noch in unseren Wassertanks ist?



Wir können feststellen, dass Wasserstandsindikatoren von Schülern der 5. Klasse für die Wissenschaftsmesse in der Schule erstellt werden. Wie haben sich so einfache Projekte nicht in unseren Alltag verwandelt? Die Antwort lautet: Wassertankfüllstandsanzeiger sind keine einfachen Projekte, die ein Fünftklässler für unser Zuhause durchführen kann. Da sind viele praktische Überlegungen bevor wir eine entwerfen.

• Niemand möchte ein Loch in den Körper des Wassertanks bohren, um Elektroden zu erhalten, aus denen später Wasser austreten kann.
• Niemand möchte ein 230/120-VAC-Kabel in der Nähe des Wassertanks verlegen.
• Niemand möchte jeden Monat die Batterien austauschen.
• Niemand möchte zusätzliche lange Drähte verlegen, die an einem Raum zur Anzeige des Wasserstandes hängen, da dies beim Bau des Hauses nicht vorgeplant ist.
• Niemand möchte das Wasser verwenden, das mit Metallkorrosion der Elektrode gemischt ist.
• Während der Reinigung des Tanks (innen) möchte niemand die Wasserstandsanzeige entfernen.

Einige der oben genannten Gründe mögen albern aussehen, aber Sie werden feststellen, dass handelsübliche Produkte mit diesen Nachteilen weniger zufriedenstellend sind. Aus diesem Grund ist die Penetration dieser Produkte bei den durchschnittlichen Haushalten * sehr gering.
* Auf dem indischen Markt.

Nach Berücksichtigung dieser Schlüsselpunkte haben wir einen praktischen Wasserstandsindikator entwickelt, der die genannten Nachteile beseitigen soll.

Unser Design:

• Der Wasserstand wird mit einem Ultraschallsensor gemessen, sodass keine Korrosionsprobleme auftreten.
• Drahtlose Anzeige des Wasserstandes in Echtzeit bei 2,4 GHz.
• Gute drahtlose Signalstärke, ausreichend für zweistöckige Gebäude.
• Solarbetrieben, kein Wechselstromnetz mehr oder Batteriewechsel.
• Tankfüll- / Überlaufalarm beim Befüllen des Tanks.

Untersuchen wir die Schaltungsdetails:

Sender:

Das Funksenderschaltung Wenn es auf den Tank gestellt wird, werden alle 5 Sekunden rund um die Uhr Wasserstandsdaten gesendet. Der Sender besteht aus Arduino Nano, dem Ultraschallsensor HC-SR04 und dem Modul nRF24L01, die Sender und Empfänger drahtlos mit 2,4 GHz verbinden.

Ein Solarpanel von 9 V bis 12 V mit einer Stromabgabe von 300 mA versorgt den Senderkreis mit Strom. Eine Batteriemanagement-Platine lädt den Li-Ionen-Akku auf, sodass wir den Wasserstand auch dann überwachen können, wenn kein Sonnenlicht vorhanden ist.

Lassen Sie uns untersuchen, wie der Ultraschallsensor am Wassertank platziert wird:

Bitte beachten Sie, dass Sie Ihre Kreativität einsetzen müssen, um die Rennstrecke zu erklimmen und vor Regen und direkter Sonneneinstrahlung zu schützen.

Schneiden Sie ein kleines Loch über dem Tankdeckel, um den Ultraschallsensor zu platzieren, und verschließen Sie ihn mit einem Klebstoff, den Sie finden können.

Platzieren des Ultraschallsensors in einem Wassertank

Messen Sie nun die volle Höhe des Tanks vom Boden bis zum Deckel und notieren Sie ihn in Metern. Messen Sie nun die Höhe der Wasserhaltekapazität des Tanks wie im obigen Bild gezeigt und notieren Sie sie in Metern.
Sie müssen diese beiden Werte in den Code eingeben.

Schematische Darstellung des Senders:

Ultraschall-Senderanschlüsse zur Wasserstandsregelung

HINWEIS: nRF24L01 verwendet 3,3 V, da Vcc keine Verbindung zum 5 V-Ausgang von Arduino herstellt.

Stromversorgung für Sender:

Design der Stromversorgung des Ultraschall-Wasserstandsreglers

Stellen Sie sicher, dass die Ausgangsleistung Ihres Solarmoduls, d. H. Die Leistung (Volt x Strom), größer als 3 Watt ist. Das Sonnenkollektor sollte 9V bis 12V sein.

Es wird ein 12-V- und 300-mA-Panel empfohlen, das Sie leicht auf dem Markt finden können. Die Batterie sollte etwa 3,7 V 1000 mAh betragen.

5V 18650 Li-Ionen-Lademodul:

Das folgende Bild zeigt einen Standard 18650 Ladekreis

Der Eingang kann USB (nicht verwendet) oder externe 5 V vom LM7805 IC sein. Stellen Sie sicher, dass Sie das richtige Modul erhalten, wie oben gezeigt TP4056 Schutz mit niedriger Batterieabschaltung und Kurzschlussschutz.

Der Ausgang sollte dem Eingang des XL6009 zugeführt werden, der auf eine höhere Spannung ansteigt. Bei Verwendung eines kleinen Schraubenzieherausgangs des XL6009 sollte der Wert für Arduino auf 9 V eingestellt werden.

Abbildung des XL6009 DC / DC-Aufwärtswandlers:

Damit ist die Hardware des Senders abgeschlossen.

Code für den 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 ----------- //

Ändern Sie die folgenden Werte in dem Code, den Sie gemessen haben:

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

Damit ist der Sender abgeschlossen.

Der Empfänger:

Ultraschall-Wasserstandsempfänger-Steuerungsschema

Der Empfänger kann 5 Ebenen anzeigen. Alarm, wenn der Tank beim Befüllen des Tanks die absolute maximale Wasserhaltekapazität erreicht hat. 100 bis 75% - Alle vier LEDs leuchten, 75 bis 50% drei LEDs leuchten, 50 bis 25% zwei LEDs leuchten, 25% und weniger eine LED leuchtet.
Der Empfänger kann mit 9V Batterie oder mit Strom versorgt werden Smartphone-Ladegerät an USB Mini-B-Kabel.

Code für Empfänger:

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

Damit ist der Empfänger fertig.

HINWEIS: Wenn keine LEDs leuchten, kann der Empfänger kein Signal vom Sender empfangen. Sie sollten 5 Sekunden warten, um das Signal vom Sender zu empfangen, nachdem Sie die Empfängerschaltung eingeschaltet haben.

Prototypen des Autors:

Sender:

Prototyp eines Ultraschallsenders

Empfänger:

Prototyp des Ultraschallempfängers

Wenn Sie Fragen zu diesem solarbetriebenen drahtlosen Ultraschall-Wasserstandsregler haben, können Sie dies gerne im Kommentar ausdrücken. Sie können eine schnelle Antwort erwarten.




Zurück: So erstellen Sie einfache Aufwärtswandlerschaltungen Weiter: Entwerfen eines Flyback-Konverters - Umfassendes Tutorial