Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Сборка Arduino сортировщика цветов: простой гид с TCS3200 и сервоприводами

В этой статье я покажу, как сделать сортировщик цветов на Arduino. Вы можете посмотреть видео ниже или прочитать подробное описание.

Конструкция

Для этого проекта понадобятся только датчик цвета TCS3200 и два хоббийных сервопривода, что делает сборку простой, но очень увлекательной. Сначала в SolidWorks я спроектировал 3D-модель сортировщика. Принцип работы такой:

Сборка Arduino сортировщика цветов: простой гид с TCS3200 и сервоприводами
  • Цветные конфеты Skittles из загрузочного бункера падают на платформу, закреплённую на верхнем сервоприводе.
  • Верхний сервопривод поворачивается и подаёт конфету к датчику цвета, который определяет её оттенок.
  • Затем нижний сервопривод поворачивается в нужное положение, а верхний снова вращается, сбрасывая конфету в направляющую рельсу соответствующего цвета.

Ниже можно скачать 3D-моделю и чертежи со всеми размерами для изготовления корпуса.

Модель также доступна для просмотра в браузере на Thangs.

Сборка Arduino сортировщика цветов: простой гид с TCS3200 и сервоприводами

Скачать сборку в формате STEP на Thangs.

Следующие чертежи подойдут для лазерной резки всех деталей корпуса:

Сборка Arduino сортировщика цветов

Материал — 3-мм волокнистая плита (оргалит). Детали перенесены с чертежей и вырезаны небольшой ручной пилой.

Сборка Arduino сортировщика цветов: простой гид с TCS3200 и сервоприводами

Сборка начинается с внешних стенок — их склеивают клеевым пистолетом.

Сборка Arduino сортировщика цветов: простой гид с TCS3200 и сервоприводами

Затем универсальным клеем фиксируют оба сервопривода на своих платформах и устанавливают в сборку.

После этого клеят направляющую рельсу на нижний сервопривод, а также опору и платформу для верхнего сервопривода.

Сборка Arduino сортировщика цветов: простой гид с TCS3200 и сервоприводами

Далее устанавливают выключатель и джек питания для подключения 5-В адаптера, а на третьей платформе монтируют датчик цвета.

Сборка Arduino сортировщика цветов: простой гид с TCS3200 и сервоприводами

Все компоненты соединяют согласно схеме ниже.

Сборка Arduino сортировщика цветов: простой гид с TCS3200 и сервоприводами

Необходимые комплектующие:

  • Датчик цвета TCS230 / TCS3200
  • Arduino Nano
  • Макетная плата и перемычки
  • Сервопривод (2 шт.)
  • Выключатель
  • Джек питания

Исходный код Arduino

Сначала загружаем скетч в Arduino, затем завершаем сборку. Полный код:

/* Arduino Project - Color Sorting Machine
 * by Dejan Nedelkovski, www.HowToMechatronics.com
 */
#include <Servo.h>
#define S0 2
#define S1 3
#define S2 4
#define S3 5
#define sensorOut 6
Servo topServo;
Servo bottomServo;
int frequency = 0;
int color = 0;

void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);
  // Настройка масштабирования частоты 20%
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);
  topServo.attach(7);
  bottomServo.attach(8);
  Serial.begin(9600);
}

void loop() {
  topServo.write(115);
  delay(500);
  for (int i = 115; i > 65; i--) {
    topServo.write(i);
    delay(2);
  }
  delay(500);
  color = readColor();
  delay(10);
  switch (color) {
    case 1: bottomServo.write(50); break;
    case 2: bottomServo.write(75); break;
    case 3: bottomServo.write(100); break;
    case 4: bottomServo.write(125); break;
    case 5: bottomServo.write(150); break;
    case 6: bottomServo.write(175); break;
    case 0: break;
  }
  delay(300);
  for (int i = 65; i > 29; i--) {
    topServo.write(i);
    delay(2);
  }
  delay(200);
  for (int i = 29; i < 115; i++) {
    topServo.write(i);
    delay(2);
  }
  color = 0;
}

// Функция чтения цвета
int readColor() {
  // Красный фильтр
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  frequency = pulseIn(sensorOut, LOW);
  int R = frequency;
  Serial.print("R= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(50);
  // Зелёный фильтр
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  int G = frequency;
  Serial.print("G= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(50);
  // Синий фильтр
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  int B = frequency;
  Serial.print("B= ");
  Serial.print(frequency);
  Serial.println(" ");
  delay(50);

  if (R < 45 && R > 32 && G < 65 && G > 55) { color = 1; } // Красный
  if (G < 55 && G > 43 && B < 47 && B > 35) { color = 2; } // Оранжевый
  if (R < 53 && R > 40 && G < 53 && G > 40) { color = 3; } // Зелёный
  if (R < 38 && R > 24 && G < 44 && G > 30) { color = 4; } // Жёлтый
  if (R < 56 && R > 46 && G < 65 && G > 55) { color = 5; } // Коричневый
  if (G < 58 && G > 45 && B < 40 && B > 26) { color = 6; } // Синий
  return color;
}

Описание кода:

Подключаем библиотеку Servo.h, задаём пины датчика, создаём объекты сервоприводов и переменные. В setup() настраиваем пины, масштабирование частоты датчика (20%), привязываем сервоприводы к пинам 7 и 8, запускаем последовательный порт.

В loop() верхний сервопривод подъезжает к загрузочному бункеру (значение 115 — подстройте под свою механику). Цикл for плавно поворачивает сервопривод, подавая конфету к датчику. После паузы вызывается readColor().

Функция readColor() последовательно включает красный, зелёный и синий фильтры датчика, измеряет частоту импульсов на выходе и получает три значения R, G, B. На основе эмпирических порогов (с допуском ±5) определяет цвет и возвращает код 1–6.

Сборка Arduino сортировщика цветов: простой гид с TCS3200 и сервоприводами

Полученные RGB-значения для каждого цвета конфет. Допуск нужен, так как датчик неидеален. Оператор switch-case поворачивает нижний сервопривод в позицию, соответствующую цвету. В конце верхний сервопривод доворачивается, сбрасывая конфету в рельсу, и возвращается в исходное положение для следующего цикла.

Завершение сборки


После загрузки кода Arduino закрепляют клеевым пистолетом.

Сборка Arduino сортировщика цветов: простой гид с TCS3200 и сервоприводами

Из прозрачного пластикового бутылки делают загрузочный бункер и вместе с верхней крышкой клеят к корпусу. Проект готов.

Сборка Arduino сортировщика цветов: простой гид с TCS3200 и сервоприводами

Задавайте вопросы в комментариях!

Производственный процесс

  1. Создание потрясающей системы Ambilight для монитора на Arduino
  2. Создание классической игры Pong на Arduino UNO с OLED-дисплеем: пошаговый урок
  3. Детектор аудиочастот на Arduino: измеряем пик громкости с высокочувствительным модулем
  4. Собираем свой Tamagotchi на Arduino: цифровой питомец своими руками
  5. Умный беспроводной выключатель света: Arduino-контроллер для удаленного управления
  6. Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
  7. Умный водяной пистолет с датчиком движения на Arduino Nano
  8. Сборка надежного таймера обратного отсчета на Arduino с 7-сегментным дисплеем SparkFun
  9. Arduino RGB-микшер цветов: Простой проект для начинающих
  10. Arduino Sunflower: электронный подсолнух, следящий за солнцем