Site icon AranaCorp

Pilotez plusieurs moteurs avec le Motor Shield V1

4.8
(9)

Le Motor Shield V1 est une carte d’extension pour les microcontrôleurs Arduino UNO et Mega pour le pilotage de moteur CC et de moteur pas-à-pas. Nous avons vu comment piloter un moteur CC en utilisant un pont en H ce qui peut nécessiter beaucoup de branchement lorsqu’on utilise le circuit intégré simplement. Pour une application embarquée, comme un robot Rovy, vous serez amené à piloter plusieurs moteurs en parallèle. Ils existent pour cela des Shields qui simplifieront le montage.

Le Shield utilisé dans ce tutoriel est le Motor Shield V1 de chez Adafruit. Une nouvelle version de ce shield existe, c’est le Motor Shield V2.

Prérequis : Programmer avec Arduino

Matériel

Présentation du Motor Shield V1

Le Motor Shield utilise le pont en H L293D et le circuit intégré 74HC595N. Il utilise les broches suivantes:

Dans le cas d’un shield, les branchements sont prédéfinis. Vérifiez bien dans la documentation technique du composant comment l’utiliser (Motor Shield V1 datasheet).

Schéma de connexion

Compatible avec les carte UNO et Mega, le shield se place directement sur la carte Arduino. L’alimentation se branche au bornier Power. Les moteurs sont branchés sur les borniers M1 à M4. Vous pourrez être amené à brancher trois types de moteur (sans compter les servomoteurs):

Les branchements de ces moteurs sont détaillés dans les schémas suivants.
Attention: le shield représenté dans les schémas est le Motor Shield V2 mais les branchement au niveau des bornier reste les mêmes.

Code pour piloter des moteurs CC

Pour interagir avec le Motor Shield V1, nous utilisons la librairie AFMotor.h. Pour piloter un moteur CC, nous allons utiliser la classe AF_DCMotor dont les fonctions à connaitre sont:

/*----------------------------------------------------------------------
  * 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);
}

Code pour piloter des moteurs pas-à-pas

Pour piloter les moteurs pas-à-pas nous allons utiliser la classe AF_Stepper dont les fonctions à connaitre sont:

Ceci est l’exemple tiré de la librairie.

#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); 
}

Testez et mélangez ces exemples pour obtenir les fonctionnalités que vous désirez. Si vous rencontrez un soucis pour utiliser votre Motor Shield, n’hésitez à nous laisser un commentaire ou à nous envoyer un message.

Application

Source

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

How useful was this post?

Click on a star to rate it!

Average rating 4.8 / 5. Vote count: 9

No votes so far! Be the first to rate this post.

Quitter la version mobile