- Απαιτούμενα στοιχεία
- Αισθητήρας ροής νερού YFS201
- Διάγραμμα κυκλώματος
- Κωδικός αισθητήρα ροής νερού Arduino
- Ο αισθητήρας ροής νερού Arduino λειτουργεί
Εάν έχετε επισκεφθεί ποτέ μεγάλες εταιρείες παραγωγής, το πρώτο πράγμα που θα παρατηρήσετε είναι ότι όλες είναι αυτοματοποιημένες. Οι βιομηχανίες αναψυκτικών και οι χημικές βιομηχανίες πρέπει να μετρούν συνεχώς και να ποσοτικοποιούν τα υγρά που χειρίζονται κατά τη διάρκεια αυτής της διαδικασίας αυτοματισμού και ο πιο κοινός αισθητήρας που χρησιμοποιείται για τη μέτρηση της ροής ενός υγρού είναι ένας αισθητήρας ροής. Χρησιμοποιώντας έναν αισθητήρα ροής με έναν μικροελεγκτή όπως το Arduino, μπορούμε να υπολογίσουμε τον ρυθμό ροής και να ελέγξουμε τον όγκο του υγρού που έχει περάσει μέσω ενός σωλήνα και να τον ελέγξουμε όπως απαιτείται. Εκτός από τις βιομηχανίες παραγωγής, οι αισθητήρες ροής μπορούν επίσης να βρεθούν στον τομέα της γεωργίας, της επεξεργασίας τροφίμων, της διαχείρισης νερού, της εξορυκτικής βιομηχανίας, της ανακύκλωσης νερού, των μηχανών καφέ κ.λπ. Επιπλέον, ένας αισθητήρας ροής νερού θα είναι μια καλή προσθήκη σε έργα όπως το Automatic Water Dispenser και έξυπνα συστήματα άρδευσης όπου πρέπει να παρακολουθούμε και να ελέγξουμε τη ροή των υγρών.
Σε αυτό το έργο, πρόκειται να δημιουργήσουμε έναν αισθητήρα ροής νερού χρησιμοποιώντας το Arduino. Θα συνδέσουμε τον αισθητήρα ροής νερού με το Arduino και το LCD, και θα το προγραμματίσουμε για την εμφάνιση του όγκου του νερού, που έχει περάσει από τη βαλβίδα. Για αυτό το συγκεκριμένο έργο, θα χρησιμοποιήσουμε τον αισθητήρα ροής νερού YF-S201, ο οποίος χρησιμοποιεί ένα εφέ αιθουσών για την ανίχνευση του ρυθμού ροής του υγρού.
Απαιτούμενα στοιχεία
- Αισθητήρας ροής νερού
- Arduino UNO
- LCD (16x2)
- Συνδετήρας με εσωτερικό σπείρωμα
- Σύνδεση καλωδίων
- Σωλήνας
Αισθητήρας ροής νερού YFS201
Ο αισθητήρας έχει 3 καλώδια ΚΟΚΚΙΝΟ, ΚΙΤΡΙΝΟ και ΜΑΥΡΟ, όπως φαίνεται στην παρακάτω εικόνα. Το κόκκινο καλώδιο χρησιμοποιείται για τάση τροφοδοσίας που κυμαίνεται από 5V έως 18V και το μαύρο καλώδιο συνδέεται με GND. Το κίτρινο καλώδιο χρησιμοποιείται για έξοδο (παλμούς), το οποίο μπορεί να διαβαστεί από ένα MCU. Ο αισθητήρας ροής νερού αποτελείται από έναν αισθητήρα pinwheel που μετρά την ποσότητα υγρού που έχει περάσει από αυτόν.
Η λειτουργία του αισθητήρα ροής νερού YFS201 είναι απλή στην κατανόηση. Ο αισθητήρας ροής νερού λειτουργεί σύμφωνα με την αρχή του φαινομένου της αίθουσας. Το φαινόμενο Hall είναι η παραγωγή της διαφοράς δυναμικού σε έναν ηλεκτρικό αγωγό όταν ένα μαγνητικό πεδίο εφαρμόζεται στην κατεύθυνση κάθετη προς αυτήν της ροής του ρεύματος. Ο αισθητήρας ροής νερού είναι ενσωματωμένος με έναν αισθητήρα μαγνητικής επίδρασης αιθουσών, ο οποίος παράγει έναν ηλεκτρικό παλμό με κάθε περιστροφή. Ο σχεδιασμός του είναι με τέτοιο τρόπο ώστε ο αισθητήρας εφέ χώρου να σφραγίζεται από το νερό και να επιτρέπει στον αισθητήρα να παραμένει ασφαλές και στεγνό.
Η εικόνα της μονάδας αισθητήρα YFS201 φαίνεται μόνο παρακάτω.
Για να συνδεθώ με τον αισθητήρα ροής σωλήνων και νερού, χρησιμοποίησα δύο συνδέσμους με ένα θηλυκό σπείρωμα όπως φαίνεται παρακάτω.
Σύμφωνα με τις προδιαγραφές YFS201, το μέγιστο ρεύμα που αντλεί στα 5V είναι 15mA και ο ρυθμός ροής λειτουργίας είναι 1 έως 30 λίτρα / λεπτό. Όταν το υγρό ρέει μέσω του αισθητήρα, έρχεται σε επαφή με τα πτερύγια του τροχού του στροβίλου, ο οποίος τοποθετείται στη διαδρομή του ρέοντος υγρού. Ο άξονας του τροχού τουρμπίνας συνδέεται με έναν αισθητήρα εφέ αιθουσών. Λόγω αυτού, όποτε το νερό ρέει μέσω της βαλβίδας παράγει παλμούς. Τώρα, το μόνο που πρέπει να κάνουμε είναι να μετρήσουμε τον χρόνο για τα συν ή να μετρήσουμε τον αριθμό των παλμών σε 1 δευτερόλεπτο και στη συνέχεια να υπολογίσουμε τους ρυθμούς ροής σε λίτρο ανά ώρα (L / Hr) και στη συνέχεια να χρησιμοποιήσουμε τον απλό τύπο μετατροπής για να βρούμε τον όγκο του νερού που το είχε περάσει. Για να μετρήσουμε τους παλμούς, θα χρησιμοποιήσουμε το Arduino UNO. Η παρακάτω εικόνα σας δείχνει το pinout του αισθητήρα ροής νερού.
Διάγραμμα κυκλώματος
Το διάγραμμα κυκλώματος αισθητήρα ροής νερού φαίνεται παρακάτω για διασύνδεση αισθητήρα ροής νερού και LCD (16x2) με το Arduino. Εάν είστε νέοι στο Arduino και στις LCD, μπορείτε να διαβάσετε αυτό το άρθρο Interfacing Arduino και LCD.
Η σύνδεση του αισθητήρα ροής νερού και της οθόνης LCD (16x2) με το Arduino παρέχεται παρακάτω σε μορφή πίνακα. Σημειώστε ότι το δοχείο είναι συνδεδεμένο μεταξύ 5V και GND και ο ακροδέκτης 2 του δοχείου συνδέεται με τον ακροδέκτη V0 της οθόνης LCD.
Ν.Ν. |
Καρφίτσα αισθητήρα ροής νερού |
Καρφίτσες Arduino |
1 |
Κόκκινο σύρμα |
5V |
2 |
Μαύρος |
GND |
3 |
Κίτρινος |
Α0 |
ΝΟ |
οθόνη υγρού κρυστάλλου |
Arduino |
1 |
Vss |
GND (επίγεια ράγα ψωμιού) |
2 |
VDD |
5V (θετική ράγα του ψωμιού) |
3 |
Για σύνδεση με V0 ελέγξτε την παραπάνω σημείωση |
|
4 |
RS |
12 |
5 |
RW |
GND |
6 |
μι |
11 |
7 |
Δ7 |
9 |
8 |
D6 έως D3 |
3 έως 5 |
Χρησιμοποίησα ένα breadboard, και όταν η σύνδεση έγινε σύμφωνα με το διάγραμμα κυκλώματος που φαίνεται παραπάνω, η δοκιμαστική μου διάταξη έμοιαζε έτσι.
Κωδικός αισθητήρα ροής νερού Arduino
Ο πλήρης κωδικός Arduino αισθητήρα ροής νερού δίνεται στο κάτω μέρος της σελίδας. Η εξήγηση του κώδικα έχει ως εξής.
Χρησιμοποιούμε το αρχείο κεφαλίδας της οθόνης LCD, το οποίο διευκολύνει τη διασύνδεση της οθόνης LCD με το Arduino, και οι ακίδες 12,11,5,4,3,9 κατανέμονται για μεταφορά δεδομένων μεταξύ LCD και Arduino. Ο πείρος εξόδου του αισθητήρα συνδέεται με τον πείρο 2 του Arduino UNO.
πτητική int_ροχή συχνότητας; // Μετρήσεις παλμών αισθητήρα ροής // Υπολογιζόμενα λίτρα / ώρα float vol = 0,0, l_minute; ανυπόγραφο char flowensensor = 2; // Είσοδος αισθητήρα χωρίς υπογραφή long currentTime; unsigned long cloopTime; #περιλαμβάνω
Αυτή η λειτουργία είναι μια ρουτίνα διακοπής υπηρεσίας και θα καλείται κάθε φορά που υπάρχει σήμα διακοπής στο pin2 του Arduino UNO. Για κάθε σήμα διακοπής, η μέτρηση της μεταβλητής flow_frequency θα αυξηθεί κατά 1. Για περισσότερες λεπτομέρειες σχετικά με τις διακοπές και τη λειτουργία τους, μπορείτε να διαβάσετε αυτό το άρθρο σχετικά με τις διακοπές Arduino.
κενή ροή () // Λειτουργία διακοπής { flow_frequency ++; }
Στην κενή ρύθμιση, λέμε στο MCU ότι ο ακροδέκτης 2 του Arduino UNO χρησιμοποιείται ως INPUT δίνοντας εντολή pinMode (pin, OUTPUT). Χρησιμοποιώντας την εντολή attachInterrupt, όποτε υπάρχει αύξηση του σήματος στον πείρο 2, καλείται η λειτουργία ροής. Αυτό αυξάνει το πλήθος στη μεταβλητή flow_frequency κατά 1. Ο τρέχων χρόνος και το cloopTime χρησιμοποιούνται για να εκτελείται ο κώδικας σε κάθε 1 δευτερόλεπτο.
άκυρη ρύθμιση () { pinMode (flowensor, INPUT); digitalWrite (flowensor, HIGH); Serial.begin (9600); lcd.begin (16, 2); attachInterrupt (digitalPinToInterrupt (flowensor), flow, RISING). // Ρύθμιση διακοπής lcd.clear (); lcd.setCursor (0,0); lcd.print ("Μετρητής ροής νερού"); lcd.setCursor (0,1); lcd.print ("Circuit Digest"); currentTime = millis (); cloopTime = currentTime; }
Η συνάρτηση if διασφαλίζει ότι για κάθε δευτερόλεπτο εκτελείται ο κωδικός μέσα. Με αυτόν τον τρόπο, μπορούμε να μετρήσουμε τον αριθμό των συχνοτήτων που παράγονται από τον αισθητήρα ροής νερού ανά δευτερόλεπτο. Τα χαρακτηριστικά παλμού του ρυθμού ροής από το φύλλο δεδομένων δίδονται ότι η συχνότητα πολλαπλασιάζεται 7,5 με το ρυθμό ροής. Έτσι ο ρυθμός ροής είναι συχνότητα / 7.5. Αφού βρείτε τον ρυθμό ροής που είναι σε λίτρα / λεπτό, διαιρέστε τον με 60 για να τον μετατρέψετε σε λίτρο / δευτερόλεπτο. Αυτή η τιμή προστίθεται στη μεταβλητή vol για κάθε δευτερόλεπτο.
void loop () { currentTime = millis (); // Κάθε δευτερόλεπτο, υπολογίστε και εκτυπώστε λίτρα / ώρα εάν (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime; // Ενημερώσεις cloopTime if (flow_frequency! = 0) { // Συχνότητα παλμού (Hz) = 7.5Q, Q είναι ρυθμός ροής σε L / min l_minute = (ροή_συχνότητα / 7.5); // (συχνότητα παλμού x 60 λεπτά) / 7.5Q = ρυθμός ροής σε L / ώρα lcd.clear (); lcd.setCursor (0,0); lcd.print ("Τιμή:"); lcd.print (l_minute); lcd.print ("L / M"); l_minute = l_minute / 60; lcd.setCursor (0,1); vol = vol + l_minute; lcd.print ("Τόμος:"); lcd.print (τόμος); lcd.print ("L"); flow_frequency = 0; // Επαναφορά μετρητή Serial.print (l_minute, DEC); // Λίτρα εκτύπωσης / ώρα Serial.println ("L / Sec"); }
Η άλλη λειτουργία λειτουργεί όταν δεν υπάρχει έξοδος από τον αισθητήρα ροής νερού εντός του δεδομένου χρονικού διαστήματος.
αλλιώς { lcd.clear (); lcd.setCursor (0,0); lcd.print ("Τιμή:"); lcd.print (flow_frequency); lcd.print ("L / M"); lcd.setCursor (0,1); lcd.print ("Τόμος:"); lcd.print (τόμος); lcd.print ("L"); }
Ο αισθητήρας ροής νερού Arduino λειτουργεί
Στο έργο μας, συνδέσαμε τον αισθητήρα ροής νερού σε έναν σωλήνα. Εάν η βαλβίδα εξόδου του σωλήνα είναι κλειστή, η έξοδος του αισθητήρα ροής νερού είναι μηδέν (Χωρίς παλμούς). Δεν θα υπάρχει σήμα διακοπής στο πείρο 2 του Arduino και ο αριθμός της συχνότητας ροής θα είναι μηδέν. Σε αυτήν την κατάσταση, ο κώδικας που είναι γραμμένος μέσα στον άλλο βρόχο θα λειτουργήσει.
Εάν ανοίξει η βαλβίδα εξόδου του σωλήνα. Το νερό ρέει μέσω του αισθητήρα, ο οποίος με τη σειρά του περιστρέφει τον τροχό μέσα στον αισθητήρα. Σε αυτήν την κατάσταση, μπορούμε να παρατηρήσουμε παλμούς, οι οποίοι παράγονται από τον αισθητήρα. Αυτοί οι παλμοί θα λειτουργήσουν ως σήμα διακοπής στο Arduino UNO. Για κάθε σήμα διακοπής (άνοδος άκρου), η μέτρηση της μεταβλητής ροής_συχνότητας θα αυξάνεται κατά μία. Η τρέχουσα μεταβλητή ώρας και cloopTIme διασφαλίζει ότι για κάθε δευτερόλεπτο λαμβάνεται η τιμή της συχνότητας ροής για τον υπολογισμό του ρυθμού ροής και του όγκου. Αφού ολοκληρωθεί ο υπολογισμός, η μεταβλητή flow_frequency ορίζεται στο μηδέν και η όλη διαδικασία ξεκινά από την αρχή.
Η πλήρης εργασία μπορεί επίσης να βρεθεί στο βίντεο που συνδέεται στο κάτω μέρος αυτής της σελίδας. Ελπίζω να απολαύσατε το σεμινάριο και να απολαύσετε κάτι χρήσιμο, εάν έχετε προβλήματα, αφήστε το στην ενότητα σχολίων ή χρησιμοποιήστε τα φόρουμ μας για άλλες τεχνικές ερωτήσεις.