Icono del sitio AranaCorp

Controle varios motores con el Motor Shield V1 y Arduino

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

Principio de funcionamiento

El Motor Shield V1 utiliza el puente H L293D y el circuito integrado 74HC595N. Utiliza los siguientes pines:

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):


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:

/*----------------------------------------------------------------------
  * 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:

#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

Fuentes

Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código

Salir de la versión móvil