El Motor Escudo V1 es una tarjeta de expansión para Arduino UNO y microcontroladores Mega para el control de motor y DC motor paso a paso. Hemos visto cómo controlar un motor de corriente continua utilizando el puente H que puede requerir una gran cantidad de conexiones cuando utilice el simple circuito integrado. En una aplicación incorporada, tal como un robot Rovy, tendrá que controlar varios motores en paralelo. Existen para la de los escudos que la instalación Simplificar.
El escudo utilizado en este tutorial es el Motor Shield V1 en Adafruit. Existe una nueva versión de este escudo, el Motor Shield V2.
Prerequisito : La programación con Arduino, Controla un motor CC con Arduino, Controla un stepper con Arduino
Hardware
- Computador
- Arduino UNO
- USB A macho/B macho
- MotorShieldV1
- x1 motor de corriente continua o paso a paso motor x1
Principio de funcionamiento
El Motor Shield V1 utiliza el puente H L293D y el circuito integrado 74HC595N. Utiliza los siguientes pines:
- pin digital 11: Motor # 1 DC/paso a paso # 1 (encendido/velocidad)
- pin digital 3: # 2 Motor DC/paso a paso # 1 (encendido/velocidad)
- pin digital 5: Motor de CC # 3/# 2 paso a paso (activación/velocidad)
- pin digital 6: # 4 Motor DC/paso a paso # 2 (activación/velocidad)
- pin digital 4, 7, 8 y 12 para la comunicación con el 74HC595
- pin digital 9 y 10 para los actuadores 1 y 2
En el caso de un escudo, las conexiones están predefinidos. Asegúrese de cómo usarlo con la documentación técnica del componente(Motor Escudo V1 ficha técnica).
Esquema
Compatible con la UNO y la Mega, el escudo se coloca directamente sobre la placa Arduino. La alimentación se conecta al bloque de terminales de potencia. Los motores están conectados a los terminales M1 a M4. Se le puede conectar tres tipos de motor (con exclusión de los servomotores):
- Motor de corriente continua
- Unipolar stepper
- Bipolar stepper
Las conexiones de estos motores se describen en los siguientes esquemas.
ADVERTENCIA: El Shield que se muestra en el diagrama es el Motor Shield V2 pero la conexión a los terminales es la misma
.
Código para manejar motores de corriente continua
Para interactuar con el Motor Shield V1, utilizamos la biblioteca AFMotor.h. Para controlar un motor de corriente continua, utilizaremos la clase AF_DCMotor cuyas funciones son a saber:
- motor.run() para activar el motor en un sentido o en el otro (RELEASE, FORWARD, BACKWARD).
- motor.setSpeed() para ajustar la velocidad del motor.
/*---------------------------------------------------------------------- * Summary : Permet de tester un moteur CC * Hardware : - Arduino UNO x1 - Motor Shield V1 x1 - Moteur CC x1 * www.aranacorp.com ----------------------------------------------------------------------*/ //Librairies #include <AFMotor.h> //Constants const int motorspeed=200; //Parameters AF_DCMotor motorG(1); void setup() { // Code d'initialisation :s'exécute une seule fois Serial.begin(9600); Serial.println("Test moteur"); motorG.setSpeed(motorspeed); motorG.run(RELEASE); } void loop() { // Code principal: s'exécute de manière répétitive Serial.println("-------------------------------------"); Serial.println("Avant "); motorG.run(FORWARD); delay(500); Serial.println("Arrière "); motorG.run(BACKWARD); delay(500); Serial.println("Arrêt "); motorG.run(RELEASE); delay(1000); }
Código para conducir motores paso a paso
Para los motores paso a paso utilizamos AF_Stepper clase cuyas funciones son a saber:
- stepper.step (nombre_de_pas, GESTIÓN, MODE) para realizar un número de pasos en una dirección y un modo dado.
- stepper.setSpeed() para ajustar la velocidad del motor
#include <AFMotor.h> #define NB_OF_STEPS 100 // Connect a stepper motor with 48 steps per revolution (7.5 degree) // to motor port #1 (M1 and M2) AF_Stepper motor(48, 1); void setup() { Serial.begin(9600); // set up Serial library at 9600 bps Serial.println("Stepper test!"); motor.setSpeed(10); // 10 rpm } void loop() { Serial.println("Single coil steps"); motor.step(NB_OF_STEPS, FORWARD, SINGLE); motor.step(NB_OF_STEPS, BACKWARD, SINGLE); Serial.println("Double coil steps"); motor.step(NB_OF_STEPS, FORWARD, DOUBLE); motor.step(NB_OF_STEPS, BACKWARD, DOUBLE); Serial.println("Interleave coil steps"); motor.step(NB_OF_STEPS, FORWARD, INTERLEAVE); motor.step(NB_OF_STEPS, BACKWARD, INTERLEAVE); Serial.println("Micrsostep steps"); motor.step(NB_OF_STEPS, FORWARD, MICROSTEP); motor.step(NB_OF_STEPS, BACKWARD, MICROSTEP); }
Aplicaciones
- Administrar motores paso a paso, motores de corriente continua y actuadores de un robot
Fuentes
- https://cdn-learn.adafruit.com/downloads/pdf/adafruit-motor-shield.pdf
- https://learn.adafruit.com/adafruit-motor-shield
- https://github.com/adafruit/Adafruit-Motor-Shield-library
Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código
Gracias por su trabajo. Me gusta mucho su canal. Leo todo lo que publica y me parece conciso y clarificador.
De nuevo muchas gracias. Saludos Cordiales.
Muchas gracias por la información, con ella trataré de operar pequeños motores DC y PAP.
Espero tener éxito. La exposición es bastante clara.
Buenos días, necesito una shield para controlar 4-6 Motor DC con Encoder con el Arduino, conoce alguna que me pudiera servir??
Buenos días,
https://www.aranacorp.com/es/controla-multiples-motores-con-motor-shield-v2-y-arduino/