- Συστατικά
- Μονάδα υπερήχων αισθητήρα
- Εργασία αυτόματου ελεγκτή στάθμης νερού
- Διάγραμμα κυκλώματος και επεξήγηση
- Προγραμματισμός
Σε αυτό το έργο αυτόματου δείκτη στάθμης νερού και ελεγκτή που βασίζεται στο Arduino πρόκειται να μετρήσουμε τη στάθμη νερού χρησιμοποιώντας αισθητήρες υπερήχων. Η βασική αρχή της μέτρησης απόστασης υπερήχων βασίζεται στο ECHO. Όταν τα ηχητικά κύματα μεταδίδονται στο περιβάλλον τότε επιστρέφουν στην αρχική τους θέση ως ECHO αφού χτυπήσουν σε οποιοδήποτε εμπόδιο. Επομένως, πρέπει να υπολογίσουμε μόνο τον χρόνο ταξιδιού και των δύο ήχων, δηλαδή τον χρόνο εξόδου και τον χρόνο επιστροφής στην προέλευση αφού χτυπήσουμε οποιοδήποτε εμπόδιο. Και μετά από κάποιο υπολογισμό μπορούμε να πάρουμε ένα αποτέλεσμα που είναι η απόσταση. Αυτή η ιδέα χρησιμοποιείται στο έργο του ελεγκτή νερού όπου η αντλία του κινητήρα νερού ενεργοποιείται αυτόματα όταν η στάθμη του νερού στη δεξαμενή γίνεται χαμηλή. Μπορείτε επίσης να ελέγξετε αυτό το απλό κύκλωμα ένδειξης στάθμης νερού για μια απλούστερη έκδοση αυτού του έργου.
Συστατικά
- Arduino Uno
- Μονάδα αισθητήρα υπερήχων
- LCD 16x2
- Ρελέ 6 Volt
- ULN2003
- 7806
- PVT
- Χάλκινο σύρμα
- Μπαταρία 9 volt ή 12 Voltadaptor
- Σύνδεση καλωδίων
Μονάδα υπερήχων αισθητήρα
Ο αισθητήρας υπερήχων HC-SR04 χρησιμοποιείται για τη μέτρηση της απόστασης σε απόσταση 2cm-400cm με ακρίβεια 3mm. Η μονάδα αισθητήρα αποτελείται από πομπό υπερήχων, δέκτη και κύκλωμα ελέγχου.
Η μονάδα αισθητήρα υπερήχων λειτουργεί στο φυσικό φαινόμενο του ECHO του ήχου. Ένας παλμός αποστέλλεται για περίπου 10us για την ενεργοποίηση της μονάδας. Μετά την οποία η μονάδα στέλνει αυτόματα 8 κύκλους σήματος υπερήχων 40 KHz και ελέγχει την ηχώ του. Το σήμα αφού χτυπήσει με ένα εμπόδιο επιστρέφει και συλλαμβάνεται από τον δέκτη. Έτσι, η απόσταση του εμποδίου από τον αισθητήρα υπολογίζεται απλώς με τον τύπο που δίνεται ως
Απόσταση = (χρόνος x ταχύτητα) / 2.
Εδώ έχουμε διαιρέσει το προϊόν της ταχύτητας και του χρόνου με το 2, επειδή ο χρόνος είναι ο συνολικός χρόνος που χρειάστηκε για να φτάσουμε στο εμπόδιο και να επιστρέψουμε πίσω. Έτσι, ο χρόνος για να φτάσετε στο εμπόδιο είναι μόλις ο μισός του συνολικού χρόνου που απαιτείται.
Εργασία αυτόματου ελεγκτή στάθμης νερού
Η εργασία αυτού του έργου είναι πολύ απλή και έχουμε χρησιμοποιήσει μονάδα αισθητήρα υπερήχων που στέλνει τα ηχητικά κύματα στη δεξαμενή νερού και ανιχνεύει την αντανάκλαση των ηχητικών κυμάτων που είναι ECHO. Πρώτα απ 'όλα πρέπει να ενεργοποιήσουμε τη μονάδα αισθητήρα υπερήχων για τη μετάδοση σήματος χρησιμοποιώντας το Arduino και στη συνέχεια να περιμένουμε να λάβουμε ECHO. Ο Arduino διαβάζει το χρόνο μεταξύ ενεργοποίησης και λήψης ECHO. Γνωρίζουμε ότι η ταχύτητα του ήχου είναι περίπου 340 m / s. έτσι μπορούμε να υπολογίσουμε την απόσταση χρησιμοποιώντας τον δεδομένο τύπο:
Απόσταση = (χρόνος ταξιδιού / 2) * ταχύτητα ήχου
Όπου η ταχύτητα του ήχου είναι περίπου 340m ανά δευτερόλεπτο.
Χρησιμοποιώντας αυτές τις μεθόδους παίρνουμε απόσταση από τον αισθητήρα στην επιφάνεια του νερού. Μετά από αυτό πρέπει να υπολογίσουμε τη στάθμη του νερού.
Τώρα πρέπει να υπολογίσουμε το συνολικό μήκος της δεξαμενής νερού. Όπως γνωρίζουμε το μήκος της δεξαμενής νερού, τότε μπορούμε να υπολογίσουμε τη στάθμη του νερού αφαιρώντας την προκύπτουσα απόσταση που προέρχεται από υπερήχους από το συνολικό μήκος της δεξαμενής. Και θα πάρουμε την απόσταση της στάθμης του νερού. Τώρα μπορούμε να μετατρέψουμε αυτήν τη στάθμη νερού στο ποσοστό του νερού και να την εμφανίσουμε σε LCD. Η λειτουργία του πλήρους έργου δείκτη στάθμης νερού φαίνεται στο παρακάτω διάγραμμα.
Διάγραμμα κυκλώματος και επεξήγηση
Όπως φαίνεται στο κύκλωμα ελεγκτή στάθμης νερού που δίνεται παρακάτω, οι ακίδες «σκανδάλη» και «ηχούς» της μονάδας αισθητήρα υπερήχων συνδέονται απευθείας με τους ακροδέκτες 10 και 11 του arduino. Μια οθόνη LCD 16x2 συνδέεται με το arduino σε λειτουργία 4-bit. Ο πείρος ελέγχου RS, RW και En συνδέεται απευθείας με τον πείρο arduino 7, GND και 6. Και ο πείρος δεδομένων D4-D7 συνδέεται με το arduino 5, 4, 3 και 2 και ο βομβητής συνδέεται στον πείρο 12. Το ρελέ 6 Volt είναι επίσης συνδεδεμένο στον ακροδέκτη 8 του arduino μέσω ULN2003 για ενεργοποίηση ή απενεργοποίηση της αντλίας του κινητήρα νερού. Ένας ρυθμιστής τάσης 7805 χρησιμοποιείται επίσης για παροχή 5 volt στο ρελέ και στο υπόλοιπο κύκλωμα.
Σε αυτό το κύκλωμα, η μονάδα αισθητήρα υπερήχων τοποθετείται στο πάνω μέρος του κάδου (δεξαμενή νερού) για επίδειξη. Αυτή η μονάδα αισθητήρα θα διαβάσει την απόσταση μεταξύ της μονάδας αισθητήρα και της επιφάνειας του νερού, και θα δείξει την απόσταση στην οθόνη LCD με το μήνυμα "Ο χώρος νερού στη δεξαμενή είναι:". Αυτό σημαίνει ότι παρουσιάζουμε εδώ κενό μέρος απόστασης ή όγκου για νερό αντί για στάθμη νερού. Λόγω αυτής της λειτουργικότητας μπορούμε να χρησιμοποιήσουμε αυτό το σύστημα σε οποιαδήποτε δεξαμενή νερού. Όταν η στάθμη του άδειου νερού φτάσει σε απόσταση περίπου 30 cm τότε το Arduino ανάβει την αντλία νερού με το ρελέ οδήγησης. Και τώρα η οθόνη LCD θα δείξει "Χαμηλή στάθμη νερού" "Ο κινητήρας είναι ενεργοποιημένος" και το LED κατάστασης ρελέ θα αρχίσει να ανάβει
Τώρα, εάν ο κενός χώρος φτάσει σε απόσταση περίπου 12 cm, το arduino απενεργοποιεί το ρελέ και η οθόνη LCD θα δείξει "Η δεξαμενή είναι πλήρης" "Ο κινητήρας σβήνει". Ο βομβητής θα ηχήσει επίσης για λίγο και το LED κατάστασης ρελέ θα σβήσει.
Προγραμματισμός
Για τον προγραμματισμό του Arduino για τον ελεγκτή στάθμης νερού, πρώτα ορίζουμε όλους τους πείρους που πρόκειται να χρησιμοποιήσουμε στο έργο για τη διασύνδεση εξωτερικών συσκευών όπως ρελέ, LCD, βομβητής κ.λπ.
# καθορισμός σκανδάλης 10 # καθορισμός ηχώ 11 # καθορισμός κινητήρα 8 # καθορισμός βομβητή 12
Στη συνέχεια αρχικοποιούμε όλες τις συσκευές που χρησιμοποιούνται στο έργο.
lcd.begin (16,2); pinMode (σκανδάλη, ΕΞΟΔΟΣ); pinMode (echo, INPUT); pinMode (κινητήρας, ΕΞΟΔΟΣ); pinMode (βομβητής, ΕΞΟΔΟΣ); lcd.print ("Επίπεδο νερού"); lcd.setCursor (0,1); lcd.print ("Δείκτης"); καθυστέρηση (2000);
Τώρα αρχικοποιήστε τη μονάδα αισθητήρα υπερήχων και διαβάστε το χρόνο αποστολής και λήψης υπερηχητικών κυμάτων ή ήχου χρησιμοποιώντας pulseIn (pin). Στη συνέχεια, εκτελέστε υπολογισμούς και εμφανίστε το αποτέλεσμα σε οθόνη LCD 16x2 χρησιμοποιώντας κατάλληλες λειτουργίες.
digitalWrite (σκανδάλη, ΥΨΗΛΗ); καθυστέρηση Μικροδευτερόλεπτα (10); digitalWrite (σκανδάλη, LOW); καθυστέρηση Μικροδευτερόλεπτα (2); time = pulseIn (ηχώ, ΥΨΗΛΟΣ); απόσταση = χρόνος * 340/20000; lcd.clear (); lcd.print ("Water Space In"); lcd.setCursor (0,1); lcd.print ("Η δεξαμενή είναι:"); lcd.print (απόσταση); lcd.print ("Cm");
Μετά από αυτό, ελέγχουμε τις συνθήκες εάν η δεξαμενή νερού είναι γεμάτη ή η στάθμη του νερού είναι χαμηλή και λαμβάνουμε μέτρα ανάλογα.
if (απόσταση <12 && temp == 0) {digitalWrite (κινητήρας, LOW); digitalWrite (βομβητής, ΥΨΗΛΟΣ); lcd.clear (); lcd.print ("Πλήρης δεξαμενή νερού"); lcd.setCursor (0,1); lcd.print ("Ο κινητήρας είναι απενεργοποιημένος"); καθυστέρηση (2000); digitalWrite (βομβητής, LOW); καθυστέρηση (3000) θερμοκρασία = 1; } αλλιώς εάν (απόσταση <12 && temp == 1) {digitalWrite (μοτέρ, LOW); lcd.clear (); lcd.print ("Πλήρης δεξαμενή νερού"); lcd.setCursor (0,1); lcd.print ("Ο κινητήρας είναι απενεργοποιημένος"); καθυστέρηση (5000) }