Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Construye un Clasificador de Colores con Arduino: Guía Sencilla con TCS3200 y Servos

En este artículo te mostraré cómo construir un clasificador de colores con Arduino. Puedes ver el siguiente vídeo o leer el tutorial escrito a continuación.

Diseño

Para este proyecto de Arduino solo necesitamos un sensor de color (TCS3200) y dos servomotores de hobby, lo que hace que este proyecto sea bastante simple pero muy divertido de construir. Primero, usando el software de modelado 3D Solidworks, diseñé el clasificador de colores y aquí está su principio de funcionamiento:

Construye un Clasificador de Colores con Arduino: Guía Sencilla con TCS3200 y Servos
  • Inicialmente, los caramelos de colores que se encuentran en el cargador caen sobre la plataforma unida al servomotor superior.
  • Luego, el servomotor gira y lleva el caramelo al sensor de color que detecta su color.
  • Después, el servomotor inferior gira a la posición correspondiente y el servomotor superior gira nuevamente hasta que el caramelo cae en la guía.

Aquí puedes descargar el modelo 3D, así como los planos con todas las dimensiones necesarias para construir este proyecto de Arduino.

Puedes encontrar y descargar este modelo 3D, así como explorarlo en tu navegador en Thangs.

Construye un Clasificador de Colores con Arduino: Guía Sencilla con TCS3200 y Servos

Descarga el modelo de ensamblaje 3D en Thangs.

Los siguientes planos pueden usarse para cortar con láser todas las piezas de la carcasa:

Construcción del Clasificador de Colores con Arduino

El material que utilicé para este proyecto es tablero de fibra de 3 mm de espesor. Redibujé las piezas en el tablero según los planos y, usando una sierra manual pequeña, corté todas las piezas a medida.

Construye un Clasificador de Colores con Arduino: Guía Sencilla con TCS3200 y Servos

Una vez que tenía todas las piezas listas, comencé a ensamblarlas. Primero ensamblé las partes exteriores usando una pistola de pegamento caliente.

Construye un Clasificador de Colores con Arduino: Guía Sencilla con TCS3200 y Servos

Luego, usando pegamento multiusos, pegué los dos servomotores en sus plataformas y los uní al ensamblaje.

Después, nuevamente con pegamento, fijé la guía en el servomotor inferior, así como el soporte y la plataforma necesarios para el servomotor superior.

Construye un Clasificador de Colores con Arduino: Guía Sencilla con TCS3200 y Servos

A continuación, inserté un interruptor y un conector de alimentación para alimentar el Arduino con un adaptador de 5V y en la tercera plataforma inserté el sensor de color.

Construye un Clasificador de Colores con Arduino: Guía Sencilla con TCS3200 y Servos

Conecté los componentes según el siguiente esquema de circuito.

Construye un Clasificador de Colores con Arduino: Guía Sencilla con TCS3200 y Servos

Puedes conseguir los componentes necesarios para este proyecto de Arduino en los enlaces a continuación:

  • Sensor de color TCS230 TCS3200……………
  • Arduino Nano …………………………….
  • Protoboard y cables jumpers ………
  • Servomotor ……………………………….
  • Interruptor………………………………….……..
  • Conector de alimentación…………………………….……

Código Fuente del Clasificador de Colores con Arduino

En este punto, primero necesitamos programar el Arduino y luego terminar el ensamblaje. Aquí está el código de Arduino:

/* Proyecto Arduino - Máquina Clasificadora de Colores
 * 
 * por 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);
 // Configuración de escalado de frecuencia al 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;
}
// Función personalizada - readColor()
int readColor() {
 // Configuración de fotodiodos con filtro rojo para lectura
 digitalWrite(S2, LOW);
 digitalWrite(S3, LOW);
 // Lectura de la frecuencia de salida
 frequency = pulseIn(sensorOut, LOW);
 int R = frequency;
 // Impresión del valor en el monitor serial
 Serial.print("R= ");//nombre
 Serial.print(frequency);//frecuencia color ROJO
 Serial.print(" ");
 delay(50);
 // Configuración de fotodiodos con filtro verde para lectura
 digitalWrite(S2, HIGH);
 digitalWrite(S3, HIGH);
 // Lectura de la frecuencia de salida
 frequency = pulseIn(sensorOut, LOW);
 int G = frequency;
 // Impresión del valor en el monitor serial
 Serial.print("G= ");//nombre
 Serial.print(frequency);//frecuencia color ROJO
 Serial.print(" ");
 delay(50);
 // Configuración de fotodiodos con filtro azul para lectura
 digitalWrite(S2, LOW);
 digitalWrite(S3, HIGH);
 // Lectura de la frecuencia de salida
 frequency = pulseIn(sensorOut, LOW);
 int B = frequency;
 // Impresión del valor en el monitor serial
 Serial.print("B= ");//nombre
 Serial.print(frequency);//frecuencia color ROJO
 Serial.println(" ");
 delay(50);
 if(R<45 & R>32 & G<65 & G>55){ color = 1; // Rojo }
 if(G<55 & G>43 & B<47 &B>35){ color = 2; // Naranja }
 if(R<53 & R>40 & G<53 & G>40){ color = 3; // Verde }
 if(R<38 & R>24 & G<44 & G>30){ color = 4; // Amarillo }
 if(R<56 & R>46 & G<65 & G>55){ color = 5; // Marrón }
 if (G<58 & G>45 & B<40 &B>26){ color = 6; // Azul }
 return color;
}Lenguaje: Arduino (arduino)

Descripción del código:

Necesitamos incluir la librería "Servo.h", definir los pines a los que se conectará el sensor de color, crear los objetos servo y declarar algunas variables necesarias para el programa. En la sección setup, definimos los pines como salidas y entradas, configuramos el escalado de frecuencia para el sensor de color, definimos los pines de los servos e iniciamos la comunicación serial para imprimir los resultados de la lectura de color en el monitor serial.

En la sección loop, nuestro programa comienza moviendo el servomotor superior a la posición del cargador de caramelos. Ten en cuenta que este valor de 115 se adapta a mis piezas y a mi servomotor, por lo que debes ajustar este valor y los siguientes valores para los servomotores según tu construcción.

A continuación, usando un bucle "for", rotaremos y llevaremos el caramelo a la posición del sensor de color. Usamos un bucle "for" para poder controlar la velocidad de rotación cambiando el tiempo de delay en el bucle.

Luego, después de medio segundo de delay, usando la función personalizada readColor() leeremos el color del caramelo. Aquí está el código de la función personalizada. Usando los cuatro pines de control y el pin de salida de frecuencia del sensor de color, leemos el color del caramelo. El sensor lee 3 valores diferentes para cada caramelo: Rojo, Verde y Azul, y según estos valores determinamos cuál es el color real. Para más detalles sobre cómo funciona el sensor de color TCS3200, puedes consultar mi tutorial detallado anterior sobre él.

Construye un Clasificador de Colores con Arduino: Guía Sencilla con TCS3200 y Servos

Aquí están los valores RGB que obtuve del sensor para cada caramelo. Ten en cuenta que estos valores pueden variar porque el sensor no siempre es preciso. Por lo tanto, usando estas sentencias "if" permitimos al sensor un error de alrededor de ±5 del valor probado para el color particular. Por ejemplo, si tenemos un caramelo rojo, la primera sentencia "if" será verdadera y la variable "color" obtendrá el valor 1. Eso es lo que hace la función personalizada readColor() y después, usando una sentencia "switch-case", rotamos el servomotor inferior a la posición particular. Al final, giramos aún más el servomotor superior hasta que el caramelo caiga en la guía y lo devolvemos a la posición inicial para que el proceso se pueda repetir.

Finalizando el Diseño


Después de subir el código, aseguré la placa Arduino usando una pistola de pegamento caliente.

Construye un Clasificador de Colores con Arduino: Guía Sencilla con TCS3200 y Servos

Luego, usando una botella de plástico transparente, hice el cargador y, junto con la parte superior, lo pegué al ensamblaje y terminé el proyecto.

Construye un Clasificador de Colores con Arduino: Guía Sencilla con TCS3200 y Servos

Siéntete libre de hacer cualquier pregunta en la sección de comentarios a continuación.

Proceso de manufactura

  1. Crea un Impresionante Sistema Ambilight para Monitor con Arduino
  2. Construya el clásico juego Pong en Arduino UNO con pantalla OLED: Tutorial paso a paso
  3. Detector de frecuencia de audio con Arduino – Mide los picos de sonido más intensos
  4. Construye tu Propio Tamagotchi con Arduino: Mascota Digital DIY
  5. Controlador Inalámbrico Inteligente de Interruptores: Manipulador Remoto Basado en Arduino
  6. Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón
  7. Pistola de Agua Inteligente Activada por Movimiento con Arduino Nano
  8. Construye un Temporizador Regresivo Fiable con Arduino y Pantalla de 7 Segmentos SparkFun
  9. Mezclador de Colores RGB con Arduino – Proyecto DIY para Principiantes
  10. Girasol Arduino: Construye un Girasol Electrónico que Sigue al Sol
  11. Construye tu Propio Coche RC Porsche con Arduino: Guía Paso a Paso