- Componenten
- Ultrasone sensormodule
- Werking van automatische waterpeilregelaar
- Schakelschema en uitleg
- Programmeren
In dit op Arduino gebaseerde automatische waterniveau-indicator en controllerproject gaan we het waterniveau meten met behulp van ultrasone sensoren. Het basisprincipe van ultrasone afstandsmeting is gebaseerd op ECHO. Wanneer geluidsgolven in de omgeving worden uitgezonden, keren ze terug naar de oorsprong als ECHO nadat ze een obstakel hebben geraakt. We hoeven dus alleen de reistijd van beide geluiden te berekenen, de uitgaande tijd en de terugkerende tijd naar de oorsprong na het raken van een obstakel. En na enige berekening kunnen we een resultaat krijgen dat de afstand is. Dit concept wordt gebruikt in ons watercontroleproject waarbij de watermotorpomp automatisch wordt ingeschakeld wanneer het waterniveau in de tank laag wordt. U kunt dit eenvoudige circuit voor de waterniveau-indicator ook bekijken voor een eenvoudigere versie van dit project.
Componenten
- Arduino Uno
- Ultrasone sensormodule
- 16x2 LCD
- Relais 6 Volt
- ULN2003
- 7806
- PVT
- Koperdraad
- 9 volt batterij of 12 volt adapter
- Draden aansluiten
Ultrasone sensormodule
Ultrasone sensor HC-SR04 wordt gebruikt om afstanden te meten in het bereik van 2 cm-400 cm met een nauwkeurigheid van 3 mm. De sensormodule bestaat uit een ultrasone zender, ontvanger en het stuurcircuit.
De ultrasone sensormodule werkt op het natuurlijke fenomeen ECHO van geluid. Een puls wordt verzonden gedurende ongeveer 10us om de module te activeren. Waarna de module automatisch 8 cycli van 40 KHz ultrasoon signaal verstuurt en de echo controleert. Het signaal na het slaan met een obstakel keert terug en wordt opgevangen door de ontvanger. Dus de afstand van het obstakel tot de sensor wordt eenvoudig berekend met de formule die wordt gegeven als
Afstand = (tijd x snelheid) / 2.
Hier hebben we het product van snelheid en tijd door 2 gedeeld, omdat de tijd de totale tijd is die nodig was om het obstakel te bereiken en terug te keren. De tijd om een obstakel te bereiken is dus slechts de helft van de totale tijd die nodig is.
Werking van automatische waterpeilregelaar
De werking van dit project is heel eenvoudig, we hebben een ultrasone sensormodule gebruikt die de geluidsgolven in de watertank stuurt en de reflectie van geluidsgolven detecteert die ECHO is. Allereerst moeten we de ultrasone sensormodule activeren om een signaal te verzenden met behulp van Arduino en vervolgens wachten om ECHO te ontvangen. Arduino leest de tijd tussen triggeren en ontvangen ECHO. We weten dat de geluidssnelheid ongeveer 340 m / s is. dus we kunnen de afstand berekenen met behulp van de gegeven formule:
Afstand = (reistijd / 2) * geluidssnelheid
Waar de geluidssnelheid ongeveer 340 m per seconde is.
Door deze methode te gebruiken, krijgen we afstand van sensor tot wateroppervlak. Daarna moeten we het waterpeil berekenen.
Nu moeten we de totale lengte van de watertank berekenen. Omdat we de lengte van de watertank kennen, kunnen we het waterpeil berekenen door de resulterende afstand afkomstig van ultrasoon af te trekken van de totale lengte van de tank. En we krijgen de waterpeilafstand. Nu kunnen we dit waterpeil omrekenen naar het percentage water en het op een LCD weergeven. De werking van het complete waterniveau-indicatorproject wordt weergegeven in onderstaand blokschema.
Schakelschema en uitleg
Zoals te zien is in het circuit van de waterniveauregelaar hieronder, zijn de "trigger" en "echo" -pennen van de ultrasone sensormodule rechtstreeks verbonden met pen 10 en 11 van Arduino. Een 16x2 LCD is verbonden met arduino in 4-bit modus. Controlepin RS, RW en En zijn direct verbonden met Arduino-pin 7, GND en 6. En datapin D4-D7 is verbonden met 5, 4, 3 en 2 van Arduino, en zoemer is aangesloten op pin 12. 6 Volt relais is ook aangesloten op pin 8 van Arduino via ULN2003 voor het in- of uitschakelen van de watermotorpomp. Een spanningsregelaar 7805 wordt ook gebruikt om 5 volt te leveren aan het relais en aan het resterende circuit.
In dit circuit wordt de ultrasone sensormodule bovenop de emmer (watertank) geplaatst voor demonstratie. Deze sensormodule leest de afstand tussen de sensormodule en het wateroppervlak en toont de afstand op het LCD-scherm met de melding "Waterruimte in tank is:". Het betekent dat we hier een lege plaats van afstand of volume laten zien voor water in plaats van waterpeil. Door deze functionaliteit kunnen we dit systeem in elke watertank gebruiken. Wanneer het lege waterpeil een afstand van ongeveer 30 cm bereikt, zet Arduino de waterpomp AAN door het relais aan te drijven. En nu zal het LCD-scherm "LOW Water Level" "Motor ingeschakeld" tonen, en de relaisstatus-LED zal gaan branden
Als de lege ruimte nu een afstand van ongeveer 12 cm bereikt, schakelt de Arduino het relais UIT en het LCD-scherm toont "Tank is vol" "Motor uitgeschakeld". De zoemer piept ook enige tijd en de relaisstatus-LED gaat UIT.
Programmeren
Om Arduino te programmeren voor de waterpeilcontroller, definiëren we eerst alle pinnen die we in het project gaan gebruiken voor het koppelen van externe apparaten zoals relais, LCD, zoemer enz.
#define trigger 10 #define echo 11 #define motor 8 #define zoemer 12
Vervolgens initialiseren we alle apparaten die in het project worden gebruikt.
lcd.begin (16,2); pinMode (trigger, OUTPUT); pinMode (echo, INPUT); pinMode (motor, OUTPUT); pinMode (zoemer, OUTPUT); lcd.print ("Water Level"); lcd.setCursor (0,1); lcd.print ("Indicator"); vertraging (2000);
Initialiseer nu de ultrasone sensormodule en lees de tijd van het verzenden en ontvangen van ultrasone golven of geluid af met pulseIn (pin). Voer vervolgens berekeningen uit en geef het resultaat weer op een 16x2 LCD-scherm met behulp van de juiste functies.
digitalWrite (trigger, HIGH); delayMicroseconds (10); digitalWrite (trigger, LOW); delayMicroseconds (2); tijd = pulseIn (echo, HIGH); afstand = tijd * 340/20000; lcd.clear (); lcd.print ("Water Space In"); lcd.setCursor (0,1); lcd.print ("Tank is:"); lcd.print (afstand); lcd.print ("Cm");
Daarna controleren we de omstandigheden of de watertank vol is of het waterniveau LAAG, en ondernemen dienovereenkomstig maatregelen.
if (afstand <12 && temp == 0) {digitalWrite (motor, LOW); digitalWrite (zoemer, HIGH); lcd.clear (); lcd.print ("Watertank vol"); lcd.setCursor (0,1); lcd.print ("Motor uitgeschakeld"); vertraging (2000); digitalWrite (zoemer, LOW); vertraging (3000); temp = 1; } else if (afstand <12 && temp == 1) {digitalWrite (motor, LOW); lcd.clear (); lcd.print ("Watertank vol"); lcd.setCursor (0,1); lcd.print ("Motor uitgeschakeld"); vertraging (5000); }