- Необходими компоненти
- Как да направите шасито за роботизирана ръка за сортиране на цветове
- TCS3200 Цветен сензор
- Схема за сортиране на цветове Arduino
- Програмиране на Arduino Uno за сортиране на цветни топки
Както подсказва името, сортирането на цветовете е просто да се сортират нещата според цвета им. Това може лесно да се направи, като се види, но когато има твърде много неща за сортиране и това е повтаряща се задача, автоматичните машини за сортиране на цветове са много полезни. Тези машини имат цветен сензор, за да усещат цвета на всякакви предмети и след откриване на цветния серво мотор вземете нещото и го поставете в съответната кутия. Те могат да се използват в различни области на приложение, където е важна идентификацията на цветовете, разграничаването на цветовете и сортирането на цветовете. Някои от областите на приложение включват селскостопанска промишленост (сортиране на зърно на базата на цвят), хранително-вкусова промишленост, диамантена и минна промишленост, рециклиране и др.
Най-популярният сензор за откриване на цветовете е цветният сензор TCS3200. Преди това използвахме сензор TCS3200 с Arduino, за да получим RGB компонента (червен, зелен, син) от всякакъв цвят и също го свързахме с Raspberry Pi за откриване на цвета на всеки обект.
Тук в този урок ще направим машина за сортиране на цветове, използвайки цветен сензор TCS3200, някои серво мотори и платка Arduino. Този урок ще включва сортирането на цветни топки и съхраняването им в съответната цветна кутия. Кутията ще бъде във фиксирана позиция, а сервомоторът ще се използва за придвижване на стрелката на сортиращото устройство, за да задържи топката в съответната кутия.
Необходими компоненти
- Arduino UNO
- TCS3200 Цветен сензор
- Серво мотори
- Джъмпери
- Макет
Как да направите шасито за роботизирана ръка за сортиране на цветове
За направата на пълната настройка, включваща шаси, рамо, ролка, подложка, използвахме белия слънчев борд с дебелина 2 мм. Той е лесно достъпен в стационарните магазини. Използвали сме резачка за хартия, за да изрежем Sunboard Sheet и FlexKwik или FeviKwik за съединяване на различните части.
По-долу са дадени няколко стъпки за изграждане на рамото за сортиране на цветовете:
1) Вземете слънчевия лист.
2) Нарежете листа за слънчеви дъски на парчета след измерване на всички страни с мащаб и маркер, както е показано на фигурата.
3) Сега дръжте двата парчета слънчеви дъски заедно и изсипете капка FeviKwik върху него, за да залепите парчетата. Продължавайте да съединявате парчетата, като следвате фигурата.
4) След като обедини всички парчета, тази машина за сортиране на цветове ще изглежда по следния начин:
TCS3200 Цветен сензор
TCS3200 е цветен сензор, който може да открие произволен брой цветове с правилно програмиране. TCS3200 съдържа RGB (червено зелено синьо) масиви. Както е показано на фигурата на микроскопично ниво, можете да видите квадратните кутии в окото на сензора. Тези квадратни кутии са масиви от RGB матрица. Всяка от тези кутии съдържа три сензора, Единият е за отчитане на ЧЕРВЕНАТА интензивност на светлината, Единият е за отчитане на ЗЕЛЕНА интензивност на светлината и последният за отчитане на СИНИЯ интензитет на светлината.
Всеки от сензорните масиви в тези три масива се избира поотделно в зависимост от изискването. Следователно той е известен като програмируем сензор. Модулът може да бъде представен, за да усети конкретния цвят и да остави останалите. Той съдържа филтри за тази цел. Има четвърти режим, наречен „режим без филтър“, в който сензорът открива бяла светлина.
Схема за сортиране на цветове Arduino
Схемата на схемата за този сортиращ цвят на Arduino е доста лесна за изпълнение и не изисква много връзки. Схемата е дадена по-долу.
Това е схемата зад настройката на машина за сортиране на цветове:
Програмиране на Arduino Uno за сортиране на цветни топки
Програмирането на Arduino UNO е доста просто и изисква проста логика за опростяване на стъпките, свързани със сортирането на цветовете. Пълна програма с демонстрационно видео е дадена в края.
Тъй като се използва серво мотор, така серво библиотеката е съществена част от програмата. Тук използваме два серво мотора. На първо сервото ще се движат цветните топки от началната позиция в позиция TCS3200 детектор, а след това се премести в сортиране позиция, където топката ще бъде премахван. След като се премести в позиция за сортиране, вторият серво ще изпусне топката, използвайки ръката си, в желаната цветна кофа. Вижте пълната работа във видеото, дадено в края.
Първата стъпка ще бъде включването на всички библиотеки и дефинирането на серво променливите.
#include
Цветовият сензор TCS3200 може да работи без библиотека, тъй като е необходима само честота на четене от щифта на сензора, за да се реши цветът. Така че просто дефинирайте номерата на пиновете на 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 (SensOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, HIGH);
Сервомоторите са свързани на Pin 9 и 10 на Arduino. В серво пикап който ще пикап цветни топки е свързан по оста 9 и серво капка който ще падне цветните топки съгласно цвета е свързан в Pin10.
pickServo.attach (9); dropServo.attach (10);
Първоначално серво моторът за избор е настроен в първоначалното положение, което в този случай е 115 градуса. Тя може да се различава и може да бъде персонализирана съответно. Двигателят се придвижва след известно забавяне към зоната на детектора и изчаква откриването.
pickServo.write (115); забавяне (600); за (int i = 115; i> 65; i--) { pickServo.write (i); забавяне (2); } закъснение (500);
В ТКС 3200 прочитания цвета и дава честота от краче.
цвят = засечетеЦвят (); забавяне (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); }
Функцията detectColor () се използва за измерване на честотата и сравнява честотата на цветовете, за да направи заключението на цвета. Резултатът се отпечатва на серийния монитор. След това връща стойността на цвета за случаите за преместване на ъгъла на серво мотора на падане.
int detectionColor () {
Записването в S2 и S3 (LOW, LOW) активира червените фотодиоди, за да вземе показанията за плътност на червения цвят.
digitalWrite (S2, LOW); digitalWrite (S3, LOW); честота = pulseIn (sensorOut, LOW); int R = честота; Serial.print ("Red ="); Serial.print (честота); // отпечатване на ЧЕРВЕНА цветна честота Serial.print (""); забавяне (50);
Записването в S2 и S3 (LOW, HIGH) активира сините фотодиоди, за да вземе показанията за плътност на синия цвят.
digitalWrite (S2, LOW); digitalWrite (S3, HIGH); честота = pulseIn (sensorOut, LOW); int B = честота; Serial.print ("Blue ="); 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) { цвят = 1; // Red Serial.print ("Откритият цвят е ="); Serial.println ("ЧЕРВЕНО"); } if (G <25 & G> 22 & B <22 & B> 19) { color = 2; // Orange Serial.println ("Orange"); } if (R <21 & R> 20 & G <28 & G> 25) { color = 3; // Зелен Serial.print ("Откритият цвят е ="); Serial.println ("ЗЕЛЕН"); } if (R <38 & R> 24 & G <44 & G> 30) { color = 4; // Жълт Serial.print ("Откритият цвят е ="); Serial.println ("ЖЪЛТ"); } if (G <29 & G> 27 & B <22 & B> 19) { цвят = 5; // Blue Serial.print ("Откритият цвят е ="); Serial.println ("СИН"); } връщане на цвят; }
Това завършва машината за сортиране на цветове, използвайки TCS3200 и Arduino UNO. Можете също така да го програмирате да открива повече цветове, ако е необходимо. Ако имате съмнения или предложения, пишете на нашия форум или коментирайте по-долу. Също така проверете видеото, дадено по-долу.