Δημιουργήστε αυτό το ρομπότ Line Follower για το Science Fair Project

Δοκιμάστε Το Όργανο Μας Για Την Εξάλειψη Των Προβλημάτων





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

Από τον navneet sajwan



Τι είναι ένα ρομπότ Line Follower

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

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



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

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

Απαιτούμενα στοιχεία:

Arduino uno

Σασί

Δύο κινητήρες με μπαταρία (b.o.) Και συμβατά ελαστικά

Τροχίσκο

Δύο αισθητήρες υπερύθρων

Μονάδα οδηγού κινητήρα

Παροχή ηλεκτρικού ρεύματος

Λογισμικό Arduino IDE

Τώρα, ας ρίξουμε μια ματιά στα συστατικά μας:

ARDUINO ΕΝΑ : Φανταστείτε το ως το θάλαμο ελέγχου του ρομπότ μας. Τώρα, υπάρχουν πάρα πολλοί πίνακες ανάπτυξης, που εξετάστηκαν για αυτό το έργο, αλλά το Arduino UNO δεν ήταν απλά ταιριαστό με τους άλλους. Δεν είναι ότι ο πρωταγωνιστής μας ήταν ανώτερος όσον αφορά τα πολυδιάστατα χαρακτηριστικά του.

Αν συνέβαινε αυτό, το Raspberry Pi και η Intel Edison θα το έκαναν ανάμεσα στα μάτια. Τα πιο συναρπαστικά επιχειρήματα που οδήγησαν στην επιλογή του Arduino UNO δημιουργήθηκαν από το συνδυασμό χαρακτηριστικών, τιμής, μεγέθους και απαίτησης για το έργο.

Μερικοί σχετικοί λόγοι ήταν:

ΜΕΓΕΘΟΣ : Είναι αρκετά μικρό σε σύγκριση με τους πίνακες ανάπτυξης που βασίζονται σε Atmega16 ή Atmega8, καταναλώνει λίγο χώρο στο πλαίσιο, ώστε να έχετε ένα συμπαγές και εύχρηστο bot.

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

Όσο μικρότερο είναι το μέγεθος, γρηγορότερα το ρομπότ και πιο αποτελεσματικές οι στροφές.

ΚΑΛΥΤΕΡΟΣ ΠΡΟΣΤΑΤΕΥΤΙΚΟΣ ΠΙΝΑΚΑΣ : Αναμφίβολα, το Arduino UNO διαθέτει τον καλύτερο συνδυασμό χαρακτηριστικών για πρωτότυπο . Μόλις τα κυκλώματά σας στη θέση τους και το έργο σας λειτουργεί τέλεια, μπορείτε να το αντικαταστήσετε με κάτι μικρότερο και φθηνότερο, όπως το Arduino Nano και το Attiny85 ic.

Για εκείνους, που κάνουν οπαδούς γραμμής για έργα κολλεγίων, προτείνω να αντικαταστήσετε το UNO με το Nano στο τέλος.

ΣΑΣΙ : Είναι το πλαίσιο που κρατά όλα τα εξαρτήματα στη θέση τους. Υπάρχουν μερικά σημεία που πρέπει να λάβετε υπόψη κατά την αγορά ενός νέου πλαισίου,

Πρέπει να είναι ελαφρύ και δυνατό.

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

Επιλέξτε ένα πλαστικό ή ξύλινο πλαίσιο. Όταν τα μεταλλικά κουφώματα έρχονται σε επαφή με το Arduino, συντομεύονται ορισμένες καρφίτσες. Αυτός είναι ένας μεγάλος παράγοντας για να εστιάσετε ενώ ψάχνετε για σασί.

Κρατήστε το σασί σας όσο το δυνατόν χαμηλότερο - αυτό δίνει σταθερότητα στο bot.

ΜΗΧΑΝΕΣ : Χρησιμοποιήστε ελαφριά μπαταρία που λειτουργεί (B.O.) d.c. κινητήρες.

ΚΑΣΤΡΟ ΜΠΑΛΑ : Οι κανονικοί τροχοί παρέχουν μεταφραστική κίνηση κατά μήκος ενός μόνο άξονα, αλλά μια ρόδα είναι σχεδιασμένη να κινείται κατά μήκος οποιασδήποτε κατεύθυνσης στην επιφάνεια. Μας δίνει τρεις τροχούς.

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

ΑΙΣΘΗΤΗΡΕΣ : Είναι μια συσκευή που ανιχνεύει ή μετρά οποιαδήποτε φυσική παράμετρο του περιβάλλοντος μας και τη μετατρέπει σε ηλεκτρικά σήματα. Σε αυτήν την περίπτωση η παράμετρος που ανιχνεύεται είναι υπέρυθρες ακτίνες.

Οι αισθητήρες είναι εξαιρετικά θεμελιώδεις για κάθε ρομπότ. Λοιπόν, εάν το arduino είναι ο εγκέφαλος του bot μας, οι αισθητήρες θα μπορούσαν επίσης να παίξουν το ρόλο των ματιών. Εδώ είναι μερικά πράγματα για τους αισθητήρες:

Οι αισθητήρες πρέπει να είναι προσανατολισμένοι με τρόπο που οδηγούν (ες) στο έδαφος.

Θα πρέπει να τοποθετηθεί στο μπροστινό άκρο του bot σας.

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

ΠΙΝΑΚΑΣ ΟΔΗΓΩΝ ΜΟΤΟΡ : Οι οδηγοί κινητήρα είναι κυκλώματα buffer που λαμβάνουν σήματα χαμηλής τάσης για να ενεργοποιήσουν τους κινητήρες που απαιτούν υψηλότερη τάση.

Στην περίπτωσή μας, το Arduino μπορεί να παρέχει επαρκή τάση για την κίνηση των κινητήρων, αλλά δεν μπορεί να παρέχει άφθονο ρεύμα. Οι ακίδες 5v και GND του Arduino UNO έχουν τρέχουσα βαθμολογία 200mA, ενώ οποιαδήποτε ακίδα GPIO έχει βαθμολογία 40 mA. Αυτό είναι πολύ χαμηλότερο από τους κινητήρες ρεύματος εκκίνησης και στάσης που χρειαζόμαστε.

Υπάρχουν δύο οδηγοί κινητήρα που προτιμώ για αυτό το έργο: L298N και L293D. Και οι δύο είναι εξίσου κατάλληλοι για την κατασκευή αυτού του έργου.

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

ΠΑΡΟΧΗ ΗΛΕΚΤΡΙΚΟΥ ΡΕΥΜΑΤΟΣ :

Χρησιμοποιήστε έναν προσαρμογέα 12 v ή μια μπαταρία (όχι μεγαλύτερη από 12 volt).

Τοποθέτηση εξαρτημάτων (από εμπρός έως πίσω άκρο):

Αισθητήρες στο κεφάλι του bot σας.

Τροχός στη μέση.

Κινητήρες και ελαστικά σε μία γραμμή στο πίσω μέρος.

Συνδέσεις:

ΑΙΣΘΗΤΗΡΕΣ στο ARDUINO :

Συνδέστε τον πείρο αισθητήρα στον πείρο arduino όπως φαίνεται,

Καρφίτσα αισθητήραΚαρφίτσα Arduino
VCC (5v)5V
GND (G)GND
ΑΡΙΣΤΕΡΑ ΑΙΣΘΗΤΗΡΑκαρφίτσα 6
ΔΕΞΙΟ ΑΙΣΘΗΤΗΡΑ (ΑΠΟ)καρφίτσα 7

Σημείωση: Για να ελέγξετε εάν οι αισθητήρες σας είναι ενεργοποιημένοι, στρέψτε τη φωτογραφική μηχανή του κινητού σας τηλεφώνου στο LED πομπού IR. Θα δείτε την οθόνη να λάμπει στην οθόνη που δεν είναι ορατή από τα γυμνά μάτια μας. Ορισμένες σύγχρονες κάμερες κινητού τηλεφώνου διαθέτουν υπέρυθρο φίλτρο. Λοιπόν, λάβετε υπόψη αυτό.

ΟΔΗΓΟΣ MOTOR to MOTOR:

Κάθε κινητήρας έχει δύο ακροδέκτες που πρέπει να συνδεθούν με τον οδηγό κινητήρα. Ποτέ μην προσπαθείτε να τα συνδέσετε απευθείας στο arduino. Κοιτάζοντας από το πίσω μέρος του bot σας, με κινητήρες κοντά σας και αισθητήρες μακριά, συνδέστε τα ως εξής:

ΜΗΧΑΝΗL298ΝL293D
ΑΡΙΣΤΕΡΟ ΚΙΝΗΤΗΡΑPIN 1 ΚΑΙ 2PIN 7 ΚΑΙ 8
ΔΙΚΑΙΩΜΑ ΜΟΤΟΡPIN 13 ΚΑΙ 14PIN 9 ΚΑΙ 10

MOTOR DRIVER στο ARDUINO UNO:

ΟΔΗΓΟΣ MOTOR (L298N)ARDUINO ΕΝΑ
PIN 4ΚΡΑΣΙ
PIN 5GND
PIN 65V
PIN 8 & PIN 9PIN 3 & PIN 9
PIN 10 & PIN 11PIN 5 & PIN 10
PIN 7 & PIN 125V
ΟΔΗΓΟΣ MOTOR (L293D)ARDUINO ΕΝΑ
PIN 3ΚΡΑΣΙ
PIN 2GND
PIN 15V
PIN 5 ΚΑΙ PIN 6PIN 3 & PIN 9
PIN 11 ΚΑΙ PIN 12PIN 5 & PIN 10
PIN 4 ΚΑΙ PIN 55V

ΣΗΜΕΙΩΣΗ: Οι ακίδες 8 και 9 του l298n χρησιμοποιούνται για τον έλεγχο του κινητήρα που είναι συνδεδεμένος στα 1 και 2. Και, 10 και 11 μοτέρ ελέγχου που είναι συνδεδεμένοι στις ακίδες 13 και 14. Ομοίως, οι ακίδες 5 και 6 του l293d χρησιμοποιούνται για τον έλεγχο του κινητήρα που είναι συνδεδεμένος με 7 και 8. Και, 12 και 11 μοτέρ ελέγχου συνδεδεμένο στις ακίδες 9 και 10.

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

Πώς λειτουργεί ένας υπέρυθρος αισθητήρας:

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

Όπως μπορούμε να δούμε, έχει δύο LED - LED εκπομπής IR και μια φωτοδίοδο. Λειτουργούν ως ζεύγος πομπού-δέκτη. Όταν ένα εμπόδιο έρχεται μπροστά από τις ακτίνες του πομπού, ανακλάται πίσω και αναχαιτίζεται από τον δέκτη.

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

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

Πώς λειτουργεί ένα ρομπότ ακόλουθων γραμμών:

ΓΡΑΜΜΗ ΑΚΟΛΟΥΘΗΣ ΓΡΑΜΜΟΥ

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

Είναι προγραμματισμένο να περιστρέφει και τους δύο κινητήρες έτσι ώστε το bot να κινείται προς τα εμπρός.

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

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

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

ΔΙΑΓΡΑΜΜΑ ΚΥΚΛΩΜΑΤΟΣ:

ΛΕΠΤΟΜΕΡΕΙΕΣ ΚΑΛΩΔΙΩΣΗΣ:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΕΝΝΟΙΕΣ:

Έχοντας ολοκληρώσει το τμήμα κυκλώματος, θα προχωρήσουμε τώρα στο τμήμα προγραμματισμού. Σε αυτήν την ενότητα, θα κατανοήσουμε το πρόγραμμα που ελέγχει το ρομπότ μας. Εδώ είναι ο κωδικός: / *
Created and tested by Navneet Singh Sajwan
*Based on digital output of two sensors
*Speed control added
*/
int left, right
int value=250
void setup()
{
pinMode(6,INPUT)//left sensor
pinMode(7,INPUT)//right sensor
pinMode(9,OUTPUT)//left motor
pinMode(3,OUTPUT)//left motor
pinMode(10,OUTPUT)//right motor
pinMode(5,OUTPUT)//right motor
// Serial.begin(9600)
}
void read_sensors()
{
left=digitalRead(6)
right= digitalRead(7)
}
void move_forward()
{
analogWrite(9,value)//3,9 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_left()
{
digitalWrite(9,LOW)//9,3 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_right()
{
analogWrite(9,value)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void halt()
{
digitalWrite(9,LOW)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void print_readings()
{
Serial.print(' leftsensor')
Serial.print(' ')
Serial.print(left)
Serial.print('rightsensor')
Serial.print(' ')
Serial.print(right)
Serial.println()
}
void loop()
{
read_sensors()
while((left==0)&&(right==1)) // left sensor is over black line
{
turn_left()
read_sensors()
print_readings()
}
while((left==1)&&(right==0)) // right sensor is over black line
{
turn_right()
read_sensors()
print_readings()
}
while((left==0)&&(right==0)) // both sensors over the back line
{
halt()
read_sensors()
print_readings()
}
while((left==1)&&(right==1))// no sensor over black line
{
move_forward()
read_sensors()
print_readings()
}
}

Περιγραφή των λειτουργιών που χρησιμοποιήθηκαν:

read_sensors (): Παίρνει τις μετρήσεις και των δύο αισθητήρων και τις αποθηκεύει στις μεταβλητές αριστερά και δεξιά.

move_forward (): Όταν το arduino εκτελεί αυτήν τη λειτουργία, και οι δύο κινητήρες κινούνται προς τα εμπρός.

turn_left (): Ο αριστερός κινητήρας σταματά. Ο Bot στρίβει αριστερά.

turn_right (): Ο δεξί κινητήρας σταματά. Ο Bot στρίβει δεξιά.

halt (): Bot σταματά.

print_readings (): Εμφανίζει τις ενδείξεις των αισθητήρων στη σειριακή οθόνη. Για αυτό θα πρέπει να αποσυνδέσετε το 'Serial.begin (9600)' σε άκυρη ρύθμιση.

ΑΝΑΓΝΩΣΗ ΑΙΣΘΗΤΗΡΑ:

ΑΙΣΘΗΤΗΡΑ ΑΝΩ ΓΡΑΜΜΗΣΑΝΑΓΝΩΣΗ ΑΙΣΘΗΤΗΡΑ
ΑΡΙΣΤΕΡΑΣΩΣΤΑ
ΑΡΙΣΤΕΡΟ ΑΙΣΘΗΤΗΡΑ01
ΔΕΞΙΟ ΑΙΣΘΗΤΗΡΑ10
ΚΑΝΕΝΑΣ11
ΚΑΙ ΤΑ ΔΥΟ00

ΕΛΕΓΧΟΣ ΤΑΧΥΤΗΤΑΣ:

Μερικές φορές η ταχύτητα των κινητήρων είναι τόσο υψηλή που πριν το arduino ερμηνεύσει τα σήματα του αισθητήρα, το ρομπότ χάνει τη γραμμή. Με λίγα λόγια, το bot δεν ακολουθεί τη γραμμή λόγω της υψηλής ταχύτητας και συνεχίζει να χάνει τη γραμμή παρόλο που ο αλγόριθμος είναι σωστός.

Για την αποφυγή τέτοιων περιστάσεων, μειώνουμε την ταχύτητα του bot χρησιμοποιώντας την τεχνική PWM. Στον παραπάνω κώδικα υπάρχει μια μεταβλητή που ονομάζεται τιμή.

Απλώς μειώστε την αριθμητική τιμή στη συνάρτηση για να μειώσετε την ταχύτητα. Στο Arduino UNO μπορείτε να έχετε τιμές pwm μόνο από 0 έως 255.

analogWrite (ακίδα, τιμή)

0<= value <=255

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




Προηγούμενο: Ρομπότ αυτοκινήτου ελεγχόμενο από κινητό τηλέφωνο που χρησιμοποιεί τη μονάδα DTMF Επόμενο: Διακόπτης ενεργοποίησης / απενεργοποίησης εναλλασσόμενου ρεύματος ελεγχόμενου με κωδικό πρόσβασης