fbpixel
Étiquettes : , , , ,
3.8
(37)

L’un des objectifs principaux de la robotique est d’articuler des objets. Pour se faire, il est très courant d’utiliser des moteurs électriques comme des moteurs à courant continu notamment pour les plateformes mobiles. Dans cet article, nous verrons comment piloter un moteur cc avec une carte Arduino et un pont en H.

prérequis: Programmez avec Arduino

Matériel

  • Ordinateur
  • Carte Arduino UNO
  • Câble USB pour connecter la carte Arduino au PC
  • SN754410 x1
  • Breadboard x1
  • Moteur CC x1
  • câbles de connexion

Description du Moteur CC

Les moteurs à courant continu possèdent souvent une boite de réduction afin d’augmenter leur couple pour un encombrement réduit. Le moteur CC est très simple d’utilisation. Pour le faire fonctionner, il suffit d’appliquer une tension électrique à ses bornes. Le signe et le niveau de cette tension vont imposer le sens et la vitesse de rotation.

Pour piloter la tension aux bornes d’un moteur à courant continu, il est possible d’utiliser un relais ou un pont en H.

Description du Pont H

Le pont en H transmet la puissance électrique au moteur et module la tension en fonction des commandes de la carte Arduino. Il peut être représenté par quatre interrupteurs qui vont diriger le courant en fonction des commandes de la carte et moduler la direction et la vitesse de rotation du moteur.

La solution que nous utilisons ici est le composant SN754410NE. Il peut piloter deux moteurs à courant continu et possèdent plusieurs broches ayant une fonction propre.

Nous rappelons leurs fonctions:

  • Les broches GND, sont connectées entre elles et doivent être reliées à la masse du projet.
  • La broche +5V sert à alimenter la partie logique de la puce et peut être reliée à la borne +5V de la carte Arduino.
  • M1 Enable et M2 Enable permettent d’activer les deux ponts correspondants. Elles reçoivent un signal digital HAUT ou BAS de l’Arduino.
  • M1/M2 Forward, M1/M2 Reverse permettent d’envoyer une tension au borne du moteur afin de le piloter dans les deux directions. Elles reçoivent un signal PWM afin de moduler la vitesse de rotation.
  • La broche +Motor Power IN reçoit la tension d’alimentation des moteurs (5,6, 7V parfois jusqu’à 24V)
  • Les broches restantes, Motor 1 et Motor 2, sont reliées aux bornes des moteurs.

Lorsque vous sélectionnez un composants, faites toujours bien attention aux limites de courant et de tension de fonctionnement 

N.B.: Il existe des cartes facilitant la connexion comme le module L298N.

Schéma de connexion d’un moteur avec une carte Arduino

La carte Arduino peut être alimentée par l’ordinateur via le port USB.

Programme pour piloter un Moteur CC

Code de base

Pour piloter le moteur, il faut activer le pont en H correspondant et appliquer une commande PWM à la borne Forward ou Reverse qui correspondent au deux sens de rotation du moteur. Nous utilisons la broche 2 pour activer le pont en H avec un état haut ou bas et nous utilisons les broche 3 et 5 qui peuvent générer un signal PWM pour gérer la vitesse et le sens de rotation du moteur.

// Constants
const int enableBridge1 = 2;
const int MotorForward1 = 3;
const int MotorReverse1 = 5;

// Variables
int Power = 80; //Motor velocity between 0 and 255

void setup(){
  pinMode(MotorForward1,OUTPUT);
  pinMode(MotorReverse1,OUTPUT);
  pinMode(enableBridge1,OUTPUT);
}

void loop(){
  digitalWrite(enableBridge1,HIGH); // Active pont en H

  // Tourne dans le sens direct pendant 2 secondes
  
  analogWrite(MotorReverse1,0);
  analogWrite(MotorForward1,Power);
  delay(2000);
  
  // Tourne dans le sens indirect pendant 3 secondes
  analogWrite(MotorForward1,0);
  analogWrite(MotorReverse1,Power);
  delay(3000);
  
  //Arrête le moteur pendant 1 seconde
  analogWrite(MotorForward1,0);
  analogWrite(MotorReverse1,0);
  digitalWrite(enableBridge1,LOW); 
  delay(1000);
}

Fonctions

Lorsqu’il y a beaucoup de composants sur votre robot, il est souvent intéressant de créer des sous-fonctions afin de rendre le code principal plus lisible.

// Constants
const int enableBridge = 2;
const int MotorForward = 3;
const int MotorReverse = 5;

// Variables
int Power = 80; //Vitesse du moteur entre 0 et 255

void setup(){
  dcBegin();
}

void loop(){
  dcForward(Power);
  delay(2000);
  
  dcReverse(Power);
  delay(3000);
  
  dcStop();
  delay(1000);
}

void dcBegin(){
  // Initialise les pines utilisées pour le moteur
  pinMode(MotorForward,OUTPUT);
  pinMode(MotorReverse,OUTPUT);
  pinMode(enableBridge,OUTPUT);
  }

void dcForward(int P){
  digitalWrite(enableBridge,HIGH); // Active pont en H
  // Tourne dans le sens Forward à la vitesse spécifiée par P
  analogWrite(MotorReverse,0);
  analogWrite(MotorForward,P);
}

void dcReverse(int P){
  digitalWrite(enableBridge,HIGH); // Active pont en H
  // Tourne dans le sens Reverse à la vitesse spécifiée par P
  analogWrite(MotorForward,0);
  analogWrite(MotorReverse,P);
}

void dcStop(){
  // Arrête le moteur et désactive le pont en H
  analogWrite(MotorForward,0);
  analogWrite(MotorReverse,0);
  digitalWrite(enableBridge,LOW); 
}

.Vous pouvez désormais piloter n’importe quel moteur à courant continu avec ce code simple.

Références

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 3.8 / 5. Vote count: 37

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

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?