Arduino Nano - Water Sensor

Deze handleiding legt uit hoe u de water sensor gebruikt met Arduino Nano. We zullen leren:

Dit kan worden toegepast voor detectie van waterlekkage, regenval, overloop van een tank...

Hardware Vereist

1×Official Arduino Nano
1×Alternatief: DIYables ATMEGA328P Nano Development Board
1×USB A naar Mini-B USB-kabel
1×Waterniveausensor
1×Jumperdraden
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Breakout Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Stromsplitter voor Arduino Nano

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 Waterniveausensor

Waterniveausensor Pinout

De waterniveausensor heeft 3 pinnen:

  • De S (Signal) pin is een analoge uitgang die wordt verbonden met een van de analoge ingangen op uw Arduino Nano.
  • De + (VCC) pin levert stroom aan de sensor; het wordt aanbevolen een spanning tussen 3,3V en 5V te gebruiken.
  • De - (GND) pin is de aardingsverbinding.
water sensor pinout

Hoe de Waterniveausensor Werkt

Kort gezegd geldt: hoe meer water de sensor onderdompelt, hoe hoger de spanning op de signaalpin zal zijn.

Laten we het iets nader 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 blootliggende koperen banen:

  • Vijf daarvan zijn stroombanen
  • De andere vijf zijn sensorkanalen

De banen liggen parallel gerangschikt met een sensorkanaal tussen elke twee stroombanen. Ze zijn niet met elkaar verbonden, tenzij ze door water worden overbrugd wanneer ondergedompeld.

De banen functioneren als een variabele weerstand, vergelijkbaar met een potentiometer, waarvan de weerstand varieert met het waterniveau:

  • De weerstand wordt bepaald door de afstand van de bovenkant van de sensor tot het wateroppervlak.
  • De weerstand is omgekeerd evenredig met de hoeveelheid water:
  • Bij meer water neemt de geleiding toe en daalt de weerstand.
  • Bij minder water neemt de geleiding af en stijgt de weerstand.
  • De sensor levert een uitgangsspanning gebaseerd op deze weerstand.

Het waterniveau kan worden bepaald door de spanning te meten.

Bedradingsschema

In theorie kunnen de VCC- en GND-pinnen van de sensor worden aangesloten op de 5V- en GND-pinnen van de Arduino Nano om de sensor van stroom te voorzien.

In de praktijk wordt dit niet aanbevolen. In een vochtige omgeving zal de sensor, als deze continu onder spanning staat, sneller elektrochemisch corroderen, wat de levensduur verkort.

Om dit te vermijden, adviseren wij de sensor niet continu van stroom te voorzien, maar alleen tijdens het uitlezen van de waarde. Dit kan worden gedaan door de VCC-pin van de sensor aan te sluiten op een digitale pin van de Arduino Nano en deze pin op HIGH te zetten voordat u leest en daarna weer op LOW.

Arduino Nano water sensor wiring diagram

This image is created using Fritzing. Click to enlarge image

Arduino Nano Code - Waarde Uitlezen van Water Sensor

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-water-sensor */ #define POWER_PIN 4 // The Arduino Nano pin connected to the power pin of water sensor #define SIGNAL_PIN A0 // The Arduino Nano pin connected to the signal pin of water sensor int value = 0; // variable to store the water sensor value void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // Configure D7 pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the water sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the water sensor OFF Serial.print("Water sensor value: "); Serial.println(value); delay(1000); }

Snelle Stappen

  • Kopieer de bovenstaande code en open deze in de Arduino IDE.
  • Klik op de Upload-knop in de Arduino IDE om de code naar de Arduino Nano te verzenden.
  • Laat de sensor voorzichtig zakken in een glas water.
  • Controleer de Seriële Monitor om het resultaat te zien; dit zou 0 moeten zijn wanneer de sensor niets aanraakt.
COM6
Send
Water sensor value: 0 Water sensor value: 0 Water sensor value: 0 Water sensor value: 25 Water sensor value: 97 Water sensor value: 284 Water sensor value: 428 Water sensor value: 435 Water sensor value: 441 Water sensor value: 455 Water sensor value: 467 Water sensor value: 521 Water sensor value: 528 Water sensor value: 553
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Notiz:

De sensor mag niet volledig ondergedompeld worden in water; alleen de blootliggende banen op de printplaat mogen in contact komen met het water. Neem alstublieft de nodige voorzichtigheid bij het plaatsen.

Hoe Waterlekkage Detecteren

Om waterlekkage, regenval en overloop te detecteren, vergelijken we eenvoudigweg de uitleeswaarde met een drempelwaarde die wordt bepaald in de kalibratiesectie van deze handleiding.

Laten we een voorbeeld bekijken. Als water wordt gedetecteerd, zal de Arduino Nano een LED activeren.

Bedradingsschema

Arduino Nano Water Sensor LED wiring diagram

This image is created using Fritzing. Click to enlarge image

Arduino Nano Code - Waterlekkage Detecteren

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-water-sensor */ #define LED_PIN 9 // The Arduino Nano pin connected to the led #define POWER_PIN 4 // The Arduino Nano pin connected to the power pin of water sensor #define SIGNAL_PIN A0 // The Arduino Nano pin connected to the signal pin of water sensor #define THRESHOLD 300 int value = 0; // variable to store the sensor value void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); // Configure D2 pin as an OUTPUT pinMode(POWER_PIN, OUTPUT); // Configure D7 pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF digitalWrite(LED_PIN, LOW); // turn LED OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the sensor OFF if (value > THRESHOLD) { Serial.print("The water is detected"); digitalWrite(LED_PIN, HIGH); // turn LED ON } else { digitalWrite(LED_PIN, LOW); // turn LED OFF } }

Hoe Het Waterniveau Meten

Als u het maximale waterniveau wilt opdelen in verschillende niveaus en het huidige niveau wilt meten, kunt u de techniek in onderstaande code gebruiken. Houd er rekening mee dat de maximale waterhoogte gelijk is aan de hoogte van de sensor. De code hieronder deelt de maximale hoogte op in 4 niveaus.

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-water-sensor */ #define POWER_PIN 4 // The Arduino Nano pin connected to the power pin of water sensor #define SIGNAL_PIN A0 // The Arduino Nano pin connected to the signal pin of water sensor #define SENSOR_MIN 0 #define SENSOR_MAX 521 int value = 0; // variable to store the sensor value int level = 0; // variable to store the water level void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // Configure D7 pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the sensor OFF level = map(value, SENSOR_MIN, SENSOR_MAX, 0, 4); // 4 levels Serial.print("Water level: "); Serial.println(level); delay(1000); }

※ Notiz:

  • SENSOR_MIN en SENSOR_MAX worden bepaald via kalibratie.
  • De gebruikte map()-methode is niet exact, maar voor veel toepassingen voldoende.
  • Wilt u het nauwkeuriger maken, meet dan de drempelwaarden per niveau. Raadpleeg hiervoor de kalibratiesectie van deze handleiding.

Kalibratie van de Waterniveausensor

De uitgang van de sensor wordt beïnvloed door zowel het waterniveau als de geleiding van het water. Zuiver water geleidt niet, terwijl water met mineralen en onzuiverheden wel geleidend is. Hoe hoger de geleidbaarheid, hoe gevoeliger de sensor. Daarnaast wordt de uitgangswaarde ook beïnvloed door de spanning op de VCC-pin van de sensor.

Voor nauwkeurige watermetingen adviseren wij de sensor te kalibreren voor het specifieke type water dat u wilt monitoren.

Voordat u een drempelwaarde instelt voor het activeren van een respons, is het nodig om de daadwerkelijke sensorwaarden te bepalen door een test uit te voeren.

Testinstructies:

  • Gebruik het eerder gegeven voorbeeldprogramma om de sensorwaarden uit te lezen.
  • Plaats de sensor in water op het niveau dat u wilt gebruiken als drempel.
  • Noteer de waarde die de sensor laat zien in de Seriële Monitor.
  • Gebruik deze waarde als drempelwaarde voor activering.

Deze test kan enige proef en fout vereisen. Wees bereid verschillende methoden te proberen. Heb geduld en geef niet op.

De test helpt u om het volgende te bepalen:

  • SENSOR_MIN waarde, wanneer de sensor niet in het water ligt
  • SENSOR_MAX waarde, wanneer de sensor volledig ondergedompeld is
  • Een drempelwaarde om waterlekkage te herkennen
  • 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 een visuele begeleiding bij dit project! De video biedt extra inzichten over het aansluiten en programmeren van de water sensor met Arduino Nano.

Daag Uzélf Uit

  • Wanneer waterlekkage wordt gedetecteerd:
  • Verstuur een e-mail
  • Verstuur een SMS-bericht
  • Activeer een geluidsalarm

※ 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!