Arduino - Watersensor

De watersensor of waterniveau sensor wordt gebruikt om waterlekkage, regenval, overloop van tanks te detecteren of om het waterniveau te meten. In deze handleiding leert u:

Hardware Benodigd

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×Waterniveau sensor
1×Jumper Draden
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over de Waterniveau Sensor

Waterniveau Sensor Pinout

De waterniveau sensor heeft 3 pinnen:

  • S (Signal) pin: een analoge uitgang die verbonden wordt met een van de analoge ingangen op uw Arduino.
  • + (VCC) pin: levert stroom aan de sensor. Het wordt aangeraden om de sensor te voeden met 3,3V tot 5V.
  • - (GND) pin: de ground (aarde) verbinding.
water sensor pinout

※ Notiz:

De analoge uitgangswaarde op de signal pin varieert afhankelijk van de spanning die wordt toegevoerd op de VCC pin van de sensor.

Hoe de Waterniveau Sensor Werkt

Simpel gezegd: hoe meer water de sensor onderdompelt, hoe hoger de uitgangsspanning op de signal pin is.

Laten we dit wat dieper bekijken.

Deze sectie is gewijd aan diepgaande kennis. Maak u GEEN zorgen als u het niet begrijpt. Sla deze sectie over als deze u overweldigt en kom op een andere dag terug. Lees verder met de volgende secties.

De sensor heeft een reeks van tien blootgestelde koperen banen. Vijf hiervan zijn voedingsbanen en vijf zijn sensorkanalen. Deze banen zijn parallel verweven zodat er tussen elke twee voedingsbanen een sensorkanaal ligt. Deze banen zijn niet met elkaar verbonden tenzij ze worden overbrugd door water bij onderdompeling.

De banen functioneren als een variabele weerstand (vergelijkbaar met een potentiometer) waarvan de weerstand verandert afhankelijk van het waterniveau.

  • De verandering in weerstand correspondeert met de afstand van de bovenkant van de sensor tot het wateroppervlak.
  • De weerstand is omgekeerd evenredig met de waterhoogte:
  • Hoe meer water de sensor onderdompelt, hoe beter de geleiding, en hoe lager de weerstand.
  • Hoe minder water de sensor onderdompelt, hoe slechter de geleiding, en hoe hoger de weerstand.
  • De sensor geeft een spanning uit die overeenkomt met deze weerstand.

Door de spanning te meten kunnen we het waterniveau bepalen.

Bedradingsschema

In theorie kunnen we om de sensor van stroom te voorzien de VCC en GND pinnen van de sensor verbinden met respectievelijk de 5V en GND pinnen van de Arduino.

In de praktijk wordt dit echter afgeraden. Omdat de sensor in een vochtige omgeving staat, zal deze elektrochemisch sneller corroderen als hij constant van spanning wordt voorzien. Dit verkort de levensduur van de sensor aanzienlijk.

Om dit probleem te voorkomen, raden wij aan de sensor niet continu van stroom te voorzien, maar alleen wanneer de sensorwaarde wordt uitgelezen. Dit kan gerealiseerd worden door de VCC pin van de sensor te verbinden met een digitale pin van de Arduino en deze pin op HIGH en LOW te zetten respectievelijk voor en na het uitlezen.

Arduino Water Sensor wiring diagram

This image is created using Fritzing. Click to enlarge image

Arduino Code – Waarde Uitlezen van Watersensor

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-water-sensor */ #define POWER_PIN 7 #define SIGNAL_PIN A5 int value = 0; // variabele om de sensorwaarde op te slaan void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // configureer D7 pin als UITGANG digitalWrite(POWER_PIN, LOW); // zet sensor UIT } void loop() { digitalWrite(POWER_PIN, HIGH); // zet sensor AAN delay(10); // wacht 10 milliseconden value = analogRead(SIGNAL_PIN); // lees de analoge waarde van de sensor digitalWrite(POWER_PIN, LOW); // zet sensor UIT Serial.print("Sensorwaarde: "); Serial.println(value); delay(1000); }

Snelle Stappen

  • Kopieer de bovenstaande code en open deze in de Arduino IDE
  • Klik op de Uploaden knop in de Arduino IDE om de code naar uw Arduino te sturen
  • Dompel de sensor langzaam in het water (bijvoorbeeld een glas water)
  • Bekijk het resultaat in de Serial Monitor. De waarde is 0 wanneer de sensor niks aanraakt.
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:

De sensor is niet ontworpen om volledig ondergedompeld te worden. Alleen de blootgestelde banen op de printplaat mogen contact maken met water. Wees voorzichtig bij het installeren.

Hoe Waterlekkage Detecteren

Om waterlekkage, regenval en overloop van tanks te detecteren, hoeft u slechts de uitgelezen waarde te vergelijken met een drempelwaarde. Deze drempelwaarde wordt bepaald in het kalibratiegedeelte van deze handleiding.

Laten we een concreet voorbeeld bekijken. Arduino schakelt een LED in als er water wordt gedetecteerd.

Bedradingsschema

Arduino Water Sensor LED wiring diagram

This image is created using Fritzing. Click to enlarge image

Arduino Code – Detecteren van Waterlekkage

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-water-sensor */ #define LED_PIN 2 #define POWER_PIN 7 #define SIGNAL_PIN A5 #define THRESHOLD 300 int value = 0; // variabele om sensorwaarde op te slaan void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); // configureer D2 pin als UITGANG pinMode(POWER_PIN, OUTPUT); // configureer D7 pin als UITGANG digitalWrite(POWER_PIN, LOW); // zet sensor UIT digitalWrite(LED_PIN, LOW); // zet LED UIT } void loop() { digitalWrite(POWER_PIN, HIGH); // zet sensor AAN delay(10); // wacht 10 milliseconden value = analogRead(SIGNAL_PIN); // lees analoge waarde sensor digitalWrite(POWER_PIN, LOW); // zet sensor UIT if (value > THRESHOLD) { Serial.print("Er is water gedetecteerd"); digitalWrite(LED_PIN, HIGH); // zet LED AAN } else { digitalWrite(LED_PIN, LOW); // zet LED UIT } }

Hoe Het Waterniveau Meten

Wilt u de maximale waterhoogte indelen in verschillende niveaus en het huidige niveau meten? Dan kunt u de methode gebruiken in de onderstaande code. Let op: de maximale waterhoogte is gelijk aan de hoogte van de sensor. In het onderstaande voorbeeld wordt de maximale hoogte verdeeld in 4 niveaus.

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-water-sensor */ #define POWER_PIN 7 #define SIGNAL_PIN A5 #define SENSOR_MIN 0 #define SENSOR_MAX 521 int value = 0; // variabele om sensorwaarde op te slaan int level = 0; // variabele om waterniveau op te slaan void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // configureer D7 pin als UITGANG digitalWrite(POWER_PIN, LOW); // zet sensor UIT } void loop() { digitalWrite(POWER_PIN, HIGH); // zet sensor AAN delay(10); // wacht 10 milliseconden value = analogRead(SIGNAL_PIN); // lees analoge waarde van sensor digitalWrite(POWER_PIN, LOW); // zet sensor UIT level = map(value, SENSOR_MIN, SENSOR_MAX, 0, 4); // 4 niveaus Serial.print("Waterniveau: "); Serial.println(level); delay(1000); }

※ Notiz:

  • SENSOR_MIN en SENSOR_MAX worden bepaald tijdens het kalibratieproces.
  • De bovenstaande mapping-methode is niet 100% nauwkeurig, maar is voldoende in veel toepassingen. Voor meer precisie kunt u drempelwaarden meten voor elk niveau. Zie het kalibratiegedeelte.

Kalibratie van de Waterniveau Sensor

De uitgangswaarde van de sensor hangt niet alleen af van het waterniveau maar ook van de geleiding van het water. Zuiver water geleidt bijna niet. Water met mineralen en onzuiverheden geleidt beter. Hoe beter de geleiding, hoe gevoeliger de sensor. Daarnaast varieert de uitgangswaarde ook afhankelijk van de spanning die op de VCC pin wordt aangelegd.

Voor een nauwkeurige uitlezing van de watersensor raden we aan de sensor te kalibreren voor het specifieke water dat u wilt monitoren.

Voordat u een drempelwaarde instelt om een actie te triggeren, moet u de werkelijke meetwaarde van de sensor vaststellen door een test uit te voeren.

Hoe voert u deze test uit:

  • Gebruik de bovenstaande sketch om sensorwaarden uit te lezen.
  • Dompel de sensor in het water op het niveau dat u wilt gebruiken als drempelwaarde.
  • Noteer de waarde die de sensor in de Serial Monitor weergeeft.
  • Gebruik deze waarde als drempel voor het triggeren van een actie.

Deze test kan enige trial en error vereisen.

De test kan ook gebruikt worden om te bepalen:

  • SENSOR_MIN waarde, wanneer de sensor niet in water is gedompeld
  • SENSOR_MAX waarde, wanneer de sensor volledig in water is gedompeld
  • Een drempelwaarde voor het detecteren van waterlekkage
  • De drempelwaarden voor elk niveau van uw schaalindeling

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor visuele begeleiding bij dit project! De video biedt extra inzichten voor het werken met de Arduino en de watersensor.

Daag uzelf uit

  • Stuur een e-mail zodra waterlekkage wordt gedetecteerd
  • Stuur een SMS-bericht zodra waterlekkage wordt gedetecteerd
  • Maak een geluidssignaal zodra waterlekkage wordt gedetecteerd

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!