dimanche 5 juin 2016

Contrôle d'un ou deux moteurs cc avec L298 et Arduino

Récemment, je me suis procuré sur eBay un contrôleur de moteur constitué d'un L298N et de tous les composants nécessaires à son bon fonctionnement  (radiateur, diodes, résistances, condensateurs, connecteur).

En branchant cette petite carte à un microcontrôleur (qui sera, dans le présent article, une carte Arduino), il est possible de contrôler simultanément deux moteurs en courant continu, ou un moteur pas à pas.

L298N vs L293D

Le L298N n'est pas le seul pilote de moteur disponible.  Dans le passé, nous avons très souvent utilisé le L293D, ainsi que le L6205  Nous avons même créé notre propre pont en H à partir de transistors.

Pour des projets impliquant de petits moteurs de faible puissance, le L293D est souvent privilégié parce qu'il coûte moins cher, qu'il s'insère facilement dans une breadboard et qu'il n'est pas nécessaire de lui ajouter des diodes puisque ces dernières sont déjà intégrées à l'intérieur du circuit intégré.  Par contre, le L293D ne supporte pas des courants supérieurs à 1 A, et il n'est pas vraiment conçu pour qu'on puisse facilement le munir d'un radiateur.

Le L298N peut quant à lui supporter un courant de 2 A,  ce qui permet de contrôler des moteurs plus puissants. Si vous achetez un L298N (circuit intégré seulement), ça vous coûte plus cher qu'un L293D, ses broches sont disposées d'une façon qui s'insèrent difficilement dans une breadboard, et vous devez lui ajouter des diodes, des condensateurs, un radiateur, etc.

Tous ces inconvénients disparaissent si vous vous procurez un module déjà monté...même le prix! Ce truc m'a coûté environ 2 dollars américains, soit significativement moins que ce que coûte habituellement un circuit intégré L298N seul, sans les autres composants soudés sur la carte...

Serait-ce possible que le circuit intégré présent sur cette carte, qui porte fièrement le logo de ST Microelectronics, soit en fait une contrefaçon???  J'ai beau chercher, je ne trouve malheureusement pas d'autres explications...

Connexions

Ce ne sont pas les connecteurs qui manquent...

Les 4 sorties "OUT1", "OUT2", "OUT3" et "OUT4" servent à brancher les moteurs (un moteur branché à OUT1 et OUT2, et un deuxième moteur, s'il y a lieu, branché à OUT3 et OUT4).

Les moteurs et la cartes sont alimentés grâce aux connecteurs GND et +12 V.

Il n'est pas nécessaire que la tension de l'entrée "+12 V" soit de 12 V:  vous utilisez ce qui est approprié pour vos moteurs.   Selon les moteurs que vous utilisez, il est possible qu'une tension aussi faible que 6 V soit suffisante, et qu'une tension de 12 V soit trop élevée.

En fait, vous pouvez soumettre l'entrée +12 V à une tension allant jusqu'à 35 V si vous le désirez (et si vos moteurs le supportent!) mais attention:  si vous soumettez l'entrée +12V à une tension qui dépasse 12 V, vous devez d'abord enlever le jumper 12 V (identifié sur la photographie) afin d'éviter de griller le régulateur de tension qui alimente la sortie 5 V.

Contre toute attente, le connecteur "+5V" n'est pas une entrée, mais une sortie qui fournit 5 V et qui pourrait vous permettre, par exemple, d'alimenter un microcontrôleur.  Cette sortie 5 V est disponible à la condition que le "jumper 12 V" soit en place (il faut donc que la tension au connecteur +12V n'excède pas 12 V).

Notre Arduino sera branché aux entrées ENA, IN1, IN2, IN3, IN4 et ENB.

Si IN1 est à 5 V pendant que IN2 est à 0 V, le moteur branché aux sorties OUT1 et OUT2 tourne dans un sens.  Si IN1 est à 0 V pendant que IN2 est à 5 V, le moteur tourne dans l'autre sens.

ENA est l'entrée "enable":  le moteur tourne à la condition que cette pin se trouve à un niveau logique haut.  Si vous laissez en place le jumper qui se trouve sur cette pin, elle demeurera toujours active et le moteur tournera à sa vitesse maximale.  Pour contrôler la vitesse de rotation du moteur, vous devez retirer le jumper et brancher la pin ENA à une sortie PWM de l'Arduino.

Vous l'aurez deviné, c'est le même principe pour les pins ENB, IN3 et IN4, sauf que ces entrées permettent de contrôler le moteur relié aux sorties OUT3 et OUT4.

Circuit

Voici donc un circuit qui répond à toutes ces conditions.  Ce n'est pas indiqué sur le schéma, mais l'Arduino est déjà alimenté par le câble USB que le relie à l'ordinateur, ce qui explique pourquoi je n'ai pas relié la sortie +12V du contrôleur L298 à la pin 5V de l'Arduino.


Sketch

Et voici un sketch de démonstration qui fait tourner les deux moteurs à différentes vitesses , dans un sens comme dans l'autre.  Il ne vous reste plus qu'à modifier ce sketch pour répondre à vos besoins. Si vous disposez déjà d'un sketch conçu pour le L293, vous pouvez l'utiliser sans problème avec un L298 sans faire la moindre modification.



À lire également

Concernant le contrôle de moteurs à courant continu avec un Arduino: utilisation du L293D, utilisation du L9110Sutilisation du L6205, utilisation d'un pont en H de fabrication maison, et utilisation d'un relais DPDT.

De plus, le L298N dont on parle dans le présent billet peut également être utilisé pour contrôler un moteur pas à pas.

De façon plus générale, vous trouverez sur cette page tous les articles du blog concernant l'utilisation de moteurs de toutes sortes (incluant les servomoteurs et les moteurs pas à pas).

Yves Pelletier   (TwitterFacebook)

9 commentaires:

  1. je kiffe ce site sa t'aide lors de tes cour de SIN

    RépondreSupprimer
  2. Bravo
    Avec vous la compréhension est très facile, meme un enfant arriverait à comprendre.
    Merci beaucoup

    RépondreSupprimer
  3. bonjour,
    vraiment très intéressant surtout lorsqu'on débute et que les idées foisonnent. existe-t-il un autre composant équivalent au L298N mais supportant un peu plus d'ampèrage? en effet j'essaie de piloter deux moteurs 12 VDC supportant une charge 1000 gr mais en dessous de 1.5 A ces derniers ont un peu de mal. Merci pour votre aide.

    RépondreSupprimer
  4. Bonjour.
    Vraiment très intéressant.
    J'aimerai savoir comment est-ce que je peux faire pour contrôler un moteur asynchrone monophasé à l'aide de Arduino.
    Merci.

    RépondreSupprimer
    Réponses
    1. Merci du Maroc ,j'ai copié-collé le sketch et ça marche

      Supprimer
  5. bonjour pourriez vous faire un tuto sur un l298 contrôlé par un module Bluetooth: HC-06 ?
    Ps très intéressant
    cordialement

    RépondreSupprimer