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

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

<основной класс="главный сайт" id="главный">

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

Дизайн

Все, что нам нужно для этого проекта Arduino, — это один датчик цвета (TCS3200) и два серводвигателя для любителей, что делает этот проект довольно простым, но в то же время очень увлекательным. Во-первых, с помощью программы 3D-моделирования Solidworks я сделал дизайн цветного сортировщика, и вот его принцип работы:

Здесь вы можете скачать 3D-модель, а также чертежи со всеми размерами, необходимыми для создания этого проекта Arduino.

Вы можете найти и скачать эту 3D-модель, а также изучить ее в своем браузере на Thangs.

Загрузите 3D-модель сборки на Thangs.

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

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

Материал, который я использовал для этого проекта, представляет собой 3-миллиметровую древесноволокнистую плиту. Я перерисовываю детали на ДВП по чертежам и небольшой ручной пилой вырезаю все детали в размер.

Подготовив все детали, я приступил к их сборке. Сначала я собрал внешние детали с помощью клеевого пистолета.

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

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

Затем я вставил переключатель и разъем питания для питания Arduino с помощью адаптера 5 В, а на третьей платформе вставил датчик цвета.

Я соединил компоненты вместе в соответствии со следующей принципиальной схемой.

Вы можете получить компоненты, необходимые для этого проекта Arduino, по ссылкам ниже:

Исходный код сортировщика цветов Arduino

На этом этапе нам нужно сначала запрограммировать 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);

  // Setting frequency-scaling to 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;
}

// Custom Function - readColor()
int readColor() {
  // Setting red filtered photodiodes to be read
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int R = frequency;
  // Printing the value on the serial monitor
  Serial.print("R= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(50);

  // Setting Green filtered photodiodes to be read
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int G = frequency;
  // Printing the value on the serial monitor
  Serial.print("G= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(50);

  // Setting Blue filtered photodiodes to be read
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int B = frequency;
  // Printing the value on the serial monitor
  Serial.print("B= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.println("  ");
  delay(50);

  if(R<45 & R>32 & G<65 & G>55){
    color = 1; // Red
  }
  if(G<55 & G>43 & B<47 &B>35){
    color = 2; // Orange
  }
  if(R<53 & R>40 & G<53 & G>40){
    color = 3; // Green
  }
  if(R<38 & R>24 & G<44 & G>30){
    color = 4; // Yellow
  }
  if(R<56 & R>46 & G<65 & G>55){
    color = 5; // Brown
  }
  if (G<58 & G>45 & B<40 &B>26){
    color = 6; // Blue
  }
  return color;  
}Code language: Arduino (arduino)

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

Итак, нам нужно подключить библиотеку «Servo.h», определить пины, к которым будет подключаться датчик цвета, создать сервообъекты и объявить некоторые переменные, необходимые для программы. В разделе настройки нам нужно определить контакты как выходы и входы, установить масштабирование частоты для датчика цвета, определить контакты сервопривода и запустить последовательную связь для печати результатов считывания цвета на последовательном мониторе.

В секции цикла наша программа начинается с перемещения верхнего серводвигателя в положение зарядного устройства для кеглей. Обратите внимание, что это значение 115 подходит для моих деталей и моего серводвигателя, поэтому вам следует настроить это значение, а также следующие значения для серводвигателей в соответствии с вашей сборкой.

Далее с помощью цикла «for» мы будем вращать и подводить кеглю к положению датчика цвета. Мы используем цикл for, чтобы можно было контролировать скорость вращения, изменяя время задержки в цикле.

Далее, с задержкой в ​​полсекунды, с помощью специально созданной функции readColor() мы будем считывать цвет кегли. Вот код пользовательской функции. Используя четыре контрольных контакта и контакт частотного выхода датчика цвета, мы считываем цвет кегли. Датчик считывает 3 разных значения для каждой кегли:красный, зеленый и синий, и в соответствии с этими значениями мы определяем, каков фактический цвет. Подробнее о том, как работает датчик цвета TCS3200, вы можете узнать из моего предыдущего подробного руководства.

Вот значения RGB, которые я получил от датчика для каждой кегли. Обратите внимание, что эти значения могут варьироваться, поскольку датчики не всегда точны. Следовательно, используя эти операторы «если», мы допускаем ошибку датчика около +-5 от проверенного значения для определенного цвета. Так, например, если у нас есть красная кегля, первое утверждение «если» будет истинным, а переменная «цвет» получит значение 1. Это то, что делает пользовательская функция readColor(), а после этого использование «переключателя-кейса». ” мы поворачиваем нижний сервопривод в определенное положение. В конце мы дополнительно вращаем верхний серводвигатель, пока кегля не упадет в направляющую, и снова отправляем ее обратно в исходное положение, чтобы процесс можно было повторить.

Завершение дизайна


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

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

Не стесняйтесь задавать любые вопросы в разделе комментариев ниже.


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

  1. Создание монитора Ambilight с помощью Arduino
  2. Игра Arduino Pong - OLED-дисплей
  3. Детектор звуковой частоты
  4. Клон Arduino Tamagotchi - цифровой питомец
  5. Манипулятор беспроводного переключателя света
  6. Tech-TicTacToe
  7. Водяной пистолет с датчиком движения
  8. Таймер обратного отсчета Arduino
  9. Цветовой микшер Arduino RGB
  10. Arduino Sunflower:электронный танцор солнца