Arduino UNO R4 - Watersensor

Deze tutorial leert ons hoe we een watersensor kunnen gebruiken met Arduino UNO R4. Een watersensor kan detecteren of er een waterlek is, regenval meten, controleren of een tank overloopt, of het waterpeil controleren. In detail zullen we leren:

Arduino UNO R4 and water sensor module

Over de Waterpeilsensor

Waterpeilsensor Pinout

De waterpeilsensor heeft drie pinnen:

  • S (Signal) pin: Dit is een analoge uitgang. Sluit deze aan op een analoge ingang van uw Arduino UNO R4.
  • + (VCC) pin: Deze pin voedt de sensor. Gebruik 3,3V tot 5V om de sensor te voeden.
  • - (GND) pin: Dit is de aardingsaansluiting.
water sensor pinout

※ Notiz:

De uitgang van de signaalpin van de sensor verandert op basis van de spanning die aan de VCC-pin wordt gegeven.

Hoe de Waterpeilsensor Werkt

Wanneer de sensor in meer water staat, neemt de uitgangsspanning op de signaalpin toe.

Laten we dit 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 bevat tien koperen lijnen die u kunt zien. Het heeft vijf voedingslijnen en vijf sensorlijnen. Deze lijnen zijn naast elkaar geplaatst, waarbij afwisselend één sensorlijn tussen elke twee voedingslijnen staat. Normaal gesproken raken deze lijnen elkaar niet, maar als de sensor in water wordt geplaatst, verbindt het water de lijnen.

De sporen werken als een variabele weerstand (vergelijkbaar met een potentiometer) die zijn weerstand verandert op basis van het waterpeil.

  • De verandering in weerstand toont hoe ver het is van de bovenkant van de sensor tot het wateroppervlak.
  • De weerstand neemt af naarmate het waterpeil stijgt.
  • Wanneer de sensor meer onder water staat, geleidt het beter elektriciteit, waardoor de weerstand lager wordt.
  • Wanneer de sensor minder onder water staat, geleidt het slechter elektriciteit, waardoor de weerstand hoger wordt.
  • De sensor geeft een uitgangsspanning op basis van de weerstand.

We kunnen het waterpeil bepalen door de spanning te meten.

Bedradingsschema

Om de sensor van stroom te voorzien, sluit u de VCC-pin van de sensor aan op de 5V-pin van de Arduino UNO R4 en de GND-pin op de GND-pin van de Arduino.

Het is echter niet aan te raden om de sensor altijd van stroom te voorzien in een vochtige omgeving, omdat dit kan leiden tot snelle corrosie van de sensor, waardoor de levensduur wordt verkort. Om dit te voorkomen, raden we aan de sensor alleen van stroom te voorzien wanneer u de gegevens moet lezen. U kunt dit doen door de VCC-pin van de sensor aan te sluiten op een digitale pin van een Arduino UNO R4. Stel de pin van de Arduino in op HIGH om de sensor te lezen, en stel deze vervolgens in op LOW wanneer u klaar bent.

Arduino UNO R4 Water Sensor wiring diagram

This image is created using Fritzing. Click to enlarge image

Zie De beste manier om Arduino Uno R4 en andere componenten van stroom te voorzien.

Arduino UNO R4 Code - Waarde Lezen van Watersensor

/* * Deze Arduino UNO R4 code is ontwikkeld door newbiely.nl * Deze Arduino UNO R4 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-uno-r4/arduino-uno-r4-water-sensor */ #define POWER_PIN 5 // The Arduino UNO R4 pin connected to the VCC pin of water sensor to control the power #define SIGNAL_PIN A0 // The Arduino UNO R4 pin connected to the signal pin of water sensor int value = 0; // Variable for storing the value read from the sensor void setup() { Serial.begin(9600); // Start serial communication at 9600 baud pinMode(POWER_PIN, OUTPUT); // Set POWER_PIN as an output digitalWrite(POWER_PIN, LOW); // Initially set the POWER_PIN LOW to turn the sensor off } void loop() { digitalWrite(POWER_PIN, HIGH); // Set POWER_PIN HIGH to power the sensor delay(10); // Allow sensor time to stabilize (10ms delay) value = analogRead(SIGNAL_PIN); // Read the value from the sensor digitalWrite(POWER_PIN, LOW); // Set POWER_PIN LOW to turn off the sensor Serial.print("Sensor value: "); // Print the sensor value to Serial Monitor Serial.println(value); // Display the sensor value delay(1000); // Wait for 1 second before reading again }

Snelle Stappen

Volg deze instructies stap voor stap:

  • Als dit uw eerste keer is met de Arduino Uno R4 WiFi/Minima, raadpleeg dan de tutorial over het instellen van de omgeving voor Arduino Uno R4 WiFi/Minima in de Arduino IDE.
  • Sluit de watersensor aan op de Arduino Uno R4 volgens het geleverde schema.
  • Verbind het Arduino Uno R4 board met uw computer via een USB-kabel.
  • Start de Arduino IDE op uw computer.
  • Selecteer het juiste Arduino Uno R4 board (bijv. Arduino Uno R4 WiFi) en COM-poort.
  • Kopieer de geleverde code en open deze in Arduino IDE.
  • Druk op de Upload knop in Arduino IDE om de code naar Arduino UNO R4 te sturen.
  • Laat de sensor geleidelijk in het water zakken (gebruik een glas water).
  • Controleer het resultaat op de Serial Monitor. Het toont een waarde van 0 wanneer de sensor geen contact heeft.
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 mag niet volledig ondergedompeld worden in water; alleen de blootgestelde delen op de printplaat mogen het water raken. Installeer deze zorgvuldig.

Hoe Waterlekken Te Detecteren

Om erachter te komen of er waterlekkage, regen of tankoverloop is, vergelijken we eenvoudig de meting met een ingestelde limiet. We stellen deze limiet in tijdens de kalibratiestap van deze tutorial.

Arduino UNO R4 Code - Waterlekken Detecteren

/* * Deze Arduino UNO R4 code is ontwikkeld door newbiely.nl * Deze Arduino UNO R4 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-uno-r4/arduino-uno-r4-water-sensor */ #define POWER_PIN 5 // The Arduino UNO R4 pin connected to the VCC pin of water sensor to control the power #define SIGNAL_PIN A0 // The Arduino UNO R4 pin connected to the signal pin of water sensor #define THRESHOLD 300 int value = 0; // Initialize variable to store the value read from the sensor void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // Set the power pin as an output digitalWrite(POWER_PIN, LOW); // Initially turn off the power } void loop() { digitalWrite(POWER_PIN, HIGH); // Enable power to the sensor delay(10); // Allow some time for the sensor to stabilize value = analogRead(SIGNAL_PIN); // Read the sensor output digitalWrite(POWER_PIN, LOW); // Disable power to the sensor if (value > THRESHOLD) { // Check if the sensor output exceeds the threshold Serial.print("The water is dedected"); // Send a message to the serial monitor } }

Hoe Het Waterpeil Te Meten

Om het hoogste waterpeil op te delen in verschillende fasen en de huidige fase te controleren, gebruik dan de techniek in de volgende code. Onthoud dat het hoogste waterpeil overeenkomt met de hoogte van de sensor. Deze code verdeelt de maximale hoogte in 4 fasen.

/* * Deze Arduino UNO R4 code is ontwikkeld door newbiely.nl * Deze Arduino UNO R4 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-uno-r4/arduino-uno-r4-water-sensor */ #define POWER_PIN 5 // The Arduino UNO R4 pin connected to the VCC pin of water sensor to control the power #define SIGNAL_PIN A0 // The Arduino UNO R4 pin connected to the signal pin of water sensor #define SENSOR_MIN 0 // Minimum value for sensor #define SENSOR_MAX 521 // Maximum value for sensor int value = 0; // Holds the current sensor value int level = 0; // Holds the water level indicator void setup() { Serial.begin(9600); // Initialize serial communication pinMode(POWER_PIN, OUTPUT); // Set the power pin as output digitalWrite(POWER_PIN, LOW); // Initially turn off the sensor } void loop() { digitalWrite(POWER_PIN, HIGH); // Activate the sensor delay(10); // Wait for the sensor to stabilize value = analogRead(SIGNAL_PIN); // Read the sensor output digitalWrite(POWER_PIN, LOW); // Deactivate the sensor level = map(value, SENSOR_MIN, SENSOR_MAX, 0, 4); // Map sensor values to 0-4 scale Serial.print("Water level: "); // Print the label Serial.println(level); // Print the mapped water level delay(1000); // Wait one second before repeating }

※ Notiz:

  • SENSOR_MIN en SENSOR_MAX worden ingesteld tijdens het kalibratieproces.
  • De mapping-methode hierboven is misschien niet precies, maar werkt goed voor veel toepassingen. Voor betere nauwkeurigheid, meet de drempelwaarden voor elk niveau zoals uitgelegd in het kalibratiegedeelte.

Kalibratie van de Waterpeilsensor

De uitgang van de sensor wordt beïnvloed door het waterpeil en hoe geleidend het water is. Puur water geleidt geen elektriciteit. Water met mineralen en onzuiverheden geleidt echter wel elektriciteit. Hoe groter de geleidbaarheid van het water, hoe gevoeliger de sensor wordt. Daarnaast verandert de uitgangswaarde met verschillende spanningen die aan de VCC-pin van de sensor worden toegepast.

Voor nauwkeurige metingen van de watersensor raden we aan deze te kalibreren voor het specifieke type water dat u gaat monitoren.

Voordat u de limiet instelt voor een actie, meet eerst de werkelijke waarde van de sensor door een test uit te voeren.

Hoe de test uit te voeren:

  • Gebruik het geleverde schema om de waarde van de sensor te lezen.
  • Plaats de sensor in het water tot uw gewenste niveau.
  • Noteer de waarde die wordt getoond in de Serial Monitor.
  • Stel deze waarde in als de limiet om een actie te activeren.

Deze test kan enkele pogingen vergen om het goed te krijgen.

De test kan ook helpen bij het ontdekken van:

  • Minimale sensorwaarde wanneer deze niet in het water staat.
  • Maximale sensorwaarde wanneer deze volledig in het water staat.
  • Een drempelwaarde om waterlekken te detecteren.
  • Drempelwaarden voor elk niveau op uw schaal.

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.

Reacties

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