- Απαιτούμενα υλικά:
- Έννοιες του Line Follower
- Διάγραμμα κυκλώματος και επεξήγηση:
- Προγραμματισμός μικροελεγκτή PIC:
- PIC Line Follower σε δράση:
Ένα ρομπότ Line Follower είναι ένα απλό αλλά συναρπαστικό ρομπότ για τους περισσότερους μαθητές / χομπίστες. Σε αυτό το σεμινάριο θα μάθουμε πώς λειτουργεί ένα ρομπότ Line Follower και πώς μπορούμε να δημιουργήσουμε ένα χρησιμοποιώντας το PIC Microcontroller PIC16F877A. Το PIC16F877A είναι ένα MCU πολλαπλών χρήσεων 40 ακίδων από το Microchip, έχουμε χρησιμοποιήσει αυτό το IC στην πλήρη σειρά μαθημάτων PIC. Εάν είστε νέοι, εδώ ίσως θέλετε να ρίξετε μια ματιά σε αυτά τα μαθήματα PIC για να μάθετε τα βασικά αυτού του IC και πώς να ανεβάσετε προγράμματα στον μικροελεγκτή. Δεδομένου ότι έχουμε ήδη καλύψει αυτές τις πληροφορίες στα σεμινάριά μας, θα τα παραλείψουμε στην παρακάτω εξήγηση.
Αν σας ενδιαφέρει η ρομποτική, τότε θα πρέπει να είστε πολύ εξοικειωμένοι με το όνομα " Line Follower Robot ". Αυτό το ρομπότ μπορεί να ακολουθήσει μια γραμμή, χρησιμοποιώντας ζεύγος αισθητήρων και κινητήρων. Αυτό το ρομπότ σας δίνει χώρο για άπειρη ανάπτυξη και ρομπότ όπως το Kiva (Amazon warehouse robot) είναι ένα παράδειγμα για αυτό. Μπορείτε επίσης να ελέγξετε τα άλλα ρομπότ Line Follower:
- Line Follower Robot με χρήση μικροελεγκτή 8051
- Line Follower Robot χρησιμοποιώντας το Arduino
- Line Follower Robot χρησιμοποιώντας Raspberry Pi
Απαιτούμενα υλικά:
- PIC16F877Α
- Αισθητήρας υπερύθρων (2Nos)
- DC Gear Motor (2Nos)
- Οδηγός κινητήρα L293D
- Chaises (Μπορείτε επίσης να δημιουργήσετε τα δικά σας χρησιμοποιώντας χαρτόνια)
- Τράπεζα ισχύος (Οποιαδήποτε διαθέσιμη πηγή ενέργειας)
Έννοιες του Line Follower
Το Line Follower Robot είναι σε θέση να παρακολουθεί μια γραμμή με τη βοήθεια ενός αισθητήρα IR. Αυτός ο αισθητήρας διαθέτει πομπό IR και δέκτη υπερύθρων. Ο πομπός IR (IR LED) μεταδίδει το φως και ο δέκτης (φωτοδίοδος) περιμένει να επιστρέψει το εκπεμπόμενο φως. Ένα φως υπερύθρων θα επιστρέψει μόνο εάν ανακλάται από μια επιφάνεια. Ενώ, όλες οι επιφάνειες δεν αντανακλούν ένα υπεριώδες φως, μόνο η λευκή επιφάνεια μπορεί να τις αντανακλά εντελώς και η μαύρη επιφάνεια θα τις παρατηρήσει πλήρως όπως φαίνεται στο παρακάτω σχήμα. Μάθετε περισσότερα για τη μονάδα αισθητήρα υπερύθρων εδώ.
Τώρα θα χρησιμοποιήσουμε δύο αισθητήρες υπερύθρων για να ελέγξουμε εάν το ρομπότ βρίσκεται σε τροχιά με τη γραμμή και δύο κινητήρες για να διορθώσουμε το ρομπότ εάν κινείται έξω από την πίστα. Αυτοί οι κινητήρες απαιτούν υψηλό ρεύμα και πρέπει να είναι αμφίδρομοι. Ως εκ τούτου, χρησιμοποιούμε μια μονάδα οδήγησης κινητήρα όπως το L293D. Θα χρειαστούμε επίσης έναν μικροελεγκτή όπως το PIC για να καθοδηγήσουμε τους κινητήρες με βάση τις τιμές από τον αισθητήρα υπερύθρων. Ένα απλοποιημένο μπλοκ διάγραμμα του ίδιου φαίνεται παρακάτω.
Αυτοί οι δύο αισθητήρες υπερύθρων θα τοποθετηθούν ένας σε κάθε πλευρά της γραμμής. Εάν κανένας από τους αισθητήρες δεν ανιχνεύει μια μαύρη γραμμή τους, ο μικροελεγκτής PIC δίνει εντολή στους κινητήρες να κινηθούν προς τα εμπρός όπως φαίνεται παρακάτω
Εάν ο αριστερός αισθητήρας έρθει σε μαύρη γραμμή, τότε ο μικροελεγκτής δίνει εντολή στο ρομπότ να στρίψει αριστερά περιστρέφοντας μόνο τον δεξιό τροχό.
Εάν ο σωστός αισθητήρας έρθει σε μαύρη γραμμή, τότε ο μικροελεγκτής δίνει εντολή στο ρομπότ να στρίψει δεξιά περιστρέφοντας τον αριστερό τροχό μόνο.
Εάν και οι δύο αισθητήρες έρχονται σε μαύρη γραμμή, το ρομπότ σταματά.
Με αυτόν τον τρόπο, το ρομπότ θα μπορεί να ακολουθεί τη γραμμή χωρίς να βγαίνει έξω από την πίστα. Τώρα ας δούμε πώς μοιάζουν το κύκλωμα και ο Κώδικας.
Διάγραμμα κυκλώματος και επεξήγηση:
Το πλήρες διάγραμμα κυκλώματος για αυτό το ρομπότ Line Follower βασίζεται σε PIC φαίνεται παρακάτω
Το κύκλωμα χρησιμοποιεί δύο αισθητήρες IR και ένα ζεύγος κινητήρων μετάδοσης DC μαζί με μια μονάδα οδηγού κινητήρα όπως φαίνεται παραπάνω. Η μονάδα προγράμματος οδήγησης κινητήρα που χρησιμοποιείται σε αυτό το έργο είναι L293D, θα χρειαζόμαστε ένα πρόγραμμα οδήγησης κινητήρα, επειδή ο πείρος εξόδου του μικροελεγκτή PIC δεν μπορεί να παράγει αρκετό ρεύμα για να κινηθούν οι κινητήρες. Αυτή η μονάδα θα τροφοδοτείται απευθείας από την πηγή ισχύος (5V) όπως φαίνεται στο κύκλωμα. Η μονάδα διαθέτει τέσσερις ακίδες (δύο για κάθε κινητήρα) που συνδέονται στο PIC για τον έλεγχο της κατεύθυνσης των κινητήρων. Έχουμε επίσης δύο αισθητήρες υπερύθρων που λειτουργούν ως είσοδος στον μικροελεγκτή PIC. Αυτοί οι αισθητήρες θα πάνε ψηλά (1) εάν είναι πάνω από μια λευκή επιφάνεια και θα πέσουν χαμηλοί (0) όταν βρίσκονται πάνω σε μια μαύρη επιφάνεια. Οι πλήρεις συνδέσεις ακίδων απεικονίζονται στον παρακάτω πίνακα.
ΝΟ |
Συνδέθηκε από |
Συνδεδεμένος με |
1 |
Αισθητήρας IR Αριστερός πείρος |
RD2 (ακίδα 21) |
2 |
Αισθητήρας υπερύθρων ακροδέκτης |
RD3 (ακίδα 22) |
4 |
Κινητήρας 1 κανάλι Α καρφίτσα |
RC4 (ακίδα 23) |
5 |
Ακροδέκτης κινητήρα 1 καναλιού Β |
RC5 (ακίδα 25) |
6 |
Κινητήρας 2 κανάλι Α καρφίτσα |
RC6 (ακίδα 26) |
7 |
Κινητήρας 2 ακίδων Β |
RC7 (ακίδα 27) |
Στο πραγματικό υλικό έχω χρησιμοποιήσει μια τράπεζα τροφοδοσίας που θα δώσει έξοδο + 5V απευθείας μέσω της θύρας USB. Ως εκ τούτου, έχω παρακάμψει τον ρυθμιστή τάσης 7805 και ενεργοποίησα το PIC, τους αισθητήρες και τους κινητήρες χρησιμοποιώντας το ίδιο. Μπορείτε να κάνετε το ίδιο με τη χρήση μιας μπαταρίας 12V μαζί με έναν ρυθμιστή όπως φαίνεται στο κύκλωμα.
Προγραμματισμός μικροελεγκτή PIC:
Μόλις είστε έτοιμοι με το υλικό σας, είναι καιρός να ξεκινήσετε τον προγραμματισμό. Το πλήρες πρόγραμμα αυτού του PIC Line Follower Robot Project δίνεται στο τέλος αυτής της σελίδας. Ωστόσο, τα σημαντικά κομμάτια εξηγούνται παρακάτω.
Αρχικοποιήστε τις καρφίτσες I / O με τις ακόλουθες γραμμές Οι 2 ακίδες αισθητήρα IR λειτουργούν ως είσοδοι και οι τέσσερις ακίδες κινητήρα λειτουργούν ως ακίδες εξόδου.
TRISD2 = 1; TRISD3 = 1; // Μπανιέρα οι ακίδες αισθητήρα IR δηλώνονται ως είσοδος TRISC4 = 0; TRISC5 = 0; // Κινητήρας 1 ακίδες που δηλώνονται ως έξοδο TRISC6 = 0 TRISC7 = 0; // Κινητήρας 2 ακίδες που δηλώνονται ως έξοδος
Τώρα, πρέπει να διαβάσουμε την κατάσταση του αισθητήρα IR και να ελέγξουμε ανάλογα τον κινητήρα. Για παράδειγμα, εάν και οι δύο αισθητήρες είναι υψηλοί (δεν εμπίπτει στη μαύρη γραμμή) τότε προχωράμε και τους δύο κινητήρες όπως φαίνεται στο παρακάτω πρόγραμμα.
if (RD2 == 1 && RD3 == 1) // Και οι δύο αισθητήρες δεν υπερβαίνουν τη γραμμή {RC4 = 0; RC5 = 1; // Κινητήρας 1 προς τα εμπρός RC6 = 1; RC7 = 0; // Κινητήρας 2 προς τα εμπρός}
Εάν ο αριστερός αισθητήρας έρθει πάνω από τη μαύρη γραμμή τότε κάνουμε μια δεξιά στροφή κρατώντας τον κινητήρα 1 ακίνητο και περιστρέφοντας τον κινητήρα 2 προς τα εμπρός. Αυτός ο τύπος στροφής καλείται ως διαφορική στροφή.
αλλιώς εάν (RD2 == 0 && RD3 == 1) // Ο αριστερός αισθητήρας είναι πάνω από τη μαύρη γραμμή {RC4 = 1; RC5 = 1; // Κινητήρας 1 στοπ RC6 = 1 RC7 = 0; // Κινητήρας 2 προς τα εμπρός}
Παρομοίως, εάν ο σωστός αισθητήρας έρθει πάνω από τη μαύρη γραμμή, τότε το bot φτιάχνεται για να στρίψει αριστερά κρατώντας τον δεύτερο κινητήρα ακίνητο και περιστρέφοντας τον πρώτο κινητήρα μόνος προς τα εμπρός όπως φαίνεται παρακάτω.
αλλιώς εάν (RD2 == 1 && RD3 == 0) // Ο δεξιός αισθητήρας είναι πάνω από τη μαύρη γραμμή {RC4 = 0; RC5 = 1; // Κινητήρας 1 προς τα εμπρός RC6 = 1; RC7 = 1; // Μηχανή 2 στάση}
Τέλος, αν και οι δύο αισθητήρες έρχονται κάτω από μια μαύρη γραμμή, τότε ήρθε η ώρα να σταματήσει το bot. Αυτό μπορεί να γίνει κάνοντας ψηλά όλους τους πείρους και των δύο κινητήρων. Ο κώδικας για να κάνετε το ίδιο φαίνεται παρακάτω
αλλιώς // Και οι δύο αισθητήρες πάνω από τη μαύρη γραμμή {RC4 = 1; RC5 = 1; // Μοτέρ 1 στάση RC6 = 1; RC7 = 1; // Μηχανή 2 στάση}
Δηλαδή, το πρόγραμμα είναι έτοιμο και μπορεί να φορτωθεί στο PIC χρησιμοποιώντας οποιονδήποτε προγραμματιστή όπως το PicKit.
PIC Line Follower σε δράση:
Μόλις το υλικό και ο κωδικός είναι έτοιμοι, ήρθε η ώρα για κάποια ενέργεια. Όπως ειπώθηκε νωρίτερα, έχω χρησιμοποιήσει ένα Power Bank για να τροφοδοτήσω το bot, οπότε το μόνο που πρέπει να κάνω είναι απλά να συνδέσω την τράπεζα τροφοδοσίας με το bot που έχει ρυθμίσει το υλικό και έχει ήδη ανεβάσει τον κώδικα.
Ο πίνακας PIC Perf δημιουργήθηκε για τη σειρά μαθημάτων PIC, στην οποία μάθαμε πώς να χρησιμοποιούμε τον μικροελεγκτή PIC. Ίσως θελήσετε να επιστρέψετε σε αυτά τα μαθήματα PIC Microcontroller χρησιμοποιώντας MPLABX και XC8 εάν δεν ξέρετε πώς να κάψετε ένα πρόγραμμα χρησιμοποιώντας το Pickit 3, καθώς θα παραλείψω όλες αυτές τις βασικές πληροφορίες.
Τώρα, απλώς ξεκινήστε το bot πάνω από μια μαύρη γραμμή και θα πρέπει να το παρακολουθήσετε ακολουθώντας τη γραμμή.
Ίσως να αντιμετωπίσετε κάποιες δυσκολίες στην αρχή, σε αυτήν την περίπτωση διαβάστε περαιτέρω. Εάν οι τροχοί περιστρέφονται αντίθετα, απλά εναλλάξτε την πολικότητα του κινητήρα ποιος ο τροχός περιστρέφεται σε αντίθετη κατεύθυνση Εάν το bot αποκλίνει από τη γραμμή, αλλάξτε τον αισθητήρα υπερύθρων και όλα πρέπει να είναι καλά.
Η πλήρης λειτουργία του bot μπορεί να βρεθεί στο παρακάτω βίντεο. Ελπίζω να σας αρέσει το έργο και να απολαύσατε κάτι παρόμοιο Αν έχετε πρόβλημα να το κάνετε αυτό, μπορείτε να τα δημοσιεύσετε στην παρακάτω ενότητα σχολίων για να το επιλύσετε ή να χρησιμοποιήσετε τα φόρουμ μας για να συζητήσετε τεχνικό περιεχόμενο.