Home » BLOG » Contrôle moteurs avec la carte Esus

Contrôle moteurs avec la carte Esus

Un tutoriel pour contrôler deux moteurs à courant continu avec la carte Esus.

image_motors

Contrôle de deux moteurs

Vous avez besoin :

  • Une carte Esus,
  • Une alimentation ou une batterie,
  • Deux moteurs CC.

Attention , le courant maximum de sortie des ponts en H est de 1.2 A !

Le branchement

  • Les moteurs sont à connecter sur le bornier ci dessous :

esus_bornier_motors

Ce bornier est relié au composant L293, c’est un double pont en H.

Contrôle des moteurs

Pour contrôler un moteur avec la carte Esus, il faut utiliser la fonction :

void motors1_set(unsigned int speed, boolean direction);

void motors2_set(unsigned int speed, boolean direction);

Un peu d’explication pour ces fonctions:

  • motors1_set : permet de contrôlé la vitesse et la direction d’un moteur. Cette fonction gère un moteur sur la bornier gauche de la carte Esus.

esus_bornier_motor1

  • motors2_set : permet de contrôlé la vitesse et la direction d’un moteur. Cette fonction gère un moteur sur la bornier droit de la carte Esus.
  • La vitesse varie entre 0 et 1023.
  • La direction est de type boolean (true ou false) :
    • DIR_FORWARD = true
    • DIR_BACK = false

Contrôle d’un moteur

  • Initialisation de la carte Esus :
#include <esusBoard.h>

void setup() 
{
  // initialisation de la carte Esus
  initEsusBoard();
 
}

void loop() 
{

}
  • Ensuite, appel de la fonction de la commande moteur :
void loop() 
{
  // commande moteur avec la vitesse max
  motors1_set(1023, true);
}
  • Et, maintenant pour contrôler deux moteurs :
void loop() 
{
  // commande moteur avec la vitesse max
  motors1_set(1023, DIR_FORWARD);

  motors2_set(1023, DIR_BACK);
}

Exercice

Réaliser un programme pour faire avancer deux moteurs dans un sens, puis après 2 secondes dans un autre sens. Avec une vitesse de 50% de la vitesse maximum.

Réponse :

void loop() 
{
  motors1_set(1023/2, DIR_FORWARD);

  motors2_set(1023/2, DIR_FORWARD);

  delay(1000);
  
  motors1_set(1023/2, DIR_BACK);

  motors2_set(1023/2, DIR_BACK);

  delay(1000);
}

Leave a Reply

Your email address will not be published. Required fields are marked *