- Έννοια του ρομπότ Line Follower
- Απαιτούμενα στοιχεία
- Διάγραμμα κυκλώματος
- Προγραμματισμός Atmega16 για ρομπότ Line Follower
Εδώ θα κατασκευάσουμε ένα ακόμη έργο με τον μικροελεγκτή AVR Atmega16. Εάν είστε νέοι στους μικροελεγκτές AVR τότε μπορείτε να ανατρέξετε σε προηγούμενα έργα και σεμινάρια AVR.
Η κατασκευή ενός ρομπότ είναι πάντα μια συγκίνηση για όλους τους λάτρεις των ηλεκτρονικών ειδών. Και αυτή η συγκίνηση μπορεί να μεγιστοποιηθεί εάν το ρομπότ μπορεί να κάνει αυτόματα κάποια πράγματα χωρίς εξωτερικές οδηγίες. Ένα από τα πιο συχνά κατασκευασμένα ρομπότ από αρχάριους ηλεκτρονικούς είναι το Line Follower Robot. Όπως υποδηλώνει το όνομα, το ρομπότ θα ακολουθήσει τη γραμμή που σχεδιάστηκε στην επιφάνεια. Η γραμμή δεν χρειάζεται να είναι ευθεία. Επίσης, οι γραμμές μπορούν να είναι οποιουδήποτε χρώματος.
Δημιουργήσαμε προηγουμένως έργα Line Follower Robot χρησιμοποιώντας διαφορετικούς ελεγκτές:
- Line Follower Robot με χρήση μικροελεγκτή 8051
- Line Follower Robot χρησιμοποιώντας PIC Microcontroller
- Line Follower Robot χρησιμοποιώντας το Arduino
- Line Follower Robot χρησιμοποιώντας Raspberry Pi
- Line Follower Robot Χρησιμοποιώντας το MSP430 Launchpad
Σήμερα θα χρησιμοποιήσουμε τον μικροελεγκτή AVR για να δημιουργήσουμε ένα ρομπότ Line follower.
Κυρίως οι αισθητήρες IR χρησιμοποιούνται για την ανίχνευση γραμμών. Οι αισθητήρες υπερύθρων είναι καλοί στην ανίχνευση λευκών ή μαύρων επιφανειών. Παρόλο που μπορείτε να χρησιμοποιήσετε άλλους εξελιγμένους αισθητήρες που θα μπορούν να ανιχνεύουν όλα τα χρώματα και να κάνουν ένα ρομπότ που μπορεί να ακολουθεί όλες τις χρωματικές γραμμές. Το ρομπότ θα πρέπει να μπορεί να ανιχνεύει τη γραμμή ακόμη και αν η διαδρομή αλλάξει αλλάζοντας τη γωνία και συνεχίζει να ακολουθεί τη γραμμή. Επίσης, θα πρέπει να σταματήσει οπουδήποτε έρχεται η γραμμή στάσης.
Τα ρομπότ line follower χρησιμοποιούνται εκτενώς σήμερα σε μια βιομηχανική βιομηχανία, ιατρικές, οικιακές εφαρμογές και αποθήκες εμπορευμάτων. Τα ρομπότ δεν περιορίζονται μόνο σε αυτές τις εφαρμογές και μπορούν να επεκτείνουν τις εφαρμογές του σε πολλές μελλοντικές εφαρμογές.
Έννοια του ρομπότ Line Follower
Οι αισθητήρες υπερύθρων είναι βασικοί παράγοντες σε αυτό το έργο. Οι αισθητήρες υπερύθρων τοποθετούνται στην μπροστινή πλευρά του ρομπότ για να παρακολουθούν τη χαραγμένη μαύρη γραμμή και την επιφάνεια. Το ρομπότ τοποθετείται ανάμεσα στη γραμμή και με τη βοήθεια αισθητήρων IR το ρομπότ παρακολουθεί τη γραμμή. Οι αισθητήρες υπερύθρων ανατροφοδοτούν την ανάγνωση στον μικροελεγκτή και με τη βοήθεια της ανάγνωσης υπερύθρων, ο μικροελεγκτής κινεί τους κινητήρες αριστερή ή δεξιά πλευρά και φέρνει ξανά το ρομπότ στο μονοπάτι.
Το Line Follower Robot είναι σε θέση να παρακολουθεί μια γραμμή με τη βοήθεια ενός αισθητήρα IR. Αυτός ο αισθητήρας διαθέτει πομπό IR και δέκτη υπερύθρων. Ο πομπός IR (IR LED) μεταδίδει το φως και ο δέκτης (φωτοδίοδος) περιμένει να επιστρέψει το εκπεμπόμενο φως. Ένα φως υπερύθρων θα επιστρέψει μόνο εάν ανακλάται από μια επιφάνεια. Ενώ, όλες οι επιφάνειες δεν αντανακλούν ένα υπεριώδες φως, μόνο η λευκή επιφάνεια μπορεί να τις αντανακλά εντελώς και η μαύρη επιφάνεια θα τις παρατηρήσει πλήρως όπως φαίνεται στο παρακάτω σχήμα. Μάθετε περισσότερα για τη μονάδα αισθητήρα υπερύθρων εδώ.
Τώρα θα χρησιμοποιήσουμε δύο αισθητήρες υπερύθρων για να ελέγξουμε εάν το ρομπότ βρίσκεται σε τροχιά με τη γραμμή και δύο κινητήρες για να διορθώσουμε το ρομπότ εάν κινείται έξω από την πίστα. Αυτοί οι κινητήρες απαιτούν υψηλό ρεύμα και πρέπει να είναι αμφίδρομοι. Ως εκ τούτου, χρησιμοποιούμε μια μονάδα οδήγησης κινητήρα όπως το L293D. Θα χρειαστούμε επίσης έναν μικροελεγκτή όπως το ATmega16 για να καθοδηγήσουμε τους κινητήρες με βάση τις τιμές από τον αισθητήρα υπερύθρων. Ένα απλοποιημένο μπλοκ διάγραμμα του ίδιου φαίνεται παρακάτω.
Αυτοί οι δύο αισθητήρες υπερύθρων θα τοποθετηθούν ένας σε κάθε πλευρά της γραμμής. Εάν κανένας από τους αισθητήρες δεν ανιχνεύει μια μαύρη γραμμή, τότε ο μικροελεγκτής AVR δίνει εντολή στους κινητήρες να κινηθούν προς τα εμπρός όπως φαίνεται παρακάτω
Εάν ο αριστερός αισθητήρας έρθει σε μαύρη γραμμή, τότε ο μικροελεγκτής δίνει εντολή στο ρομπότ να στρίψει αριστερά περιστρέφοντας μόνο τον δεξιό τροχό.
Εάν ο σωστός αισθητήρας έρθει σε μαύρη γραμμή, τότε ο μικροελεγκτής δίνει εντολή στο ρομπότ να στρίψει δεξιά περιστρέφοντας τον αριστερό τροχό μόνο.
Εάν και οι δύο αισθητήρες έρχονται σε μαύρη γραμμή, το ρομπότ σταματά.
Με αυτόν τον τρόπο, το ρομπότ θα μπορεί να ακολουθεί τη γραμμή χωρίς να βγαίνει έξω από την πίστα. Τώρα ας δούμε πώς μοιάζουν το κύκλωμα και ο Κώδικας.
Απαιτούμενα στοιχεία
- DC Gear Motors (2 μονάδες)
- Μονάδα αισθητήρα IR (2 μονάδες)
- Ενότητα L293D
- Ασύρματη πηγή ενέργειας (π.χ. Μπαταρία, Power bank)
- Robot Chaises
- Atmega16 Μικροελεγκτής IC
- 16Mhz Crystal Oscillator
- Δύο πυκνωτές 100nF
- Δύο πυκνωτές 22pF
- Πλήκτρο
- Καλώδια αλτών
- Ψωμί
- USBASP v2.0 (Προγραμματισμός Atmega16)
Διάγραμμα κυκλώματος
Συνδέστε όλα τα στοιχεία όπως φαίνεται παρακάτω στο διάγραμμα κυκλώματος
Προγραμματισμός Atmega16 για ρομπότ Line Follower
Εδώ το Atmega16 προγραμματίζεται χρησιμοποιώντας USBASP και Atmel Studio7.0. Εάν δεν γνωρίζετε ότι πώς μπορεί να προγραμματιστεί το Atmega16 χρησιμοποιώντας USBASP, επισκεφθείτε τον σύνδεσμο. Το πλήρες πρόγραμμα δίνεται στο τέλος του έργου, απλώς ανεβάστε το πρόγραμμα στο Atmega16 χρησιμοποιώντας τον προγραμματιστή JTAG και το Atmel Studio 7.0 όπως εξηγείται στο προηγούμενο σεμινάριο.
Προσπαθήσαμε να διατηρήσουμε τον κώδικα όσο πιο σύντομο και απλό μπορούμε. Χρησιμοποιούμε λοιπόν καταχωρητές μακροεντολών και ειδικών λειτουργιών σε αυτόν τον κώδικα.
αν (bit_is_clear (PINA , leftSen)) { // ελέγξτε αν ο αριστερός αισθητήρας είναι ΑΝΕΝΕΡΓΟΣ
Αυτή η δήλωση ελέγχει εάν το PA0 όπου είναι συνδεδεμένος ο αριστερός αισθητήρας είναι χαμηλός ή υψηλός.
Εάν θέλετε να μάθετε περισσότερα σχετικά με αυτήν τη δήλωση και άλλες μακροεντολές, μεταβείτε σε αυτόν τον σύνδεσμο
Υπάρχουν τέσσερις προϋποθέσεις που ακολουθούμε για να διαβάσετε τους αισθητήρες υπερύθρων. Οι αισθητήρες υπερύθρων ονομάζονται σύμφωνα με την τοποθέτησή τους στο μπροστινό μέρος του ρομπότ. Το αριστερό IR είναι αριστερός αισθητήρας και το δεξί IR είναι δεξί αισθητήρας. Οι ακόλουθες προϋποθέσεις θα αποφασίσουν την κίνηση του ρομπότ.
Έχουμε γράψει τον κωδικό σύμφωνα με τους παραπάνω όρους. Η μόνη αλλαγή είναι ότι χρησιμοποιούμε μόνο δύο ακίδες εισόδου του L293D για να οδηγήσουμε και τους δύο κινητήρες.
Ο πλήρης κώδικας με ένα βίντεο επίδειξης δίνεται παρακάτω.