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

Υπέρυθρο ραντάρ με Arduino: 6 βήματα
Υπέρυθρο ραντάρ με Arduino: 6 βήματα

Βίντεο: Υπέρυθρο ραντάρ με Arduino: 6 βήματα

Βίντεο: Υπέρυθρο ραντάρ με Arduino: 6 βήματα
Βίντεο: Маурицио Серачини: Секретная жизнь картин 2024, Νοέμβριος
Anonim
Image
Image

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

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

Προμήθειες

  • Arduino (χρησιμοποίησα Maple Mini)
  • Αισθητήρας αιχμηρής απόστασης (χρησιμοποίησα Sharp GP2Y0A02YK0F)
  • Micro Servo (9g)
  • Breadboard, σύρματα
  • Προαιρετικά: Αντίσταση 4,7k, Πυκνωτής 100nF

Βήμα 1: Υπερηχητικός αισθητήρας υπερύθρων VS

Σχηματικός
Σχηματικός

Η κύρια διαφορά μεταξύ υπερηχητικών και υπέρυθρων αισθητήρων απόστασης είναι ότι ο αισθητήρας υπερήχων μετρά την απόσταση σε ευρύτερο εύρος. Επομένως, δεν είναι σε θέση να εντοπίσει με ακρίβεια τη θέση ενός εμποδίου. Σημαίνει ότι μετρά την απόσταση του πλησιέστερου αντικειμένου που βρίσκεται μέσα σε εύρος γωνίας ~ +-30 °.

Φυσικά, δεν σημαίνει ότι ο αισθητήρας Sharp είναι καλύτερος. Μερικές φορές αυτή η ιδιότητα μπορεί να είναι πολύ χρήσιμη (π.χ. χρησιμοποιείται από drones για τη μέτρηση του ύψους από το έδαφος). Η σωστή επιλογή εξαρτάται πλήρως από τις απαιτήσεις του έργου σας.

Βήμα 2: Σχηματικό

Σχηματικός
Σχηματικός
Σχηματικός
Σχηματικός

Είναι πολύ απλό να κάνετε τη σύνδεση μεταξύ των τμημάτων. Επιλέξτε μια έξοδο PWM και μια αναλογική είσοδο στον πίνακα Arduino και συνδέστε τους αισθητήρες απόστασης Servo και Sharp σε αυτές τις ακίδες. Χρησιμοποίησα τις ακόλουθες καρφίτσες για το σκοπό αυτό:

  • PA0: Αναλογική είσοδος για αισθητήρα απόστασης ευκρίνειας
  • PA9: Έξοδος PWM για Servo

Μερικές φορές ο αισθητήρας Sharp IR μπορεί να έχει θορυβώδη έξοδο, επομένως πρέπει να βάλετε ένα απλό φίλτρο Low Pass πάνω του. Χρησιμοποίησα μια αντίσταση 4,7k και έναν πυκνωτή 100nF για να μειώσω τον θόρυβο στην αναλογική ακίδα. Επιπλέον, φιλτράρισα επίσης τη μετρημένη τιμή στον κώδικα διαβάζοντας τον πολλές φορές και υπολογίζοντας τον μέσο όρο.

Βήμα 3: Χαρακτηριστικό αισθητήρα

Αισθητήρας Χαρακτηριστικό
Αισθητήρας Χαρακτηριστικό
Αισθητήρας Χαρακτηριστικό
Αισθητήρας Χαρακτηριστικό

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

Παρόλο που το φύλλο δεδομένων του αισθητήρα παρέχει το χαρακτηριστικό, προτιμώ να το μετρήσω μόνος μου στο συγκεκριμένο έργο (θα μπορούσε να εξαρτηθεί από τη χρησιμοποιούμενη τάση). Για αυτό, έφτιαξα ζεύγη από τη μετρούμενη τιμή ADC και απόσταση για κάθε 10 cm. (Ο αισθητήρας μου μπόρεσε να μετρήσει τη σωστή απόσταση από 12 cm).

Χρησιμοποίησα αυτά τα ζεύγη στον κώδικα για να πάρω τη σωστή απόσταση με τη Γραμμική παρεμβολή.

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

Βήμα 4: Σειριακή επικοινωνία

Σειριακή Επικοινωνία
Σειριακή Επικοινωνία

Χρησιμοποίησα σειριακή επικοινωνία για να στείλω τις μετρημένες τιμές γωνίας-απόστασης στον υπολογιστή. Δεδομένου ότι πρέπει να στείλω πολλαπλά byte και διαφορετικό τύπο μηνυμάτων, σχεδίασα ένα απλό πρωτόκολλο επικοινωνίας.

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

  • Παράμετροι: Χρησιμοποιούνται για την αποστολή παραμέτρων στην εφαρμογή PC, που ορίζονται στο Arduino, όπως η μέγιστη απόσταση και ο αριθμός των εμποδίων σε έναν γύρο.
  • Εμπόδιο: Χρησιμοποιείται για την αποστολή εντοπισμένου εμποδίου. Προσδιορίζεται από τη γωνία του σερβο και τη μετρούμενη απόσταση. Η θέση x-y θα υπολογιστεί με εφαρμογή υπολογιστή.

Βήμα 5: Εφαρμογή Qt

Εφαρμογή Qt
Εφαρμογή Qt

Για να επικοινωνήσω με το Arduino και να σχεδιάσω τα μετρημένα σημεία σαν ραντάρ, έκανα μια εφαρμογή υπολογιστή σε Qt (C ++). Λαμβάνει ορισμένες παραμέτρους (ορίζονται στο Arduino) και τα μετρημένα σημεία απόστασης.

Μπορείτε επίσης να κατεβάσετε την εφαρμογή και τον πηγαίο κώδικα της.

Βήμα 6: Πηγαίος κώδικας Arduino

Μπορείτε να προσαρμόσετε ορισμένα παράμετρα στο επάνω μέρος του κώδικα με μακροεντολές.

Σημειώστε ότι εάν αλλάξετε το χαρακτηριστικό του αισθητήρα απόστασης Sharp, πρέπει να τροποποιήσετε τις τιμές του πίνακα distAdcMap !

  • InfraRadar.c: Κώδικας ραντάρ. Αντιγράψτε και επικολλήστε το στο έργο σας Arduino.
  • InfraRadarMeasurement.c: Κωδικός για χαρακτηριστική μέτρηση. Αντιγράψτε και επικολλήστε το στο έργο σας Arduino. Χρησιμοποιήστε Serial Console για να ελέγξετε τις τιμές ADC.

Συνιστάται: