Skip to main content
Completion requirements

Ο αισθητήρας απόστασης HC-SR04 χρησιμοποιεί τεχνολογία SONAR για να μετρήσει την απόσταση ενός αντικειμένου που βρίσκεται μπροστά του. 

Μπορεί να μετρήσει αποστάσεις από 2 cm μέχρι 400 cm. Η κατασκευή έχει δύο εμφανή χαρακτηριστικούς κυλίδρους που συχνά ονομάζονται από τους μαθητές μάτια εξαιτίας της διάταξης και του σχήματός τους. Ο ένας κύλινδρος λειτουργεί ώς πομπός ενώ ο άλλος είναι δέκτης. Θα μπορούσαμε να παρομοιάσουμε τον πρώτο ώς ηχείο και τον δεύτερο ώς μικρόφωνο. 

one by one

  Εικ.1

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

Συχνότητα

 Εικ.2.

Η συχνότητα λειτουργίας του είναι 40KHz υπερβαίνοντας την μπλέ περιοχή (20Hz έως 20.000Ηz=20KHz) και εργάζεται ως ακολούθως: Αρχικά ένα TTL τετραγωνικός παλμός διάρκειας 10μsec (Trigger) ενεργοποιεί τον αισθητήρα όπως βλέπετε παρακάτω στην εικ.3.  Στην συνέχεια παράγεται ένας χαρακτηριστικός υπερήχος ώστε να ξεχωρίζει από άλλους υπερήχους του περιβάλλοντος (ο πράσινος με τα 8 ανεβοκατεβάσματα του transmit) ενός τόνου υψηλής συχνότητας (40 kHz).

no obstacle

Εικ.3

Με την ολοκλήρωση της αποστολής (transmit) το echo ξεκινά να δίνει ένα παλμό για το arduino. Δείτε παραπανω ότι μόλις σταματήσει το πράσινο πάνω κάτω ξεκινά το μπλε echo περιμένοντας τον πράσινο παλμό να γυρίσει για να σταματήσει. Στο παραπάνω παράδειγμα ο πράσινος παλμός δεν γυρνά ποτέ γιατί δεν έχει εμπόδιο όπως βλέπουμε στην αναπαράσταση του αισθητήρα. Τοτε το echo είναι ρυθμισμένο να κλείσει μόνο του στον μέγιστο χρόνο των 38ms αφού δεν έλαβε ηχώ.  

Τώρα προσέξτε το παρακάτω σχήμα που υπάρχει εμπόδιο και θα καταλάβουμε καλύτερα και το προηγούμενο. Πάλι εκπέμπει το εναρκτήριο Triger και στην συνέχεια αρχίζουν οι παλμοί από το transmit. Είναι οι οκτώ κίτρινες καμπύλες που βλέπουμε να ταξιδεύουν. Καταρχήν προσέξτε ότι εμφανίζονται ταυτόχρονα με τους πράσινους παλμούς που τις αντιπροσωπεύουν στο κάτω σχήμα. Και εδώ μόλις ολοκληρωθεί η παραγωγή αυτών των παλμών ξεκινά ο παλμός του echo ο οποίος πριν διήρκησε 38ms μίλισεκόντ δηλαδή 38 χιλιοστά του δευτερολέπτου 0,038s. Αν είστε προσεκτικοί όμως θα δείτε ότι εδώ ο echo σταματά ακριβώς μόλις ο πρώτος παλμός (κόκκινη διακεκομένη) επιστρέψει. Όπως γράφει η αναπαράσταση ο παλμός που παράχθηκε αυτήν την φορά από το echo ήταν 500μs μίκροσεκόντ δηλαδή εκκατομυριοστά του δευτερολέπτου 0,0005s που είναι πολύ μικρότερος από τον προηγούμενο. (Για όποιον δεν τα πάει καλά με τους δεκαδικούς, το πρώτο χωρίς εμπόδιο 38ms γράφεται και 3800μs ενώ το δεύτερο το κομμένο είναι 500μs.) Αυτό συναίβει γιατί η επιστρεφόμενη ηχώ τον έκοψε όταν έφτασε και δεν τον άφησε να ολοκληρωθεί στα 0.038s όπως πριν.

ultrasonic

Το πότε θα τον κόψει εξαρτάται από το πόσο μακριά είναι το εμπόδιο που θα επιστρέψει τον ήχο. Αυτή είναι και η αρχή λειτουργίας του αισθητήρα. 

Τώρα σε ότι αφορά τα λογιστικά.

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

Η θεωρητική ταχύτητα του ήχου είναι 340 m/sec αλλά μια καλύτερη προσέγγιση της ταχύτητας του σε θερμοκρασία 20 oC είναι κοντά στα 343m/s. Αν σε 38ms δεν φτάσει ηχώ όπως την πρώτη περίπτωση, σημαίνει ότι ο ήχος διένυσε απόσταση 343x0,038 = 13,03 μέτρα και δεν επέστρεψε. Άρα θεωρητικά στα επόμενα 6,5 μέτρα δεν υπάρχει εμπόδιο γιατί αν υπήρχε τότε 6,5 μέτρα πήγαινε και 6,5 μέτρα γύρνα θα είχε προλάβει να τα διανύσει και θα έκοβε το echo σε μικρότερο χρόνο από 38ms.

Στην δεύτερη περίπτωση των 500μs o ήχος στο πήγαινε-έλα διένυσε απόσταση 0,0005 x 343 =0,17μέτρα δηλαδή 17 εκκατοστά. Άρα το εμπόδιο βρίσκεται στα 8,5 εκκατοστά.

Έτσι γενικέυοντας θα μπορούσαμε να παίρνουμε την τιμή του χρόνου από το echo να την πολλαπλασιάζουμε με την ταχύτητα και να παίρνουμε την μισή για να βρούμε την απόσταση. To echo μας δίνει τον χρόνο σε εκκατομυριοστά του δευτερολέπτου και έτσι εμείς μετατρέπουμε το (343 μέτρα το δευτερόλεπτο) σε (0,000343 μέτρα στο εκκατομυριοστό δηλαδή 0.0343 εκκατοστά στο ένα εκκατομυριοστό του δευτερολέπτου). Το πολλαπλασιάζουμε με πόσα εκατομυριοστά έχουμε και βρίσκουμε την απόσταση.

Ολοκληρώνοντας μπορούμε να χρησιμοποιούμε

Χρόνος x 0,0343 για να βρούμε τα εκκατοστά του πήγαινε έλα και στην συνέχεια δια δύο /2 για να βρούμε την απόσταση. Άρα συνολικά έχουμε 

(Χρόνος x 0,0343 /2)

 Η υπολογισμένη απόσταση έχει ακρίβεια 3mm χιλιοστά. Στην πράξη και στην λεπτομέρεια οι παραπάνω τιμές αλλάζουν καθώς εξαρτώνται από τις καταστατικές μεταβλητές της ατμόσφαιρας όπως η πίεση και η θερμοκρασία. 

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



Last modified: Monday, 10 February 2020, 1:34 AM