16

Crea un robot Arduino con nuestro kit

Publicado por el .

Robot Arduino

Con material barato y fácil de manejar, vamos a montar una base robótica controlada por Arduino y que podremos programar para manejar a nuestro antojo los dos motores que guían el robot. Además, con el tiempo podrás añadirle nuevos gadgets a tu robot Arduino para ir avanzando en la materia de la robótica o la mecatrónica.

La mecatrónica es un tipo de ingeniería que engloba otros tipos de ingenierías, como la mecánica, la electrónica, la de control y la informática. En definitiva, nos sirve para crear máquinas móviles automáticas o inteligentes. Al fin y al cabo es lo que hacemos cuando trabajamos con programación, electrónica y elementos mecánicos (actuadores, motores, engranajes, ruedas, …).

En este artículo te explicaremos paso a paso como se monta, conecta y programa todo el conjunto para la base robótica. Así, si nunca has tenido contacto con robots, aprenderás su modo de funcionamiento de la forma más sencilla.

Materiales necesarios

  • Placa Arduino disponible en nuestra tienda.
  • Kit robot de inicio disponible en nuestra tienda.
  • Controlador de motores HG7881CP de LC Technology Inc. que viene incluido en el kit. (Descargar Datasheet)
  • Cable unifilar para realizar las conexiones entre Arduino y el robot.
  • Y como herramientas para el montaje he empleado un simple soldador de estaño (e hilo de estaño para soldar) y el destornillador que viene con el kit.

Introducción al material del kit

En el kit robot, junto con el controlador de motores, componen el material base para la construcción. En el kit vienen diversos componentes que te voy a presentar antes de nada para que los tengas presentes.

Contenido del kit robot

  1. Una de las cosas que vienen es un práctico destornillador que te servirá para el montaje y desmontaje de toda la tornillería integrada o para trabajos posteriores. El destornillador es de doble punta, para poder contar con un cabezal plano o de estrella en cualquier momento.
  2. Verás también cuatro hilos o cables unifilares, dos rojos y dos negros. Estos los emplearemos para soldarlos a los conjuntos de motores de CC que también vienen.
  3. La plataforma, de metacrilato transparente, viene recubierta de un protector de papel marrón que puedes quitar en cualquier momento. Ésta nos servirá de soporte estructural para adherir allí todos los demás componentes, es decir, es el chasis de nuestro robot. Ya viene perforada para un fácil montaje, con agujeros de más para otros posibles montajes y extensiones futuras.
  4. Los dos conjuntos de motor, como los he llamado, son en realidad dos pequeños motores de CC que transmiten su potencia a unos engranajes de plástico internos (dentro de la carcasa amarilla) para transformar el movimiento giratorio del motor en un movimiento transversal del eje blanco que vemos sobresalir por ambos lados. Además, los engranajes internos actúan como reductores de velocidad para evitar transmitir a las ruedas demasiadas RPMs. Los motores pueden funcionar con un rango amplio de voltajes, pero siempre de corriente continua.
  5. Las dos ruedas serán las encargadas de mover la base gracias a la potencia transmitida por los motores. Su montaje es muy sencillo, ya que encajan perfectamente en los ejes de los motores.
  6. Otro de los componentes que integran el kit es el rack para las 4 pilas tipo AA que alimentarán a los motores. El rack coloca las baterías en serie, lo que permite sumar el voltaje de cada una de las pilas para conseguir mayor potencia en los motores.
  7. Por último encontrarás una pequeña bolsa de plástico con tornillos y tuercas para el montaje, así como dos ruedecitas para colocar en los ejes internos de los motores y que te servirán para poner un cuentavueltas y controlar mejor al robot, y dos soportes metálicos que sujetarán los motores a la plataforma. La rueda loca también servirá como rueda directriz y como punto de apoyo para la zona delantera de la plataforma.
  8. El controlador de motores doble nos permitirá controlar los motores en conjunto con Arduino. Este controlador de motores tiene dos circuitos, uno para cada motor (o una sola fase con 4 líneas para motores de 2 tipos de etapas). Además cuenta con dos chips controladores HG7881. La pequeña plaquita soporta intensidades de 800 mA y puede funcionar con voltajes de entre 2.5 y 12v (siempre de continua).

Montaje del kit robot Arduino

Una vez sepas de qué dispones, es el momento de empezar a montarlo:

  • Yo he querido empezar por lo más “complicado” por decirlo de alguna manera, puesto que no es nada difícil. Simplemente que lleva algo de más tiempo. Me refiero a soldar los cables unifilares a los bornes de cada motor. Uno rojo y uno negro a cada motor. Para eso, he calentado el soldador de estaño y con un poco de estaño he realizado las soldaduras. Lo he querido hacer antes de nada, porque así con los motores desmontados se accede mejor a ellos que no luego una vez estén montados.
  • Lo siguiente que he hecho es acoplar las ruedecitas que vienen en la misma bolsa que las tuercas, tornillos y rueda loca. Simplemente con un poco de presión se encaja el eje de plástico blanco en la ranura central del cuentavueltas.
  • Luego con los tornillos más largos que vienen en el kit sujetamos los dos soportes metálicos que se incluyen con el conjunto motor. Como verás, el envoltorio amarillo del motor tiene unos agujeros pasantes realizados en la misma cara donde hemos colocado las ruedas. Pasa los tornillos por ellos y con una rosca apriétalo.

Cables del motor del robot

Nota: Un pequeño consejo para la soldadura, verás que vienen con un plástico transparente que los sujeta a la parte amarilla, pues retíralo un poco hacia el lado contrario a donde estés haciendo la soldadura para que no se funda con el calor. Y si es la primera vez que sueldas, verifica que la soldadura haya quedado bien (sin pegotes, roturas,…) y de un color brillante (si el metal presenta un aspecto mate significa que has realizado una soldadura en frío, a más baja temperatura de lo óptimo y es de peor calidad).

  • Ahora en el otro extremo del eje blanco de plástico que sobresale del conjunto motor, colocamos las ruedas que se incluyen en el kit. Encajan igual que las pequeñitas, así que es sencillo. Una vez acopladas, vamos a proceder a sujetarlas al soporte de metacrilato, al igual que la rueda loca. El proceso es sencillo con cuatro tornillos cortos (dos para cada soporte metálico) vamos a sujetar los motores a la plataforma haciéndolos pasar por los agujeros paralelos que se encuentran más cerca de las dos ranuras en forma de cruz que tiene la plataforma. La rueda loca va atornillada con otros cuatro tornillos y cuatro roscas a los cuatro agujeros delanteros (solo encaja de una forma, ya que no es un cuadrado, sino un rectángulo).

Cables del motor colocados en el robot

Nota: Asegúrate que las ruedas interiores no rocen en las ranuras en forma de cruz que tiene la plataforma, de lo contrario los motores perderán efectividad por el rozamiento. Como ves en la fotografía, yo he empleado dos de los agujeros que hay justo delante del motor para pasar los cables hacia arriba y facilitar luego las conexiones con Arduino y el controlador de motores.

  • Finalmente he sujetado el rack de las pilas a la plataforma. Pon el rack en un extremo de la plataforma, yo he empleado los dos agujeros más próximos a la rueda loca. El motivo es dejar más espacio en el centro para colocar la placa de Arduino y el controlador de motores. Solo es un consejo, tú puedes montarlo a tu manera… Por cierto, el montaje es sencillo, dos tornillos y dos tuercas.

Rack de pilas del robot

Nota: He puesto la esquina de los cables hacia la zona interior. Parece una chorrada, pero así luego no tendremos que pasar los cables de un lado a otro para hacer las conexiones. También verás que el rack trae de fábrica el cable negro sacado por la ranura superior y el rojo sale por la zona de abajo. Yo he pasado el cable rojo con cuidado de no romperlo hacia la ranura por la que sale el cable negro. ¿Por qué? Sencillo, al apretar el rack con los tornillos y tuercas se ejerce presión y puede terminar cortando el cable rojo. Para evitar esos problemas es mejor pasarlo por arriba.

Para terminar esta parte, lo que ha hecho es poner cuatro pilas AA (las normales de toda la vida: LR06 de 1,5v) en el rack y con los cables que salen del rack he tocado los dos cables que antes soldamos al motor para comprobar que funciona y no roza nada.

Nota: Negro con negro y rojo con rojo, en sistemas de CC tienes que tener precaución con los polos porque puedes estropear algunos dispositivos si no respetas los signos, en este caso es un motor  y si lo haces al revés no pasa nada, solamente inviertes el sentido del giro del eje al invertir el voltaje, ya aprenderás más sobre esto cuando tratemos el controlador de motores.

Por cierto, guarda los tornillos y tuercas sobrantes, te pueden hacer falta si alguno se pierde en un futuro o si quieres seguir ampliando la plataforma con nuevos sensores.

Frontal de robot Arduino cableado

Ya hemos explicado 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 Arduino 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 Arduino?

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. Cualquier duda estamos por los comentarios.


16 comentarios

  1.   rogelio davalos dijo

    muy bueno,donde puedo obtener el kit.

    1.    Isaac PE dijo

      Hola,

      El kit lo puedes comprar en nuestra propia tienda. Fíjate que hay enlaces en la lista de materiales necesarios que te redirigen a la tienda. De todas formas te dejo el enlace directo:

      http://tienda.comohacer.eu/es/28-comprar-kit-robot-de-inicio-motores-controlador-y-plataforma/

      Saludos.

  2.   Milton Andrade dijo

    muy interesate, ademas muy didactico, te felicito y sigue adelante.

  3.   Oscar dijo

    Muy buen tuto!
    Que funciones puede realizar este robot?

    1.    Alberto Navarro dijo

      Buenas Oscar!

      Pues con la robótica el límite lo pone tu imaginación. Este kit está preparado para dar los primeros pasos sin abrumarte, podrás controlar el movimiento del robot con cualquiera de tus placas SBC.

      Saludos!

  4.   Oscar dijo

    Buenas he comprado el kit que ofreceis y he montado un robot como el que muestras en el tutorial.
    El problema es que lo he montado ya todo y he puesto el sketch en la placa pero esta no se enciendo cuando conecto el rack de pilas. En cambio el controlador de motores si emite una luz roja.
    Sabes a que se puede deber?
    He probado a volver a poner el sketch, comprobar el cableado… y nada.

    Oscar

    1.    Isaac PE dijo

      Hola Oscar,
      Primero, ¿La placa Arduino funciona correctamente? Supongo que sí. Pero a veces son detalles muy tontos que se nos escapan. ¿Has probado a resetear la placa? ¿Las pilas están bien? Por favor, intenta dar más datos para que podamos ayudarte. Fijate también que la sintaxis del scketch se corresponde con la realidad, quiero decir, a veces programamos para que una salida o entrada haga algo y resulta que en el prototipo hemos conectado el cable en otro pin diferente, por lo cual no hace nada… Comprueba este tipo de cosas y coméntanos, si nos das más datos podremos ayudarte mejor.

      Un saludo!

  5.   Oscar dijo

    Buenas de nuevo, he estado mirando estos dias el problema del robot y he podido comprobar que teniendo la placa arduino conectada al ordenador, el sketch se ejecuta sin problemas, pero en el momento de conectarlo al rack de pilas solo funciona una de las ruedas.
    Puede ser problema del rack de pilas?

    1.    Alberto Navarro dijo

      Es probable que sean las pilas, ya que si fuera el rack no funcionaría nada.

      Comprueba que estén dando la tensión adecuada.

      Saludos!

    2.    Isaac PE dijo

      Hola,

      Es muy raro lo que comentas. ¿Y ambos motores funcionan? ¿Las soldaduras están correctas? ¿Has mirado con un multitester o polimetro a ver que voltaje da el rack para ver si ofrece lo que debería?

      Un saludo!!!

      1.    montse dijo

        Hola,

        Y la placa arduino como se alimenta? Le cargo el sketch y funciona correctamente cuando está conectada con el usb al pc, pero si la desconecto, deja de funcionar. Debe llevar una alimentación independiente?

        Gracias

  6.   Miguel dijo

    Hola, tengo dos dudas. La primera es sobre la alimentación: ¿solamente se alimenta el controlador del motor o también la placa de Arduino? Y la segunda, ¿sería posible utilizar una chasis con cuatro ruedas y cuatro motores? La idea sería usar dos controladores como los que se utilizan en el tutorial (uno para las delanteras y otro para las traseras) y conectar ambos al Arduino, indicando a la hora de programar que se muevan simultáneamente. ¿Lo véis viable?

  7.   Álvaro dijo

    Hola amigo,
    Vamos a realizar un proyecto similar al tuyo en clase. Somos alumnos de 16 años, y nos gustaría ver más fotos de este extraordinario proyecto para aclarar dudas. Otra duda más concreta es que no entendemos las cuatro variables (A-IA, A-IB, etc…), si fueras tan amable de explicarnoslas.
    Gracias y saludos.

    1.    Isaac PE dijo

      Hola,

      Las entradas A-IA, A-IB… son para controlar los motores, o mejor dicho, la dirección de giro del motor para un sentido o para el otro. A-Ix controlan el motor A y las B-Ix controlan el motor B. Así puedes hacer que vaya para adelante o para atrás, o que gire sobre sí mismo si el sentido de cada motor es contrario… En cuanto a las fotos, no tengo más fotos realizadas. Lo siento, pero pregúntame lo que quieras.

      Gracias por leernos. Un saludo!

  8.   Álvaro dijo

    Nos ha servido de gran ayuda, no te preocupes por las fotos. Gracias a ti 😉

  9.   Xavi dijo

    Hola,
    Hace poco hemos empezado un proyecto parecido a este y cuando conectamos él controlador al motor y cargamos el código el coche va muy lento, pero si pruebas conectando las pilas y el motor directamente éste va a la velocidad normal no sabemos qué le puede pasar.

    Muchas gracias!

A inventar!