Εργαστήρια

Αισθητήρες απόστασης υπερήχων

Εισαγωγή

Η απόσταση που έχει το ρομπότ μας από άλλα αντικείμενα, είναι από τα πιο συνηθισμένα μεγέθη που προσπαθούμε να μετρήσουμε. Αν για παράδειγμα φτιάχνουμε αυτόνομα οχήματα που πρέπει να αποφεύγουν εμπόδια, ή άλλες συσκευές που θέλουμε να αντιδρούν όταν κάποιος ή κάτι τα πλησιάζει, η μέτρηση της απόστασης είναι απαραίτητη.

Ένας από τους πιο απλούς, οικονομικούς και σχετικά ακριβείς τρόπους για να μετράμε αποστάσεις, είναι αξιοποιώντας τους αισθητήρες υπερήχων. Η λειτουργία τους στηρίζεται στην ιδιότητα του ήχου να αντανακλάται στα περισσότερα αντικείμενα και υλικά.

Οι αισθητήρες αυτοί διαθέτουν ένα ηχείο για να στέλνουν υπερήχους (ήχος σε πολύ υψηλή συχνότητα τον οποίο δεν μπορούμε να τον ακούσουμε) και ένα μικρόφωνο για να αντιλαμβάνονται τους υπερήχους όταν επιστρέφουν. Από την στιγμή που γνωρίζουμε την ταχύτητα του ήχου στον αέρα (343 m/sec), αν μετρήσουμε την ώρα που έκανε ο υπέρηχος για να επιστρέψει στον αισθητήρα μπορούμε να βρούμε την απόσταση που διένυσε.


Διάφοροι αισθητήρες υπερήχων – 1: Αισθητήρας για το Arduino και το Raspberry pi, 2: Αισθητήρας για το MakeBlock, 3: Αισθητήρας για το Lego EV3, 4: Αισθητήρας με το ηχείο και το μικρόφωνο ενσωματωμένα στην ίδια κατασκευή

Τρόπος λειτουργίας

Όλοι οι αισθητήρες υπερήχων λειτουργούν με παρόμοιο τρόπο. Στέλνουν έναν σύντομο υπέρηχο διάρκειας λίγων εκατομμυριοστών του δευτερολέπτου από το ηχείο και μετράν τον χρόνο που χρειάζεται για να επιστρέψει ο ήχος και να γίνει αντιληπτός από το μικρόφωνο.


Ο υπέρηχος φεύγει από το ηχείο, ταξιδεύει στον αέρα μέχρι να βρει εμπόδιο στο οποίο αντανακλάται και επιστρέφει στο μικρόφωνο.

Αν υποθέσουμε ότι ο ήχος χρειάστηκε 10 χιλιοστά του δευτερολέπτου για να επιστρέψει στον αισθητήρα, τότε:

  • Τα 10 χιλιοστά του δευτερολέπτου είναι 10/1000 δευτερόλεπτα δηλαδή 0,01 δευτερόλεπτα. Άρα ο ήχος χρειάστηκε 0,01 δευτερόλεπτα για να πάει στο εμπόδιο και να γυρίσει πίσω.
  • Γνωρίζουμε ότι ο ήχος ταξιδεύει στον αέρα με ταχύτητα 343 μέτρα κάθε δευτερόλεπτο. Αυτό σημαίνει πως κάθε δευτερόλεπτο που περνάει, ο ήχος έχει προχωρήσει άλλα 343 μέτρα. Αφού στην περίπτωση μας ο ήχος χρειάστηκε 0,01 δευτερόλεπτα για να πάει και να γυρίσει, αυτό σημαίνει ότι ταξίδεψε 0,01 x 343 = 3,43 μέτρα.
  • Ο ήχος λοιπόν ταξίδεψε 3,43 μέτρα από τον αισθητήρα μέχρι το εμπόδιο και από το εμπόδιο ξανά πάλι στον αισθητήρα. Άρα το εμπόδιο βρίσκεται σε απόσταση 3,43/2 = 1,715 μέτρα.

Πλεονεκτήματα και περιορισμοί.

Τα κύρια πλεονεκτήματα των αισθητήρων υπερήχων σε σχέση με άλλους αισθητήρες απόστασης μπορούν να συνοψιστούν στα εξής τέσσερα:

  • έχουν η χαμηλή τιμή και πληθώρα επιλογών στην αγορά,
  • δεν επηρεάζονται από το χρώμα ή την διαφάνεια των αντικειμένων που ανιχνεύουν (πχ πλαστικό ή γυαλί),
  • δεν επηρεάζονται από τον φωτισμό του περιβάλλοντος (σκοτάδι ή έντονο φως),
  • έχουν καλή ακρίβεια στην μέτρηση απόστασης.

Εξαιτίας του τρόπου λειτουργίας τους, οι αισθητήρες υπερήχων έχουν και κάποιους σημαντικούς περιορισμούς.

  • Δυσκολεύονται να ανιχνεύσουν μικρά αντικείμενα, αν δεν είναι τοποθετημένα σε κατάλληλο σημείο.

Ένα μικρό σε μέγεθος αντικείμενο μπορεί να δυσκολέψει τον αισθητήρα και να μην μπορέσει να ανακλάσει τον ήχο με τέτοιο τρόπο ώστε να γίνει αντιληπτό από το μικρόφωνο.
  • Επίσης ιδιαίτερη σημασία έχει ο τρόπος με τον οποίο είναι τοποθετημένο κάποιο αντικείμενο, ώστε να μπορέσει να ανακλάσει σωστά τους υπερήχους.

Στο παραπάνω παράδειγμα η γωνία με την οποία αντανακλούν οι υπέρηχοι στο αντικείμενο τους κάνει μη ανιχνεύσιμους από τον αισθητήρα.
  • Αντικείμενα τα οποία είναι από υλικά που απορροφούν τον ήχο (π.χ. σφουγγάρια) δεν είναι εύκολο να εντοπιστούν καθώς δεν αντανακλούν τους υπερήχους.

Διαλέγοντας αισθητήρα.

Για ρομποτικές κατασκευές που βασίζονται στο Arduino υπάρχουν αρκετές επιλογές τις οποίες μπορούμε να βρούμε σε ελληνικά ή ξένα καταστήματα στο διαδίκτυο. Η πιο συνηθισμένη και οικονομική επιλογή είναι ο αισθητήρας HC-SR04, ο οποίος κοστίζει περίπου 2 ευρώ από Ελλάδα και 1 ευρώ στο ebay (Τιμές Αυγούστου 2018).

File:HC SR04 Ultrasonic sensor 1480319 20 21 HDR Enhancer.jpg
Ο αισθητήρας HC-SR04. Αριστερά βρίσκεται το ηχείο (transmitter) και δεξιά το μικρόφωνο (receiver).
Πηγή: Wikimedia Commons

Σύνδεση στο Arduino και προγραμματισμός.

Ο αισθητήρας HC-SR04 διαθέτει 4 pins:

  • Το VCC, στο οποίο δέχεται 5V για να μπει σε λειτουργία,
  • το GND, το οποίο το συνδέουμε στη γείωση,
  • το TRIG (Trigger), το οποίο ενεργοποιεί το ηχείο για να στείλει το υπέρηχο και
  • το ECHO, το οποίο είναι συνδεδεμένο με την είσοδο του μικροφώνου και αντιλαμβάνεται την επιστροφή του ήχου.

Στο παρακάτω παράδειγμα έχω συνδέσει στο tinkercad έναν αισθητήρα απόστασης στα pin 4 (TRIG) και 5 (ECHO) και επίσης ένα λαμπάκι LED στο pin 13. Το πρόγραμμα που έχω γράψει διαβάζει την απόσταση από τον αισθητήρα και αν είναι μικρότερη από τα 30 εκατοστά ανάβει το λαμπάκι.

Το tinkercad μας παρέχει έτοιμη μια συνάρτηση για να πάρουμε την απόσταση σε εκατοστά από τον αισθητήρα. Θα ήθελα όμως να προσπαθήσουμε να αποφύγουμε να την χρησιμοποιήσουμε για να κατανοήσουμε καλύτερα τον τρόπο με τον οποίο δουλεύει ο αισθητήρας.

  • Το TRIG (Trigger) είναι αρχικά σε κατάσταση LOW και όταν εμείς του στείλουμε HIGH τότε ενεργοποιείτε και στέλνει υπερήχους.
  • Το ECHO όταν λαμβάνει τον επιστρεφόμενο ήχο δημιουργεί έναν παλμό HIGH.
  • Η μέτρηση του χρόνου γίνεται με τη συνάρτηση pusleIn, η οποία επιστρέφει τον χρόνο σε μικροδευτερόλεπτα (εκατομμυριοστά του δευτερολέπτου).

Με βάση τα παραπάνω ο αλγόριθμος μας περιλαμβάνει τα εξής βήματα:

  1. Ενεργοποιούμε το TRIG pin.
  2. Περιμένουμε πολύ λίγο (10 μικροδευτερόλεπτα).
  3. Απενεργοποιούμε το TRIG pin.
  4. Μετράμε τη χρονική διάρκεια του παλμού στο ECHO pin (επιστροφή του υπερήχου) σε μικροδευτερόλεπτα.
  5. Μετατρέπουμε τα μικροδευτερόλεπτα σε δευτερόλεπτα (διαιρούμε με το 1.000.000).
  6. Γνωρίζοντας ότι ο ήχος ταξιδεύει με 343 μέτρα ανά δευτερόλεπτο, υπολογίζουμε την απόσταση που διένυσε, πολλαπλασιάζοντας τα δευτερόλεπτα με το 343.
  7. Τώρα έχουμε την απόσταση σε μέτρα. Για να την μετατρέψουμε σε εκατοστά πολλαπλασιάζουμε με το 100.
  8. Η απόσταση που έχουμε υπολογίσει αφορά το ταξίδι του ήχου μέχρι το εμπόδιο και την επιστροφή του. Άρα η απόσταση μέχρι το εμπόδιο είναι η μισή. Διαιρούμε λοιπόν τα εκατοστά με το 2.

Για να γράψουμε το πρόγραμμα μας θα χρησιμοποιήσουμε το περιβάλλον της Ardublockly.

2 Σχόλια

Αφήστε μια απάντηση

Μετάβαση σε γραμμή εργαλείων