Sei sulla pagina 1di 13

CLASIFICADOR DE CHIPS DE COLOR

MEARM

En este Instructables, crearemos un clasificador de chips de color


automatizado utilizando un brazo de robot meArm y un sensor de
color TCS3200. Esto es parte de mi plan de estudios de nivel
intermedio para estudiantes de secundaria y preparatoria en mi taller
de robótica . MeArm es una excelente herramienta educativa para
enseñar a los estudiantes sobre mecatrónica y cinemática
inversa. Combinando MeArm con un sensor de color TCS3200 que
es una solución económica para detectar el color utilizando luces LED
rojas, verdes y azules para medir los valores RGB reflejados,
podríamos construir un clasificador automatizado de chips de color
que enseñe a los estudiantes sobre la automatización usando un robot.
Paso 1: Piezas y herramientas

 Kit acrílico de corte láser MeArm. (La imagen muestra el kit de


madera. Obtenga el kit de acrílico ya que los tornillos
autorroscantes en realidad no funcionan en madera ni en acrílico).
 4 servomotores (utilicé servos TowerPro SG90 baratos)
 Nano
 Mini tablero
 Sensor de color TCS3200
 4 x paquete de baterías AA para fuente de alimentación
independiente a los servos
 Una pieza de madera 1x1 como estación sensor de color
 Una pieza de madera 1x4 como base para MeArm y una placa de
prueba
 Chips de color
 Dispensador de chips de color (puede hacerlo con cartón)
 Bandeja de fichas de colores (puede hacerlo con cartón)
 Cables Dopont
 Wireties
 En este proyecto se utilizaron herramientas habituales, como un
cortador de alambre, un soldador y una pistola de pegamento.
Paso 2: Asamblea de Mearm

MeArm es un brazo robot de código abierto diseñado por


Phenoptix y usted puede comprar un kit completo directamente
desde https://www.mearm.com o comprar componentes
individuales de varias fuentes en línea. Como estamos
construyendo 10 unidades en el taller, fui con este último. Si tiene
un cortador láser, también podría cortar sus propias piezas.

Las instrucciones de compilación para MeArm v1.0 ya están bien


documentadas por Phenoptix en este Instructable, así que
consulte esa documentación al armar el brazo del robot. Además,
he hecho una base más grande usando una pieza de madera de
1x4 para montar tanto el MeArm como un mini tablero para Nano.
Paso 3: sensor de color TCS3200

Las especificaciones técnicas para el sensor de color TCS3200


se encuentran en
http://www.dfrobot.com/wiki/index.php/TCS3200_Color_Sensor_(
SKU:SEN0101).

El módulo sensor que compré no incluía un anillo circular para


aislar las luces LED del elemento sensor, así que hice un anillo
circular con una bala Nerf y lo pegué al módulo del sensor. (Ver
foto)
Paso 4: Electrónica
Conecte todos los componentes de acuerdo con el
diagrama. Estoy usando 4 pilas AA como fuente de alimentación
separada para servos. Nano funciona con USB.

Paso 5: Código

Cualquier persona que intente configurar manualmente los


valores de servo en MeArm puede haber experimentado eso:

 los servomotores / el brazo se mueven demasiado rápido


 es difícil visualizar los valores de ángulo correctos para
ubicaciones de pinzas de destino

Bueno, ambos problemas podrían ser remediados por una


biblioteca llamada meArm
(https://github.com/yorkhackspace/meArm). La biblioteca solo
requiere las coordenadas x, y y z de una posición de destino y
hace todo el trabajo de cálculo de los valores de ángulo correctos
para los servos. (Perfecto para los estudiantes. Entienden las
coordenadas cartesianas).

Primero debe descargar e instalar esta biblioteca meArm en su


carpeta de la biblioteca Arduino.

Y luego, descargue el código IDE de Arduino adjunto. Los


comentarios en el código deberían explicar qué está sucediendo
en el código. Fue escrito para Nano, pero debería funcionar en
otras placas Arduino con ninguna o pocas modificaciones.

Paso 6: Calibración

Para que el código detecte correctamente los chips rojo, amarillo


y verde, debemos suministrar el rango correcto de valores RGB
que ve el sensor de color para estos chips. Ejecuté el código en el
modo DEPURAR para ver qué valores RGB ve para los chips
rojos, amarillos y verdes y codificar manualmente el rango en el
código hasta que el código detecte el color correcto al
100%. Debe hacer esto cada vez que ejecute el código porque el
sensor es muy sensible a la luz ambiental.

Paso 7: Mejoras futuras

Calibrar y codificar los valores RGB en el código es un proceso


muy arduo. Creo que la mejor manera de manejar esto es permitir
que el código aprenda el color. Una forma de lograr este
aprendizaje es realizar una rutina de autocalibración en la sección
de configuración para pasar por varios conjuntos de fichas rojas,
amarillas y verdes de la manera prescrita y dejar que determine
los límites inferior y superior de los valores RGB para rojo chips
de color verde, amarillo y verde.
meArm
Biblioteca de control de cinemática inversa para Phenoptix meArm y Arduino.

El metrom tiene cuatro mini servos, uno para la pinza y uno para rotar la base, la
articulación del hombro y la articulación del codo. Pero no es necesario para las
cosas y los términos de los parámetros de servo cuando está mucho más
interesado en dónde quiero colocar la pinza, en coordenadas cartesianas (x, y, z)
normales.

Esta biblioteca resuelve los parámetros necesarios para enviar los mensajes con el
fin de cumplir con una posición determinada, lo que permite una codificación
mucho más simple.

Las coordenadas se miden en mm desde el centro de rotación de la base. La


posición inicial de 'casa' está en (0, 100, 50), es decir, 100 mm adelante de la base y
50 mm del suelo.

Varias otras versiones de esta biblioteca existen:

 Arduino con la placa de conducción Adafruit PWM


 Raspberry Pi con placa de conducción Adafruit PWM
 Beaglebone Black

Uso
#include "meArm.h"
#include <Servo.h>

meArm arm;

void setup() {
arm.begin(11, 10, 9, 6);
arm.openGripper();
}

void loop() {
//Go up and left to grab something
arm.gotoPoint(-80,100,140);
arm.closeGripper();
//Go down, forward and right to drop it
arm.gotoPoint(70,200,10);
arm.openGripper();
//Back to start position
arm.gotoPoint(0,100,50);
}
Se incluyen tres ejemplos de uso:

 IKTest sigue una ruta preprogramada en coordenadas cartesianas


 JoystickIK utiliza dos palancas analógicas para guiar la pinza en el espacio
cartesiano
 meArm_Wii_Classic usa un gamepad Wii Classic conectado sobre I2C para
guiar la pinza

Instalación
Clona este repositorio en tu máquina local y colócalo en tu carpeta de bibliotecas
Arduino como 'meArm'.

Metodos de clase del objeto meArm

 void begin (int pinBase, int pinShoulder, int pinElbow, int pinGripper) - Los
cuatro pines compatibles con PWM utilizados para controlar los servos. Se
debe llamar a Begin en setup () antes de hacer cualquier otra llamada a la
instancia de meArm.
 void openGripper () - abre la pinza, soltando todo lo que tenía
 void closeGripper () - cierra la pinza, toma tiempo y sostiene algo como lo
hace
 void gotoPoint (float x, float y, float z) - moverse en línea recta desde el
punto actual a la posición solicitada
 void goDirectlyTo (flotar x, flotar y flotar z): configure los ángulos de los
servos para ir inmediatamente al punto solicitado sin importar la ruta por la
que pasa el brazo para llegar, más rápido pero menos predecible que
gotoPunto
 bool isReachable () - develine solamente si el soporte puede alcanza
teóricamente el punto
 flotante getX () - coordenada x real
 flotante getY () - coordenada y real
 flotar getZ () - coordenada z real
 void end () - Desactiva todos los servomotores. Si desea continuar usando el
metrón más tarde, llame de nuevo a begin ().

Potrebbero piacerti anche