- Απαιτούμενα στοιχεία
- Πώς να φτιάξετε το σασί για ρομποτικό βραχίονα ταξινόμησης χρωμάτων
- Αισθητήρας χρώματος TCS3200
- Διάγραμμα κυκλώματος διαλογής χρωμάτων Arduino
- Προγραμματισμός του Arduino Uno για ταξινόμηση πολύχρωμων μπαλών
Όπως υποδηλώνει το όνομα, η ταξινόμηση χρωμάτων είναι απλώς να ταξινομήσετε τα πράγματα σύμφωνα με το χρώμα τους. Μπορεί να γίνει εύκολα βλέποντάς το, αλλά όταν υπάρχουν πάρα πολλά πράγματα για ταξινόμηση και είναι μια επαναλαμβανόμενη εργασία, τότε οι αυτόματες μηχανές ταξινόμησης χρωμάτων είναι πολύ χρήσιμες. Αυτά τα μηχανήματα έχουν αισθητήρα χρώματος για να ανιχνεύσουν το χρώμα οποιωνδήποτε αντικειμένων και αφού ανιχνεύσουν τον χρωματικό σερβοκινητήρα πιάστε το πράγμα και τοποθετήστε το στο αντίστοιχο κουτί. Μπορούν να χρησιμοποιηθούν σε διαφορετικές περιοχές εφαρμογής όπου η αναγνώριση χρώματος, η διάκριση χρώματος και η ταξινόμηση χρωμάτων είναι σημαντικά. Ορισμένες από τις περιοχές εφαρμογής περιλαμβάνουν τη βιομηχανία γεωργίας (ταξινόμηση σιτηρών με βάση το χρώμα), τη βιομηχανία τροφίμων, τη βιομηχανία διαμαντιών και μεταλλευμάτων, την ανακύκλωση κ.λπ. Οι εφαρμογές δεν περιορίζονται σε αυτό και μπορούν να εφαρμοστούν περαιτέρω σε διαφορετικές βιομηχανίες.
Ο πιο δημοφιλής αισθητήρας για την ανίχνευση των χρωμάτων είναι ο αισθητήρας χρώματος TCS3200. Χρησιμοποιήσαμε προηγουμένως τον αισθητήρα TCS3200 με το Arduino για να πάρουμε το στοιχείο RGB (Κόκκινο, Πράσινο, Μπλε) οποιουδήποτε χρώματος και επίσης το διασυνδέσαμε με το Raspberry Pi για την ανίχνευση του χρώματος οποιουδήποτε αντικειμένου.
Εδώ σε αυτό το σεμινάριο θα φτιάξουμε μια μηχανή ταξινόμησης χρωμάτων χρησιμοποιώντας έναν αισθητήρα χρώματος TCS3200, μερικούς σερβοκινητήρες και Arduino board. Αυτό το σεμινάριο θα περιλαμβάνει τη διαλογή χρωματιστών μπαλών και τη διατήρησή τους στο σχετικό κουτί χρωμάτων. Το κουτί θα είναι στη σταθερή θέση και ο σερβοκινητήρας θα χρησιμοποιηθεί για να κινήσει το χέρι διαλογής για να κρατήσει την μπάλα στο σχετικό κουτί.
Απαιτούμενα στοιχεία
- Arduino UNO
- Αισθητήρας χρώματος TCS3200
- Servo Motors
- Άλτες
- Ψωμί
Πώς να φτιάξετε το σασί για ρομποτικό βραχίονα ταξινόμησης χρωμάτων
Για την ολοκλήρωση της εγκατάστασης, συμπεριλαμβανομένου του πλαισίου, του βραχίονα, του κυλίνδρου, του τακάκι, χρησιμοποιήσαμε το λευκό Sunboard πάχους 2 mm Διατίθεται εύκολα στα στάσιμα καταστήματα. Έχουμε χρησιμοποιήσει κόφτη χαρτιού για να κόψουμε το φύλλο Sunboard και το FlexKwik ή το FeviKwik για ένωση των διαφόρων εξαρτημάτων.
Ακολουθούν ορισμένα βήματα για τη δημιουργία του βραχίονα ταξινόμησης χρωμάτων:
1) Πάρτε το φύλλο Sunboard.
2) Κόψτε το φύλλο ηλιοθεραπείας σε κομμάτια αφού μετρήσετε όλες τις πλευρές με κλίμακα και δείκτη όπως φαίνεται στο σχήμα.
3) Τώρα κρατήστε τα δύο κομμάτια του sunboard μαζί και ρίξτε μια σταγόνα FeviKwik σε αυτό για να κολλήσετε τα κομμάτια μεταξύ τους. Συνεχίστε να ενώνετε τα κομμάτια ακολουθώντας το σχήμα.
4) Αφού ενώσετε όλα τα κομμάτια, αυτή η μηχανή ταξινόμησης χρώματος θα μοιάζει με αυτό:
Αισθητήρας χρώματος TCS3200
Το TCS3200 είναι ένας αισθητήρας χρώματος που μπορεί να ανιχνεύσει οποιονδήποτε αριθμό χρωμάτων με σωστό προγραμματισμό. Το TCS3200 περιέχει συστοιχίες RGB (κόκκινο πράσινο μπλε). Όπως φαίνεται στο σχήμα σε μικροσκοπικό επίπεδο μπορεί κανείς να δει τα τετράγωνα κουτιά μέσα στο μάτι του αισθητήρα. Αυτά τα τετράγωνα κουτιά είναι πίνακες του RGB matrix. Κάθε ένα από αυτά τα κουτιά περιέχει τρεις αισθητήρες, το ένα είναι για την ανίχνευση ΚΟΚΚΙΝΗΣ έντασης φωτός, το ένα για την ανίχνευση ΠΡΑΣΙΝΗΣ έντασης φωτός και το τελευταίο για την ανίχνευση ΜΠΛΕ έντασης φωτός.
Κάθε μία από τις συστοιχίες αισθητήρων σε αυτές τις τρεις συστοιχίες επιλέγεται ξεχωριστά ανάλογα με την απαίτηση. Ως εκ τούτου είναι γνωστό ως προγραμματιζόμενος αισθητήρας. Η ενότητα μπορεί να χαρακτηριστεί για να αισθανθεί το συγκεκριμένο χρώμα και να αφήσει τα άλλα. Περιέχει φίλτρα για αυτόν τον σκοπό επιλογής. Υπάρχει μια τέταρτη λειτουργία που ονομάζεται «λειτουργία χωρίς φίλτρο» στην οποία ο αισθητήρας ανιχνεύει λευκό φως.
Διάγραμμα κυκλώματος διαλογής χρωμάτων Arduino
Το διάγραμμα κυκλώματος για αυτό το Arduino Color Sorter είναι αρκετά εύκολο να γίνει και δεν απαιτεί πολλές συνδέσεις. Το σχηματικό δίνεται παρακάτω.
Αυτό είναι το κύκλωμα πίσω από τη ρύθμιση της μηχανής διαλογής χρωμάτων:
Προγραμματισμός του Arduino Uno για ταξινόμηση πολύχρωμων μπαλών
Ο προγραμματισμός του Arduino UNO είναι αρκετά απλός και απαιτεί απλή λογική για την απλοποίηση των βημάτων που εμπλέκονται στην ταξινόμηση χρωμάτων. Στο τέλος παρέχεται πλήρες πρόγραμμα με επίδειξη.
Δεδομένου ότι ο σερβοκινητήρας χρησιμοποιείται, έτσι η σερβο βιβλιοθήκη είναι ουσιαστικό μέρος του προγράμματος. Εδώ χρησιμοποιούμε δύο σερβοκινητήρες. Το πρώτο σερβο θα μετακινήσει τις χρωματιστές μπάλες από την αρχική θέση στη θέση του ανιχνευτή TCS3200 και στη συνέχεια θα μετακινηθεί στη θέση ταξινόμησης όπου θα πέσει η μπάλα. Αφού μετακινηθείτε στη θέση ταξινόμησης, το δεύτερο σερβο θα ρίξει τη μπάλα χρησιμοποιώντας το χέρι του στον επιθυμητό χρωματικό κάδο. Δείτε την πλήρη εργασία στο βίντεο που δίνεται στο τέλος.
Το πρώτο βήμα θα είναι η συμπερίληψη της βιβλιοθήκης και ο καθορισμός των σερβο μεταβλητών.
#περιλαμβάνω
Ο αισθητήρας χρώματος TCS3200 μπορεί να λειτουργήσει χωρίς βιβλιοθήκη, καθώς υπάρχει μόνο ανάγκη συχνότητας ανάγνωσης από τον πείρο αισθητήρα για να αποφασίσει το χρώμα. Ορίστε λοιπόν απλώς τους αριθμούς pin του TCS3200.
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define sensorOut 8 int συχνότητα = 0; int χρώμα = 0;
Κάντε τις επιλεγμένες καρφίτσες ως έξοδο καθώς αυτό θα κάνει την έγχρωμη φωτοδίοδο υψηλή ή χαμηλή και θα πάρει την έξοδο του TCS3200 ως είσοδο. Ο ακροδέκτης OUT παρέχει συχνότητα. Επιλέξτε την κλιμάκωση της συχνότητας ως 20% αρχικά.
pinMode (S0, OUTPUT); pinMode (S1, OUTPUT); pinMode (S2, OUTPUT); pinMode (S3, OUTPUT); pinMode (sensorOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, HIGH);
Οι σερβοκινητήρες συνδέονται στους ακροδέκτες 9 και 10 του Arduino. Το σερβο σερβο που θα πάρει τις μπάλες χρώματος είναι συνδεδεμένο στο Pin 9 και το σερβο που θα ρίξει τις μπάλες χρώματος σύμφωνα με το χρώμα είναι συνδεδεμένο στο Pin10.
pickServo.attach (9); dropServo.attach (10);
Αρχικά ο σερβοκινητήρας επιλογής βρίσκεται στην αρχική θέση, ο οποίος στην περίπτωση αυτή είναι 115 μοίρες. Μπορεί να διαφέρει και μπορεί να προσαρμοστεί ανάλογα. Ο κινητήρας μετακινείται μετά από κάποια καθυστέρηση στην περιοχή του ανιχνευτή και περιμένει την ανίχνευση.
pickServo.write (115); καθυστέρηση (600) για (int i = 115; i> 65; i--) { pickServo.write (i); καθυστέρηση (2) } καθυστέρηση (500)
Το TCS 3200 διαβάζει το χρώμα και δίνει τη συχνότητα από το Out Pin.
χρώμα = ανίχνευση χρώματος (); καθυστέρηση (1000)
Ανάλογα με το χρώμα που ανιχνεύεται, ο σερβο κινητήρας πτώσης κινείται με συγκεκριμένη γωνία και πέφτει η μπάλα χρώματος στο αντίστοιχο κουτί του.
διακόπτης (χρώμα) { υπόθεση 1: dropServo.write (50); Διακοπή; περίπτωση 2: dropServo.write (80); Διακοπή; υπόθεση 3: dropServo.write (110); Διακοπή; υπόθεση 4: dropServo.write (140); Διακοπή; υπόθεση 5: dropServo.write (170); Διακοπή; υπόθεση 0: διάλειμμα; } καθυστέρηση (500)
Ο σερβο κινητήρας επιστρέφει στην αρχική θέση για να διαλέξει η επόμενη μπάλα.
για (int i = 65; i> 29; i--) { pickServo.write (i); καθυστέρηση (2) } καθυστέρηση (300) για (int i = 29; i <115; i ++) { pickServo.write (i); καθυστέρηση (2) }
Η συνάρτηση ανίχνευση χρώματος () χρησιμοποιείται για τη μέτρηση της συχνότητας και συγκρίνει τη συχνότητα χρώματος για να καταλήξει στο συμπέρασμα του χρώματος. Το αποτέλεσμα εκτυπώνεται στη σειριακή οθόνη. Στη συνέχεια επιστρέφει την τιμή χρώματος για θήκες για μετακίνηση της γωνίας σερβο κινητήρα πτώσης.
int DetectColor () {
Η εγγραφή σε S2 και S3 (LOW, LOW) ενεργοποιεί τις κόκκινες φωτοδίοδοι για να λαμβάνει τις ενδείξεις για την πυκνότητα κόκκινου χρώματος.
digitalWrite (S2, LOW); digitalWrite (S3, LOW); συχνότητα = pulseIn (sensorOut, LOW); int R = συχνότητα; Serial.print ("Κόκκινο ="); Serial.print (συχνότητα), // εκτύπωση RED συχνότητα χρώματος Serial.print (""); καθυστέρηση (50)
Το γράψιμο στα S2 και S3 (LOW, HIGH) ενεργοποιεί τις μπλε φωτοδίοδους για να λαμβάνει τις ενδείξεις για την πυκνότητα του μπλε χρώματος.
digitalWrite (S2, LOW); digitalWrite (S3, HIGH); συχνότητα = pulseIn (sensorOut, LOW); int B = συχνότητα; Serial.print ("Μπλε ="); Serial.print (συχνότητα); Serial.println ("");
Το γράψιμο στα S2 και S3 (HIGH, HIGH) ενεργοποιεί τις πράσινες φωτοδιόδους για να λάβει τις ενδείξεις για την πυκνότητα του πράσινου χρώματος.
digitalWrite (S2, HIGH); digitalWrite (S3, HIGH); // Διαβάζοντας τη συχνότητα εξόδου = pulseIn (sensorOut, LOW); int G = συχνότητα; Serial.print ("Πράσινο ="); Serial.print (συχνότητα); Serial.print (""); καθυστέρηση (50)
Στη συνέχεια συγκρίνονται οι τιμές για να ληφθεί η απόφαση χρώματος. Οι μετρήσεις είναι διαφορετικές για διαφορετικές πειραματικές ρυθμίσεις καθώς η απόσταση ανίχνευσης ποικίλλει για όλους κατά την εγκατάσταση.
αν (R <22 & R> 20 & G <29 & G> 27) { color = 1; // Red Serial.print ("Το Detected Color is ="); Serial.println ("ΚΟΚΚΙΝΟ"); } εάν (G <25 & G> 22 & B <22 & B> 19) { color = 2; // Orange Serial.println ("Πορτοκαλί"); } εάν (R <21 & R> 20 & G <28 & G> 25) { color = 3; // Green Serial.print ("Το Detected Color is ="); Serial.println ("ΠΡΑΣΙΝΟ"); } εάν (R <38 & R> 24 & G <44 & G> 30) { color = 4; // Yellow Serial.print ("Το Detected Color is ="); Serial.println ("ΚΙΤΡΙΝΟ"); } εάν (G <29 & G> 27 & B <22 & B> 19) { χρώμα = 5; // Blue Serial.print ("Το Detected Color is ="); Serial.println ("ΜΠΛΕ"); } χρώμα επιστροφής; }
Αυτό ολοκληρώνει το μηχάνημα ταξινόμησης χρωμάτων χρησιμοποιώντας τα TCS3200 και Arduino UNO. Μπορείτε επίσης να το προγραμματίσετε για να ανιχνεύσετε περισσότερα χρώματα εάν χρειαστεί. Εάν έχετε οποιαδήποτε αμφιβολία ή έχετε οποιαδήποτε πρόταση, γράψτε στο φόρουμ μας ή σχολιάστε παρακάτω. Ελέγξτε επίσης το βίντεο που δίνεται παρακάτω.