Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Autres constituants d’un robot > Les circuits spécialisés > Les contrôleurs de moteur > Contrôleur "pont en H" pour moteurs électriques

Contrôleur "pont en H" pour moteurs électriques

lundi 14 décembre 2009, par Julien H.

Avec un seul circuit de type pont en H (L293 ou SN754410), on peut contrôler deux moteurs à courant continu ou un seul moteur pas à pas à deux phases. C’est ce que nous avons fait lors de nos ateliers hebdomadaires et que nous vous présentons ici.

Le but de cet article est de reproduire rapidement une expérience simple : faire tourner un moteur électrique à courant continu ou un moteur pas-à-pas (tels que ceux qu’on récupère dans des imprimantes) avec un composant simple et peu cher. Bien sûr, il faut adapter votre choix de pont en H selon la puissance nécessaire : un gros moteur aura besoin d’un pont plus important (tel le L298).

Pas de grande théorie sur les ponts en H, mais juste un rappel : les moteurs électriques que nous allons utiliser font tourner un aimant en faisant circuler un courant dans des bobines. Un contrôleur de moteur est donc un composant de puissance capable d’alimenter un moteur électrique en fonction des consignes (le contrôle) que vous lui donnez.

Si vous disposez d’une carte électronique intégrant ce pont en H, c’est plutôt cet article qu’il vous faut.

 Le circuit intégré

Nous utilisons le composant L293D (à 3€ chez Zartronic) intégrant les diodes de roue libre (le "D" derrière le L293) qui protègent le circuit et évitent d’avoir à rajouter d’autres composants. Il y a un équivalent, le SN754410 (à 2,30$ chez Sparkfun) qui permet de faire passer plus de courant en étant entièrement compatible.

Ces deux circuits intègrent 4 contrôleurs indépendants acceptant en entrée la consigne (actif ou inactif, comme un interrupteur), et reproduisant en sortie l’alimentation correspondante (0 volts ou tension d’entrée "puissanc" différente de la tension "logique" du signal en entrée).

Chaque sortie doit être reliée à une extrémité d’une bobine. Dans le cas d’un moteur à courant continu, il suffit de 2 sorties associées (l’une fermée lorsque l’autre est ouverte) pour faire tourner le moteur dans un sens ou dans l’autre. Avec un seul CI, on fait ainsi fonctionner deux moteurs (utile pour un robot mobile simple comme le muPobot.

Vous trouverez la documentation technique dans cette rubrique (lien corrigé, merci).

Il existe des alternatives à ce montage "fait à la main", comme l’utilisation d’un circuit de puissance intégré à la carte Arduino Romeo ou utiliser une extension Arduino ("motor shield") telle qu’on en trouve sur Zartronic.fr.

 Le schéma de test

Cet article sert aussi de démonstration d’utilisation de Fritzing pour des circuits simples.

Voici pour un moteur à courant continu :

PNG - 64.4 ko

Comme vous le constatez en lisant la "datasheet" (doc technique), on utilise les deux sorties 3 et 4 (juste pour que le schéma soit lisible, ça marche de la même manière pour 1 et 2. Chacune de ces sorties "de puissance" (tension pour les moteurs) est contrôlée par une entrée "logique" (tension pour les signaux) qui est connectée à la carte programmable Arduino.

Mais vous remarquerez qu’une troisième connexion est utilisée entre la carte et le contrôleur de moteur, reliée à l’entrée "Enable 3,4" qui correspond à l’activation des sorties, indépendamment des entrées. Cette activation peut changer très vite, et pour un moteur à courant continu elle va permettre de faire varier la vitesse (merci à Christophe pour ce complément).

Voici pour un moteur pas à pas :

PNG - 46.6 ko

 Code source

Pour le moteur à courant continu


#define PILOT_A 11 // entrée A du pont en H
#define PILOT_B 12 // entrée B du pont en H
#define PILOT_PWM 6 // entrée "Enable" du pont en H

void direction (byte dir)

if (dir == 0)

digitalWrite (PILOT_A, HIGH) ;
digitalWrite (PILOT_B, LOW) ;

else

digitalWrite (PILOT_A, LOW) ;
digitalWrite (PILOT_B, HIGH) ;

void setup()

pinMode(PILOT_A, OUTPUT) ;
pinMode(PILOT_B, OUTPUT) ;
pinMode(PILOT_PWM, OUTPUT) ;
direction(0) ;

void loop()

int valeur = analogRead(0) ;

analogWrite(PILOT_PWM, analogRead(0)*2) ;

Pour le moteur pas à pas


/**
* Controle d’un moteur pas à pas avec un L293D sur protoshield
* (montage classique)
*
* (c) Julien Holtzer et Frédéric Rallo / Pobot 2012
*/

void setup()

Serial.begin(9600) ;

// les déclarations des 4 pattes de controle des bobines
pinMode(4,OUTPUT) ;
pinMode(5,OUTPUT) ;
pinMode(6,OUTPUT) ;
pinMode(7,OUTPUT) ;

// la patte d’enable
pinMode(12,OUTPUT) ;
analogWrite(12,250) ;

int TEMPS = 2000 ;

void loop()

Serial.println("..") ;

// A off, B haut
digitalWrite(4,LOW) ;
digitalWrite(5,LOW) ;
digitalWrite(6,LOW) ;
digitalWrite(7,HIGH) ;
delay(TEMPS) ;

// A haut, B off
digitalWrite(4,LOW) ;
digitalWrite(5,HIGH) ;
digitalWrite(6,LOW) ;
digitalWrite(7,LOW) ;
delay(TEMPS) ;

// A off, B bas
digitalWrite(4,LOW) ;
digitalWrite(5,LOW) ;
digitalWrite(6,HIGH) ;
digitalWrite(7,LOW) ;
delay(TEMPS) ;

// A bas, B off
digitalWrite(4,HIGH) ;
digitalWrite(5,LOW) ;
digitalWrite(6,LOW) ;
digitalWrite(7,LOW) ;
delay(TEMPS) ;


 Notre expérience en atelier

JPEG - 36.2 ko
JPEG - 123.3 ko
JPEG - 109.6 ko
JPEG - 88 ko

Portfolio

Vos commentaires

  • Le 18 février à 10:08, par Bernard En réponse à : Contrôleur "pont en H" pour moteurs électriques

    Bonjour, avez vous un site,tuto,pour programmer la commande de deux moteurs avec une arduino Romeo, merci d’avance,cdt.

    Répondre à ce message

  • Le 18 février à 10:05, par Bernard En réponse à : Contrôleur "pont en H" pour moteurs électriques

    Bonjour,j ai une carte arduino Romeo et je souhaite piloter deux moteurs afin de bloquer celui de droite (roue droite avant d un chariot supermarché) pour tourner vers la droite ou celui de gauche pour tourner à gauche, sur la carte il y a des boutons poussoirs, je ne possède pas de grande connaissance en programme aussi je cherche un plan de Câblage Romeo et un programme, merci par avance pour votre aide,cdt

    • Le 31 mars à 11:43, par Eric P. En réponse à : Contrôleur "pont en H" pour moteurs électriques

      Nous ne fournissons pas de solutions ou programmes sur mesure prêts à l’emploi. Nous pouvons vous aider à les réaliser.
      Dans tous les cas, il est préférable de venir en parler avec nous en venant à nos réunions. La description de votre projet est beaucoup trop vague et imprécise pour pouvoir donner quelque surggestion que ce soit.

    Répondre à ce message

  • Le 29 octobre 2015 à 22:08, par Pernel En réponse à : Contrôleur "pont en H" pour moteurs électriques

    Bonjour,
    J’ai acheté le L293NE (le L293D n’étant plus en stock). Je sais qu’il faut que je rajoute les diodes de roue libre mais je n’ai aucune idée de la quelle et où elles doivent se brancher. Pouvez-vous m’aider ?
    Raphael

    • Le 7 novembre 2015 à 10:18, par Eric P. En réponse à : Contrôleur "pont en H" pour moteurs électriques

      Les diodes de roue libre s’installent comme montré sur le schéma inclus dans cet article. Le pont utilisé ici est un L298, mais c’est exactement la même chose pour la commutation d’une charge inductive par un transistor.
      Les diodes utilisées ici sont des BYV27, mais n’importe quel modèle équivalent fait l’affaire. Il faut :

      • qu’elle soit capable de supporter un courant direct élevé, car elle va court-circuiter le bobinage.
      • qu’elle soit rapide, histoire de ne pas laisser au transistor qu’on veut protéger le temps de subir le pic de tension inverse

    Répondre à ce message

  • Le 17 octobre 2011 à 21:45, par Bertrand En réponse à : Contrôleur simple d’un moteur électrique

    Excellent ! merci pour ce tuto

    Répondre à ce message

  • Le 30 septembre 2011 à 12:59, par moi En réponse à : Contrôleur simple d’un moteur électrique

    Bonjour,
    j’aimerai faire fonctionner 2 moteur cc avec un l293d comment dois-je m’y prendre ?
    Merci

    • Le 1er octobre 2011 à 13:00, par Julien H. En réponse à : Contrôleur simple d’un moteur électrique

      Il faut refaire le même circuit que proposé ici mais en utilisant les pattes libres du L293.

      Si vous avez compris le fonctionnement de l’un, vous pourrez le reproduire sur l’autre.

      Si vous n’avez pas compris, il est préférable de commencer par en faire fonctionner un.

    • Le 1er octobre 2011 à 21:01, par moi En réponse à : Contrôleur simple d’un moteur électrique

      d’accord merci de m’avoir répondu ;)

    Répondre à ce message

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document