Un motor Shield es una placa que como su nombre indica es un escudo es decir que se encastra con Arduino a modo de sándwich ya que tiene unos pines machos que encajan a la perfección en Arduino Uno y Arduino Mega y sirve para controlar motores.

Como ya he comentado en otras ocasiones no puedo conectar motores directamente a los pines de Arduino ya que estos tienen un consumo de un valor más elevado que la corriente que es capaz de proveer un pin de salida de Arduino, por lo que mediante este tipo de driver con una pequeña corriente  puedo controlar diferentes tipos de motores.

Características del motor Shield.

Este escudo o Shield tiene dos integrados L293 cada uno de ellos dispone en su interior de la circuitería necesaria para manejar todo tipo de cargas, en el caso de los motores cada unidad del interior de este integrado puede controlar un único sentido de giro o la mitad de un puente H que vimos en el post anterior , por lo que cada L293 puede formar dos puentes H completos.

Con lo que con este motor shield podremos controlar:

-2 Motores paso a paso o stepper .

-O bien 4 motores DC

-Además puede controlar 2 servos.

-Dispone de 4 canales M1, M2,M3,M4 con los que podremos decidir el sentido de giro y la velocidad de los motores.

-Los pines de salidas para los servos toman su alimentación directamente de los 5V de Arduino, si quisiéramos emplear servos más grandes con un consumo de corriente más alto, habría que cortar la pista de V+ y utilizar una alimentación externa, uniendo ambas tierras eso si.

-Las salidas para alimentación de los motores se deben hacer a través de una fuente de alimentación externa ya que arduino no es capaz de soportar tanto consumo.

-Jumper de alimentación puesto: alimentamos a través del Jack dc de Arduino.

-Jumper de alimentación quitado: alimentamos a través de los tornillos marcados EXT_PWR,

Mediante EXT-PWR podemos alimentar para conectar motores entre 4,5-25V.

-Se aconseja alimentar por separado Arduino y el motor Shield para evitar que los ruidos generados por los motores afecten al buen funcionamiento de Arduino.

Descripción de los conectores del motor-shield:

Motor shield
Motor shield
  1. Bornes para controlar dos servomotores
  2. Bornes para conectar M1 y M2 o un motor paso a paso
  3. Bornes de alimentación para el motor shield EXT_Pwr ojo no tiene protección contra inversión de polaridad
  4. Jumper de alimentación, puesto alimentación conjunta, quitado alimentación separada, no alimentar por ext-power con jumper puesto, si estamos alimentando a la vez con el Jack de Arduino
  5. 5v gnd 9v, podemos soldar cables en estos conectores para alimentar otros elementos es la tensión que viene de Arduino 5v y Gnd el pin 9v no tiene porque ser 9 voltios sino que dará la tensión introducida por el Jack cuando tenemos una alimentación conjunta con el jumper puesto.
  6. Podemos soldar cables de las conexiones de los pines analógicos, Vcc y Gnd
  7. Conectores para motores dc 3 y 4 o un segundo motor paso a paso.
curso arduino
CURSO ARDUINO

Si quieres convertirte en un experto en Arduino pincha en el siguiente botón

Pines usados y no usados por el motor-shield:

-Los seis pines analógicos están disponibles , se pueden usar como digitales nombrándolos de 14 a 19.

-Los pines digitales 2 y 13 no se usan

-pin digital 11 DC motor 1/stepper1 activación y control de velocidad

-pin digital  3 DC motor 2/stepper1 activación y control de velocidad

-pin digital 5 DC motor 3/stepper2 activación y control de velocidad

-pin digital  6 DC motor 4/stepper2 activación y control de velocidad

-Los siguientes pines están en uso si se usa cualquier dc/stepper 4,7,8,12 a través del integrado 74HC595.

-Los siguientes pines se usan solo si se trabaja con los servos:

Pin digital 10 control de servo 1

Pin digital 9 control de servo 2

Los motores dc y los steppers  no son conectados directamente a Arduino si no a través del integrado 74hc595 por lo que no podremos manejarlos directamente, con lo que para funcionar con ellos deberemos hacerlo mediante la librería AFMotor.h.

Librerías a incluir

.Incluir librería motor shield en el sketch

#include <AFMotor.h>

.Si vamos a usar servos podemos incluir su librería:

 #include <Servo.h>

Instrucciones libreria AFMotor.h

.Crear una instancia de un motor:

AF_DCMotor motor1(1);//motor1 es como lo llamamos //nosotros, (1) es el conjunto de borneras para las salidas del //motor donde conectaremos ese motor

.Definir la velocidad del motor

motor1.setSpeed(150);//( ) aquí introducimos un número //entre 0-255

.Parar motor:

motor1.run(RELEASE);

.Motor que gire hacia adelante:

motor1.run(FORWARD);

.Motor que gire hacia atrás:

motor1.run(BACKWARD);

.Definir las características de la frecuencia PWM:

AF_DCMotor motor1(1, MOTOR 12_8KHZ);

//Con esta instrucción le estamos diciendo que el motor llamado motor1 conectado en la bornera 1 trabaje a una frecuencia de 8KHZ.

//podemos configurar frecuencias de 1,8,12,64 KHZ cuanto mayor frecuencia mayor exactitud y menos ruido pero mayor consumo.

.Definir un motor paso a paso

AF_Stepper motor1(256,1);

//le decimos que el motor denominado motor 1 va ha tener //256 pasos por vuelta y que lo conectaremos en la bornera M1-M2 si lo pusiéramos en M3-M4 deberiamos escribir un 2

.Definición del número de pasos a girar, sentido y método

motor1.step(3000,BACKWARD,SINGLE);

//GIRA 3000 pasos hacia atrás en modo simple

*Mirar post de motores paso a paso

SINGLE: Solo se excita una bobina a la vez.

DOUBLE: Se excitan dos bobinas a la vez.

INTERLEAVE: Se excitan una y dos bobinas alternativamente

MICROSTEPPING:Las bobinas se excitan con PWM en lugar de todo o nada.

Programa para Arduino control de motores robot 4WD

prueba motor-shield robot 4wd
prueba motor-shield robot 4wd
/*AUTOR: JOSE ANTONIO RIVERA MORALES
 *FECHA: 10-12-2019
 *www.pasionelectronica.com
 *Programa de prueba de la libreria AFMotor con robot 4WD
 */
#include <AFMotor.h> 
 
AF_DCMotor motorDi(1);//borne M1 motor delantero izquierdo
AF_DCMotor motorDd(2);//borne M2 motor delantero derecho
AF_DCMotor motorTi(3);//borne M3 motor trasero izquierdo
AF_DCMotor motorTd(4);//borne M4 motor trasero derecho

void setup() {
  motorDi.setSpeed(200);//velocidad motor Di
  motorDi.run(RELEASE);//iniciamos con motor parado
  motorDd.setSpeed(200);//velocidad motor Dd
  motorDd.run(RELEASE);//iniciamos con motor parado
  motorTi.setSpeed(200);//velocidad motor Ti
  motorTi.run(RELEASE);//iniciamos con motor parado
  motorTd.setSpeed(200);//velocidad motor Td
  motorTd.run(RELEASE);//iniciamos con motor parado
}

void loop() {
 // MotorDi gira adelante durante 5 segundos 
 motorDi.run(FORWARD);
 delay(5000);
 motorDi.run(RELEASE);
 
// MotorDd gira adelante durante 5 segundos
 motorDd.run(BACKWARD);
 delay(5000);
 motorDd.run(RELEASE);
 
 // MotorTi gira adelante durante 5 segundos
 motorTi.run(BACKWARD);
 delay(5000);
 motorTi.run(RELEASE);

// MotorTd gira adelante durante 5 segundos
 motorTd.run(FORWARD);
 delay(5000);
 motorTd.run(RELEASE);
  
}

Si te ha gustado este post compartelo en tus redes sociales favoritas, muchas gracias por tu colaboración.