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 :

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 :

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

Portfolio

Vos commentaires

  • Le 12 octobre 2017 à 20:21, par sieber eric En réponse à : Contrôleur "pont en H" pour moteurs électriques

    Bonjour, je vient de découvrir votre site,une merveille, je suis de la région paca, je travaille sur un proto, et je ne suis pas un grand ingénieur, juste un bricoleur en électronique, j’aimerais connaitre si un pont en H pourrait ce contrôler avec deux simple boutons poussoir, a partir du l293D et quelques composant environnant pour alimenter un motoréducteur 5v,de quelques AMP, et par la suite le contrôler par un PIC Basic, mon intérêt miniaturiser au maximum le circuit sans ARDUINO que j’aprecis enormement mais pas dans le cas présent, mon but final est d’avoir un moteur télécommander a distance qui tourne en sens horaire et anti horaire, et vue mon age je ne risque pas de retourner faire des études en électronique 🙂 cordialement

    • Le 17 décembre 2017 à 22:10, par Eric P. En réponse à : Contrôleur "pont en H" pour moteurs électriques

      Bonsoir,
      Merci pour l’appréciation portée à notre site, et désolé pour la réponse un peu tardive.
      Le signaux d’entrée d’un pont en H sont de simples signaux logiques. Ils peuvent donc être générés par des boutons poussoir, qui vont porter la ligne concernée soit à 0V soit à 5V.
      Pour ce qui est de la miniaturisation, la version nano de l’Arduino à plus ou moins la taille d’une clef USB. Elle ne nécessite donc pas beaucoup de place. Quant à décider s’il est nécessaire de recourir à une Arduino, c’est effectivement à vous d’en juger en fonction de la complexité des fonctions souhaitées.
      Cordialement - Eric

    Répondre à ce message

  • Le 4 mai 2017 à 03:25, par ODIROLF En réponse à : Contrôleur "pont en H" pour moteurs électriques

    Bonjour, je profite d’avoir accès à ce forum. J’ai une machine tour CNC marque EMCO COMPACT 5CNC.
    Je voudrai donc faire la mettre en marche avec une carte Arduino.
    Oui, pour le contrôle des déplacements longitudinal et transversal j’utilise des DRIVERS A4988.
    Mon problème, je ne sais qu’est-ce que je dois utiliser pour pouvoir contrôler le moteur de broche de 180V-3A plus précisément varier les vitesses de ce moteur avec cet Arduino même, peut être il y a quelque chose comme le DRIVER qui pourrait supporter 180V-3A mais je ne sais pas.
    Alors quelqu’un pourra m’aider ?
    Cordialement !

    • Le 6 mai 2017 à 11:15, par Eric P. En réponse à : Contrôleur "pont en H" pour moteurs électriques

      Bonjour,
      S’il s’agit d’un simple contrôle on/off comme dans notre cas, un relais basique suffit. Mais comme vous mentionnez le contrôle de la vitesse, il est impossible de répondre sans connaître les caractéristiques du moteur :
       est-ce 180V DC ou AC ?
       est-ce un moteur monophasé ou triphasé ?
      Par ailleurs, je ne sais pas ce qu’est le "DRIVER" auquel vous faites référence. C’est un peu vague comme référence.
      Pour pouvoir vous répondre il faut nous communiquer des références plus précises sur les éléments techniques (liens sur les produits ou documentations par exemple).
      Cordialement

    Répondre à ce message

  • Le 18 février 2016 à 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 2016 à 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 2016 à 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 champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.