- Необходимые компоненты
- Как сделать корпус для манипулятора с сортировкой по цвету
- Датчик цвета TCS3200
- Принципиальная схема сортировщика цветов Arduino
- Программирование Arduino Uno для сортировки разноцветных шариков
Как следует из названия, сортировка по цвету - это просто сортировка вещей по цвету. Это можно легко сделать, увидев это, но когда нужно отсортировать слишком много вещей и это повторяющаяся задача, тогда машины автоматической сортировки по цвету очень полезны. Эти машины имеют датчик цвета, который определяет цвет любых объектов и после обнаружения серводвигателя цвета берет предмет и кладет его в соответствующую коробку. Их можно использовать в различных областях, где важна идентификация цвета, различие цветов и сортировка по цвету. Некоторые из областей применения включают сельское хозяйство (сортировка зерна по цвету), пищевая промышленность, алмазная и горнодобывающая промышленность, переработка и т. Д. Приложения не ограничиваются этим и могут в дальнейшем применяться в различных отраслях.
Самый популярный датчик для определения цвета - датчик цвета TCS3200. Ранее мы использовали датчик TCS3200 с Arduino для получения компонента RGB (красный, зеленый, синий) любого цвета, а также сопрягали его с Raspberry Pi для определения цвета любого объекта.
В этом уроке мы создадим машину для сортировки цветов, используя датчик цвета TCS3200, несколько серводвигателей и плату Arduino. Этот урок будет включать сортировку цветных шаров и их хранение в соответствующем цветовом поле. Ящик будет в фиксированном положении, а серводвигатель будет использоваться для перемещения руки сортировщика, чтобы удерживать мяч в соответствующем ящике.
Необходимые компоненты
- Arduino UNO
- Датчик цвета TCS3200
- Сервомоторы
- Джемперы
- Макетная плата
Как сделать корпус для манипулятора с сортировкой по цвету
Для полной установки, включая шасси, рычаг, ролик, подушку, мы использовали белый Sunboard толщиной 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 frequency = 0; int color = 0;
Сделайте выводы выбора в качестве выходных, так как это сделает цветной фотодиод высоким или низким, а вывод Out TCS3200 станет входом. Вывод OUT обеспечивает частоту. Изначально выберите масштабирование частоты как 20%.
pinMode (S0, ВЫХОД); pinMode (S1, ВЫХОД); pinMode (S2, ВЫХОД); pinMode (S3, ВЫХОД); pinMode (sensorOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, ВЫСОКИЙ);
Серводвигатели подключаются к контактам 9 и 10 Arduino. Пикап сервопривод, который будет пикап цвета шары соединен на выводе 9 и падение сервопривод, который будет падать на шарах цвета в соответствии с цветом подключен на pin10.
pickServo.attach (9); dropServo.attach (10);
Первоначально серводвигатель подборщика установлен в исходное положение, которое в данном случае составляет 115 градусов. Он может отличаться и соответственно настраиваться. Двигатель с некоторой задержкой перемещается в зону детектора и ожидает обнаружения.
pickServo.write (115); задержка (600); для (int я = 115; я> 65; я--) { pickServo.write (я); задержка (2); } задержка (500);
ТКС 3200 считывает цвет и дает частоту от Out Pin.
цвет = detectColor (); задержка (1000);
В зависимости от обнаруженного цвета серводвигатель падения перемещается под определенным углом и опускает цветной шар в соответствующий ящик.
переключатель (цвет) { случай 1: dropServo.write (50); сломать; случай 2: dropServo.write (80); сломать; случай 3: dropServo.write (110); сломать; случай 4: dropServo.write (140); сломать; случай 5: dropServo.write (170); сломать; case 0: break; } задержка (500);
Серводвигатель возвращается в исходное положение, чтобы выбрать следующий шар.
для (int я = 65; я> 29; я--) { pickServo.write (я); задержка (2); } задержка (300); для (int я = 29; я <115; я ++) { pickServo.write (я); задержка (2); }
Функция detectColor () используется для измерения частоты и сравнения частоты цвета, чтобы сделать вывод о цвете. Результат печатается на серийном мониторе. Затем он возвращает значение цвета для ящиков для перемещения угла серводвигателя падения.
int detectColor () {
Запись в S2 и S3 (LOW, LOW) активирует красные фотодиоды для снятия показаний плотности красного цвета.
digitalWrite (S2, LOW); digitalWrite (S3, LOW); частота = pulseIn (sensorOut, LOW); int R = частота; Serial.print ("Красный ="); Serial.print (frequency); // печать КРАСНОГО цвета частота 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, ВЫСОКИЙ); digitalWrite (S3, HIGH); // Чтение выходной частоты частота = pulseIn (sensorOut, LOW); int G = частота; Serial.print ("Зеленый ="); Serial.print (частота); Serial.print (""); задержка (50);
Затем значения сравниваются для принятия цветового решения. Показания различаются для разных экспериментальных установок, так как расстояние обнаружения варьируется для всех при создании установки.
если (R <22 & R> 20 & G <29 & G> 27) { цвет = 1; // Красный Serial.print ("Обнаруженный цвет ="); Serial.println («КРАСНЫЙ»); } if (G <25 & G> 22 & B <22 & B> 19) { color = 2; // Оранжевый 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) { цвет = 5; // Синий Serial.print ("Обнаруженный цвет ="); Serial.println («СИНИЙ»); } вернуть цвет; }
На этом машина для сортировки по цвету завершается с использованием TCS3200 и Arduino UNO. Вы также можете запрограммировать его на обнаружение большего количества цветов, если это необходимо. Если у вас есть сомнения или предложения, напишите на нашем форуме или оставьте комментарий ниже. Также посмотрите видео, приведенное ниже.