Contrôlez les moteurs CC et pas à pas avec les modules de contrôleur de moteur double L298N et Arduino
Vous n'avez pas à dépenser beaucoup d'argent pour contrôler les moteurs avec une carte Arduino ou compatible. Après quelques recherches, nous avons trouvé un module de commande de moteur soigné basé sur le circuit intégré de pont en H L298N qui vous permet de contrôler la vitesse et la direction de deux moteurs à courant continu, ou de contrôler facilement un moteur pas à pas bipolaire.
Le module de pont en H L298N peut être utilisé avec des moteurs dont la tension est comprise entre 5 et 35V DC. Avec le module utilisé dans ce tutoriel, il y a aussi un régulateur 5V intégré, donc si votre tension d'alimentation est jusqu'à 12V, vous pouvez également alimenter 5V à partir de la carte.
Alors, commençons!
Étape 1: Comprendre les connexions du module L298

Nous allons d'abord parcourir les connexions, puis expliquer comment contrôler les moteurs à courant continu, puis un moteur pas à pas. À ce stade, passez en revue les connexions du module de pont en H L298N.
Considérez l'image - faites correspondre les chiffres à la liste sous l'image:
- Moteur CC 1 "+" ou moteur pas à pas A +
- Moteur à courant continu 1 «-» ou moteur pas à pas A-
Cavalier 12V - retirez-le si vous utilisez une tension d'alimentation supérieure à 12V DC. Cela permet d'alimenter le régulateur 5V embarqué
Connectez ici la tension d'alimentation de votre moteur, maximum 35V DC. Retirez le cavalier 12V si> 12V DC
GND
Sortie 5V si cavalier 12V en place, idéal pour alimenter votre Arduino (etc.)
Cavalier d'activation du moteur CC 1. Laissez-le en place lorsque vous utilisez un moteur pas à pas. Connectez à la sortie PWM pour le contrôle de la vitesse du moteur CC.
EN 1
EN 2
IN3
IN4
Cavalier d'activation du moteur CC 2. Laissez-le en place lorsque vous utilisez un moteur pas à pas. Connexion à la sortie PWM pour le contrôle de la vitesse du moteur CC
Moteur DC 2 "+" ou moteur pas à pas B +
Moteur DC 2 “-” ou moteur pas à pas B-
Étape 2: Contrôle des moteurs à courant continu

Contrôler un ou deux moteurs CC est assez facile avec le module de pont en H L298N. Connectez d'abord chaque moteur aux connexions A et B du module L298N.
Si vous utilisez deux moteurs pour un robot (etc.), assurez-vous que la polarité des moteurs est la même sur les deux entrées. Sinon, vous devrez peut-être les échanger lorsque vous mettez les deux moteurs en marche avant et que l'un revient en arrière!
Ensuite, connectez votre alimentation - le positif à la broche 4 du module et le négatif / GND à la broche 5. Si vous fournissez jusqu'à 12V, vous pouvez laisser dans le cavalier 12V (point 3 dans l'image ci-dessus) et 5V sera disponible de la broche 6 sur le module.
Cela peut être alimenté à la broche 5V de votre Arduino pour l'alimenter à partir de l'alimentation des moteurs. N'oubliez pas de connecter Arduino GND à la broche 5 du module également pour terminer le circuit. Maintenant, vous aurez besoin de six broches de sortie numérique sur votre Arduino, dont deux doivent être des broches PWM (modulation de largeur d'impulsion).
Les broches PWM sont désignées par le tilde («~») à côté du numéro de broche, par exemple dans l'image des broches numériques de l'Arduino Uno.
Enfin, connectez les broches de sortie numérique Arduino au module pilote. Dans notre exemple, nous avons deux moteurs à courant continu, donc les broches numériques D9, D8, D7 et D6 seront connectées aux broches IN1, IN2, IN3 et IN4 respectivement. Connectez ensuite D10 à la broche 7 du module (retirez d'abord le cavalier) et D5 à la broche 12 du module (encore une fois, retirez le cavalier).
La direction du moteur est contrôlée en envoyant un signal HAUT ou BAS au variateur pour chaque moteur (ou canal). Par exemple, pour le moteur un, un HIGH à IN1 et un LOW à IN2 le feront tourner dans un sens, et un LOW et HIGH le fera tourner dans l'autre sens.
Cependant, les moteurs ne tourneront pas jusqu'à ce que HIGH soit réglé sur la broche d'activation (7 pour le moteur un, 12 pour le moteur deux). Et ils peuvent être désactivés avec un LOW sur les mêmes broches. Cependant, si vous devez contrôler la vitesse des moteurs, le signal PWM de la broche numérique connectée à la broche d'activation peut s'en occuper.
C'est ce que nous avons fait avec le croquis de démonstration du moteur à courant continu. Deux moteurs à courant continu et un Arduino Uno sont connectés comme décrit ci-dessus, ainsi qu'une alimentation externe. Entrez ensuite et téléchargez l'esquisse suivante:
// connecter les broches du contrôleur de moteur aux broches numériques Arduino // moteur un int enA = 10; int in1 = 9; int in2 = 8; // moteur deux int enB = 5; int in3 = 7; int in4 = 6; void setup () {// positionne toutes les broches de contrôle moteur sur les sorties pinMode (enA, OUTPUT); pinMode (enB, OUTPUT); pinMode (in1, OUTPUT); pinMode (in2, OUTPUT); pinMode (in3, OUTPUT); pinMode (in4, OUTPUT); } void demoOne () {// cette fonction fera tourner les moteurs dans les deux sens à une vitesse fixe // allumera le moteur A digitalWrite (in1, HIGH); digitalWrite (in2, LOW); // définir la vitesse à 200 hors de la plage possible 0 ~ 255 analogWrite (enA, 200); // allume le moteur B digitalWrite (in3, HIGH); digitalWrite (in4, LOW); // définir la vitesse à 200 hors de la plage possible 0 ~ 255 analogWrite (enB, 200); retard (2000); // change maintenant la direction du moteur digitalWrite (in1, LOW); digitalWrite (in2, HIGH); digitalWrite (in3, LOW); digitalWrite (in4, HIGH); retard (2000); // Désactiver maintenant les moteurs digitalWrite (in1, LOW); digitalWrite (in2, LOW); digitalWrite (in3, LOW); digitalWrite (in4, LOW); } void demoTwo () {// cette fonction exécutera les moteurs sur la plage de vitesses possibles // notez que la vitesse maximale est déterminée par le moteur lui-même et la tension de fonctionnement // les valeurs PWM envoyées par analogWrite () sont des fractions de la vitesse maximale possible // par votre matériel // allumez les moteurs digitalWrite (in1, LOW); digitalWrite (in2, HIGH); digitalWrite (in3, LOW); digitalWrite (in4, HIGH); // accélère de zéro à la vitesse maximale pour (int i = 0; i <256; i ++) {analogWrite (enA, i); analogWrite (enB, i); retard (20); } // décélère de la vitesse maximale à zéro pour (int i = 255; i> = 0; --i) {analogWrite (enA, i); analogWrite (enB, i); retard (20); } // désactive maintenant les moteurs digitalWrite (in1, LOW); digitalWrite (in2, LOW); digitalWrite (in3, LOW); digitalWrite (in4, LOW); } void loop () {demoOne (); retard (1000); demoTwo (); retard (1000); }
Alors, que se passe-t-il dans ce croquis? Dans la fonction demoOne (), nous allumons les moteurs et les exécutons à une valeur PWM de 200. Ce n'est pas une valeur de vitesse, mais la puissance est appliquée pendant 200/255 d'un certain temps à la fois.
Ensuite, après un moment, les moteurs fonctionnent dans le sens inverse (voir comment nous avons changé les hauts et les bas dans les fonctions digitalWrite ()?). Pour avoir une idée de la plage de vitesse possible de votre matériel, nous parcourons toute la plage PWM dans la fonction demoTwo () qui allume les moteurs et les exécute à travers les valeurs PWM de zéro à 255 et de retour à zéro avec les deux pour les boucles .
Enfin, cela est démontré dans la vidéo sur cette page - en utilisant notre châssis de réservoir bien usé avec deux moteurs à courant continu.
Étape 3: Contrôle d'un moteur pas à pas avec Arduino et L298N

Les moteurs pas à pas peuvent sembler complexes, mais rien ne pourrait être plus loin que la vérité. Dans cet exemple, nous contrôlons un moteur pas à pas NEMA-17 typique qui a quatre fils, comme indiqué dans l'image de cette étape.
Il a 200 pas par tour et peut fonctionner à 60 tr / min. Si vous n'avez pas déjà la valeur de pas et de vitesse pour votre moteur, renseignez-vous maintenant et vous en aurez besoin pour le croquis.
La clé du contrôle réussi du moteur pas à pas est d'identifier les fils - c'est-à-dire lequel est qui. Vous devrez déterminer les fils A +, A-, B + et B-. Avec notre exemple de moteur, ce sont le rouge, le vert, le jaune et le bleu. Maintenant, faisons le câblage.
Connectez les fils A +, A-, B + et B- du moteur pas à pas aux connexions de module 1, 2, 13 et 14 respectivement. Placez les cavaliers fournis avec le module L298N sur les paires aux points de module 7 et 12. Ensuite, connectez l'alimentation selon les besoins aux points 4 (positif) et 5 (négatif / GND).
Encore une fois, si l'alimentation électrique de votre moteur pas à pas est inférieure à 12 V, installez le cavalier sur le module au point 3, ce qui vous donne une alimentation nette de 5 V pour votre Arduino. Ensuite, connectez les broches IN1, IN2, IN3 et IN4 du module L298N aux broches numériques Arduino D8, D9, D10 et D11 respectivement.
Enfin, connectez Arduino GND au point 5 du module et Arduino 5V au point 6 si vous achetez 5V à partir du module. Le contrôle du moteur pas à pas à partir de vos croquis est très simple, grâce à la bibliothèque Stepper Arduino incluse avec l'IDE Arduino en standard.
Pour illustrer votre moteur, chargez simplement l'esquisse stepper_oneRevolution incluse avec la bibliothèque Stepper. Pour le trouver, cliquez sur le menu Fichier> Exemples> Stepper dans l'IDE Arduino.
Enfin, vérifiez la valeur de
const int stepsPerRevolution = 200;dans l'esquisse et modifiez le 200 au nombre de pas par tour pour votre moteur pas à pas, ainsi que la vitesse qui est préréglée à 60 tr / min sur la ligne suivante:
myStepper.setSpeed (60);
Vous pouvez maintenant enregistrer et télécharger l'esquisse, qui enverra votre moteur pas à pas autour d'une révolution, puis à nouveau. Ceci est réalisé avec la fonction
myStepper.step (stepsPerRevolution); // pour sens horaire
myStepper.step (-stepsPerRevolution); // pour anti-horaire
Enfin, une démonstration rapide de notre matériel de test est présentée dans la vidéo de cette étape.
Donc, vous l'avez, un moyen facile et peu coûteux de contrôler les moteurs avec votre Arduino ou une carte compatible. Et si vous avez apprécié cet article, ou si vous voulez présenter quelqu'un d'autre au monde intéressant d'Arduino - consultez mon livre (maintenant dans une quatrième impression!) "Atelier Arduino".