Arduino - Wassersensor

Der Wasser- oder Wasserstandsensor wird verwendet, um Wasserleckagen, Regenfälle oder Tanküberläufe zu erkennen bzw. den Wasserstand zu messen. In diesem Tutorial lernen wir:

Erforderliche Hardware

1×Arduino Uno R3
1×USB 2.0 Kabel Typ A/B (für USB-A PC)
1×USB 2.0 Kabel Typ C/B (für USB-C PC)
1×Water level sensor
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables STEM V3 Starter-Kit (Arduino enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über den Wasserstandssensor

Pinbelegung des Wasserstandssensors

Der Wasserstandssensor hat drei Anschlüsse:

  • S (Signal) Pin: ist ein analoger Ausgang, der an einen der analogen Eingänge Ihres Arduino angeschlossen wird.
  • + (VCC) Pin: versorgt den Sensor mit Strom. Es wird empfohlen, den Sensor mit 3,3 V – 5 V zu versorgen.
  • - (GND) Pin: ist eine Masseverbindung.
Pinbelegung des Wassersensors

※ Notiz:

Der analoge Ausgangswert am Signalausgangspin variiert abhängig von der Spannung, die dem VCC-Pin des Sensors zugeführt wird.

Wie der Wasserstandssensor funktioniert

Einfach gesagt: Je mehr Wasser der Sensor eingetaucht ist, desto höher ist die Ausgangsspannung am Signalausgangspin.

Schauen wir genauer hin.

Dieser Abschnitt widmet sich vertieftem Wissen. Machen Sie sich KEINE Sorgen, wenn Sie es nicht verstehen. Überspringen Sie diesen Abschnitt, wenn er Sie überfordert, und kommen Sie an einem anderen Tag zurück. Lesen Sie weiter mit den folgenden Abschnitten.

Der Sensor verfügt über zehn freiliegende Kupferleiterbahnen. Fünf davon dienen als Stromversorgungsleiterbahnen und fünf als Messleiterbahnen. Diese Leiterbahnen sind in paralleler Anordnung so verschachtelt, dass zwischen je zwei Stromversorgungsleiterbahnen jeweils eine Messleiterbahn liegt. Diese Leiterbahnen sind nicht verbunden, es sei denn, sie werden durch Wasser überbrückt, wenn sie eingetaucht sind.

Die Leiterbahnen wirken als variabler Widerstand (genauso wie ein Potentiometer), dessen Widerstand sich entsprechend dem Wasserstand ändert.

  • Die Änderung des Widerstands entspricht dem Abstand vom oberen Rand des Sensors zur Wasseroberfläche.
  • Der Widerstand ist umgekehrt proportional zur Höhe des Wassers:
  • Je mehr Wasser der Sensor eingetaucht ist, desto besser ist die Leitfähigkeit; desto niedriger ist der Widerstand.
  • Je weniger Wasser der Sensor eingetaucht ist, desto schlechter ist die Leitfähigkeit; desto höher ist der Widerstand.
  • Der Sensor erzeugt eine Ausgangsspannung in Abhängigkeit vom Widerstand.

Durch das Messen der Spannung können wir den Wasserstand bestimmen.

Verdrahtungsdiagramm

Theoretisch können wir den Sensor mit Strom versorgen, indem wir die VCC- und GND-Pins des Sensors jeweils mit den 5V- bzw. GND-Pins des Arduino verbinden.

In der Praxis ist dieser Weg jedoch nicht zu empfehlen. Denn in der feuchten Umgebung führt eine ständige Stromzufuhr dazu, dass der Sensor elektrochemisch schneller korrodiert. Das verkürzt die Lebensdauer des Sensors. Um dieses Problem zu umgehen, empfehlen wir, den Sensor nicht die ganze Zeit zu versorgen, sondern ihn nur dann mit Strom zu versorgen, wenn der Sensorwert ausgelesen wird. Dies kann erreicht werden, indem der VCC-Pin des Sensors mit einem digitalen Pin eines Arduino-Boards verbunden wird und der Arduino-Pin vor und nach dem Auslesen entsprechend auf HIGH bzw. LOW gesetzt wird.

Arduino-Wassersensor-Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Arduino-Code - Wert vom Wassersensor auslesen

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-water-sensor */ #define POWER_PIN 7 #define SIGNAL_PIN A5 int value = 0; // Variable zum Speichern des Sensorwerts void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // Konfiguriere den D7-Pin als OUTPUT digitalWrite(POWER_PIN, LOW); // Sensor ausschalten } void loop() { digitalWrite(POWER_PIN, HIGH); // Sensor einschalten delay(10); // Warte 10 Millisekunden value = analogRead(SIGNAL_PIN); // Lese den analogen Wert aus dem Sensor digitalWrite(POWER_PIN, LOW); // Sensor ausschalten Serial.print("Sensor value: "); Serial.println(value); delay(1000); }

Schnelle Schritte

  • Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE.
  • Klicken Sie in der Arduino IDE auf die Schaltfläche Hochladen, um den Code auf den Arduino hochzuladen.
  • Tauchen Sie den Sensor langsam ins Wasser (ein Glas Wasser).
  • Sehen Sie das Ergebnis im Serial Monitor. Der Wert 0, wenn der Sensor nichts berührt.
COM6
Send
Sensor value: 0 Sensor value: 0 Sensor value: 0 Sensor value: 25 Sensor value: 97 Sensor value: 284 Sensor value: 428 Sensor value: 435 Sensor value: 441 Sensor value: 455 Sensor value: 467 Sensor value: 521 Sensor value: 528 Sensor value: 553
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Notiz:

Der Sensor ist nicht dafür ausgelegt, vollständig unter Wasser getaucht zu werden. Nur die freiliegenden Leiterbahnen auf der Leiterplatte können mit Wasser in Berührung kommen. Bitte installieren Sie ihn sorgfältig.

Wie man Wasserleckagen erkennt

Um Wasserleckage, Niederschlag und Tanküberlauf zu erkennen, müssen wir lediglich den Messwert mit einem Schwellenwert vergleichen. Der Schwellenwert wird im Kalibrierungsabschnitt des Tutorials festgelegt.

Nehmen wir ein konkretes Beispiel. Arduino schaltet eine LED ein, wenn Wasser erkannt wird.

Verdrahtungsdiagramm

Schaltplan der LED-Verdrahtung für Arduino-Wassersensor

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Arduino-Code – Wasserleckage erkennen

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-water-sensor */ #define LED_PIN 2 #define POWER_PIN 7 #define SIGNAL_PIN A5 #define THRESHOLD 300 int value = 0; // Variable zum Speichern des Sensorwerts void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); // konfiguriere D2-Pin als OUTPUT pinMode(POWER_PIN, OUTPUT); // konfiguriere D7-Pin als OUTPUT digitalWrite(POWER_PIN, LOW); // Sensor ausschalten digitalWrite(LED_PIN, LOW); // LED ausschalten } void loop() { digitalWrite(POWER_PIN, HIGH); // Sensor einschalten delay(10); // Warte 10 Millisekunden value = analogRead(SIGNAL_PIN); // Lese den analogen Wert vom Sensor aus digitalWrite(POWER_PIN, LOW); // Sensor ausschalten if (value > THRESHOLD) { Serial.print("The water is detected"); digitalWrite(LED_PIN, HIGH); // LED einschalten } else { digitalWrite(LED_PIN, LOW); // LED ausschalten } }

Wie man den Wasserstand misst

Wenn Sie die maximale Wasserhöhe in mehrere Stufen unterteilen und den aktuellen Pegel messen möchten, können Sie die Methode im untenstehenden Code verwenden. Beachten Sie, dass die maximale Wasserhöhe der Höhe des Sensors entspricht. Der untenstehende Code teilt die maximale Höhe in vier Stufen auf.

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-water-sensor */ #define POWER_PIN 7 #define SIGNAL_PIN A5 #define SENSOR_MIN 0 #define SENSOR_MAX 521 int value = 0; // Variable zum Speichern des Sensorwerts int level = 0; // Variable zum Speichern des Wasserstands void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // Konfiguriere den D7-Pin als OUTPUT digitalWrite(POWER_PIN, LOW); // Sensor ausschalten } void loop() { digitalWrite(POWER_PIN, HIGH); // Sensor einschalten delay(10); // Warte 10 Millisekunden value = analogRead(SIGNAL_PIN); // Lese den analogen Wert vom Sensor aus digitalWrite(POWER_PIN, LOW); // Sensor ausschalten level = map(value, SENSOR_MIN, SENSOR_MAX, 0, 4); // 4 Stufen Serial.print("Water level: "); Serial.println(level); delay(1000); }

※ Notiz:

  • SENSOR_MIN und SENSOR_MAX werden durch den Kalibrierungsprozess bestimmt.
  • Die oben genannte Zuordungsmethode ist nicht genau. Sie ist jedoch in vielen Anwendungen akzeptabel. Wenn Sie sie genauer machen möchten, können Sie die Schwellenwerte für jede Stufe messen. Siehe Kalibrierungsteil.

Kalibrierung des Wasserstandssensors

Der Ausgabewert des Sensors hängt nicht nur vom Wasserstand, sondern auch von der Leitfähigkeit des Wassers ab. Reines Wasser ist nicht leitfähig. Wasser, das Mineralien und Verunreinigungen enthält, ist leitfähig. Je leitfähiger das Wasser ist, desto empfindlicher ist der Sensor. Andererseits variiert der Ausgabewert auch je nach der Versorgungsspannung, die dem VCC-Pin des Sensors zugeführt wird.

Um genaue Messwerte des Wassersensors zu erhalten, empfehlen wir Ihnen, den Sensor auf die jeweilige Wasserart zu kalibrieren, die Sie überwachen möchten.

Bevor Sie den Schwellenwert für das Auslösen einer Aktion bestimmen, sollten Sie den tatsächlich vom Sensor gelesenen Wert durch einen Test messen.

Wie man den Test durchführt:

  • Verwenden Sie den oben gezeigten Sketch, um den Sensorwert auszulesen.
  • Tauchen Sie den Sensor in das Wasser auf dem Niveau ein, das als Schwellenwert dienen soll.
  • Notieren Sie den Wert, den der Sensor im Serial Monitor ausgibt.
  • Verwenden Sie den Wert als Schwellenwert, um eine Aktion auszulösen.

Dieser Test erfordert möglicherweise etwas Ausprobieren und Fehlversuche.

Der Test kann auch verwendet werden, um Folgendes zu finden:

  • SENSOR_MIN-Wert, wenn der Sensor nicht ins Wasser eingetaucht ist
  • SENSOR_MAX-Wert, wenn der Sensor vollständig ins Wasser eingetaucht ist
  • Ein Grenzwert zur Erkennung eines Wasseraustritts
  • Die Schwellenwerte für jede Stufe Ihrer Gradskala

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Fordere dich selbst heraus

  • Senden Sie eine E-Mail, wenn ein Wasserleck erkannt wird
  • Senden Sie eine SMS, wenn ein Wasserleck erkannt wird
  • Lösen Sie einen akustischen Alarm aus, wenn ein Wasserleck erkannt wird

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!