Πίνακας περιεχομένων:

Σύγκριση LV-MaxSonar-EZ και HC-SR04 Sonar Range Finders με Arduino: 20 βήματα (με εικόνες)
Σύγκριση LV-MaxSonar-EZ και HC-SR04 Sonar Range Finders με Arduino: 20 βήματα (με εικόνες)

Βίντεο: Σύγκριση LV-MaxSonar-EZ και HC-SR04 Sonar Range Finders με Arduino: 20 βήματα (με εικόνες)

Βίντεο: Σύγκριση LV-MaxSonar-EZ και HC-SR04 Sonar Range Finders με Arduino: 20 βήματα (με εικόνες)
Βίντεο: F-35: Η 5η γενιά μαχητικών - Σύγκριση με τα F-16 - Πακέτο εξοπλισμών | Βραδινό δελτίο | 27/01/2024 2024, Νοέμβριος
Anonim
Σύγκριση LV-MaxSonar-EZ και HC-SR04 Sonar Range Finders με Arduino
Σύγκριση LV-MaxSonar-EZ και HC-SR04 Sonar Range Finders με Arduino
Σύγκριση LV-MaxSonar-EZ και HC-SR04 Sonar Range Finders με Arduino
Σύγκριση LV-MaxSonar-EZ και HC-SR04 Sonar Range Finders με Arduino

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

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

Wantedθελα να συγκρίνω την εξαιρετικά δημοφιλή συσκευή HC-SR04 (bug-eye), με τη λιγότερο κοινή συσκευή LV-MaxSonar-EZ για να δω πότε θα ήθελα να χρησιμοποιήσω τη μία παρά την άλλη. Wantedθελα να μοιραστώ τα ευρήματά μου και τη ρύθμιση, ώστε να μπορείτε να πειραματιστείτε με τα δύο και να αποφασίσετε ποια θα χρησιμοποιήσετε στο επόμενο έργο σας.

Γιατί αυτά τα δύο…

Γιατί το HC-SR04; Το 'Bug-Eye' HC-SR04 είναι εξαιρετικά δημοφιλές-για μερικούς λόγους:

  • Είναι φθηνό - 2 $ ή λιγότερο εάν αγοράζεται χύμα
  • Είναι σχετικά εύκολο στη διασύνδεση
  • Πολλά, πολλά, έργα το χρησιμοποιούν - έτσι είναι γνωστό και καλά κατανοητό

Γιατί το LV-MaxSonar-EZ;

  • Είναι πολύ εύκολο στη διασύνδεση
  • Έχει έναν καλό/εύκολο παράγοντα μορφής για ενσωμάτωση σε ένα έργο
  • Διαθέτει 5 εκδόσεις που καλύπτουν διαφορετικές απαιτήσεις μέτρησης (βλ. Φύλλο δεδομένων)
  • Είναι (τυπικά) πολύ πιο ακριβές και αξιόπιστο από το HC-SR04
  • Είναι προσιτό - 15 έως 20 δολάρια

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

Υποθέσεις:

  • Είστε εξοικειωμένοι με το Arduino και το Arduino IDE
  • Το Arduino IDE είναι εγκατεστημένο και λειτουργεί στη μηχανή ανάπτυξης που προτιμάτε (PC/Mac/Linux)
  • Έχετε μια σύνδεση από το Arduino IDE με το Arduino σας για να ανεβάσετε και να εκτελέσετε προγράμματα και να επικοινωνήσετε

Υπάρχουν οδηγίες χρήσης και άλλοι πόροι που θα σας βοηθήσουν σε αυτό εάν χρειαστεί.

Προμήθειες

  • HC-SR04 'Bug-Eye' Range Finder
  • LV-MaxSonar-EZ (0, 1, 2, 3, 4-χρησιμοποιώ το '1', αλλά όλες οι εκδόσεις διασυνδέονται το ίδιο)
  • Arduino UNO
  • Breadboard χωρίς συγκολλήσεις
  • Κεφαλίδα καρφιτσών - 7 ακίδες 90 ° (για τη συσκευή MaxSonar, δείτε * παρακάτω για χρήση 180 °)
  • Μπλουζάκι καλωδίου κορδέλας - 5 σύρματα, αρσενικό -αρσενικό
  • Μπλουζάκι καλωδίου κορδέλας - 2 σύρματα, αρσενικό -αρσενικό
  • Καλώδιο άλτη - αρσενικό -αρσενικό
  • Σύρμα σύνδεσης - κόκκινο και μαύρο (για τροφοδοσία από το Arduino έως το breadboard και το breadboard στις συσκευές)
  • Υπολογιστής με Arduino IDE και καλώδιο USB για σύνδεση στο Arduino UNO

* Το MaxSonar δεν συνοδεύεται από μια κεφαλίδα, ώστε να μπορείτε να χρησιμοποιήσετε μια κεφαλίδα που είναι πιο κατάλληλη για το έργο σας. Για αυτό το Instructable χρησιμοποίησα μια κεφαλίδα 90 ° για να είναι εύκολη η σύνδεση με το ψωμί. Σε ορισμένα έργα μια κεφαλίδα 180 ° (ευθεία) μπορεί να είναι καλύτερη. Περιλαμβάνω μια φωτογραφία για να δείξω πώς να το συνδέσετε ώστε να μην χρειάζεται να τα αλλάξετε. Αν προτιμάτε να χρησιμοποιήσετε μια κεφαλίδα 180 °, θα χρειαστείτε έναν επιπλέον βραχυκυκλωτήρα καλωδίων 7 συρμάτων, για να συνδεθείτε, όπως δείχνει η φωτογραφία μου.

Αποθήκη Git Hub: Αρχεία έργου

Βήμα 1: The Chase…

Το κυνηγητό…
Το κυνηγητό…

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

Επειδή η συσκευή MaxSonar χρησιμοποιείται λιγότερο και λιγότερο κατανοητή σε σύγκριση με τη συσκευή HC-SR04, ήθελα να δείξω:

  • Πώς να συνδέσετε τη συσκευή MaxSonar σε έναν μικροελεγκτή (στην περίπτωση αυτή ένα Arduino)
  • Πώς να λάβετε μετρήσεις από τις διαφορετικές εξόδους της συσκευής MaxSonar
  • Συγκρίνετε τη διασύνδεση της συσκευής MaxSonar με τη συσκευή HC-SR04
  • Δοκιμάστε την ικανότητα μέτρησης απόστασης αντικειμένων με διαφορετικές επιφάνειες
  • Γιατί μπορείτε να επιλέξετε τη μία συσκευή έναντι της άλλης (ή να χρησιμοποιήσετε και τις δύο ταυτόχρονα)

Ελπίζω αυτό το Instructable να σας βοηθήσει σε αυτό το κυνήγι…

Βήμα 2: Ξεκινώντας - Ρύθμιση Arduino -Breadboard

Ξεκινώντας - Ρύθμιση Arduino -Breadboard
Ξεκινώντας - Ρύθμιση Arduino -Breadboard

Εάν έχετε δημιουργήσει πρωτότυπα με το Arduino, πιθανότατα έχετε ήδη μια ρύθμιση Arduino-Breadboard που σας βολεύει. Αν ναι, είμαι βέβαιος ότι μπορείτε να το χρησιμοποιήσετε για αυτό το Instructable. Αν όχι, έτσι έστησα το δικό μου - μη διστάσετε να το αντιγράψετε για αυτό και μελλοντικά έργα.

  1. Συνδέω το Arduino UNO και ένα μικρό ασύρματο ψωμί σε ένα πλαστικό κομμάτι 3-3/8 "x 4-3/4" (8,6 x 12,0 cm) με λαστιχένια πόδια στο κάτω μέρος.
  2. Χρησιμοποιώ κόκκινο και μαύρο καλώδιο σύνδεσης 22-AWG για σύνδεση +5V και GND από το Arduino στη λωρίδα διανομής τροφοδοσίας ψωμιού
  3. Συμπεριλαμβάνω έναν πυκνωτή ταντάλι 10μF στη λωρίδα διανομής ισχύος-γείωσης για τη μείωση του θορύβου ισχύος (αλλά αυτό το έργο δεν το απαιτεί)

Αυτό παρέχει μια ωραία πλατφόρμα με την οποία είναι εύκολο να πρωτοτυπηθεί.

Βήμα 3: Συνδέστε το LV-MaxSonar-EZ

Συνδέστε το LV-MaxSonar-EZ
Συνδέστε το LV-MaxSonar-EZ
Συνδέστε το LV-MaxSonar-EZ
Συνδέστε το LV-MaxSonar-EZ
Συνδέστε το LV-MaxSonar-EZ
Συνδέστε το LV-MaxSonar-EZ

Με μια κεφαλίδα 90 ° συγκολλημένη στη συσκευή MaxSonar, είναι εύκολο να το συνδέσετε στη σανίδα ψωμιού. Το καλώδιο κορδέλας 5 ακίδων συνδέει το MaxSonar με το Arduino όπως φαίνεται στο διάγραμμα. Εκτός από το καλώδιο κορδέλας, χρησιμοποιώ μικρά κομμάτια κόκκινου και μαύρου καλωδίου σύνδεσης από τη ράγα διανομής ισχύος για να παρέχω ισχύ στη συσκευή.

Καλωδίωση:

MaxSonar Arduino Χρώμα
1 (BW) Power-GND Κίτρινος
2 (PW) Digitalηφιακό-5 Πράσινος
3 (AN) Αναλογικό-0 Μπλε
4 (RX) Digitalηφιακό-3 Μωβ
5 (TX) Digitalηφιακό-2 Γκρί
6 (+5) +5 ράγα BB-PWR το κόκκινο
7 (GND) Σιδηροτροχιά GND BB-PWR Μαύρος

Σημείωση:

Μην αφήσετε τον αριθμό των συνδέσεων που χρησιμοποιούνται σε αυτό το Instructable να σας εμποδίσει να εξετάσετε το MaxSonar για το έργο σας. Αυτό το Instructable χρησιμοποιεί όλες τις επιλογές διεπαφής MaxSonar για να δείξει πώς λειτουργούν και να τις συγκρίνει μεταξύ τους και με τη συσκευή HC-SR04. Για μια δεδομένη χρήση (χρησιμοποιώντας μία από τις επιλογές διασύνδεσης) ένα έργο θα χρησιμοποιεί γενικά μία ή δύο από τις ακίδες διεπαφής (συν ισχύ και γείωση).

Βήμα 4: Συνδέστε το HC-SR04

Το HC-SR04 έρχεται συνήθως με μια κεφαλίδα 90 ° που έχει ήδη προσαρτηθεί, οπότε είναι εύκολο να το συνδέσετε στη σανίδα ψωμιού. Το καλώδιο κορδέλας 2 ακίδων συνδέει το HC-SR04 με το Arduino όπως φαίνεται στο διάγραμμα. Εκτός από το καλώδιο κορδέλας, χρησιμοποιώ μικρά κομμάτια κόκκινου και μαύρου καλωδίου σύνδεσης από τη ράγα διανομής ισχύος για να παρέχω ισχύ στη συσκευή.

HC-SR04 Arduino Χρώμα
1 (VCC) +5 BB-PWR Rail το κόκκινο
2 (TRIG) Digitalηφιακό-6 Κίτρινος
3 (ECHO) Digitalηφιακό-7 Πορτοκάλι
4 (GND) Σιδηροτροχιά GND BB-PWR Μαύρος

Βήμα 5: Συνδέστε τον επιλογέα επιλογών 'HC-SR04'

Όταν ξεκίνησα αυτό το έργο, η πρόθεσή μου ήταν απλά να δοκιμάσω τις διαφορετικές επιλογές διεπαφής της συσκευής MaxSonar. Αφού το ξεκίνησα, αποφάσισα ότι θα ήταν ωραίο να το συγκρίνω με την πανταχού παρούσα συσκευή HC-SR04 (bugeye). Ωστόσο, ήθελα να μπορώ να τρέχω/δοκιμάζω χωρίς να περιλαμβάνεται, οπότε πρόσθεσα μια επιλογή/δοκιμή στον κώδικα.

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

Στο διάγραμμα, αυτό εμφανίζεται ως διακόπτης, αλλά στο breadboard χρησιμοποιώ απλώς ένα καλώδιο βραχυκυκλωτήρα (όπως φαίνεται στις φωτογραφίες). Εάν το καλώδιο είναι συνδεδεμένο στο GND, το HC-SR04 θα συμπεριληφθεί στις μετρήσεις. Ο κώδικας «ανεβαίνει» (κάνει την είσοδο υψηλή/αληθινή) στο Arduino, έτσι ώστε αν δεν τραβηχτεί χαμηλά (συνδεδεμένο με GND) το HC-SR04 δεν θα μετρηθεί.

Αν και αυτό το Instructable μετατράπηκε σε σύγκριση των δύο συσκευών, αποφάσισα να το αφήσω στη θέση του για να εξηγήσω πώς μπορείτε να συμπεριλάβετε/εξαιρέσετε διαφορετικές συσκευές/επιλογές στο έργο σας.

Breadboard Arduino Χρώμα
Σιδηροτροχιά GND BB-PWR Digitalηφιακό-12 λευκό

Βήμα 6: Όλα να λειτουργήσουν…

Κάνοντας όλα να λειτουργούν…
Κάνοντας όλα να λειτουργούν…
Κάνοντας όλα να λειτουργούν…
Κάνοντας όλα να λειτουργούν…
Κάνοντας όλα να λειτουργούν…
Κάνοντας όλα να λειτουργούν…

Τώρα που όλα έχουν κολλήσει - ήρθε η ώρα να κάνουμε τα πράγματα να λειτουργήσουν!

Όπως αναφέρεται στις «Υποθέσεις» - δεν πρόκειται να εξηγήσω πώς λειτουργεί το Arduino IDE ή πώς να προγραμματίσω ένα Arduino (λεπτομερώς).

Οι ακόλουθες ενότητες αναλύουν τον κώδικα Arduino που περιλαμβάνεται σε αυτό το έργο.

Αποσυμπιέστε το πλήρες αρχείο σε μια τοποθεσία που χρησιμοποιείτε για την ανάπτυξη του Arduino. Φορτώστε τον κωδικό `MaxSonar-outputs.ino` στο Arduino IDE και ξεκινήστε!

Βήμα 7: Διάταξη έργου

Το έργο περιέχει πληροφορίες σχετικά με τη συσκευή LV-MaxSonar-EZ, το διάγραμμα κυκλώματος, το README και τον κωδικό Arduino. Το διάγραμμα κυκλώματος είναι σε μορφή Fritzing καθώς και εικόνα PNG. Το README είναι σε μορφή Markdown.

Βήμα 8: Προώθηση κώδικα…

Σε αυτό το Instructable, δεν μπορώ να περάσω από κάθε πτυχή του κώδικα. Καλύπτω μερικές από τις λεπτομέρειες υψηλού επιπέδου. Σας ενθαρρύνω να διαβάσετε το σχόλιο ανώτερου επιπέδου στον κώδικα και να ανακαλύψετε τις μεθόδους.

Τα σχόλια παρέχουν πολλές πληροφορίες που δεν θα επαναλάβω εδώ.

Υπάρχουν μερικά πράγματα που θέλω να επισημάνω στον κώδικα «εγκατάστασης»…

  • Οι δηλώσεις `_DEBUG_OUTPUT` - μεταβλητής και #καθορίστε
  • Ορισμοί των "καρφιτσών" του Arduino που χρησιμοποιούνται για τη διεπαφή
  • Ορισμοί των συντελεστών μετατροπής που χρησιμοποιούνται στους υπολογισμούς

Ο εντοπισμός σφαλμάτων χρησιμοποιείται σε ολόκληρο τον κώδικα και θα δείξω πώς μπορεί να ενεργοποιηθεί/απενεργοποιηθεί δυναμικά.

Οι «ορισμοί» χρησιμοποιούνται για τις καρφίτσες και τις μετατροπές του Arduino για να διευκολύνουν τη χρήση αυτού του κώδικα σε άλλα έργα.

Εντοπισμός σφαλμάτων…

Η ενότητα "Αποσφαλμάτωση" ορίζει μια μεταβλητή και ορισμένες μακροεντολές που διευκολύνουν την ενσωμάτωση πληροφοριών εντοπισμού σφαλμάτων στη σειριακή έξοδο κατά παραγγελία.

Η boolean μεταβλητή `_DEBUG_OUTPUT` έχει οριστεί ως false στον κώδικα (θα μπορούσε να οριστεί σε true) και χρησιμοποιείται ως δοκιμή στις μακροεντολές` DB_PRINT… `. Μπορεί να αλλάξει δυναμικά στον κώδικα (όπως φαίνεται στη μέθοδο `setDebugOutputMode`).

Παγκόσμιοι…

Μετά τους ορισμούς, ο κώδικας δημιουργεί και αρχικοποιεί μερικές καθολικές μεταβλητές και αντικείμενα.

  • SoftwareSerial (δείτε την επόμενη ενότητα)
  • _loopCount - Χρησιμοποιείται για την έξοδο μιας κεφαλίδας κάθε 'n' σειρές
  • _inputBuffer - Χρησιμοποιείται για τη συλλογή σειριακής/τερματικής εισόδου στις επιλογές επεξεργασίας (ενεργοποίηση/απενεργοποίηση εντοπισμού σφαλμάτων)

Βήμα 9: Σειριακό λογισμικό Arduino…

Μία από τις επιλογές διεπαφής MaxSonar είναι μια ροή σειριακών δεδομένων. Ωστόσο, το Arduino UNO παρέχει μόνο μια ενιαία σύνδεση σειριακών δεδομένων και αυτή χρησιμοποιείται/μοιράζεται με τη θύρα USB για επικοινωνία με το Arduino IDE (κεντρικός υπολογιστής).

Ευτυχώς, υπάρχει ένα συστατικό βιβλιοθήκης που περιλαμβάνεται στο Arduino IDE που χρησιμοποιεί ένα ζεύγος ψηφιακών ακροδεκτών Arduino για την εφαρμογή μιας σειριακής διεπαφής. Δεδομένου ότι η σειριακή διεπαφή MaxSonar χρησιμοποιεί 9600 BAUD, αυτή η διεπαφή «λογισμικού» είναι απόλυτα ικανή να χειριστεί την επικοινωνία.

Για όσους χρησιμοποιούν Arduino-Mega (ή άλλη συσκευή που έχει πολλαπλές σειριακές θύρες HW) μη διστάσετε να προσαρμόσετε τον κώδικα για να χρησιμοποιήσετε μια φυσική σειριακή θύρα και να εξαλείψετε την ανάγκη για SW-Serial.

Η μέθοδος «εγκατάστασης» αρχικοποιεί τη διεπαφή «SoftwareSerial» που θα χρησιμοποιηθεί με τη συσκευή MaxSonar. Απαιτείται μόνο η λήψη (RX). Η διεπαφή είναι «αντίστροφη» για να ταιριάζει με την έξοδο του MaxSonar.

Βήμα 10: Κωδικός - Ρύθμιση

Όπως περιγράφηκε παραπάνω, η μέθοδος «εγκατάστασης» αρχικοποιεί τη διεπαφή «SoftwareSerial», καθώς και τη φυσική σειριακή διεπαφή. Διαμορφώνει τις ακίδες εισόδου/εξόδου Arduino και στέλνει μια κεφαλίδα.

Βήμα 11: Κωδικός - Βρόχος

Ο κωδικός «βρόχου» περνά από τα ακόλουθα:

  • Έξοδος κεφαλίδας (χρησιμοποιείται για εντοπισμό σφαλμάτων και Plotter)
  • Ενεργοποιήστε το MaxSonar για να κάνετε μια μέτρηση
  • Διαβάστε την τιμή MaxSonar Pulse-Width
  • Διαβάστε την τιμή σειριακών δεδομένων MaxSonar
  • Διαβάστε την τιμή MaxSonar Analog
  • Ελέγξτε την επιλογή "HC-SR04" και, εάν είναι ενεργοποιημένη:

    Ενεργοποιήστε και διαβάστε τη συσκευή HC-SR04

  • Εξάγετε τα δεδομένα σε μορφή οριοθετημένης με καρτέλα που μπορεί να χρησιμοποιηθεί από το Serial Plotter
  • Περιμένετε έως ότου παρέλθει αρκετός χρόνος για να μπορέσετε να λάβετε άλλη μέτρηση

Βήμα 12: Κωδικός - Ενεργοποιήστε το MaxSonar. Διαβάστε την τιμή PW

Το MaxSonar διαθέτει δύο λειτουργίες: "ενεργοποιημένο" και "συνεχές"

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

Όταν χρησιμοποιείτε τη λειτουργία "ενεργοποίησης", η πρώτη έγκυρη έξοδος είναι από την έξοδο Pulse-Width (PW). Μετά από αυτό, τα υπόλοιπα αποτελέσματα είναι έγκυρα.

Το `tiggerAndReadDistanceFromPulse` παλμίζει τον πείρο σκανδάλης στη συσκευή MaxSonar και διαβάζει την τιμή της απόστασης πλάτους παλμού που προκύπτει

Σημειώστε ότι, σε αντίθεση με πολλές άλλες συσκευές σόναρ, το MaxSonar χειρίζεται τη μετατροπή μετ 'επιστροφής, οπότε η απόσταση που διαβάζεται είναι η απόσταση από τον στόχο.

Αυτή η μέθοδος καθυστερεί επίσης αρκετά για να είναι έγκυρες οι άλλες έξοδοι της συσκευής (σειριακές, αναλογικές).

Βήμα 13: Κωδικός - Διαβάστε τη σειριακή τιμή MaxSonar

Αφού ενεργοποιηθεί το MaxSonar (ή όταν είναι σε «συνεχή» λειτουργία), εάν είναι ενεργοποιημένη η επιλογή σειριακής εξόδου (μέσω του ελέγχου «BW - Pin -1») αποστέλλεται μια ροή σειριακών δεδομένων με τη μορφή "R nnn" με ΦΟΡΤΗ-ΕΠΙΣΤΡΟΦΗ '\ r'. Το 'nnn' είναι η τιμή των ίντσες στο αντικείμενο.

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

Βήμα 14: Κωδικός - Διαβάστε την αναλογική τιμή MaxSonar

Η αναλογική θύρα MaxSonar παρέχει συνεχώς τάση εξόδου ανάλογη της τελευταίας μετρηθείσας απόστασης. Αυτή η τιμή μπορεί να διαβαστεί ανά πάσα στιγμή μετά την προετοιμασία της συσκευής. Η τιμή ενημερώνεται εντός 50mS από την τελευταία ανάγνωση απόστασης (ενεργοποιημένη ή συνεχής λειτουργία).

Η τιμή είναι (Vcc/512) ανά ίντσα. Έτσι, με Vcc από το Arduino των 5 βολτ, η τιμή θα είναι 8 9,8mV/in. Η μέθοδος «readDistanceFromAnalog» διαβάζει την τιμή από την αναλογική είσοδο Arduino και τη μετατρέπει σε τιμή «ίντσας».

Βήμα 15: Κωδικός - Ενεργοποιήστε και διαβάστε το HC -SR04

Παρόλο που υπάρχουν βιβλιοθήκες για να διαβάσετε το HC-SR04, διαπίστωσα ότι μερικές από αυτές δεν είναι αξιόπιστες με διάφορες συσκευές με τις οποίες έχω δοκιμάσει. Βρήκα ότι ο κώδικας που έχω συμπεριλάβει στη μέθοδο `sr04ReadDistance` είναι απλός και πιο αξιόπιστος (όσο μπορεί να είναι η φθηνή συσκευή HC-SR04).

Αυτή η μέθοδος ορίζει και στη συνέχεια ενεργοποιεί τη συσκευή HC-SR04 και στη συνέχεια περιμένει να μετρήσει το πλάτος του παλμού επιστροφής. Η μέτρηση του πλάτους παλμού περιλαμβάνει ένα χρονικό όριο για την αντιμετώπιση του ζητήματος HC-SR04 πολύ μεγάλης διάρκειας παλμού όταν δεν μπορεί να βρει στόχο. Πλάτος παλμού μεγαλύτερο από την απόσταση στόχου feet 10 πόδια θεωρείται ότι δεν είναι αντικείμενο ή αντικείμενο που δεν μπορεί να αναγνωριστεί. Εάν επιτευχθεί το χρονικό όριο, η τιμή "0" επιστρέφεται ως απόσταση. Αυτή η «απόσταση» (πλάτος παλμού) μπορεί να ρυθμιστεί χρησιμοποιώντας τις τιμές #define.

Το πλάτος του παλμού μετατρέπεται σε απόσταση μετ 'επιστροφής πριν επιστρέψει ως απόσταση στο αντικείμενο.

Βήμα 16: Κωδικός - Arduino IDE Serial Plotter Support

Κωδικός - Arduino IDE Serial Plotter Support
Κωδικός - Arduino IDE Serial Plotter Support

Τώρα για την έξοδο!

Η μέθοδος «βρόχου» ενεργοποιεί τη συλλογή της μέτρησης της απόστασης από τις δύο συσκευές - αλλά τι κάνουμε με αυτήν;

Λοιπόν, φυσικά, θα το στείλουμε για να μπορεί να προβληθεί στην κονσόλα - αλλά θέλουμε περισσότερα!

Το Arduino IDE παρέχει επίσης τη διεπαφή Serial Plotter. Θα το χρησιμοποιήσουμε για να δώσουμε ένα γράφημα σε πραγματικό χρόνο της απόστασης από το αντικείμενό μας από τις εξόδους των δύο συσκευών μας.

Το Serial Plotter αποδέχεται μια κεφαλίδα που περιέχει ετικέτες τιμών και στη συνέχεια πολλαπλές σειρές οριοθετημένων τιμών που πρέπει να σχεδιαστούν ως γράφημα. Εάν οι τιμές εξάγονται σε τακτική βάση (μία φορά κάθε «τόσα δευτερόλεπτα») το γράφημα παρέχει μια απεικόνιση της απόστασης από το αντικείμενο με την πάροδο του χρόνου.

Η μέθοδος `βρόχος` εξάγει τις τρεις τιμές από το MaxSonar και την τιμή από το HC-SR04 σε μορφή διαχωρισμένη με καρτέλα που μπορεί να χρησιμοποιηθεί με το Serial Plotter. Μία φορά κάθε 20 σειρές εξάγει την κεφαλίδα (μόνο σε περίπτωση που το Serial Plotter είναι ενεργοποιημένο στο μέσο της ροής).

Αυτό σας επιτρέπει να απεικονίσετε έτσι την απόσταση από το εμπόδιο και επίσης να δείτε τη διαφορά στις τιμές που επιστρέφουν οι δύο συσκευές.

Βήμα 17: Κωδικός - Αποσφαλμάτωση…

Κώδικας - Σφάλματα…
Κώδικας - Σφάλματα…
Κώδικας - Σφάλματα…
Κώδικας - Σφάλματα…

Ο εντοπισμός σφαλμάτων είναι απαραίτητος. Πώς μπορείτε να εντοπίσετε ένα πρόβλημα όταν κάτι δεν λειτουργεί όπως αναμενόταν;

Μια πρώτη γραμμή κατανόησης είναι συχνά κάποιες «απλές» εξόδους κειμένου που μπορούν να δείξουν τι συμβαίνει. Αυτά μπορούν να προστεθούν στον κώδικα όταν και όπου χρειάζεται για να εντοπιστεί ένα πρόβλημα και στη συνέχεια να αφαιρεθούν μόλις λυθεί το πρόβλημα. Ωστόσο, η προσθήκη και η αφαίρεση του κώδικα είναι χρονοβόρα και, από μόνη της, μπορεί να οδηγήσει σε άλλα προβλήματα. Μερικές φορές είναι καλύτερο να μπορείτε να το ενεργοποιήσετε και να το απενεργοποιήσετε δυναμικά αφήνοντας τον πηγαίο κώδικα μόνο.

Σε αυτό το Instructable έχω συμπεριλάβει έναν μηχανισμό για την ενεργοποίηση και απενεργοποίηση εντολών εντοπισμού σφαλμάτων εκτύπωσης (σειριακή έξοδος) δυναμικά από την είσοδο που διαβάζεται από το Arduino IDE Serial Monitor (σε επερχόμενη κυκλοφορία, ο Serial Plotter αναμένεται να παρέχει και αυτήν την είσοδο).

Το boolean `_DEBUG_OUTPUT` χρησιμοποιείται σε έναν αριθμό #define μεθόδων εκτύπωσης που μπορούν να χρησιμοποιηθούν εντός του κώδικα. Η τιμή της μεταβλητής _DEBUG_OUTPUT χρησιμοποιείται για να ενεργοποιήσετε την εκτύπωση (αποστολή εξόδου) ή όχι. Η τιμή μπορεί να αλλάξει δυναμικά μέσα στον κώδικα, όπως κάνει η μέθοδος `setDebugOutputMode`.

Η μέθοδος `setDebugOutputMode` καλείται από τον` βρόχο` με βάση την είσοδο που λαμβάνεται από τη σειριακή είσοδο. Η είσοδος αναλύεται για να διαπιστωθεί εάν ταιριάζει με το "debug on/off | true/false" για να ενεργοποιήσετε/απενεργοποιήσετε τη λειτουργία εντοπισμού σφαλμάτων.

Βήμα 18: Συμπέρασμα

Ελπίζω ότι αυτή η απλή ρύθμιση υλικού και ο παράδειγμα κώδικας μπορούν να σας βοηθήσουν να κατανοήσετε τις διαφορές μεταξύ των συσκευών HC-SR04 και LV-MaxSonar-EZ. Και τα δύο είναι πολύ εύχρηστα και πιστεύω ότι το καθένα έχει τα οφέλη του. Το να γνωρίζετε πότε θα χρησιμοποιήσετε το ένα αντί το άλλο μπορεί να συμβάλει σημαντικά σε ένα επιτυχημένο έργο.

BTW-υπαινίχθηκα έναν πολύ εύκολο στη χρήση τρόπο για να μετρήσω με ακρίβεια την απόσταση σε ένα αντικείμενο χρησιμοποιώντας το LV-MaxSonar-EZ… Μπορείτε να χρησιμοποιήσετε την αναλογική έξοδο (ένα σύρμα) και τη λειτουργία συνεχούς μέτρησης για να διαβάσετε την απόσταση όταν χρειάζεται χρησιμοποιώντας το απλό κωδικό στο `readDistanceFromAnalog` απευθείας από την αναλογική είσοδο Arduino. Ένα σύρμα και (συμπυκνωμένο) μία γραμμή κωδικού!

Βήμα 19: Εναλλακτική σύνδεση MaxSonar (με κεφαλίδα 180 °)

Εναλλακτική σύνδεση MaxSonar (με κεφαλίδα 180 °)
Εναλλακτική σύνδεση MaxSonar (με κεφαλίδα 180 °)
Εναλλακτική σύνδεση MaxSonar (με κεφαλίδα 180 °)
Εναλλακτική σύνδεση MaxSonar (με κεφαλίδα 180 °)
Εναλλακτική σύνδεση MaxSonar (με κεφαλίδα 180 °)
Εναλλακτική σύνδεση MaxSonar (με κεφαλίδα 180 °)

Όπως ανέφερα, το MaxSonar δεν συνοδεύεται από κεφαλίδα. Έτσι, μπορείτε να χρησιμοποιήσετε οποιαδήποτε σύνδεση είναι πιο κατάλληλη για το έργο σας. Σε ορισμένες περιπτώσεις, μια κεφαλίδα 180 ° (ευθεία) μπορεί να είναι πιο κατάλληλη. Εάν συμβαίνει αυτό, ήθελα να δείξω γρήγορα πώς μπορείτε να το χρησιμοποιήσετε με αυτό το Instructable. Αυτή η απεικόνιση δείχνει ένα MaxSonar με μια ευθεία κεφαλίδα που συνδέεται με το ψωμί με ένα καλώδιο κορδέλας αρσενικού-θηλυκού και στη συνέχεια συνδέεται με το Arduino όπως περιγράφεται στο υπόλοιπο άρθρο.

Βήμα 20: Κωδικός Arduino

Ο κώδικας Arduino βρίσκεται στο φάκελο 'MaxSonar-outputs' του έργου στη Σύγκριση εύρους εύρους Sonar

Συνιστάται: