Προβολές: 164 Συγγραφέας: Grace Ώρα δημοσίευσης: 26-07-2021 Προέλευση: Τοποθεσία
Ο Ο αισθητήρας υπερήχων HC-SR04 είναι μια από τις πιο δημοφιλείς μονάδες μέτρησης απόστασης για έργα Arduino. Χρησιμοποιείται ευρέως σε ρομπότ αποφυγής εμποδίων, αισθητήρες στάθμευσης, ανίχνευση στάθμης, έξυπνους κάδους απορριμμάτων, μετρητές απόστασης και άλλες εφαρμογές ανίχνευσης χωρίς επαφή.
Η μονάδα εκπέμπει υπερηχητικά κύματα 40 kHz μέσω ενός πομπού. Όταν το ηχητικό κύμα συναντά ένα αντικείμενο, αυτό αντανακλάται πίσω στον δέκτη. Μετρώντας τον χρόνο ηχούς και χρησιμοποιώντας την ταχύτητα του ήχου, το Arduino μπορεί να υπολογίσει την απόσταση μεταξύ του αισθητήρα και του αντικειμένου.
| Παράμετρος | Αξία |
| Τυπική τάση λειτουργίας | 5V DC |
| Στατικό ρεύμα λειτουργίας | Λιγότερο από 5 mA σε ορισμένες εκδόσεις μονάδων |
| Συχνότητα λειτουργίας | Υπερηχητικό κύμα 40 kHz |
| Απόσταση ανίχνευσης | Κοινή περιοχή: 2 cm έως 400 cm. ορισμένες εκδόσεις προσαρμοσμένες στο κέρδος ενδέχεται να υποστηρίζουν μεγαλύτερη εμβέλεια. |
| Γωνία ανίχνευσης | Συνήθως μέσα σε 15 βαθμούς? ορισμένες εκδόσεις με υψηλότερο κέρδος μπορεί να φτάσουν περίπου τους 30 βαθμούς. |
| Ακρίβεια | Έως περίπου 0,3 cm υπό κατάλληλες συνθήκες δοκιμής |
| Τυφλή ζώνη | Ελάχιστη απόσταση μέτρησης περίπου 2 cm |
Η μονάδα υπερήχων HC-SR04 έχει τέσσερις ακίδες: VCC, TRIG, ECHO και GND. Το Arduino στέλνει έναν σύντομο παλμό ενεργοποίησης στον ακροδέκτη TRIG και, στη συνέχεια, διαβάζει τον παλμό επιστροφής από τον ακροδέκτη ECHO.
| HC-SR04 Pin | Σύνδεση Arduino | Λειτουργία |
| VCC | 5V | Τροφοδοτικό για τη μονάδα υπερήχων. |
| ΚΟΜΨΟΣ | Ψηφιακή ακίδα 9 | Είσοδος ενεργοποίησης. Το Arduino εφαρμόζει έναν παλμό 10 us για να ξεκινήσει η εμβέλεια. |
| ΗΧΩ | Ψηφιακή ακίδα 10 | Έξοδος ηχούς. Το Arduino διαβάζει το πλάτος παλμού για να υπολογίσει την απόσταση. |
| GND | GND | Σύνδεση εδάφους. |
Το HC-SR04 λειτουργεί με μέτρηση χρόνου πτήσης. Το Arduino στέλνει ένα σήμα ενεργοποίησης υψηλού επιπέδου τουλάχιστον 10 μικροδευτερόλεπτων στον ακροδέκτη TRIG. Στη συνέχεια, η μονάδα στέλνει αυτόματα οκτώ υπερηχητικούς παλμούς 40 kHz και περιμένει την ανακλώμενη ηχώ.
Όταν ανιχνευτεί το ανακλώμενο υπερηχητικό σήμα, η ακίδα ECHO εξάγει έναν παλμό υψηλού επιπέδου. Η διάρκεια αυτού του παλμού είναι ο χρόνος διαδρομής μετ' επιστροφής του υπερηχητικού κύματος.
Απόσταση = Χρόνος υψηλού επιπέδου ηχούς × Ταχύτητα ήχου / 2
Στον κώδικα Arduino, ο κοινός απλοποιημένος τύπος είναι:
Απόσταση σε cm = διάρκεια × 0,0343 / 2
Η διαδικασία χρονισμού είναι απλή: Το Arduino διατηρεί το TRIG χαμηλά για λίγο, στέλνει έναν υψηλό παλμό 10 us και μετά επαναφέρει το TRIG στο χαμηλό. Το HC-SR04 στέλνει μια ριπή υπερήχων και ρυθμίζει την ECHO ψηλά μέχρι να επιστρέψει το ανακλώμενο σήμα ή να τελειώσει το χρονικό διάστημα της μέτρησης.
Για να αποφύγετε ασταθείς μετρήσεις, αφήστε μια μικρή καθυστέρηση μεταξύ των μετρήσεων. Ένας κύκλος μέτρησης περίπου 60ms χρησιμοποιείται συνήθως, έτσι ώστε η προηγούμενη υπερηχητική ηχώ να έχει χρόνο να εξαφανιστεί πριν από την επόμενη σκανδάλη.
Η συνάρτηση Arduino pulseIn() χρησιμοποιείται για τη μέτρηση του χρόνου που μια ψηφιακή ακίδα παραμένει ΥΨΗΛΗ ή ΧΑΜΗΛΗ. Για το HC-SR04, το Arduino χρησιμοποιεί pulseIn(echoPin, HIGH) για να διαβάσει το πλάτος παλμού υψηλού επιπέδου από τον ακροδέκτη ECHO.
| Σύνταξη | Εννοια |
| pulseIn(καρφίτσα, τιμή) | Διαβάζει τη διάρκεια ενός ΥΨΗΛΟΥ ή ΧΑΜΗΛΟΥ παλμού. |
| pulseIn (pin, τιμή, timeout) | Διαβάζει τον παλμό με τιμή χρονικού ορίου σε μικροδευτερόλεπτα. |
Συνιστάται η χρήση χρονικού ορίου. Εάν δεν επιστραφεί ηχώ, η συνάρτηση μπορεί να σταματήσει την αναμονή και να επιστρέψει 0 αντί να μπλοκάρει το πρόγραμμα για πολύ μεγάλο χρονικό διάστημα.
Η καλωδίωση είναι απλή. Συνδέστε το VCC σε 5V, το GND στο GND, το TRIG σε έναν ακροδέκτη ψηφιακής εξόδου Arduino και το ECHO σε έναν ακροδέκτη ψηφιακής εισόδου Arduino. Το παρακάτω παράδειγμα χρησιμοποιεί Arduino Uno, TRIG στον ακροδέκτη 9 και ECHO στον ακροδέκτη 10.
Το ακόλουθο τυπικό πρόγραμμα Arduino στέλνει έναν παλμό σκανδάλης 10 us, διαβάζει το πλάτος παλμού ECHO, υπολογίζει την απόσταση σε εκατοστά και εκτυπώνει το αποτέλεσμα στη Σειριακή οθόνη.
const int trigPin = 9; const int echoPin = 10; μεγάλη διάρκεια? απόσταση επίπλευσηςCm; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite (trigPin, LOW); duration = pulseIn(echoPin, HIGH, 30000); if (διάρκεια == 0) { Serial.println('Εκτός εύρους'); } else { distanceCm = διάρκεια * 0,0343 / 2; Serial.print('Απόσταση: '); Serial.print(distanceCm); Serial.println(' cm'); } καθυστέρηση(60); }
Εάν δείτε τιμές απόστασης στη σειριακή οθόνη, ο αισθητήρας υπερήχων HC-SR04 και η καλωδίωση Arduino λειτουργούν σωστά. Στη συνέχεια, μπορείτε να χρησιμοποιήσετε τα δεδομένα απόστασης για ανίχνευση εμποδίων, έλεγχο κίνησης ρομπότ, αυτόματες πόρτες, υπενθυμίσεις στάθμευσης ή έργα στάθμης υγρού.
Διατηρήστε το μετρούμενο αντικείμενο εντός του συνιστώμενου εύρους απόστασης και έξω από την τυφλή ζώνη των 2 cm.
Χρησιμοποιήστε μια επίπεδη και συμπαγή επιφάνεια στόχο για καλύτερη αντανάκλαση υπερήχων.
Αποφύγετε τη μέτρηση μαλακών, υπό γωνία, πορωδών ή ηχοαπορροφητικών υλικών.
Χρησιμοποιήστε ένα σταθερό τροφοδοτικό 5 V και διατηρήστε την καλωδίωση σύντομη και ασφαλή.
Προσθέστε ένα χρονικό όριο στο pulseIn() για να αποτρέψετε το παρατεταμένο μπλοκάρισμα όταν δεν επιστρέφει ηχώ.
Μέσος όρος ή διάμεσος-φιλτράρετε πολλές μετρήσεις για μείωση του θορύβου.
Για μεγαλύτερη ακρίβεια, αντισταθμίστε τη θερμοκρασία επειδή η ταχύτητα του ήχου αλλάζει με τη θερμοκρασία του αέρα.
| Εφαρμογή | Πώς χρησιμοποιείται το HC-SR04 |
| Ρομπότ αποφυγής εμποδίων | Ανιχνεύει κοντινά αντικείμενα και βοηθά το ρομπότ να αλλάξει κατεύθυνση. |
| Αισθητήρας απόστασης στάθμευσης | Μετρά την απόσταση μεταξύ του οχήματος και ενός εμποδίου. |
| Ανίχνευση στάθμης υγρού | Μετρά την απόσταση από τον αισθητήρα στην επιφάνεια του υγρού χωρίς επαφή. |
| Έξυπνος κάδος απορριμμάτων | Ανιχνεύει ένα κοντινό χέρι ή αντικείμενο και ενεργοποιεί το αυτόματο άνοιγμα του καπακιού. |
Για να χρησιμοποιήσετε έναν αισθητήρα υπερήχων HC-SR04 με το Arduino, συνδέστε το VCC σε 5V, το GND στο GND, το TRIG σε μια ψηφιακή ακίδα εξόδου και το ECHO σε μια ψηφιακή ακίδα εισόδου. Στείλτε έναν παλμό σκανδάλης 10 us, διαβάστε τη διάρκεια της ηχούς με το pulseIn() και υπολογίστε την απόσταση με τον τύπο χρόνου πτήσης.
Το HC-SR04 είναι φθηνό, εύκολο στη χρήση και κατάλληλο για πολλά έργα μέτρησης απόστασης Arduino. Για καλύτερα αποτελέσματα, δώστε προσοχή στην επιφάνεια στόχο, τη γωνία μέτρησης, την τυφλή ζώνη, τη σταθερή ισχύ, το χειρισμό χρονικού ορίου και τα εφέ θερμοκρασίας.
Το Arduino στέλνει έναν παλμό 10us στον ακροδέκτη TRIG. Το HC-SR04 εκπέμπει οκτώ υπερηχητικούς παλμούς 40 kHz και θέτει τον ακροδέκτη ECHO ψηλά μέχρι να επιστρέψει ο ανακλώμενος ήχος. Το Arduino μετρά αυτόν τον χρόνο παλμού και υπολογίζει την απόσταση.
Ο τύπος είναι απόσταση = διάρκεια × ταχύτητα ήχου / 2. Σε εκατοστά, ένας κοινός τύπος Arduino είναι απόστασηCm = διάρκεια × 0,0343 / 2, όπου η διάρκεια μετριέται σε μικροδευτερόλεπτα.
Ο μετρούμενος χρόνος ηχούς είναι ο χρόνος μετ' επιστροφής από τον αισθητήρα στο αντικείμενο και πίσω στον αισθητήρα. Η διαίρεση με το 2 δίνει τη μονόδρομη απόσταση μεταξύ του αισθητήρα και του αντικειμένου.
Μπορείτε να χρησιμοποιήσετε τις περισσότερες ψηφιακές ακίδες Arduino. Σε πολλά παραδείγματα, το TRIG συνδέεται στον ψηφιακό ακροδέκτη 9 και το ECHO στον ψηφιακό ακροδέκτη 10. Ο κωδικός πρέπει να ταιριάζει με τους ακροδέκτες που χρησιμοποιούνται στην καλωδίωση.
Οι συνήθεις αιτίες περιλαμβάνουν χαλαρή καλωδίωση, ασταθή ισχύ 5 V, λανθασμένους αριθμούς ακίδων TRIG ή ECHO, έλλειψη αντικειμένου εντός εμβέλειας, γωνιακές επιφάνειες στόχου, μαλακά υλικά, μπλοκαρισμένες κεφαλές αισθητήρων ή κανένα χρονικό όριο στη λειτουργία pulseIn().
Η τυφλή ζώνη είναι η ελάχιστη απόσταση όπου η μονάδα δεν μπορεί να μετρήσει αξιόπιστα. Για το HC-SR04, η τυφλή ζώνη είναι συνήθως περίπου 2 cm. Αντικείμενα πιο κοντά από αυτό μπορεί να παράγουν ασταθείς μετρήσεις.
Ναι, το HC-SR04 μπορεί να χρησιμοποιηθεί για απλά έργα στάθμης νερού χωρίς επαφή, εάν ο αισθητήρας προστατεύεται από την υγρασία και είναι τοποθετημένος πάνω από την επιφάνεια του υγρού. Για υγρές, εξωτερικές ή βιομηχανικές δεξαμενές, συνιστάται αδιάβροχος αισθητήρας υπερήχων.
Χρησιμοποιήστε σταθερό τροφοδοτικό, διατηρήστε τον αισθητήρα κάθετα στον στόχο, αποφύγετε τις μαλακές ή γωνιασμένες επιφάνειες, προσθέστε το χρονικό όριο pulseIn, πραγματοποιήστε πολλαπλές μετρήσεις, χρησιμοποιήστε μέσο φιλτράρισμα και αφήστε περίπου 60 ms μεταξύ των μετρήσεων.