- Komponenter
- Ultralydssensormodul
- Arbejde med automatisk vandstandsregulator
- Kredsløbsdiagram og forklaring
- Programmering
I dette Arduino-baserede automatiske vandstandsindikator og controller-projekt skal vi måle vandstanden ved hjælp af ultralydssensorer. Grundlæggende princip for ultralydsafstandsmåling er baseret på ECHO. Når lydbølger transmitteres i miljøet, vender de tilbage til oprindelsen som ECHO efter at have ramt enhver hindring. Så vi skal kun beregne dets rejsetid for begge lyde betyder udgående tid og tilbagevenden til oprindelsen efter at have ramt en hindring. Og efter nogle beregninger kan vi få et resultat, der er afstanden. Dette koncept bruges i vores vandregulatorprojekt, hvor vandmotorpumpen automatisk tændes, når vandniveauet i tanken bliver lavt. Du kan også kontrollere dette enkle vandstandsindikator kredsløb for en enklere version af dette projekt.
Komponenter
- Arduino Uno
- Ultralydssensormodul
- 16x2 LCD
- Relæ 6 Volt
- ULN2003
- 7806
- PVT
- Kobbertråd
- 9 volt batteri eller 12 Volt adapter
- Tilslutning af ledninger
Ultralydssensormodul
Ultralydssensor HC-SR04 bruges til at måle afstand i området fra 2 cm til 400 cm med en nøjagtighed på 3 mm. Sensormodulet består af ultralydssender, modtager og kontrolkredsløbet.
Ultralydssensormodulet arbejder på det naturlige fænomen ECHO for lyd. Der sendes en puls i ca. 10us for at udløse modulet. Herefter sender modulet automatisk 8 cyklusser med 40 KHz ultralydssignal og kontrollerer dets ekko. Signalet efter at have ramt med en forhindring vender tilbage og fanges af modtageren. Således beregnes afstanden fra forhindringen fra sensoren simpelthen ved hjælp af formlen angivet som
Afstand = (tid x hastighed) / 2.
Her har vi delt produktet af hastighed og tid med 2, fordi tiden er den samlede tid, det tog at nå forhindringen og vende tilbage. Således er tiden til at nå forhindringer kun halvdelen af den samlede tid, det tager.
Arbejde med automatisk vandstandsregulator
Arbejdet med dette projekt er meget simpelt, vi har brugt ultralydssensormodul, der sender lydbølgerne i vandtanken og registrerer refleksion af lydbølger, der er ECHO. Først og fremmest skal vi udløse ultralydssensormodulet til at sende signal ved hjælp af Arduino og derefter vente på at modtage ECHO. Arduino læser tiden mellem udløsende og modtaget ECHO. Vi ved, at lydhastigheden er omkring 340 m / s. så vi kan beregne afstand ved hjælp af den givne formel:
Afstand = (rejsetid / 2) * lydens hastighed
Hvor lydhastigheden er cirka 340 m pr. Sekund.
Ved at bruge disse metoder får vi afstand fra sensor til vandoverflade. Efter det skal vi beregne vandstanden.
Nu skal vi beregne den samlede længde på vandtanken. Da vi kender længden af vandtanken, kan vi beregne vandniveauet ved at trække den resulterende afstand, der kommer fra ultralyd fra den samlede længde af tanken. Og vi får afstanden fra vandstanden. Nu kan vi konvertere dette vandniveau til procentdelen af vand og kan vise det på LCD. Arbejdet med det komplette vandstandsindikatorprojekt er vist i nedenstående blokdiagram.
Kredsløbsdiagram og forklaring
Som vist i vandstandsreguleringskredsløbet nedenfor, er ultralydssensormodulets “trigger” og “echo” ben direkte forbundet til pin 10 og 11 i arduino. En 16x2 LCD er forbundet med arduino i 4-bit tilstand. Kontrolstift RS, RW og En er direkte forbundet med arduino pin 7, GND og 6. Og datapin D4-D7 er forbundet til 5, 4, 3 og 2 i arduino, og summer er forbundet ved pin 12. 6 Volt relæ er også forbundet ved pin 8 i arduino gennem ULN2003 til at tænde eller slukke for vandmotorpumpen. En spændingsregulator 7805 bruges også til at levere 5 volt til relæ og til resterende kredsløb.
I dette kredsløb placeres ultralydssensormodul øverst på spanden (vandtank) til demonstration. Dette sensormodul vil læse afstanden mellem sensormodulet og vandoverfladen, og det vil vise afstanden på LCD-skærmen med beskeden "Vandrummet i tanken er:". Det betyder, at vi her viser et tomt sted for afstand eller volumen for vand i stedet for vandstand. På grund af denne funktionalitet kan vi bruge dette system i enhver vandtank. Når det tomme vandniveau når en afstand på ca. 30 cm, tænder Arduino vandpumpen TIL ved at køre relæ. Og nu viser LCD'et "LAVT vandniveau" "Motor tændt", og relæstatus-LED begynder at lyse
Hvis det tomme rum nu når i afstand ca. 12 cm slukkes arduino, vil relæet og LCD'et vise "Tank er fuld" "Motor slukket". Summer bipper også et stykke tid, og relæstatus-LED slukkes.
Programmering
For at programmere Arduino til vandstandsregulator definerer vi først den pin, som vi skal bruge i projektet til grænseflade til eksterne enheder som relæ, LCD, summer osv.
#define trigger 10 #define echo 11 #define motor 8 #define summer 12
Derefter initialiserer vi alle de enheder, der bruges i projektet.
lcd.begin (16,2); pinMode (trigger, OUTPUT); pinMode (ekko, INPUT); pinMode (motor, OUTPUT); pinMode (summer, OUTPUT); lcd.print ("Vandstand"); lcd.setCursor (0,1); lcd.print ("indikator"); forsinkelse (2000);
Initialiser nu ultralydssensormodulet og læs tidspunktet for afsendelse og modtagelse af ultralydsbølger eller lyd ved hjælp af pulseIn (pin). Udfør derefter beregninger og vis resultatet på 16x2 LCD ved hjælp af passende funktioner.
digitalWrite (trigger, HIGH); forsinkelseMikrosekunder (10); digitalWrite (trigger, LOW); forsinkelseMikrosekunder (2); tid = pulseIn (ekko, HIGH); afstand = tid * 340/20000; lcd.clear (); lcd.print ("Water Space In"); lcd.setCursor (0,1); lcd.print ("Tank er:"); lcd.print (afstand); lcd.print ("Cm");
Efter det kontrollerer vi forholdene, hvis vandtanken er fuld, eller vandniveauet er LAV, og træffer handlinger i overensstemmelse hermed.
hvis (afstand <12 && temp == 0) {digitalWrite (motor, LAV); digitalWrite (summer, HIGH); lcd.clear (); lcd.print ("Vandtank fuld"); lcd.setCursor (0,1); lcd.print ("Motor slukket"); forsinkelse (2000); digitalWrite (summer, LAV); forsinkelse (3000); temp = 1; } ellers hvis (afstand <12 && temp == 1) {digitalWrite (motor, LAV); lcd.clear (); lcd.print ("Vandtank fuld"); lcd.setCursor (0,1); lcd.print ("Motor slukket"); forsinkelse (5000); }