Contrôle Moteur DC via L298

06/05/2012: MCHobby propose maintenant un Breakout board permettant de piloter deux moteur CC dans les deux sens. Ce module est basé sur le L298 qui est un double Pont-H. Le module est en vente ici et la documentation (+exemple Arduino) disponible sur notre Wiki.
 
Description
Les précédents articles concernant ce même point étaient basés sur un pont-H L293D et L293E (légèrement différent).




Si les pont-H L293 et L293E sont d'excellents composants, ils sont un peu limités par leur puissance (600mA), ce qui empêche de les utiliser avec de bon gros moteur DC (comme ceux présents dans les voitures téléguidées un peu sérieuses).

Dans les modèles de pont-H vraiment robustes, il existe le L298N (ou L298HN horizontal) qui peuvent tout à fait convenir.
L298HN

Les principes de montages du L298N sont rigoureusement identiques à ceux du L293E (voir ici), ce qui facilite grandement son utilisation. Seul le brochage diffère.

Voici donc quelques informations et recommandations de montages.

Avantages du L298N
  • Supporte une tension de puissance jusqu'à 46 volts maximum.
  • Un courant de service de 2A (c'est du costaux!).
    Supporte les pics occasionnels à 3A et pics répétitifs a 2.5 A.
  • Compatible TTL (peut donc être commandé directement avec Arduino).
  • Dispose d'un dispositif de mesure du courant (sensor/sense pins).
    A raccorder à la masse si on ne l'utilise pas.
  • Chute de tension Vce_sat totale de 1.8 volts (typique), 3.2v à IL=1A, 4.9v à IL=2A.
    Si cela semble beaucoup, c'est aussi un avantage car cela permet d'utiliser un accu de 7.2v directement avec un moteur 5v.
    La chute de tension VCE_Sat du Pont-H sera suffisante pour adapter la tension au moteur (généralement +/- 5v). 
Inconvenients du L298N
  • Nécessite absolument 4 diodes en roue libre pour protéger les sorties (Output) du pont-H.
    Utiliser des diodes de type "fast" (BYV27-100-TAP: Diode Ultrafast, 2A, 100V. Farnell #1469371).
  • La chute de tension VCE_sat (1.8v typique, 3.2v à IL=1A, 4.9v à IL=2A) n'est pas négligeable, il faudra éventuellement prévoir une alimentation de puissance adaptée (7.5v, 9.6v ou 12v).
  • Nécessite 2 capacités de lissages de 100nF (une sur VSS et l'autre sur VS).
  • Inconvénient de taille, l'empattement des broches n'est pas de 2.54mm mais de 1.27mm, ce qui impose une séance de bricolage pour utiliser un L298 avec un breadbord ou un board de prototypage (voir détails ci-dessous).  
Ou se procurer un L298
En Belgique, il est possible de se fournir un L298HN sur be.farnell.com (article #1366570) pour environ 6.70 eur htva (prix juin 2011).
L298HN (H=Modèle Horizontal)

Il s'agit d'un modèle horizontal disponible en Belgique. Il est possible d'obtenir des modèles verticaux mais ceux-ci sont stockés au États-Unis (donc plus chère!).

Brochage du L298
Source: Datasheet

  • VSS - Alimentation de la logique de commande (5V).
    A raccorder à la borne +5V d'Arduino (donc sur le régulateur d'Arduino).
  • VS - Alimentation de puissance des moteurs.
    Par exemple, s'il s'agit d'une ancien véhicule téléguidé que vous avez cannibalisée, il s'agira de la borne positive (+9.2v) de votre accumulateur.
  • GND - Doit être raccorder à la masse (GND) de la source d'alimentation de puissance VS (donc le négatif de l'accumulateur) et à la masse de la source d'alimentation de VSS (donc GND Arduino).
    Si vous n'avez qu'une source d'alimentation pour le tout, c'est forcement plus simple.
  • OUTPUT1, OUTPUT2 - Broches à raccorder à la charge (le moteur). C'est via ces broches que le L298 commande le sens de rotation du moteur.
  • INPUT1, INPUT2 - Broche de commande du Pont-H. Se raccorde a Arduino.
  • ENABLE A - (Chip Enable) permet d'envoyer (ou pas) la tension sur les sorties du moteur via OUTPUT1 & OUTPUT2.
    ENABLE A commande l'activation du premier Pont-H.
    Si ENABLE A = GND, le pont-H est déconnecté et le moteur ne fonctionne pas.
    Si ENABLE A = VSS, le pont-H est connecté aux sorties et le moteur fonctionne dans un sens ou l'autre ou pas en fonction des tensions appliquée sur INPUT1 & INPUT2.
  • CURRENT SENSING A & CURRENT SENSING B - permet de faire une mesure du courant dans le circuit de puissance (si utilisé, fera l'objet d'un autre article).
    A placer impérativement sur GND si cette fonctionnalité n'est pas utilisée. 
Adaptation du L298 pour breadboard 2.54mm
L'empattement des broches n'est pas de 2.54mm mais de 1.27mm.
Ce qui empêche a priori son insertion dans un breadboard ou prototype board traditionnel.
Il existe pourtant une solution si l'on dispose d'un peu d'habilité et une pince-à-bec :-)

Adaptation prototypage board
Il suffit de présenter la deuxième rangée de pin (celles en retrait) sur le prototype board.
Ensuite on utilise une pince-à-bec pour délicatement placer (tordre et repositionner) les pins du premier rang dans emplacements disponibles.
On commence par les deux pins les plus à l'extérieur (donc en écartant) et en réajustant ensuite les pins de proche en proche.
L298HN - repositionner les
broches du premier rang
Adaptation pour breadboard
Sur base du montage précédent, il suffit d'utiliser:
  • deux morceaux de prototype board.
  • Un peu de fil
  • quelques pinHeader pour rendre le tout enfichable un breadboard standard.
Voici quelques photographie du matériel de départ et de du montage (désolé pour la qualité d'image).
L298HN - Matériel pour adaptation sur breadboard



Présentation sur breadboard
Pinning de l'adaptateur
Reprend aussi le n° de broche du L298
Montage du L298
Le principe de montage est similaire à celui du L293E (voir ici).
  • Attention à bien raccorder ensemble les masses des deux alimentations (GND de l'alimentation de puissance et GND de breadboard Arduino).
  • Les sorties 13 et 14 sont raccordées au moteur.
  • La broche Sense B est raccordée sur à la masse.
    Le dispositif de mesure du courant n'est pas utilisé dans ce montage.
Résultat


Code
Source: Test_L293E_Direction.pde
Identique à celui publié dans l'article "Contrôle Moteur DC via L293E".

Questions/réponses
Petite section consacrée aux différentes questions posées.

Q: Vous appliquez le signal PWM sur la broche 11 (EnableB) pour faire varier la vitesse du moteur. Cependant, d'autres montages stipulent que le signal PWM doit être placé sur les broches InPut.
Je n'ai plus la datasheet sous les yeux mais il semble que le temps de commutation du circuit soit identique que l'on utilise les broches input ou enabled (selon la datasheet). Ce n'est donc pas un facteur déterminant dans mon choix.
Sauf erreur, cela fonctionnerait donc bien et à l'identique si l'on utilise un seul des deux ponts (par exemple lorsque l'on ne commande le moteur que dans un seul sens).

Par contre, j'utilise les deux ponts pour commander le sens de rotation de mon moteur.
Et dans ce cadre d'utilisation, le choix des broches doit rester évident et facile a comprendre.
Cette commande de sens de rotation est logiquement attribuée à input 1 et input 2. Elles sont toutes deux nécessaires pour commander le sens du moteur (à noter que la commande d'input 1 n'est identique que celle d'input 2).
Voici d'ailleurs le tableau récapitulatif paru dans l'article "Contrôle Moteur DC via L293D (H Bridge Driver, Circuit Intégré Pont H)"
Enable 1Input 1Input 2Fonction
HighLowHighTourne dans le sens horlogique
HighHighLowtourne dans le sens anti-horlogique
HighLowLowStop
HighHighHighStop
LowNon applicableNon applicableStop

Moduler un signal PWM différent sur input 1 et input 2 est forcement plus compliquer que de commander les deux circuits de puissances (broches Enable) en y appliquant le signal PWM.
Il est fort probable que moduler du PWM sur input 1 ou input 2 en fonction du sens de rotation fonctionnerait correctement... mais ce serait aussi  un peu plus compliqué à mettre en oeuvre du point de vue logiciel et rendrait inévitablement le code un peu plus obscur.
Le but avoué étant la simplicité et la robustesse à la fois du montage et du programme.

Voila Telson, j'espère avoir répondu à ta question. Merci de l'avoir posé.

Q: En ce qui concerne le condensateurs 100nF. Faut t'il utiliser des condensateurs polyester genre MKT100N ou des chimiques polarisés?
Je J'ai justement utilisé ce montage dans le cadre de mon projet ArduinoCar.
Le dernier article "Améliorations pour faire du debugging" présente les capacités que j'ai utilisées (voir les images relatives au plan de montage).
Je dirais qu'il s'agit de capacités MKT. J'irais vérifier par acquis de conscience.

Références