HC-SR04: όλα σχετικά με τον αισθητήρα υπερήχων

Αισθητήρας HC-SR04

Μερικές φορές είναι απαραίτητο Μετρήστε τις αποστάσεις και για αυτό έχετε στη διάθεσή σας αρκετούς αισθητήρες. Έχουμε ήδη αφιερώσει ένα άρθρο για να μιλήσουμε για ένα αισθητήρας απόστασης υψηλής ακρίβειας όπως το VL52L0X. Αυτός ο αισθητήρας ήταν τύπου ToF και βασίστηκε σε πολύ ακριβείς μετρήσεις χάρη στο λέιζερ του. Αλλά αν η ακρίβεια δεν είναι τόσο σημαντική για εσάς και θέλετε κάτι που σας επιτρέπει να μετράτε αποστάσεις σε χαμηλή τιμή, μια άλλη πιθανότητα ότι που έχετε στα χέρια σας είναι το HC-SR04.

Στην περίπτωση του Αισθητήρας απόστασης HC-SR04, η απόσταση μετράται με υπερήχους. Το σύστημα είναι παρόμοιο με την οπτική μέθοδο του VL52L0X. Δηλαδή, εκπέμπεται, υπάρχει αναπήδηση και λαμβάνεται, αλλά σε αυτήν την περίπτωση αντί να είναι λέιζερ ή υπερύθρος, είναι υπερηχογράφημα. Εάν είστε παθιασμένοι με την ηλεκτρονική, τη ρομποτική ή τον ερασιτέχνη κατασκευαστή, μπορείτε να το χρησιμοποιήσετε για πολλά έργα DIY, όπως συστήματα ανίχνευσης εμποδίων για ρομπότ, αισθητήρες παρουσίας κ.λπ.

Τι είναι το HC-SR04;

Λοιπόν, είναι προφανές, όπως έχω ήδη σχολιάσει στις προηγούμενες παραγράφους, Ο HC-SR04 είναι ένας αισθητήρας απόστασης χαμηλής ακρίβειας που βασίζεται σε υπερήχους. Με αυτό, σας επιτρέπει να μετράτε αποστάσεις εύκολα και γρήγορα, αν και κατ 'αρχήν δεν χρησιμοποιείται συνήθως για αυτό. Τις περισσότερες φορές, χρησιμοποιείται ως μορφοτροπέας για την ανίχνευση εμποδίων και την αποφυγή τους μέσω άλλων μηχανισμών που σχετίζονται με την απόκριση του αισθητήρα.

Η εμφάνιση του Το HC-SR04 είναι πολύ διακριτικό και εύκολα αναγνωρίσιμο. Επιπλέον, είναι αρκετά δημοφιλές αντικείμενο στα κιτ εκκίνησης Arduino και είναι απαραίτητο για πολλά έργα. Προσδιορίζεται εύκολα επειδή έχει δύο "μάτια" που είναι στην πραγματικότητα οι συσκευές υπερήχων που ενσωματώνει αυτή η ενότητα. Ένας από αυτούς είναι ένας εκπομπός υπερήχων και ο άλλος ένας δέκτης. Λειτουργεί με συχνότητα 40 Khz, επομένως δεν ακούγεται για τους ανθρώπους.

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

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

ESP8266
σχετικό άρθρο:
ESP8266: η ενότητα WIFI για το Arduino

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

Μετρώντας τον χρόνο μετά την αποστολή του παλμού μέχρι τη λήψη της απόκρισης, ο χρόνος και συνεπώς η απόσταση μπορεί να προσδιοριστεί με ακρίβεια. Να θυμάστε ότι [Διάστημα = χρόνος ταχύτητας] αλλά στην περίπτωση του HC-SR04, πρέπει να διαιρέσετε αυτήν την ποσότητα με / 2, αφού ο χρόνος μετρήθηκε από την έξοδο του υπερήχου και ταξιδεύει μέσα στο διάστημα έως ότου χτυπήσει το εμπόδιο και την επιστροφή, οπότε θα είναι περίπου το μισό από αυτό ...

Pinout και φύλλα δεδομένων

Γνωρίζετε ήδη ότι για να δείτε τα πλήρη δεδομένα του μοντέλου που έχετε αποκτήσει, το καλύτερο είναι βρείτε το φύλλο δεδομένων σκυρόδεμα κατασκευαστή. Για παράδειγμα, εδώ είναι ένα Δελτίο δεδομένων Sparkfun, αλλά υπάρχουν πολλά περισσότερα διαθέσιμα σε PDF. Ωστόσο, εδώ είναι τα πιο σημαντικά τεχνικά δεδομένα του HC-SR04:

  • pinout: 4 ακίδες για ισχύ (Vcc), σκανδάλη (Trigger), δέκτης (Echo) και γείωση (GND). Η σκανδάλη υποδεικνύει πότε πρέπει να ενεργοποιηθεί ο αισθητήρας (όταν ξεκινά ο υπέρηχος), και έτσι θα είναι δυνατόν να γνωρίζουμε το χρόνο που έχει παρέλθει όταν ο δέκτης λαμβάνει το σήμα.
  • σίτιση: 5v
  • Συχνότητα υπερήχων: 40 Khz, το ανθρώπινο αυτί μπορεί να ακούσει μόνο από 20Hz έως 20Khz. Ό, τι είναι κάτω από 20Hz (υπέρυθρος) και πάνω από 20Khz (υπέρηχος) δεν θα είναι αντιληπτό.
  • Κατανάλωση (αναμονή): <2mA
  • Η κατανάλωση λειτουργεί: 15mA
  • Αποτελεσματική γωνία: <15º, ανάλογα με τις γωνίες των αντικειμένων, μπορεί να έχετε καλύτερα ή χειρότερα αποτελέσματα.
  • Μετρημένη απόσταση: από 2cm έως 400cm, αν και από 250 cm η ανάλυση δεν θα είναι πολύ καλή.
  • Μεσαία ανάλυση: Διακύμανση 0.3 cm μεταξύ της πραγματικής απόστασης και της μέτρησης, οπότε παρόλο που δεν θεωρείται εξαιρετικά ακριβές όπως το λέιζερ, οι μετρήσεις είναι αρκετά αποδεκτές για τις περισσότερες εφαρμογές.
  • τιμή: από περίπου 0,65 €

Ενσωμάτωση με το Arduino

HC-SR04 με Arduino

να Η σύνδεσή του με το Arduino δεν θα ήταν ευκολότερη. Απλώς πρέπει να είστε υπεύθυνοι για τη σύνδεση του GND με την αντίστοιχη έξοδο του Arduino που φέρει την ένδειξη, Vcc με το τροφοδοτικό Arduino 5v και τις άλλες δύο ακίδες του HC-SR04 με τις εισόδους / εξόδους που επιλέγονται για το έργο σας. Μπορείτε να δείτε ότι είναι απλό στο άνω σχέδιο Fritzing ...

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

Ως προς κωδικός για το Arduino IDE, δεν χρειάζεται να χρησιμοποιήσετε βιβλιοθήκη ή κάτι παρόμοιο με άλλα στοιχεία. Απλώς κάντε τον τύπο για να υπολογίσετε την απόσταση και λίγο άλλο ... Φυσικά, εάν θέλετε το έργο σας να κάνει κάτι ως απάντηση στη μέτρηση του αισθητήρα HC-SR04, θα πρέπει να προσθέσετε τον κωδικό που χρειάζεστε. Για παράδειγμα, αντί να εμφανίζετε απλώς τις μετρήσεις στην κονσόλα, μπορείτε να κάνετε τους σερβοκινητήρες να κινούνται προς τη μία ή την άλλη κατεύθυνση για ορισμένες αποστάσεις για να αποφύγετε το εμπόδιο ή για να σταματήσει ένας κινητήρας, να ενεργοποιηθεί ένας συναγερμός όταν ανιχνεύει την εγγύτητα κ.λπ. .

 Περισσότερες πληροφορίες σχετικά με τον προγραμματισμό: Εγχειρίδιο Arduino (Δωρεάν PDF)

Για παράδειγμα, μπορείτε να το δείτε βασικός κωδικός για χρήση ως βάση:

//Define las constantes para los pines donde hayas conectado el pin Echo y Trigger
const int EchoPin = 8;
const int TriggerPin = 9;
 
void setup() {
   Serial.begin(9600);
   pinMode(TriggerPin, OUTPUT);
   pinMode(EchoPin, INPUT);
}

//Aquí la muestra de las mediciones
void loop() {
   int cm = ping(TriggerPin, EchoPin);
   Serial.print("Distancia medida: ");
   Serial.println(cm);
   delay(1000);
}

//Cálculo para la distancia
int ping(int TriggerPin, int EchoPin) {
   long duration, distanceCm;
   
   digitalWrite(TriggerPin, LOW);  //para generar un pulso limpio ponemos a LOW 4us
   delayMicroseconds(4);
   digitalWrite(TriggerPin, HIGH);  //generamos Trigger (disparo) de 10us
   delayMicroseconds(10);
   digitalWrite(TriggerPin, LOW);
   
   duration = pulseIn(EchoPin, HIGH);  //medimos el tiempo entre pulsos, en microsegundos
   
   distanceCm = duration * 10 / 292/ 2;   //convertimos a distancia, en cm
   return distanceCm;
}


Ένα σχόλιο, αφήστε το δικό σας

Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   jose dijo

    Βρήκα την εξήγηση πολύ χρήσιμη και απλή.