Revista Creaciones

Crea un robot con nuestro kit Robot de Inicio y Arduino – Parte 2

Por Albertonavarro

Frontal de robot cableado

En esta segunda parte del artículo sobre el kit robot de inicio vamos a seguir explicando su funcionamiento y puesta a punto para dejarlo completamente funcional. Ya explicamos como se monta el kit, ahora nos falta hablar sobre el controlador de motores, conexionado y programar Arduino para que funcione.

Decir también, que las posibilidades del kit robot son infinitas, tantas como tú imagines. Añadiéndole sensores de proximidad puedes crear un robot autónomo que circule por cualquier lugar sin chocar con nada, capaz de cambiar de dirección solo. Puedes crear sobre la base un robot aspirador con algunos motores y accesorios que puedes construir tú mismo, puedes hacer un robot teledirigido mediante shield bluetooth o RF de Arduino y un largo etc.

Pero antes, vamos a dejar la base lista para que funcione…

Conexión con el controlador de motores CC

La placa Arduino no puede gestionar o controlar directamente motores de corriente continua. Aunque hiciésemos un sketch para darle voltaje al motor o quitárselo gracias a las salidas de Arduino, en reacción a ciertos parámetros, los 20mA que proporciona no son suficientes para estos motores. Pero eso no es lo que queremos para nuestro robot y por eso necesitamos el controlador de motores.

Los motores de cc que vienen en el kit pueden funcionar perfectamente con 6v y unos 300mA, como hay dos motores, la intensidad demandada será de el doble, 600mA. Nuestro contorlador HG7881 de LC Technology puede funcionar entre 2.5 y 12v, con intensidades de 800mA. Así que es perfecto para lo que queremos, además es bueno que soporte hasta 12v, ya que recuerda que el rack posiciona las pilas en serie y suministra una tensión de 6v total (1.5v x 4 pilas) cuando las pilas están al inicio de su vida (carga máxima). Es muy importante este dato, ya que con voltajes inferiores a 6v, el motor no puede funcionar a plena carga.

Con el driver HG7881 nos basta para nuestra plataforma, además es compacto para ahorrar peso y espacio en nuestra plataforma robotizada.  Además es recomendable que lo dejes en un espacio abierto y que no esté al lado de otros elementos que produzcan calor, algunos elementos de los drivers de motores suelen calentarse por la potencia que manejan.

El conexionado de los cables de los motores al driver o controlador de motor es sencillo. Si te fijas en el board del controlador aparecen dos módulos verdes de plástico con dos tornillos cada uno. Son fichas de empalme para hacer las conexiones de los cables de los motores a ellos. La conexión es sencilla, con el fantástico destornillador del kit sueltas un poco los tornillos y metes los cables de los motores tal cual se muestra en la siguiente imagen. Luego aprietas los tornillos y listo.

Conexiones del controlador para el robot

Nota: Yo he aprovechado uno de los agujeros de la plataforma y los tornillos y tuercas que sobraron para sujetar el driver a la plataforma, ya que este también cuenta con perforaciones. He empleado solo un tornillo/tuerca y uno de los agujeros centrales que hay entre los orificios en forma de cruz.

En la imagen anterior también puedes ver un esquema de los pines de conexión del driver. Como ves, los dos centrales son los de alimentación, Vcc para la tensión y GND para tierra. Aquí deben ir conectados los cables del rack de pilas. Para no dejar el driver inutilizado por si lo queremos emplear para otros experimentos, podemos utilizar jumpers (opción por la que yo he optado) para atrapar el hilo en el pin o hacer una conexión simplemente enrollando el cable. Si quieres, puedes soldarlo como hicimos con los cables del motor, pero para sustituirlo o utilizarlo en otra aplicación te será más difícil…

Con una crimpadora (en cristiano, pela cables), si dispones de ella o si no con unas simples tijeras, puedes quitar el envoltorio aislante de los cables del rack de pilas para dejar un poco más de hilo conductor desnudo y poder enrollarlo en  los pines centrales. Además, es mejor que queden así para poderlos quitar en cualquier momento e interrumpir el suministro, a no ser que dispongas de un interruptor para desconectar el suministro, de lo contrario no podrás pararlo a no ser que quites las pilas.

Conexionado de los jumpers del robot

Nota: Si quieres soldarlos porque veas que es mejor y no vas a emplear el dirver para otros fines, puedes hacerlo y si no dispones de interruptor, una cosa que se me ocurre fácil y rápida para desconectar el aparato es mediante una lámina de plástico fina, colocándola entre el electrodo negativo de la pila y el contacto metálico del rack para interrumpir el flujo de electricidad.

Conexionado con Arduino y programación

Ya solo nos falta escribir el código fuente de nuestro sketch y hacer las conexiones entre el controlador de motor y Arduino. Lo que haremos a continuación es conectar con más hilo unifilar los pines de Arduino y los pines de ambos lados del controlador que han quedado libres.

Yo he elegido esta configuración, si lo prefieres puedes crear tu otra, pero no olvides rectificar el código fuente para que coincidan con los pines que has empleado. De las salidas digitales de Arduino he escogido la 9 y 5 para A-IA y A-IB respectivamente, mientras que para las B-IA y B-IB he seleccionado las 10 y 6. Estos pines del controlador de motores son los que darán la velocidad y dirección al motor. El pin A-IA y A-IB controlarán el motor A (fíjate que junto a las fichas de empalme verdes donde has conectado los cables que vienen de los motores, en la placa hay una instrucción que pone Motor A), mientras que B-IA y B-IB controla el motor B. Conecta los cables de este modo y se puede decir que físicamente está terminado.

Si Arduino manda una señal baja al pin A-IA y una alta al A-IB, el motor gira en un sentido a como lo haría si A-IA está en nivel alto y A-IB en bajo. ¿Ves que sencillo es controlar la dirección de los motores? Esto es así si los conectamos a unos pines digitales normales, pero si los conectamos a pines digitales PWM de Arduino (recuerda que son aquellas que tienen el símbolo ~), además podremos controlar la velocidad de los motores. Por eso elegí los pines PWM en este ejemplo.

Sin el controlador de motores solo podríamos dar potencia a uno u otro motor o quitársela y si quisiésemos cambiar el sentido deberíamos invertir la colocación de los cables. Para modificar la velocidad habría que jugar con distintas pilas o voltajes… Como ves poco práctico y es por ello que el controlador de motores nos abre un mundo nuevo de posibilidades.

Ahora vamos con el código del sketch de Arduino que escribiremos en el entorno Arduino IDE, que básicamente es el siguiente:

//Controlar motores de plataforma robotizada de ComoHacer.eu

//Declaramos las constantes para los pines PWM

const int AIA = 9;  //Pin 9 conectado a A-IA
const int AIB = 5;  //Pin 5 conectado a A-IB
const int BIA = 10; //Pin 10 conectado a B-IA
const int BIB = 6;  //Pin 6 conectado a B-IB

//Cambia la velocidad gracias a los PWM variando de 0-255

byte velocidad = 255;

void setup()
   {
   pinMode(AIA, OUTPUT); //Configuracion de los pines como salidas
   pinMode(AIB, OUTPUT);
   pinMode(BIA, OUTPUT);
   pinMode(BIB, OUTPUT);
   }

//Lazo principal con las direcciones: adelante, atras, izquierda y derecha.
//Lo que va a hacer en este caso es mover el robot en cada dirección durante 1s,
//puedes modificar esto como quieras o agregar sensores para que en función del dato
//captado por el sensor se mueva en concordancia.

void loop()
   {
   adelante();
   delay(1000);
   atras();
   delay(1000);
   izquierda();
   delay(1000);
   derecha();
   delay(1000);
   }

//Configuracion de cada dirección para que el controlador lo haga

void atras()
   {
   analogWrite(AIA, 0);
   analogWrite(AIB, velocidad);
   analogWrite(BIA, 0);
   analogWrite(BIB, velocidad);
   }

//Si te fijas, para cambiar la dirección de giro es justo lo contrario al anterior

void adelante()
   {
   analogWrite(AIA, velocidad);
   analogWrite(AIB, 0);
   analogWrite(BIA, velocidad);
   analogWrite(BIB, 0);
   }

void izquierda()
   {
   analogWrite(AIA, velocidad);
   analogWrite(AIB, 0);
   analogWrite(BIA, 0);
   analogWrite(BIB, velocidad);
   }

void derecha()
   {
   analogWrite(AIA, 0);
   analogWrite(AIB, velocidad);
   analogWrite(BIA, velocidad);
   analogWrite(BIB, 0);
   }

¿Qué velocidad máxima es capaz de alcanzar nuestro robot?

Aportación al artículo de Jose Antonio Navarro.

Nuestra plataforma está alimentada con cuatro pilas o baterías de 1,5 Voltios, eso nos da una tensión de 6 voltios para alimentar a nuestros motores. Bien, pues si alimentamos directamente de las pilas al motor, podemos calcular la velocidad máxima que podrá alcanzar nuestro robot. Veamos como:

  1. Medimos las revoluciones por minuto que produce nuestro motor, para ello, una vez montada la plataforma, le pegamos un pequeño trozo de cinta en el borde de la rueda, elevamos la plataforma para que no se desplace por la mesa y conectamos el motor a las pilas (recordad que estén al máximo de carga para que los cálculos sean precisos). Usando un cronómetro cualquiera contamos las vueltas que da la rueda en un espacio de tiempo determinado, digamos 30 segundos o 1 minuto (evidentemente esto es posible porque tenemos un motor con una reductora grande y las revoluciones que produce son relativamente pocas). En nuestro caso yo he acercado el dedo ligeramente a la rueda, sin tocarla, y he ido contando los golpecitos que me daba la cinta en el dedo, mientras miraba el cronómetro. He repetido esta operación varias veces para asegurarme que no cometía errores y luego he realizado la media de las tres medidas. Eso me ha dado un valor de 115 revoluciones en 30 seg.
  2. Medimos el diámetro de la rueda que es de unos 66 mm con lo que el perímetro o longitud de la circunferencia de la rueda es:

l = 2 * pi * r

l = 2 * 3,14 * 33

l = 207,24 mm ó 20,7 cm

  1. Si ya vimos que nuestra rueda gira a 115 revoluciones cada 30 segundos, significa que gira a:

115 / 30 = 3,83 rev/seg.

  1. Si cada revolución avanza 20,7 cm, cada segundo nuestro robot recorrerá:

20,7 * 3,83 = 79,28 cm/seg.

  1. O lo que es lo mismo:

79,28 * 60 / 100 = 47,57 m/min. (metros por minuto)

  1. O lo que es lo mismo:

47,57 * 60 / 1000 = 2,85 km/h

Nota: Estos cálculos son en vacío y como os comentaba antes, con la carga de las pilas al máximo. Cuando esté todo montado y apoyado en superficie la velocidad será algo menor ya que tendrá que mover todo ese peso.

Espero que les haya gustado y le encuentren muchas aplicaciones. Estamos preparando otro artículo sobre el manejo de este robot por medio del GPIO de la Raspberry Pi muy interesante. ¡Estate atento al blog si te interesa saber más!

El artículo Crea un robot con nuestro kit Robot de Inicio y Arduino – Parte 2 ha sido originalmente publicado en ComoHacer.eu | ¿Inventamos juntos?.


Volver a la Portada de Logo Paperblog