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

Κάδος ταξινόμησης - Εντοπίστε και ταξινομήστε τον κάδο απορριμμάτων: 9 βήματα
Κάδος ταξινόμησης - Εντοπίστε και ταξινομήστε τον κάδο απορριμμάτων: 9 βήματα

Βίντεο: Κάδος ταξινόμησης - Εντοπίστε και ταξινομήστε τον κάδο απορριμμάτων: 9 βήματα

Βίντεο: Κάδος ταξινόμησης - Εντοπίστε και ταξινομήστε τον κάδο απορριμμάτων: 9 βήματα
Βίντεο: BBC Lab ΜΑΘΗΜΑ: WINDOWS BHMA13 2024, Ιούλιος
Anonim
Image
Image
Πως δουλεύει
Πως δουλεύει

Έχετε δει ποτέ κάποιον που δεν ανακυκλώνει ή το κάνει με κακό τρόπο;

Έχετε ποτέ ευχηθεί ένα μηχάνημα που θα ανακυκλώνει για εσάς;

Συνεχίστε να διαβάζετε το έργο μας, δεν θα το μετανιώσετε!

Το Sorter bin είναι ένα έργο με σαφές κίνητρο να βοηθήσει την ανακύκλωση στον κόσμο. Όπως είναι γνωστό, η έλλειψη ανακύκλωσης προκαλεί σοβαρά προβλήματα στον πλανήτη μας, όπως η εξαφάνιση πρώτων υλών και η μόλυνση της θάλασσας, μεταξύ άλλων.

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

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

Στις επόμενες ενότητες, αυτό το έργο θα εξηγηθεί βήμα προς βήμα.

Βήμα 1: Πώς λειτουργεί

Πως δουλεύει
Πως δουλεύει
Πως δουλεύει
Πως δουλεύει

Ο κάδος ταξινόμησης έχει σχεδιαστεί για να κάνει το έργο σχετικά εύκολο για τον χρήστη: τα σκουπίδια πρέπει να εισάγονται μέσα από την τρύπα που βρίσκεται στην επάνω πλάκα, το κίτρινο κουμπί πρέπει να πατηθεί και η διαδικασία ξεκινά, τελειώνοντας με τα σκουπίδια σε ένα των παραληπτών. Αλλά το ερώτημα τώρα είναι … πώς λειτουργεί αυτή η διαδικασία εσωτερικά;

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

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

Όταν το πλαίσιο φτάσει στο τέλος της διαδρομής και το αντικείμενο πέσει στον σωστό παραλήπτη, το πλαίσιο θα επιστρέψει στην αρχική του θέση. Τέλος, με το κουτί στην αρχική θέση, το κίτρινο LED θα σβήσει. Ο διαλογέας ήταν έτοιμος να ξεκινήσει ξανά με την ίδια διαδικασία. Αυτή η διαδικασία που περιγράφεται στις τελευταίες παραγράφους φαίνεται επίσης στην εικόνα του διαγράμματος ροής εργασίας που επισυνάπτεται στο Βήμα 6: Προγραμματισμός.

Βήμα 2: Λογαριασμός Υλικών (BOM)

Μηχανικά μέρη:

  • Αγόρασε εξαρτήματα για την κάτω δομή

    • Μεταλλική δομή [Σύνδεσμος]
    • Γκρι κουτί [Σύνδεσμος]
  • Τρισδιάστατος εκτυπωτής

    PLA για όλα τα τυπωμένα μέρη (μπορούν επίσης να χρησιμοποιηθούν άλλα υλικά, όπως το ABS)

  • Μηχανή κοπής λέιζερ

    • MDF 3mm
    • Πλεξιγκλας 4mm
  • Σετ γραμμικού ρουλεμάν [Link]
  • Γραμμικό ρουλεμάν [Σύνδεσμος]
  • Άξονας [Σύνδεσμος]
  • Στήριγμα άξονα (x2) [Σύνδεσμος]

Ηλεκτρονικά μέρη:

  • Μοτέρ

    Linear Stepper Motor Nema 17 [Link]

  • Μπαταρία

    12 v Μπαταρία [Σύνδεσμος]

  • Αισθητήρες

    • 2 Αισθητήρας υπερήχων HC-SR04 [Link]
    • 2 επαγωγικοί αισθητήρες LJ30A3-15 [Link]
  • Μικροελεγκτής

    1 πίνακας arduino UNO

  • Πρόσθετα συστατικά

    • DRV8825 πρόγραμμα οδήγησης
    • 3 LED: κόκκινο, πράσινο και πορτοκαλί
    • 1 κουμπί
    • Μερικά καλώδια, σύρματα και πλάκες συγκόλλησης
    • Breadboard
    • Καλώδιο USB (σύνδεση Arduino-PC)
    • Πυκνωτής: 100uF

Βήμα 3: Μηχανολογικός σχεδιασμός

Image
Image
Μηχανολογικός σχεδιασμός
Μηχανολογικός σχεδιασμός
Μηχανολογικός σχεδιασμός
Μηχανολογικός σχεδιασμός

Στις προηγούμενες εικόνες, εμφανίζονται όλα τα μέρη του συγκροτήματος.

Για το μηχανολογικό σχεδιασμό, το SolidWorks χρησιμοποιήθηκε ως πρόγραμμα CAD. Τα διάφορα μέρη του συγκροτήματος έχουν σχεδιαστεί λαμβάνοντας υπόψη τη μέθοδο κατασκευής που πρόκειται να κατασκευάσουν.

Μέρη κοπής με λέιζερ:

  • MDF 3mm

    • Πυλώνες
    • Πάνω πιάτο
    • Υποστήριξη υπερηχητικών αισθητήρων
    • Υποστήριξη επαγωγικών αισθητήρων
    • Κουτί σκουπιδιών
    • Υποστήριξη μπαταρίας
    • Υποστήριξη Breadboard και Arduino
  • Πλεξιγκλας 4mm

    Πλατφόρμα

Τρισδιάστατα τυπωμένα μέρη:

  • Βάση πυλώνων
  • Στοιχείο μετάδοσης γραμμικής κίνησης από το βηματικό μοτέρ
  • Βηματικός κινητήρας και στηρίγματα ρουλεμάν
  • Μέρη στερέωσης τοίχων για το κουτί απορριμμάτων

Για την κατασκευή καθενός από αυτά τα μέρη, τα αρχεία. STEP θα πρέπει να εισαχθούν στη σωστή μορφή, ανάλογα με το μηχάνημα που πρόκειται να χρησιμοποιηθεί για το σκοπό αυτό. Σε αυτήν την περίπτωση, έχουν χρησιμοποιηθεί αρχεία.dxf για τη μηχανή κοπής με λέιζερ και αρχεία.gcode για τον 3D εκτυπωτή (Ultimaker 2).

Η μηχανική συναρμολόγηση αυτού του έργου βρίσκεται στο αρχείο. STEP που επισυνάπτεται σε αυτήν την ενότητα.

Βήμα 4: Ηλεκτρονικά (Επιλογές εξαρτημάτων)

Σε αυτήν την ενότητα, πρόκειται να γίνει μια σύντομη περιγραφή των ηλεκτρονικών εξαρτημάτων που χρησιμοποιούνται και μια επεξήγηση των επιλογών των εξαρτημάτων.

Arduino UNO board (ως μικροελεγκτής):

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

Κινητήρας (Linear Stepper Motor Nema 17):

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

Για να επιλέξετε το μοντέλο κάνατε μερικούς υπολογισμούς της μέγιστης απαιτούμενης ροπής προσθέτοντας έναν συντελεστή ασφαλείας. Όσον αφορά τα αποτελέσματα, αγοράσαμε το μοντέλο που καλύπτει σε μεγάλο βαθμό την υπολογισμένη αξία.

DRV8825 Πρόγραμμα οδήγησης:

Αυτός ο πίνακας χρησιμοποιείται για τον έλεγχο ενός διπολικού βηματικού κινητήρα. Διαθέτει ρυθμιζόμενο έλεγχο ρεύματος που σας επιτρέπει να ρυθμίσετε τη μέγιστη ισχύ εξόδου με ποτενσιόμετρο καθώς και έξι διαφορετικές αναλύσεις βημάτων: πλήρες βήμα, μισό βήμα, 1/4-βήμα, 1/8-βήμα, 1/16- βήμα και 1/32-βήμα (τελικά χρησιμοποιήσαμε το πλήρες βήμα καθώς δεν βρήκαμε καμία ανάγκη να πάμε στη μικροσκόπηση, αλλά μπορεί ακόμα να χρησιμοποιηθεί για τη βελτίωση της ποιότητας της κίνησης).

Υπερηχητικοί αισθητήρες:

Αυτοί είναι ένας τύπος ακουστικών αισθητήρων που μετατρέπουν ένα ηλεκτρικό σήμα σε υπερηχογράφημα και αντίστροφα. Χρησιμοποίησαν την ηχώ απόκρισης ενός ηχητικού σήματος που εκπέμπεται αρχικά για να υπολογίσουν την απόσταση από ένα αντικείμενο. Τα χρησιμοποιήσαμε για να ανιχνεύσουμε αν υπάρχει κάποιο αντικείμενο στο πλαίσιο ή όχι. Είναι εύχρηστα και παρέχουν ακριβή μέτρηση.

Παρόλο που η έξοδος αυτού του αισθητήρα είναι μια τιμή (απόσταση), καθορίζοντας ένα όριο για να προσδιορίσουμε εάν ένα αντικείμενο είναι παρόν ή όχι, μετασχηματίζουμε

Επαγωγικοί αισθητήρες:

Με βάση τον νόμο του Faraday, ανήκει στην κατηγορία των ηλεκτρονικών αισθητήρων εγγύτητας χωρίς επαφή. Τα τοποθετήσαμε στο κάτω μέρος του κινούμενου κουτιού, κάτω από την πλατφόρμα πλεξιγκλάς που στηρίζει το αντικείμενο. Ο στόχος τους είναι να κάνουν διάκριση μεταξύ μεταλλικού και μη μεταλλικού αντικειμένου που δίνει ψηφιακή έξοδο (0/1).

LED (πράσινο, κίτρινο, κόκκινο):

Η αποστολή τους είναι να επικοινωνούν με τον χρήστη:

-Πράσινο LED αναμμένο: το ρομπότ περιμένει ένα αντικείμενο.

-Κόκκινο LED αναμμένο: η μηχανή λειτουργεί, δεν μπορείτε να πετάξετε κανένα αντικείμενο.

-Κίτρινη λυχνία LED: ανιχνεύεται ένα αντικείμενο.

Μπαταρία 12V ή πηγή ισχύος 12V + ισχύς 5V USB:

Απαιτείται πηγή τάσης για την τροφοδοσία των αισθητήρων και του βηματικού κινητήρα. Απαιτείται πηγή ισχύος 5V για την τροφοδοσία του Arduino. Αυτό μπορεί να γίνει μέσω της μπαταρίας 12V, αλλά είναι καλύτερο να υπάρχει ξεχωριστή πηγή τροφοδοσίας 5V για το Arduino (όπως με καλώδιο USB και προσαρμογέα τηλεφώνου συνδεδεμένο σε πηγή ρεύματος ή υπολογιστή).

Ζητήματα που εντοπίσαμε:

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

    • Η περιοχή που καλύπτεται από τους αισθητήρες εντός της τετραγωνικής πλατφόρμας αντιπροσωπεύει λιγότερο από το 50% αυτής (έτσι δεν μπορεί να ανιχνευθεί μικρό αντικείμενο). Για να το λύσετε, συνιστούμε να χρησιμοποιήσετε 3 ή 4 επαγωγικούς αισθητήρες για να διασφαλίσετε ότι καλύπτεται περισσότερο από το 70% της περιοχής.
    • Η απόσταση ανίχνευσης των αισθητήρων περιορίζεται στα 15mm, οπότε βρεθήκαμε αναγκασμένοι να χρησιμοποιήσουμε μια λεπτή πλατφόρμα πλεξιγκλάς. Αυτό μπορεί επίσης να είναι ένας άλλος περιορισμός ανίχνευσης αντικειμένων με περίεργο σχήμα.
  • Υπερηχητική ανίχνευση: και πάλι, αντικείμενα με πολύπλοκο τρόπο δημιουργούν προβλήματα καθώς το σήμα που εκπέμπεται από τους αισθητήρες αντανακλάται άσχημα και επανέρχεται αργότερα από όσο θα έπρεπε στον αισθητήρα.
  • Μπαταρία: έχουμε κάποια ζητήματα ελέγχου του ρεύματος που παρέχεται από την μπαταρία και για να το λύσουμε χρησιμοποιήσαμε τελικά μια πηγή ενέργειας. Ωστόσο, μπορούν να εκτελεστούν άλλες λύσεις όπως η χρήση διόδου.

Βήμα 5: Ηλεκτρονικά (Συνδέσεις)

Ηλεκτρονικά (Συνδέσεις)
Ηλεκτρονικά (Συνδέσεις)
Ηλεκτρονικά (Συνδέσεις)
Ηλεκτρονικά (Συνδέσεις)

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

Βήμα 6: Προγραμματισμός

Προγραμματισμός
Προγραμματισμός

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

Το πρόγραμμα χωρίζεται σε 4 βήματα, τα οποία είναι τα ακόλουθα:

  1. Αρχικοποίηση συστήματος
  2. Ελέγξτε την παρουσία αντικειμένων
  3. Ελέγξτε τον τύπο του αντικειμένου που υπάρχει
  4. Κιβώτιο μετακίνησης

Για μια λεπτομερή περιγραφή κάθε βήματος, δείτε παρακάτω:

Βήμα 1 Αρχικοποίηση συστήματος

Πάνελ LED (3) - σετ LED βαθμονόμησης (κόκκινο) Υ HIGHΗΛΟ, Έτοιμο LED (πράσινο) ΧΑΜΗΛΟ, Αντικείμενο παρόν (κίτρινο) ΧΑΜΗΛΟ

Ελέγξτε ότι ο βηματικός κινητήρας βρίσκεται στην αρχική του θέση

  • Εκτελέστε δοκιμή υπερηχητικού αισθητήρα για να μετρήσετε την απόσταση από την πλευρά στον τοίχο του κιβωτίου

    • Αρχική θέση == 0 >> Ενημέρωση τιμών Ready LED HIGH και Calibrating LED LOW -> βήμα 2
    • Αρχική θέση! = 0 >> ψηφιακή τιμή ανάγνωσης αισθητήρων υπερήχων και με βάση τις τιμές του αισθητήρα:

      • Ενημερώστε την τιμή του κινούμενου LED HIGH.
      • Εκτελέστε το κιβώτιο μετακίνησης έως ότου η τιμή και των δύο αισθητήρων υπερήχων είναι <τιμή κατωφλίου.

Τιμή ενημέρωσης της αρχικής θέσης = 1 >> Τιμή ενημέρωσης του LED Ready HIGH και του κινητήρα LOW και Calibrating LOW >> βήμα 2

Βήμα 2

Ελέγξτε την παρουσία αντικειμένων

Εκτελέστε ανίχνευση υπερήχων αντικειμένων

  • Object present == 1 >> Τιμή ενημέρωσης του Object present LED HIGH >> Βήμα 3
  • Αντικείμενο παρόν == 0 >> Μην κάνετε τίποτα

Βήμα 3

Ελέγξτε τον τύπο του αντικειμένου που υπάρχει

Εκτελέστε ανίχνευση επαγωγικού αισθητήρα

  • inductiveState = 1 >> Βήμα 4
  • inductiveState = 0 >> Βήμα 4

Βήμα 4

Κιβώτιο μετακίνησης

Εκτέλεση λειτουργίας μοτέρ

  • inductiveState == 1

    Ενημέρωση κινητήρα LED HIGH >> Κάντε κίνηση του κινητήρα αριστερά, (ενημέρωση αρχικής θέσης = 0) καθυστέρηση και μετακίνηση πίσω δεξιά >> Βήμα 1

  • inductiveState == 0

    Ενημέρωση κινητήρα LED HIGH >> Κάντε κίνηση του κινητήρα δεξιά, (ενημέρωση αρχικής θέσης = 0), καθυστέρηση και μετακίνηση πίσω αριστερά >> Βήμα 1

Λειτουργίες

Όπως φαίνεται από τη λογική προγραμματισμού, το πρόγραμμα λειτουργεί εκτελώντας συναρτήσεις με συγκεκριμένο στόχο. Για παράδειγμα, το πρώτο βήμα είναι η προετοιμασία του συστήματος που περιέχει τη λειτουργία "Ελέγξτε ότι ο βηματικός κινητήρας είναι στην αρχική του θέση". Το δεύτερο βήμα στη συνέχεια ελέγχει την παρουσία αντικειμένου το οποίο από μόνο του είναι μια άλλη λειτουργία (η λειτουργία "Ανίχνευση υπερήχων αντικειμένων"). Και ούτω καθεξής.

Μετά το βήμα 4, το πρόγραμμα έχει ολοκληρωθεί πλήρως και θα επανέλθει στο βήμα 1 πριν ξαναρχίσει.

Οι λειτουργίες που χρησιμοποιούνται στο κύριο σώμα ορίζονται παρακάτω.

Είναι αντίστοιχα:

  • inductiveTest ()
  • moveBox (επαγωγικό κράτος)
  • ultrasonicObjectDetection ()

// Ελέγξτε αν το αντικείμενο είναι μεταλλικό ή όχι

bool inductiveTest () {if (digitalRead (inductiveSwitchRight) == 1 || digitalRead (inductiveSwitchLeft == 0)) {return true; else {return false? }} void moveBox (bool inductiveState) {// Το κουτί πηγαίνει αριστερά όταν ανιχνεύεται μέταλλο και inductiveState = true εάν (inductiveState == 0) {stepper.moveTo (βήματα); // τυχαία θέση στο τέλος για έλεγχο stepper.runToPosition (); καθυστέρηση (1000)? stepper.moveTo (0); stepper.runToPosition (); καθυστέρηση (1000)? } else if (inductiveState == 1) {stepper.moveTo (-steps); // τυχαία θέση στο τέλος για έλεγχο stepper.runToPosition (); καθυστέρηση (1000)? stepper.moveTo (0); // τυχαία θέση στο τέλος για έλεγχο stepper.runToPosition (); καθυστέρηση (1000)? }} boolean ultrasonicObjectDetection () {long duration1, distance1, durationTemp, distanceTemp, averageDistance1, averageDistanceTemp, averageDistanceOlympian1; // Καθορίστε τον αριθμό των μετρήσεων που απαιτούνται για μεγάλες αποστάσειςMax = 0; υπεραστική Min = 4000; μεγάλη απόστασηTotal = 0; για (int i = 0; i distanceMax) {distanceMax = distanceTemp; } if (distanceTemp <distanceMin) {distanceMin = distanceTemp; } distanceTotal+= distanceTemp; } Serial.print ("Sensor1 maxDistance"); Serial.print (distanceMax); Serial.println ("mm"); Serial.print ("Sensor1 minDistance"); Serial.print (distanceMin); Serial.println ("mm"); // Λάβετε μέση απόσταση από τις μετρήσεις averageDistance1 = distanceTotal/10; Serial.print ("Sensor1 averageDistance1"); Serial.print (averageDistance1); Serial.println ("mm"); // Καταργήστε τις υψηλότερες και χαμηλότερες τιμές των μετρήσεων για να αποφύγετε λανθασμένες αναγνώσεις averageDistanceTemp = distanceTotal - (distanceMax+distanceMin); averageDistanceOlympian1 = averageDistanceTemp/8; Serial.print ("Sensor1 averageDistanceOlympian1"); Serial.print (averageDistanceOlympian1); Serial.println ("mm");

// Επαναφορά τιμών θερμοκρασίας

distanceTotal = 0; distanceMax = 0; απόστασηMin = 4000; μεγάλη διάρκεια2, απόσταση2, μέση απόσταση, μέση απόσταση Ολυμπιακή2; // Ορίστε τον αριθμό των μετρήσεων που πρέπει να ληφθούν (int i = 0; i distanceMax) {distanceMax = distanceTemp; } if (distanceTemp <distanceMin) {distanceMin = distanceTemp; } distanceTotal+= distanceTemp; } Serial.print ("Sensor2 maxDistance"); Serial.print (distanceMax); Serial.println ("mm"); Serial.print ("Sensor2 minDistance"); Serial.print (distanceMin); Serial.println ("mm"); // Λάβετε μέση απόσταση από τις μετρήσεις averageDistance2 = distanceTotal/10; Serial.print ("Sensor2 averageDistance2"); Serial.print (averageDistance2); Serial.println ("mm"); // Καταργήστε τις υψηλότερες και χαμηλότερες τιμές των μετρήσεων για να αποφύγετε λανθασμένες αναγνώσεις averageDistanceTemp = distanceTotal - (distanceMax+distanceMin); averageDistanceOlympian2 = averageDistanceTemp/8; Serial.print ("Sensor2 averageDistanceOlympian2"); Serial.print (averageDistanceOlympian2); Serial.println ("mm"); // Επαναφορά τιμών θερμοκρασίας distanceTotal = 0; distanceMax = 0; απόστασηMin = 4000; if (averageDistanceOlympian1 + averageDistanceOlympian2 <emptyBoxDistance) {return true? } else {return false? }}

Κύριο σώμα

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

Προειδοποίηση

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

Βήμα 7: Πιθανές βελτιώσεις

Πιθανές βελτιώσεις
Πιθανές βελτιώσεις

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

-Λόγω των ζητημάτων που εντοπίσαμε με την ανίχνευση υπερήχων, μπορούμε να αναζητήσουμε μερικές εναλλακτικές λύσεις για αυτήν τη λειτουργία: KY-008 Laser and Laser Detector (εικόνα), χωρητικούς αισθητήρες.

Βήμα 8: Περιοριστικοί παράγοντες

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

Βαθμονόμηση αισθητήρων υπερήχων

Η γωνία στην οποία τοποθετούνται οι αισθητήρες υπερήχων σε σχέση με το αντικείμενο που πρέπει να ανιχνεύσουν είναι ζωτικής σημασίας για τη σωστή λειτουργία του πρωτοτύπου. Για αυτό το έργο, επιλέχθηκε μια γωνία 12,5 ° ως προς την κανονική για τον προσανατολισμό των αισθητήρων υπερήχων, αλλά η καλύτερη γωνία θα πρέπει να προσδιοριστεί πειραματικά καταγράφοντας τις ενδείξεις της απόστασης χρησιμοποιώντας διάφορα αντικείμενα.

Πηγή ενέργειας

Η απαιτούμενη ισχύς για τον οδηγό βηματικού κινητήρα DRV8825 είναι 12V και μεταξύ 0,2 και 1 Amp. Το arduino μπορεί επίσης να τροφοδοτηθεί με μέγιστη ισχύ 12V και 0,2 Amp χρησιμοποιώντας την είσοδο υποδοχής στο Arduino. Ωστόσο, πρέπει να δοθεί ιδιαίτερη προσοχή εάν χρησιμοποιείτε την ίδια πηγή τροφοδοσίας τόσο για το Arduino όσο και για τον οδηγό βηματικού κινητήρα. Εάν τροφοδοτείται από μια συνηθισμένη πρίζα χρησιμοποιώντας για παράδειγμα τροφοδοτικό μετασχηματιστή 12V/2A AC/DC, θα πρέπει να υπάρχει ρυθμιστής τάσης και δίοδοι στο κύκλωμα πριν από την τροφοδοσία ρεύματος στο πρόγραμμα οδήγησης arduino και stepper.

Homing the Box

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

Πρόγραμμα οδήγησης stepper DRV8825 Tuning

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

Βήμα 9: Μονάδες

Αυτό το έργο έγινε στο πλαίσιο ενός μαθήματος μηχατρονικής κατά τη διάρκεια του ακαδημαϊκού έτους 2018-2019 για το Bruface Master στο Université Libre de Bruxelles (ULB) - Vrije Universiteit Brussel (VUB).

Οι συγγραφείς είναι:

Maxime Decleire

Λίντια Γκόμεζ

Μάρκους Πόντερ

Αντριάνα Πουέντες

Narjisse Snoussi

Ιδιαίτερες ευχαριστίες στον επόπτη μας Albert de Beir που μας βοήθησε σε όλο το έργο επίσης.

Συνιστάται: