viernes, 4 de marzo de 2016

Robot Miniskybot 2.0 funcionando como siguelíneas


Hoy os voy a enseñar a construir uno de los proyectos más complejos que he realizado hasta el momento, en cuanto a montaje se refiere, debido a la cantidad de componentes que tenemos que integrar en un mismo proyecto, puesto que en este POST vamos a desarrollar un robot siguelíneas basándonos en el robot Miniskybot 2. Este robot es la segunda generación de la familia de robots imprimibles Miniskybot, siendo financiado y desarrollado dentro del grupo de Robótica y Cibernética de la Universidad Politécnica de Madrid. La estructura completa de este robot la podemos comprar directamente a través de la WEB o si tenemos la suerte de tener a mano una impresora 3D, podemos imprimir nosotros mismos las piezas del robot que nos interesen (que en nuestro caso son dos ruedas y el chasis) para posteriormente montarlas,  a partir de los completos planos y manuales que podemos obtener de manera gratuita en el siguiente enlace de descarga.


Robot Miniskybot 2.0 terminado

Este Robot obtiene su potencia y movimiento directamente de dos servomotores SM-S4306R, de rotación continua, que lleva integrados en su chasis y unidos a sus dos ruedas motrices. Estos servomotores les  vamos a controlar a través de la librería que ya conocemos de POST anteriores, pero con la peculiaridad de que no pueden ser movidos a posiciones concretas como ocurría con los servos de 180°.

Servo de rotación continua modelo SM-S4306R

Para ver cómo se comportan los servos de rotación continua, si aplicamos un pulso PWM de valor igual a 95 mediante programación en el pin de control del servo, este no se desplaza a la posición correspondiente a 95° como lo harían los servos de 180°, sino que se mantendrá girando en un sentido concreto durante todo el tiempo. Para controlar el giro en ambos sentidos y si queremos detener el movimiento de los servos tenemos que aplicar alguno de los siguientes pulsos PWM en su pin de control (cable blanco en este caso): PWM = 0 para que el servo gire en un sentido, PWM = 180 para que el servo gire en el sentido contrario y por último PWM = 90 para que el servo se detenga.

El control del accionamiento de los servomotores del robot se realiza mediante programación, teniendo en cuenta el comportamiento de los dos sensores siguelíneas, el derecho y el  izquierdo, que he acoplado en la parte frontal del robot. Estos sensores están compuestos tanto por un LED infrarrojo emisor como por uno receptor y nos entregan por su pin de salida (OUT) un nivel BAJO (LOW à “0” lógico) cuando apuntamos con los LEDS del sensor hacia superficies de color negro, puesto que el negro es un color que impide que se refleje el haz de luz infrarroja desde el emisor al receptor. En cambio sí apuntamos hacia una zona de otro color, en nuestro caso blanca, se reflejaría la luz infrarroja desde el emisor al receptor y por lo tanto la salida del sensor cambiaría a nivel ALTO (HIGH à “1” lógico).

Detalle de un sensor siguelíneas

Para la programación del robot he tenido en cuenta los cuatro estados siguientes:
  
          El robot avanza cuando los dos sensores detectan línea.
          El robot gira a la derecha cuando el sensor izquierdo no detecta línea.
          El robot gira a la izquierda cuando el sensor derecho no detecta línea.
          El robot se para cuándo ningún sensor detecta línea.

Combinación de estados posibles en los sensores siguelíneas

Las conexiones tanto de los servomotores como de los sensores siguelíneas  con nuestro Arduino, las vamos a realizar a través de una “Sensor Shield V4.0” que he añadido para simplificar la instalación de los componentes. Este Shield simplemente es uno de los muchos que son compatibles con Arduino UNO y nos ofrece una distribución de las entradas y salidas mucho más cómoda para poder conectar tanto sensores como actuadores de una manera eficaz. Cada terminal del shield consta de 3 pines G (GND), V (VCC) y S (Señal), es decir, tendrá pines independientes de alimentación y masa para cada entrada o salida, lo que nos facilita mucho el montaje de los componentes.
Sensor Shield V4.0
 
El programa simplemente hace que el robot Robot Miniskybot 2.0 siga la línea negra, sin salirse de la trayectoria dibujada en la pista de pruebas que he fabricado  y cuando lo saquemos sobre la superficie blanca, el robot permanecerá parado. La pista de pruebas la he realizado con una cartulina tamaño A2 de color blanco, diseñando un trazado simétrico con la cinta adhesiva de color negro como el que se muestra en la siguiente imagen, aunque vosotros lo podéis trazar con otras formas, pero teniendo en cuenta que el ancho del carril debe siempre superar la anchura de los dos sensores siguelíneas juntos y además si trazamos curvas excesivamente cerradas los dos sensores se pueden salir de la trayectoria marcada al mismo tiempo quedando el robot parado hasta que no lo metamos de nuevo sobre la superficie negra.

Pista de pruebas siguelíneas


Lista de Materiales:


·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         Arduino Sensor Shield V 4.0.

·         2 Servos de rotación continua (SM-S4306R).

·         2 Sensores siguelíneas infrarrojos.

·         Portapilas 6xAAA con conector Jack macho de 2,1mm.

·         6 pilas recargables AAA de 1000mAh con cargador.

·         Robot Miniskybot 2.0:
o   Chasis y dos ruedas impresos en plástico ABS.
o   4 tornillos de  M3x10mm  y 4 tuercas M3.
o   Canica de 16mm de diámetro.
o   2 Juntas tóricas de 50mm de diámetro y 3 mm de grosor.

·         Gomas elásticas para la sujeción de los elementos.

·         Pista de pruebas siguelíneas:
o   Cartulina blanca tamaño A2.
o   Cinta adhesiva de color negro.

·         Protoboard.

·         Cables de conexión.



Código del programa:



Video:


No hay comentarios:

Publicar un comentario