- Потрібні компоненти
- Як зробити шасі для кольорової сортувальної роботизованої руки
- Датчик кольору TCS3200
- Схема сортувальника кольорів Arduino
- Програмування Arduino Uno для сортування різнокольорових куль
Як випливає з назви, сортування кольорів - це просто сортування речей відповідно до їх кольору. Це легко зробити, побачивши це, але коли занадто багато речей для сортування, і це повторюване завдання, автоматичні машини для сортування кольорів дуже корисні. Ці машини мають кольоровий датчик для виявлення кольору будь-яких предметів, і після виявлення кольорового сервомотора захопіть річ і покладіть у відповідну коробку. Вони можуть використовуватися в різних областях застосування, де важлива ідентифікація кольорів, розрізнення кольорів та сортування кольорів. Деякі сфери застосування включають сільськогосподарську промисловість (сортування зерна за кольором), харчову промисловість, алмазну та гірничодобувну промисловість, переробку тощо. Застосування не обмежуються цим і можуть застосовуватися в різних галузях.
Найпопулярнішим датчиком для виявлення кольорів є кольоровий датчик TCS3200. Раніше ми використовували датчик TCS3200 з Arduino, щоб отримати RGB-компонент (червоний, зелений, синій) будь-якого кольору, а також зв’язали його з Raspberry Pi для виявлення кольору будь-якого об’єкта.
У цьому посібнику ми створимо машину для сортування кольорів із використанням кольорового датчика TCS3200, деяких сервомоторів та плати Arduino. Цей підручник включатиме сортування кольорових куль і зберігання їх у відповідному кольоровому полі. Коробка буде у фіксованому положенні, а серводвигун буде використовуватися для переміщення руки сортувальника, щоб утримувати м'яч у відповідній коробці.
Потрібні компоненти
- Arduino UNO
- Датчик кольору TCS3200
- Сервомотори
- Перемички
- Макет
Як зробити шасі для кольорової сортувальної роботизованої руки
Для повного налаштування, включаючи шасі, кронштейн, ролик, колодку, ми використали білий сонячний щит товщиною 2 мм. Він легко доступний у стаціонарних магазинах. Ми використовували різак для паперу, щоб вирізати лист Sunboard та FlexKwik або FeviKwik для з’єднання різних частин.
Нижче наведено кілька етапів побудови ручки сортування кольорів:
1) Візьміть аркуш сонячних дощок.
2) Розріжте лист сонячної дошки на шматки, вимірявши всі сторони масштабом та маркером, як показано на малюнку.
3) Тепер тримайте два шматочки сонячного дошки разом і налийте на нього краплю FeviKwik, щоб склеїти шматки. Продовжуйте з’єднувати шматки, слідуючи малюнку.
4) Після об’єднання всіх частин ця машина для сортування кольорів виглядатиме приблизно так:
Датчик кольору TCS3200
TCS3200 - це кольоровий датчик, який може визначати будь-яку кількість кольорів за допомогою правильного програмування. TCS3200 містить масиви RGB (червоний зелений синій). Як показано на малюнку на мікроскопічному рівні, на датчику можна побачити квадратні коробки всередині ока. Ці квадратні ящики є масивами RGB-матриці. Кожна з цих коробок містить три датчики: один призначений для ЧЕРВОНОЇ інтенсивності світла, один - для виявлення ЗЕЛЕНОЇ інтенсивності світла, а останній - для визначення синього інтенсивності світла.
Кожен із масивів датчиків у цих трьох масивах вибирається окремо залежно від вимог. Тому він відомий як програмований датчик. Модуль може бути призначений для відчуття конкретного кольору та залишення інших. Він містить фільтри для цієї мети відбору. Існує четвертий режим, який називається " без режиму фільтра", в якому датчик виявляє біле світло.
Схема сортувальника кольорів Arduino
Принципову схему для цього сортувача кольорів Arduino досить легко зробити і не вимагає великих з’єднань. Схема наведена нижче.
Ось схема, що стоїть за налаштуванням машини для сортування кольорів:
Програмування Arduino Uno для сортування різнокольорових куль
Програмування Arduino UNO досить просте і вимагає простої логіки для спрощення етапів сортування кольорів. Повна програма з демонстраційним відео подається в кінці.
Оскільки використовується сервомотор, то сервобібліотека є важливою частиною програми. Тут ми використовуємо два сервомотори. Перший сервопривід буде рухатися кольоровими кулями з початкового положення в положення детектора TCS3200, а потім перейти на сортувальну позицію, де буде відкинутий м'яч. Після переходу в позицію сортування другий сервопривід опустить кульку рукою до потрібного кольорового відра. Дивіться повну роботу у відео, поданому в кінці.
Першим кроком буде включення всіх бібліотек та визначення серво змінних.
#включати
Кольоровий датчик 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, ВИХІД); pinMode (S1, ВИХІД); pinMode (S2, ВИХІД); pinMode (S3, ВИХІД); pinMode (sensorOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, HIGH);
Сервомотори підключені на виводах 9 і 10 Arduino. Пікап сервопривід, який буде пікап кольору кулі з'єднаний на виводі 9 і падіння сервопривід, який буде падати на кулях кольору в відповідно до кольору підключений на pin10.
pickServo.attach (9); dropServo.attach (10);
Спочатку сервомотор вибору встановлюється в початкове положення, яке в цьому випадку становить 115 градусів. Він може відрізнятися і може бути відповідно налаштований. Двигун рухається з деякою затримкою до області детектора і чекає виявлення.
pickServo.write (115); затримка (600); for (int i = 115; i> 65; i--) { pickServo.write (i); затримка (2); } затримка (500);
ТКС 3200 зчитує колір і дає частоту від Out Pin.
color = detectColor (); затримка (1000);
Залежно від виявленого кольору, серводвигун падіння рухається з певним кутом і опускає кольорову кулю до відповідної коробки.
перемикач (колір) { випадок 1: dropServo.write (50); перерву; випадок 2: dropServo.write (80); перерву; випадок 3: dropServo.write (110); перерву; випадок 4: dropServo.write (140); перерву; випадок 5: dropServo.write (170); перерву; випадок 0: перерва; } затримка (500);
Сервомотор повертається у вихідне положення для вибору наступного кулі.
for (int i = 65; i> 29; i--) { pickServo.write (i); затримка (2); } затримка (300); for (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 ("Червоний ="); Serial.print (частота); // друк ЧЕРВОНОЇ кольорової частоти Serial.print (""); затримка (50);
Запис на S2 і S3 (НИЗЬКИЙ, ВИСОКИЙ) активує сині фотодіоди для зчитування показників щільності синього кольору.
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 ("Виявлений колір є ="); Serial.println ("ЧЕРВОНИЙ"); } if (G <25 & G> 22 & B <22 & B> 19) { color = 2; // Orange Serial.println ("апельсин"); } якщо (R <21 & R> 20 & G <28 & G> 25) { color = 3; // Зелений Serial.print ("Виявлений колір є ="); Serial.println ("ЗЕЛЕНИЙ"); } якщо (R <38 & R> 24 & G <44 & G> 30) { color = 4; // Жовтий Serial.print ("Виявлений колір є ="); Serial.println ("ЖОВТИЙ"); } if (G <29 & G> 27 & B <22 & B> 19) { color = 5; // Синій Serial.print ("Виявлений колір є ="); Serial.println ("СИНИЙ"); } повернути колір; }
На цьому закінчена машина для сортування кольорів за допомогою TCS3200 та Arduino UNO. Ви також можете запрограмувати його на виявлення більшої кількості кольорів, якщо це необхідно. Якщо у вас є якісь сумніви чи пропозиції, напишіть на наш форум або залиште коментар нижче. Також перевірте відео, подане нижче.