- Komponenter
- Ultraljudssensormodul
- Arbeta med automatisk vattennivåregulator
- Kretsschema och förklaring
- Programmering
I det här Arduino-baserade automatiska vattennivåindikatorn och styrprojektet ska vi mäta vattennivån med ultraljudssensorer. Grundläggande princip för ultraljudsmätning baseras på ECHO. När ljudvågor överförs i miljön återvänder de till ursprunget som ECHO efter att ha slagit på något hinder. Så vi måste bara beräkna dess restid för båda ljuden betyder utgående tid och återgångstid till ursprung efter att ha slagit på något hinder. Och efter en del beräkningar kan vi få ett resultat som är avståndet. Detta koncept används i vårt vattenregulatorprojekt där vattenmotorpumpen slås på automatiskt när vattennivån i tanken blir låg. Du kan också kontrollera denna enkla vattennivåindikatorkrets för en enklare version av detta projekt.
Komponenter
- Arduino Uno
- Ultraljudssensormodul
- 16x2 LCD
- Relä 6 Volt
- ULN2003
- 7806
- PVT
- Koppartråd
- 9 volt batteri eller 12 Volt adapter
- Anslutande ledningar
Ultraljudssensormodul
Ultraljudsensor HC-SR04 används för att mäta avstånd inom intervallet 2cm-400cm med en noggrannhet på 3 mm. Sensormodulen består av ultraljudssändare, mottagare och styrkrets.
Ultraljudsgivarmodulen fungerar på det naturliga fenomenet ECHO för ljud. En puls skickas i cirka 10 us för att utlösa modulen. Därefter skickar modulen automatiskt åtta cykler med 40 KHz ultraljudssignal och kontrollerar dess eko. Signalen efter att ha slagit med ett hinder återvänder och fångas av mottagaren. Således beräknas avståndet från hindret från sensorn helt enkelt med formeln som anges
Avstånd = (tid x hastighet) / 2.
Här har vi delat produkten av hastighet och tid med 2 eftersom tiden är den totala tid det tog att nå hindret och återvända. Således är tiden för att nå hinder bara hälften av den totala tiden det tar.
Arbeta med automatisk vattennivåregulator
Att arbeta med detta projekt är mycket enkelt. Vi har använt ultraljudssensormodul som skickar ljudvågorna i vattentanken och detekterar reflektion av ljudvågor som är ECHO. Först och främst måste vi utlösa ultraljudssensormodulen för att sända signal med hjälp av Arduino och sedan vänta på att ta emot ECHO. Arduino läser tiden mellan utlösning och mottagen ECHO. Vi vet att ljudets hastighet är cirka 340 m / s. så att vi kan beräkna avståndet med en given formel:
Avstånd = (restid / 2) * ljudets hastighet
Där ljudets hastighet är cirka 340 m per sekund.
Genom att använda dessa metoder får vi avstånd från sensor till vattenyta. Efter det måste vi beräkna vattennivån.
Nu måste vi beräkna den totala längden på vattentanken. Eftersom vi vet längden på vattentanken kan vi beräkna vattennivån genom att subtrahera resulterande avstånd från ultraljud från tankens totala längd. Och vi kommer att få vattennivåavståndet. Nu kan vi konvertera denna vattennivå till procent vatten och kan visa den på LCD. Arbetet för det kompletta vattennivåindikatorprojektet visas i nedanstående blockschema.
Kretsschema och förklaring
Som visas i vattennivåkontrollkretsen nedan, är ultraljudssensormodulens “trigger” och “echo” stift direkt anslutna till stift 10 och 11 i arduino. En 16x2 LCD är ansluten till arduino i 4-bitars läge. Styrstift RS, RW och En är direkt anslutna till arduino-stift 7, GND och 6. Och datapinne D4-D7 är ansluten till 5, 4, 3 och 2 i arduino, och summer är ansluten vid stift 12. 6 Volt-relä är ansluten också vid stift 8 i arduino genom ULN2003 för att slå på eller stänga av vattenmotorpumpen. En spänningsregulator 7805 används också för att tillhandahålla 5 volt för relä och för återstående krets.
I denna krets är ultraljudssensormodulen placerad på toppen av skopan (vattentank) för demonstration. Denna sensormodul läser avståndet mellan sensormodulen och vattenytan och den visar avståndet på LCD-skärmen med meddelandet "Vattenutrymmet i tanken är:". Det betyder att vi här visar tom plats för avstånd eller volym för vatten istället för vattennivå. På grund av denna funktionalitet kan vi använda detta system i vilken vattentank som helst. När tom vattennivå når på avstånd ca 30 cm slår Arduino PÅ vattenpumpen genom att köra relä. Och nu visar LCD-skärmen "LAV vattennivå" "Motor påslagen" och relästatuslampan börjar lysa
Nu om det tomma utrymmet når på avstånd cirka 12 cm stängs arduino AV reläet och LCD-skärmen visar "Tank är full" "Motor avstängd". Summern piper också en stund och relästatuslampan släcks.
Programmering
För att programmera Arduino för vattennivåregulator definierar vi först alla stift som vi ska använda i projektet för gränssnitt för externa enheter som relä, LCD, summer etc.
#define trigger 10 #define echo 11 #define motor 8 #define summer 12
Sedan initialiserar vi alla enheter som används i projektet.
lcd.begin (16,2); pinMode (trigger, OUTPUT); pinMode (eko, INPUT); pinMode (motor, OUTPUT); pinMode (summer, OUTPUT); lcd.print ("Water Level"); lcd.setCursor (0,1); lcd.print ("Indikator"); fördröjning (2000);
Initiera nu ultraljudssensormodulen och läs tiden för sändning och mottagning av ultraljudsvågor eller ljud genom att använda pulseIn (pin). Gör sedan beräkningar och visa resultatet på 16x2 LCD med hjälp av lämpliga funktioner.
digitalWrite (trigger, HIGH); delayMicroseconds (10); digitalWrite (trigger, LOW); delayMicroseconds (2); tid = pulseIn (eko, HÖG); avstånd = tid * 340/20000; lcd.clear (); lcd.print ("Water Space In"); lcd.setCursor (0,1); lcd.print ("Tank är:"); lcd.print (avstånd); lcd.print ("Cm");
Efter det kontrollerar vi förhållandena om vattentanken är full eller vattennivån är låg och vidtar åtgärder därefter.
if (avstånd <12 && temp == 0) {digitalWrite (motor, LOW); digitalWrite (summer, HÖG); lcd.clear (); lcd.print ("Vattentank full"); lcd.setCursor (0,1); lcd.print ("Motor avstängd"); fördröjning (2000); digitalWrite (summer, LOW); fördröjning (3000); temp = 1; } annat om (avstånd <12 && temp == 1) {digitalWrite (motor, LOW); lcd.clear (); lcd.print ("Vattentank full"); lcd.setCursor (0,1); lcd.print ("Motor avstängd"); fördröjning (5000); }