Sei sulla pagina 1di 7

27/8/2019 Un pequeño robot con tracción 4x4 | Tienda y Tutoriales Arduino

(https://www.prometec.net)

TIENDAS (HTTPS://STORE.PROMETEC.NET) ARDUINO (HTTPS://WWW.PROMETEC.NET/INDICE-TUTORIALES)

UN PEQUEÑO ROBOT CON TRACCIÓN 4×4


RASPBERRY PI (HTTPS://WWW.PROMETEC.NET/INDICE-RASPBERRY-PI/) CONTACTO (HTTPS://WWW.PROMETEC.NET/CONTACT/)
Controlando varios motores simultaneamente

OBJETIVOS

    Seguimos jugando con los motores de corriente continua.

 Presentar los Motor Shield V1 de Adafruit.

 Vemos cómo manejarlos con la librería adecuada.

 Montar un pequeño robot con tracción 4×4.

MATERIAL REQUERIDO.

[product id=”8811″]

CONTROLANDO VARIOS MOTORES DE CC

En las sesiones previas hemos visto cómo manejar los motores de corriente continua típicos. Hemos visto cómo hacerlos girar y como
modi car esta velocidad de giro, así como la forma de invertir el sentido de rotación mediante un H bridge integrado como el L293D.

¿Y qué hace un hombre normal, cuando consigue controlar un motor (y más uno que esté leyendo esto)? Pues naturalmente, probar a manejar
varios motores a la vez, digamos 4, y empezar a pensar en hacer un pequeño cochecito con tracción a las 4 ruedas  y control remoto
inalámbrico y…. ¡Quieto parado!

Vayamos por partes. De  momento solo hemos gobernado un motor, aunque sabemos que el L293D dispone de capacidad para manejar un
segundo motor. Podríamos diseñar un circuito con dos L293D para mover 4 motores y quizás hacer un Shield para montar todo en la chepa de
nuestro Arduino.

https://www.prometec.net/motorshieldv1/ 1/7
27/8/2019 Un pequeño robot con tracción 4x4 | Tienda y Tutoriales Arduino
Pero como siempre os digo, si existe una necesidad en este mundo electrónico, siempre hay alguien presto a vendernos la solución de forma
conveniente. Y como podréis imaginar, ni somos los primeros que hemos tenido esta idea (Ni seremos los últimos) ni es precisamente una
novedad la solución, el mercado nos ofrece toda una (https://www.prometec.net)
variedad de Shields para controlar motores muy interesantes, dependiendo del tamaño de
los motores, su consumo, la tensión y cualquier otra cosa que podáis imaginaros.

Como en esta humilde casa pensamos que para aprender hay que trastear y preferiblemente por poca pasta, vamos a presentar un sencillo
TIENDAS (HTTPS://STORE.PROMETEC.NET) ARDUINO (HTTPS://WWW.PROMETEC.NET/INDICE-TUTORIALES)
Motor Shield que fue diseñado por nuestros amigos de Adafruit y luego abandonado en favor de un controlador de motores más avanzado (y
caro) y cuyo relevo ha sido tomado por la nube de fabricantes chinos, proporcionándonos un Arduino motor shield V1.0, por muy poco dinero,
que nos permite iniciarnos gastando lo justo.
RASPBERRY PI (HTTPS://WWW.PROMETEC.NET/INDICE-RASPBERRY-PI/) CONTACTO (HTTPS://WWW.PROMETEC.NET/CONTACT/)
Veamos sus características.

ADAFRUIT MOTOR SHIELD V1.0

Aquí tenéis una foto del Motor Shield V1.0, que podéis encontrar fácilmente en cualquier proveedor:

(https://www.prometec.net/wp-content/uploads/2015/03/sensorshield2.jpg)
Las características principales son:

 
 4 H Bridges incluidos con dos L293D chips.

 Hasta 4 motores CC con control bidireccional y selección de velocidad de 8 bits.

 Máxima corriente de 0,6 Amperios (Aunque acepta picos de hasta 1,2) con una protección de sobre
temperatura.

 Acepta motores cuya alimentación va desde 4,5 a 25V.

 Podemos añadir otros dos motores Servos o paso a paso.

 Dispone de alimentación de motores, separada de la del Shield para evitar ruido e interferencias.

 Bajo precio (En serio).

 Compatible con UNOs y Megas por lo menos.

 Dispone de una librería cómoda para manejar los motores.

 
En resumen, es un Shield barato y práctico para manejar pequeños motores de 5V, pero que se quedará corto si necesitas una cierta potencia
en los motores, ya que la intensidad que estos demandaran superará con facilidad los 0,6A que tiene como límite este Shield.

Es ideal para construir robots autónomos con pequeños motores y sin peso y sobre todo como elemento de aprendizaje antes de invertir una
pasta gansa en otras opciones mas so sticadas.

 
https://www.prometec.net/motorshieldv1/ 2/7
27/8/2019 Un pequeño robot con tracción 4x4 | Tienda y Tutoriales Arduino

(https://www.prometec.net)
CONECTANDO EL MOTOR SHIELD

TIENDAS (HTTPS://STORE.PROMETEC.NET) ARDUINO (HTTPS://WWW.PROMETEC.NET/INDICE-TUTORIALES)


 

El shield conecta directamente los H Bridges L293D a los pines PWM de Arduino y además incorpora un viejo conocido nuestro el 74HC595,
un Shift Register,  para ahorrar pines en la conexión.
RASPBERRY PI (HTTPS://WWW.PROMETEC.NET/INDICE-RASPBERRY-PI/) CONTACTO (HTTPS://WWW.PROMETEC.NET/CONTACT/)

El Shield se reserva los pines 3,4,5,6,7,8,9,10,11,12, los pines 9 y 10 se usan para los servos en caso de que los incluyamos y quedan libres los
pines 2 y 13, así como el 0 y 1 que se usan para la comunicación USB con nuestro PC.

Los pines A0 a A5 están disponibles para nuestro uso y recordar que a una mala, podeos usarlos como pines digitales también.

(https://www.prometec.net/wp-content/uploads/2015/03/adafruit-motorshield2.jpg)
Hay conexiones para los bornes de 4 motores, marcados como M1, M2, M3 y M4 y conviene que al conectar sigas el mismo criterio en los
bornes y en el Shield porque de lo contrario conseguirás que alguno de los motores gire al revés de lo que pretendes. Lo que no es muy grave
porque se arregla con facilidad.

Una cosa interesante de este shield es que nos permite separar la alimentación de los motores de la alimentación de Arduino y es de agradecer
porque los motores generan mucha interferencia electromagnética que puede hacer que nuestro Arduino Mega
(https://www.prometec.net/producto/arduino-mega/) se comporte de forma errática.

Por eso siempre que sea posible conviene que separéis la alimentación de uno y otro (Aunque en un robot autónomo va  a ser difícil). Para ello
basta con que quites el “power jumper” y la alimentación estará separada. Esto será imprescindible si tus motores son de digamos 9 0 12V
porque tu Arduino solo funciona con 5V (So pena de hacer barbacoa de Arduino).

Vamos a conectar un primer motor al Shield para probar. Lo primero montad el Shield a vuestro Arduino. Yo os recomiendo un MEGA para que
podamos seguir haciendo cosas en el futuro, pero también vale cualquier otro.

Conectad los bornes del motor a los tornillos A y B del Motor Shield, dejando libre el pin central marcado como GND.

 
 No es importante que borne a que pin, porque lo único que ocurrirá si lo invertís es que el motor girará
al revés. Lo que sí es recomendable es que mantengáis el mismo criterio para todos los motores, porque
os ahorrará dolores de cabeza.

 Como en este primer ejemplo vamos a alimentar el motor desde Arduino y el USB, no olvidéis conectar
el power jumper, para que alimentemos los motores directamente desde Arduino.

 
Seria sencillo manejar el motor a través del Shield directamente, recurriendo a los pines de control, y os lo propongo como ejercicio si os
parece, pero aquí vamos a descargar ahora una librería de Adafruit para manejar el Shield directamente, que nos permitirá abstraernos del
detalle de pines.

La librería que necesitamos es esta adafruit-Adafruit-Motor-Shield-library-8119eec (https://www.prometec.net/wp-


content/uploads/2015/03/adafruit-Adafruit-Motor-Shield-library-8119eec.zip), y para instalarla seguimos el procedimiento habitual
(https://www.prometec.net/librerias/).

https://www.prometec.net/motorshieldv1/ 3/7
27/8/2019 Un pequeño robot con tracción 4x4 | Tienda y Tutoriales Arduino
Para usarla, lo primero que tenemos que hacer es este par de instrucciones:

#include <AFMotor.h> (https://www.prometec.net)


AF_DCMotor Motor1(1);

La primera línea, incluye la librería de AdaFruit ARDUINO


TIENDAS (HTTPS://STORE.PROMETEC.NET)
en nuestro programa, y la segunda crea una instancia de un motor conectado a la puerta M1, y le
(HTTPS://WWW.PROMETEC.NET/INDICE-TUTORIALES)
iniciamos con el parámetro que le pasamos que puede ir del 1, M1 al 4, M4.

Para establecer la velocidad del motor hacemos:


RASPBERRY PI (HTTPS://WWW.PROMETEC.NET/INDICE-RASPBERRY-PI/) CONTACTO (HTTPS://WWW.PROMETEC.NET/CONTACT/)

Motor1.setSpeed(200); // Definimos la velocidad de Motor1


Motor1.run(RELEASE);

La primera línea pone el motor a 200 / 255 del tope de revoluciones, y la segunda línea indica que queremos dejar el motor en punto muerto.

Si queremos que el motor avance usamos:

Motor1.run(FORDWARD);

Y para que retroceda hacemos

Motor1.run(BACKWARD);

Y eso es todo lo necesario para controlar un motor. Si queremos hacer un primer programa sencillo que haga avanzar el motor unos segundos y
después retroceda, podemos escribir un programa similar a este Prog_92_1 (https://www.prometec.net/wp-
content/uploads/2015/03/Prog_92_1.rar):

#include <AFMotor.h>
AF_DCMotor Motor1(1);

void setup()
{ Motor1.run(RELEASE); }

void loop()
{ Motor1.run(FORWARD);
delay (2000);

Motor1.setSpeed(180);
Motor1.run(BACKWARD);
delay (2000);
}

Aquí os pongo un mini video con el resultado:

Moviendo una sola rueda

MOVIENDO VARIOS MOTORES SIMULTÁNEAMENTE

https://www.prometec.net/motorshieldv1/ 4/7
27/8/2019 Un pequeño robot con tracción 4x4 | Tienda y Tutoriales Arduino
Vamos a conectar ahora, 4 motores a nuestro Motor Shield. Yo tengo por aquí rodando un bastidor con 4 ruedas y motores que voy a usar
como base para hace un robot con tracción a las 4 ruedas.
(https://www.prometec.net)
Pero lo mismo da cualquier otro robot que tengáis, o hasta un bastidor con las ruedas, a condición de que podamos subirle nuestro Arduino
mas el motor Shield. Una caja de cartón duro a la que sujetéis los motores y ruedas, sirve de maravilla.

En miTIENDAS
caso lo(HTTPS:/
he puesto en un pedestal, para poder
/STORE.PROMETEC.NET) ARDUINO probar los/WWW.PROMETEC.NET/INDICE-TUTORIALES)
(HTTPS:/ diferentes motores sin que se me escape corriendo. Vamos con el programa de
prueba. Lo primero es incluir la librería y de nir las instancias de los motores que esta ocasión son 4 en vez de 1:

#include <AFMotor.h>
RASPBERRY PI (HTTPS://WWW.PROMETEC.NET/INDICE-RASPBERRY-PI/) CONTACTO (HTTPS://WWW.PROMETEC.NET/CONTACT/)

AF_DCMotor Motor1(1);
AF_DCMotor Motor2(2);
AF_DCMotor Motor3(3);
AF_DCMotor Motor4(4);

De nimos la velociodad de los 4 motores en el setup:

void setup()
{ Serial.begin(9600); // set up Serial library at 9600 bps
Motor1.setSpeed(255);
Motor2.setSpeed(255);
Motor3.setSpeed(255);
Motor4.setSpeed(255);
}

Y por ultimo vamos a mandar moverse adelante y atrás y para los 4 motores simultáneamente:

Motor1.run(RELEASE);
Motor2.run(RELEASE);
Motor3.run(RELEASE);
Motor4.run(RELEASE);
delay (1000) ;

Motor1.run(FORWARD) ;
Motor2.run(FORWARD);
Motor3.run(FORWARD);
Motor4.run(FORWARD);
delay (2000);

Motor1.run(BACKWARD);
Motor2.run(BACKWARD);
Motor3.run(BACKWARD);
Motor4.run(BACKWARD);
delay (2000);

Como veis no es diferente de mover un solo motor, solo mas pesado. Aquí tenéis el programa Prog_92_2 (https://www.prometec.net/wp-
content/uploads/2015/03/Prog_92_2.rar).

Es conveniente que comprobéis en vuestro montaje que todas las ruedas giran en la misma dirección y que no hay ninguna rotando al revés,
porque cuando queramos avanzar seria un problema.

Aquí os dejo un pequeño video con el trest de giro

Moviendo las 4 ruedas

https://www.prometec.net/motorshieldv1/ 5/7
27/8/2019 Un pequeño robot con tracción 4x4 | Tienda y Tutoriales Arduino
Con esto, confío en que con esto hayamos dejado listo el hardware de nuestro robot para empezar a programarlo en serio. Pero parece mas
conveniente cortar aqui esta sesión y dejar algo para la próxima sesión, en la que veremos como mover el robot y hacerlo girar además de variar
la velocidad de crucero. (https://www.prometec.net)

DetTIENDAS
alle del(HTTPS:/
uso de pines  
/STORE.PROMETEC.NET) ARDUINO (HTTPS://WWW.PROMETEC.NET/INDICE-TUTORIALES)

Una consulta de un lector suscitó la cuestión de que pines se usaban para que en este Motor Shield V1 y como era una cuestión de lo mas
razonable que no estaba cubierta previamente,hemos optado por añadir este pequeño anexo especi cando los pines que usa cada motor y
cuales están disponibles
RASPBERRY en
PI (HTTPS:/ caso contrario.
/WWW.PROMETEC.NET/INDICE-RASPBERRY-PI/) CONTACTO (HTTPS://WWW.PROMETEC.NET/CONTACT/)

ARDUINO FUNCIÓN
Pin 1 Disponible
Pin 2 Disponible
Pin D3 DC Motor #2 / Stepper #1
Pin D4 Reservado para gobernar el Shift Register 74HC595
Pin D5 DC Motor #3 / Stepper #2
Pin D6 DC Motor #4 / Stepper #2
Pin D7 Reservado para gobernar el Shift Register 74HC595
Pin D8 Reservado para gobernar el Shift Register 74HC595
Pin D9 Servo #1, Disponible si no se usa el servo
Pin D10 Servo #2, Disponible si no se usa el servo
Pin D11 DC Motor #1 / Stepper #1
Pin D12 Reservado para gobernar el Shift Register 74HC595
Pin D13 Disponible
A0,A1,A2,A3,A4,A5 Disponibles. Recuerda que pueden usarse como digitales

Tened presente que no hay ningun pin de Arduino conectado a los motores directamente. La gestión de los motores se realiza a traves del shift
register para ahorra pines y por eso tenéis necesariamente que usar la libreria para manejarlos.

RESUMEN DE LA SESIÓN

    Hemos presentado el Motor Shield V1 de Adafruit, que un Shield muy barato además de útil para
mover pequeños motores y como nuestra primera controladora.

 Vimos sus características y limitación pero siempre es mas comodo un Shield que hacerse un
invento.

 Instalamos la librería de control de motores y empezamos con las nociones básicas de


programación de los motores.

 Dejamos el Motor Shield conectado a un pequeño robot de 4 ruedas y prbamos que todo
funcionaba como se esperaba, dejando listo el hardware para que podamos empezar a programar el
movimiento del robot.

 
   
 

 
Anterior
(https://www.prometec.net/hbridge/)

(https://www.facebook.com/prometecnet-
1541207239447373/timeline/)

Siguiente (https://www.prometec.net/rover-4x4/)

NO COMMENTS

https://www.prometec.net/motorshieldv1/ 6/7
27/8/2019 Un pequeño robot con tracción 4x4 | Tienda y Tutoriales Arduino

GIVE A REPLY (https://www.prometec.net)

Message
TIENDAS (HTTPS://STORE.PROMETEC.NET) ARDUINO (HTTPS://WWW.PROMETEC.NET/INDICE-TUTORIALES)

RASPBERRY PI (HTTPS://WWW.PROMETEC.NET/INDICE-RASPBERRY-PI/) CONTACTO (HTTPS://WWW.PROMETEC.NET/CONTACT/)

Name (required) Email (required)

URL

Post comment
WordPress Anti-Spam by WP-SpamShield (https://wordpress.org/extend/plugins/wp-spamshield/)

Copyright Prometec (https://www.prometec.net) (https (https (https

https://www.prometec.net/motorshieldv1/ 7/7

Potrebbero piacerti anche