Está en la página 1de 14

Banda transportadora + brazo robótico con

Arduino
Por
Antony García González
-
diciembre 17, 2016
4
5825

Compartir en Facebook

Compartir en Twitter


Hace unas semanas me compré un brazo robótico para escribir un poco acerca de
temas de robótica. Las circunstancias en días recientes me llevaron a involucrarme
en un proyecto en el cual tuve que programar una banda transportadora junto con
el brazo que compré.

La verdad con este tipo de proyectos a mi me gusta escribir varios posts para luego
unificar contenidos. Ya la semana pasada había publicado sobre qué es y cómo
funciona un servomotor. Supongo que esta vez lo que haré será publicar un post
sobre el proyecto y luego desarrollaré poco a poco los temas de los subsistemas
que lo forman.

La siguiente entrada pretende ser una guía práctica para replicar los resultados
obtenidos en el desarrollo del sistema mostrado en la imagen. Este proyecto fue
diseñado para presentarse a nivel universitario, aunque puede ser utilizado para
presentaciones en secundaria. Resulta muy instructivo para aquellos interesados
en entrar en el mundo de la robótica.

Diseño del hardware


Banda transportadora
El diseño de la banda transportadora es libre y queda a criterio de cada usuario.
Ustedes pueden construir cualquier tipo de banda transportadora. Al final se trata
de una estructura con algunos rodillos, una cinta y un mecanismo que acopla el eje
de un motor a alguno de los rodillos. La idea es que cuando el motor se mueva,
éste arrastre la cinta y desencadene el movimiento del sistema completo.
Lo que quiero explicar en esta parte no es la construcción de la banda
transportadora como tal, sino el sistema que controla el movimiento. En el caso
del proyecto en el que trabajé, se utilizó el siguiente circuito.

El concepto de utilizar un transistor NPN como elemento de control ya lo hemos


explorado en este blog. El transistor actúa como interruptor, alternándose entre los
estado de corte y saturación. A pesar de que el Arduino entrega 5 voltios en
cualquier pin digital, no se recomienda alimentar el motor desde el propio Arduino.
Es mejor usar un transistor que se encargue de manejar la carga pesada. El Arduino
solo se encarga de saturar o cortar el transistor. Esto requiere mucha menos
corriente que la que consume un motor.

Debido a que el motor sólo se moverá en una dirección, no será necesario


implementar un puente H. La banda transportadora puede tener cualquier diseño.
No importa qué tipo de estructura se utilice, siempre se requerirá de un motor. Lo
aquí expuesto permitirá controlar cualquier motor DC de 5 voltios. Es importante
tomar en cuenta que el transistor 2N2222 es adecuado para motores con un
consumo de corriente bajo. Si se va a utilizar un motor de más corriente, les
recomiendo leer mi post sobre el arte de escoger un buen transistor.

Detector de objetos en la banda transportadora


Para detectar los objetos en la banda transportadora que estén pasando en frente
del brazo robótico, utilizamos un pequeño truco que en lo personal me gusta mucho
utilizar. Se trata de colocar un láser apuntando directamente a una fotorresistencia.
Hace algunos años me compré un par de LEDs láser que me han resultado muy
útiles. Los pueden encontrar en ebay o amazon a un muy bajo costo. Pueden
buscarlos como “laser diode 5mW 650 nM”. Aquí les traigo una imagen.

Son muy sencillos de utilizar. Sólo los conectas a 5 voltios y tendrás tu láser. Este
haz de luz dirigido lo hacemos incidir sobre una fotorresistencia (LDR) conectada
de la siguiente forma.
El circuito mostrado en
la imagen representa un divisor de voltaje con un funcionamiento similar a
un potenciómetro. Sin embargo, en vez de variar el voltaje moviendo una perilla,
será la luz incidente sobre la fotorresistencia la que provocará que el voltaje se
eleve o decrezca. En el caso del divisor mostrado en la imagen, cuando aumente el
nivel de luz el voltaje caerá. Si la fotorresistencia se encuentra en oscuridad, el
voltaje crecerá.

Esta configuración es muy sencilla, pero es especialmente útil en casos en los


cuales sea necesario detectar un objeto en frente a una posición específica. En el
caso de mi proyecto, se ha colocado la fotorresistencia en el interior de un tubo,
de forma tal que solamente la luz del láser incida sobre el LDR y que la luz
natural no cause perturbaciones en las lecturas del Arduino.

Es posible utilizar este arreglo con un pin digital, pero en la experiencia me he


dado cuenta que es mejor usar un pin analógico. Gracias a esto podemos verificar
los niveles de voltajes en luz u oscuridad y establecer un nivel intermedio para la
transición de un estado a otro. Es un control más preciso y más eficiente.

Brazo robótico
El brazo robótico lo compré a un tipo en ebay. Tiene una tienda donde vende un
montón de modelos de brazos. El modelo que compré trae 6 servomotores y un
montón de piezas que supuestamente son de aluminio, aunque más parece hierro
colado. No se ven muy sólidas.

Para el proyecto de la banda transportadora he construido un brazo utilizando 4 de


los 6 motores, lo cual reduce 2 grados de libertad al sistema. Esto lo hice
principalmente para reducir la carga sobre los motores.
Brazo robótico con 4 grados
de libertad Brazo robótico con
4 grados de libertad
Controlar estos motores con Arduino es muy fácil. En el post sobre
servomotoresexpliqué los colores de los cables del servomotor.

Para conectar los servomotores, todos los cables rojos irán a 5 voltios. Los
chocolates a tierra y los naranja irán a los pines D5, D6, D7 y D8 del Arduino. Es
una conexión sencilla, lo demás es programación.

Circuito controlador
El control del sistema propuesto se ha hecho en base a un Arduino Nano. Se ha
escogido este modelo principalmente por su tamaño reducido en comparación con
otros modelos. Además es necesario destacar la facilidad con la cual éste modelo
de Arduino puede ser integrado a una placa de circuitos.

El circuito utilizado para controlar todos y cada uno de los componentes que
forman este sistema es el siguiente.

Diagrama electronico del circuito controlador del brazo robótico y la banda


transportadora. Diseñado con la herramienta online gratuita EasyEDA

Está diseñado en base a un Arduino Nano, aunque bien podría utilizarse


cualquier otro modelo de Arduino. El sistema se alimenta a partir de un cargador
de celular de 5 voltios, 2 amperios. Este se conecta en el Terminal Block J1. Es
importante que los GND del Arduino y de la fuente de poder estén conectados
entre sí. A continuación presentamos una descripción breve de todos y cada uno
de los componentes que forman este sistema.

 R1, R2, R3 y R4 son resistencias de 220, 220, 10k y 10k,


respectivamente.
 D1 es un LED RGB.
 M1, M2, M3 y M4 son servomotores.
 M5 es el motor DC de 5 voltios encargado de mover la banda
transportadora
 U1 es un Arduino Nano
 U3 es una fotorresistencia (LDR)
 MOD1 es un diodo láser.
 S1 es un push button normalmente abierto.
 T1 es un transistor 2N2222
 J1 es un terminal block para la entrada de la fuente de poder.

En mi caso construí el circuito de control en base a una placa universal. Se utilizó


el Arduino Nano debido a la facilidad con la que lo podemos insertar en un socket
en una placa. A continuación presento el diseño en PCB del controlador mostrado
en el diagrama electrónico.
Diagrama PCB del circuito controlador del brazo robótico y la banda
transportadora. Diseñado con la herramienta online gratuita EasyEDA
Es posible diseñar una placa más pequeña que la mostrada en la imagen. Sin
embargo, el propósito no es presentar un diseño del PCB, sino que nuestros
lectores puedan ver como hemos interconectado los elementos. Cada quien es
libre de diseñar su PCB como mejor le parezca.

Los dos diagramas del proyecto son públicos y se encuentran disponibles a través
de nuestro repositorio en EasyEDA.

Construcción de la placa
La placa fue construida utilizando headers hembra y macho, de forma tal que
todos los componentes puedan ser montados y desmontados en la placa. Se
utilizó soldadura de estaño para unir los componentes. Debo confesar que no soy
el mejor soldador con estaño, pero siempre trato de hacerlo lo mejor posible.

Circuito
de control de brazo robótico + banda transportadora basado en Arduino Nano

Parte
inferior del circuito de control
Esta placa fue atornillada a la base de madera sobre la cual se construyó la banda
transportadora. Luego los motores y demás componentes fueron conectados
utilizando cables tipo Dupont.

Diseño del software


Programación en Arduino
El código de programación completo y documentado lo tenemos disponible en
nuestro repositorio de Github. Este código permite:

 Mover cada uno de los 4 motores del brazo robótico desde el puerto
serie, al entrar al Setting Mode. Para esto enviamos a través del Monitor
Serie “start set mode”. En este modo de funcionamiento al escribir, por
ejemplo, “1 ENTER 45 ENTER” en el monitor serie, el motor 1 se
colocará a 45 grados. Si se envía “3 ENTER 90 ENTER“, el motor 3 se
colocará a 90 grados. Para salir del set mode se envía el comando “end
set mode”.
 Fuera del Setting Mode el sistema funcionará obedeciendo el botón
colocado en la placa. Al presionar el botón, la banda transportadora
inicia su movimiento y se mantendrá así hasta que se detecte un objeto
o hasta que pase el iddleTime.
 El brazo robótico se moverá cada vez que algo se interponga entre el
láser y la fotorresistencia. Los movimientos que ejecute el brazo serán
específicos para cada caso, para lo cual se ha implementado el Setting
Mode. Con las instrucciones que se colocan en el armAction() el brazo
hará lo que el usuario necesite que haga.

El código completo lo podemos encontrar en este enlace. Es importante tener en


cuenta que es necesario modificar el código para ajustarse a posiciones específicas,
principalmente el método armAction().

El sistema en funcionamiento
El siguiente video presenta el sistema explicado y funcionando. Tanto el código
como el hardware utilizado en el video es idéntico al mostrado en este post, por lo
que todo ha sido probado y comprobado antes de ser publicado.

Es posible, quizás, reducir la rigidez apreciada en los movimientos del brazo. Por
lo pronto lo importante es mostrar que el código y el hardware son capaces de
cumplir con las tareas programadas.

Espero que la información mostrada en este post sea de utilidad para todos los
que nos visitan. Cualquier observación o duda nos lo hacen llegar a través de la
caja de comentarios.

Citar este artículo como: Antony García González, "Banda transportadora +


brazo robótico con Arduino," in Panama Hitek, diciembre 17, 2016[Online].
Available: http://panamahitek.com/brazo-robotico-con-arduino/. Accessed:
octubre 22, 2017