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.


Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire

Related Posts Plugin for WordPress, Blogger...