En este proyecto universitario se presenta S.I.C.C.O. (Sistema Industrial de Clasificación de Color Optimizado). En primer lugar, cabe definirlo como un prototipo de clasificación automatizada diseñado para identificar y separar piezas por color en una línea de producción. El sistema utiliza tecnología Arduino y se basa en el análisis de luz mediante el sensorTCS3200. De este modo, es posible dirigir actuadores mecánicos (servomotores) de forma precisa.
Especificaciones Técnicas (Hardware)
Para la construcción de este prototipo se han seleccionado componentes específicos. Por un lado, el «cerebro» es un Arduino Uno R3, mientras que el sensor de visión es un TCS3200. Asimismo, se han integrado 2 servomotores MG995 de alto torque. Por otro lado, la interfaz de usuario cuenta con una pantalla LCD 16×2 y un buzzer pasivo. Finalmente, el control se realiza mediante un pulsador con resistencia pull-up interna.
Componentes del Sistema
Antes de profundizar, es importante destacar que aproximadamente el 80% de los componentes ya se encontraban en posesión del autor o han sido reciclados. En consecuencia, este proyecto fomenta la sostenibilidad. No obstante, para fines informativos, presentamos una estimación del coste de mercado.
Tabla de componentes con su descripción
Categoría
Componente
Función
Control
Arduino Uno R3
Microcontrolador central (Cerebro del sistema).
Control
Controlador de motor DC
Regulación de velocidad y dirección del motor.
Sensores / Input
Sensor TCS3200
Escaneo de color mediante frecuencia de luz.
Sensores / Input
Pulsador (Botón)
Gatillo de inicio para el proceso de escaneo manual.
Actuadores
Servos MG995 (x2)
Clasificación física de piezas (alto torque).
Actuadores
Motor 12V DC
Tracción y propulsión de la cinta transportadora.
Interfaz (HMI)
LCD 1602
Visualización de conteo y estado del sistema.
Interfaz (HMI)
Buzzer Pasivo
Feedback acústico mediante frecuencias variables.
Infraestructura
Fuentes Externas (9V/12V)
Alimentación dedicada para evitar caídas de tensión
Infraestructura
Chasis de Madera
Soporte estructural, alineación y aislamiento
Tabla de componentes con sus precios
Componente
Cantidad
Estado
Precio Unitario
Subtotal
Arduino Uno R3 (Compatible)
1
Reciclado
9,50 €
9,50 €
Sensor de Color TCS3200
1
Nuevo
5,80 €
5,80 €
Servomotor MG995
2
Reciclado
7,50 €
15,00 €
Motor 12V DC
1
Reciclado
8,50 €
8,50 €
Controlador de motor DC
1
Nuevo
10,00 €
10,00 €
Pantalla LCD 1602
1
Reciclado
4,50 €
4,50 €
Buzzer Pasivo
1
Reciclado
0,60 €
0,60 €
Fuente Externa (9V)
1
Nuevo
2,50 €
2,50 €
Fuente Externa (12V)
1
Reciclado
12,00€
12,00€
Pulsador y resistencias
1
Reciclado
0,40 €
0,40 €
Protoboard y jumpers
1
Reciclado
5,00 €
5,00 €
Chasis y Estructura de Madera
1
Reciclado
Incalculable
0,00 €
TOTAL ESTIMADO
73,80 €
Esquema del Circuito
El diseño electrónico de S.I.C.C.O. se ha estructurado para separar la lógica de control de la etapa de potencia. Esto es vital para evitar que el ruido eléctrico de los motores afecte a las lecturas del sensor o la estabilidad de la pantalla LCD.
Imagen 1 – Esquema sin el sensor TCS200 (Sensor de color)
Nota: En la imagen 1, hay que considerar que los dos microservomotores no son los empleados, pero debido al programa empleado no daba opción de meter servomotores más grandes, pero lo crucial es su conexión de pines que son los mismos.
Imagen 2 – Conexión sensor de color (TCS3200) con el sistema completo
Arquitectura de Conexiones
El sistema se organiza en cuatro bloques principales:
Bloque de Procesamiento: Arduino Uno R3 como unidad central.
Bloque de Sensores e Input: El sensor TCS3200 (Pines 3-7) y el pulsador de inicio (Pin A0).
Bloque de Actuadores: Dos servomotores MG995 (Pines 8 y 9) y el motor DC de la cinta.
Bloque de Interfaz (HMI): Pantalla LCD 1602 en modo paralelo y Buzzer Pasivo (Pin 2).
Gestión de Energía (Power Management)
Se ha implementado una configuración de GND común (masa unificada) pero con líneas de alimentación separadas:
Línea de 5V: Alimenta el Arduino y la lógica del sensor.
Línea de 9V/12V: Fuente externa dedicada exclusivamente a los servomotores y al motor de la cinta. Esta separación es la que garantiza que la pantalla LCD no sufra parpadeos o reinicios durante la activación de los brazos mecánicos.
Pinout Detallado (Mapeado de Pines)
Componente
Pin del Componente
Pin Arduino / Placa
Función
Sensor TCS3200
VCC
5V (Placa de pruebas)
Alimentación del sensor
GND
GND (Placa de pruebas)
Tierra común
S0
Pin 3
Escala de frecuencia
S1
Pin 4
Escala de frecuencia
S2
Pin 5
Filtro de color
S3
Pin 6
Filtro de color
OUT
Pin 7
Lectura de frecuencia RGB
LED
5V (Placa de pruebas)
Iluminación constante
Servomotores
Señal (Naranja/Blanco)
Pin 8 y 9
Control PWM (8: Azul, 9: Rojo)
(MG995)
VCC (Rojo)
Fuente Externa (+ o Placa de pruebas)
Alimentación de potencia
GND (Marrón/Negro)
GND Común
Tierra común del sistema
Pantalla LCD
RS
Pin 13
Selección de registro
(1602)
E
Pin 12
Habilitación (Enable)
D4, D5, D6, D7
11, 10, A2, A3
Bus de datos
VSS / RW
GND
Tierra y modo escritura
VDD
5V
Alimentación lógica
V0
Resistencia fija a GND
Ajuste de contraste
Buzzer Pasivo
Positivo / Señal
Pin 2
Generación de tonos
Negativo
GND
Tierra común
Pulsador
Terminal A
Pin A0
Gatillo de escaneo
Terminal B
GND
Cierre de circuito a masa
Funcionamiento y Metodología
A diferencia de los sistemas de escaneo continuo, S.I.C.C.O. implementa una «Estación de Chequeo Previo«. Debido a las limitaciones de distancia y la variabilidad de la luz ambiental, se ha optado por un diseño de «escaneo bajo demanda«. El proceso funciona de la siguiente manera:
Escaneo Manual: El operador coloca la pieza y pulsa el botón.
Análisis de Proporciones: Por consiguiente, el software mide el porcentaje relativo de RGB para evitar errores por sombras.
Confirmación Acústica: El zumbador emite tonos distintos según el color.
Clasificación Síncrona: Posteriormente, el sistema calcula el tiempo de viaje y activa el servo en el momento exacto.
Código Fuente
El código utiliza la librería Servo.h y LiquidCrystal.h. Destaca el uso de la función pulseIn() con timeout para evitar bloqueos del procesador y la lógica de porcentajes para la discriminación de color.
Nota: En el vídeo se puede observar la secuencia de escaneo, el pitido de confirmación y el movimiento síncrono de los brazos según el color detectado.
Dificultades Encontradas durante el desarrollo
El desarrollo de este prototipo presentó varios retos técnicos que requirieron soluciones creativas:
Modificación de piezas: Originalmente el proyecto se iba a realizar con el sensor de visión ESP32-CAM, pero debido a las dificultades que presentaba, se ha tomado la decisión de intercambiar esa pieza por el TCS3200, modificando parte del comportamiento, pero manteniendo el objetivo de cómo funciona un clasificador de objetos.
Alcance del Sensor: Inicialmente se planteó un escaneo a 23 cm de distancia, pero se comprobó que el TCS3200 pierde precisión a más de 3 cm debido a la dispersión de luz. Se resolvió mediante un sistema de escaneo manual cercano.
Gestión de Energía: Los servos MG995 generan picos de consumo que reiniciaban el LCD. Se solucionó separando las líneas de alimentación y unificando las tierras (GND).
Contraste del LCD: La ausencia de un potenciómetro dificultó la legibilidad. Se ajustó mediante el cálculo de una resistencia fija óptima para estabilizar el voltaje del Pin V0.
Buzzer Pasivo: La diferencia entre un buzzer activo y uno pasivo obligó a cambiar la lógica de digitalWrite por la función tone() para generar sonido real.
El Desafío del Software: Lógica Anti-Daltonismo
Uno de los mayores retos fue la sensibilidad del sensor hacia el rojo. Para solucionar esto, implementamos una inversión de frecuencias. El sistema suma la intensidad de los tres canales y calcula cuánto peso tiene cada uno sobre el total:
Esto permite que S.I.C.C.O. identifique el rojo o el azul basándose en su proporción lumínica, no en su brillo absoluto. Gracias a esta técnica, logramos que el sistema discrimine con éxito entre piezas rojas, azules y verdes (siendo estas últimas contabilizadas pero no clasificadas).
Posibles Mejoras (Futuro del Proyecto)
Aunque S.I.C.C.O. es funcional, el diseño permite escalar hacia una versión más industrial:
Implementación de Visión Artificial: Sustituir el sensor TCS3200 por una cámara (ESP32-CAM) para permitir el escaneo a larga distancia sin intervención manual.
Uso de Módulo I2C para LCD: Para reducir el cableado de 6 pines a solo 2, liberando puertos para más sensores.
Cinta Transportadora Inteligente: Sincronizar el motor de la cinta con el Arduino mediante un controlador (L298N) para paradas de emergencia automáticas.
Conclusiones
En conclusión, S.I.C.C.O. demuestra cómo la ingeniería de software compensa las limitaciones del hardware. Efectivamente, mediante algoritmos de compensación, se ha logrado un sistema fiable y escalable.