Contrôleur de moteurs pas à pas et à courant continu 375 HW-95

Module à base de circuit intégré L298N
Permet de contrôler 2 moteurs CC ou 1 moteur pas-à-pas de 2A maximum

Ce shield a la particularité de ne pas s’emboîter sur l’Arduino pour des raisons thermiques et à cause de l’encombrement de son dissipateur mais il en existe d’autres tels que ceux présentés dans l’accueil de la rubrique « Les shields ».

 

Caractéristiques :

• Tension d’alimentation : jusqu’à 40V
• Courant de fonctionnement : jusqu’à 3A (25W au total)
• Faible courant de saturation
• Protection contre la surchauffe
• Peut faire fonctionner 2 moteurs simultanément
• Haute immunité au bruit : niveau logique « 0 » jusqu’à 1.5V
• Régulateur de tension (78M05) activé depuis le cavalier JP8. Pour éviter de brûler ce circuit, utilisez une source d’alimentation externe de 5 V lorsque la tension du moteur dépasse 12 V (et désactivez JP8).

 

Comment contrôler un moteur à courant continu :

ENA  IN1   IN2  État du moteur à courant continu (A)
0         X        X       Arrêt
1         0        0        Pause
1         0        1        Rotation horaire
1         1        0        Rotation antihoraire
1         1        1        Pause

ENB  IN4   IN3  État du moteur à courant continu (A)
0        X        X       Arrêt
1        0        0        Pause
1        0        1        Rotation horaire
1        1        0        Rotation antihoraire
1        1        1        Pause

Pour contrôler la vitesse du moteur, la broche ENA doit être connectée à une broche PWM de l’Arduino.

 

Schéma électronique :

 

Description :

Ce contrôleur de moteur de Tronixlabs Australia est basé sur le contrôleur double pont H L298N, qui peut être utilisé pour piloter deux moteurs CC jusqu’à 2A chacun, avec une tension entre 5 et 35VDC – ou un moteur pas à pas en toute simplicité. Le contrôleur dispose de diodes de protection contre les courts-circuits et d’un dissipateur thermique. Il y a aussi un régulateur 5V intégré – donc si vous utilisez entre 7V et 12VDC pour piloter les moteurs, le module peut également alimenter votre Arduino (etc.) avec 5VDC. Si vous utilisez plus de 12VDC, retirez le cavalier 12V (voir ci-dessous).

Notez que le module n’est pas conçu pour utiliser la fonction de freinage hard du L298.

 

Brochage du module :


1) Moteur DC 1 « + » ou moteur pas à pas A +.
2) Moteur DC 1 « – » ou moteur pas à pas A -.
3) Cavalier 12V – retirez-le si vous utilisez une tension d’alimentation supérieure à 12VDC. Cela permet d’alimenter le régulateur 5V intégré.
4) Connectez votre tension d’alimentation du moteur ici, maximum de 35VDC. Retirer le cavalier 12V si >12VDC.
5) Masse.
6) Sortie 5V si le cavalier 12V est en place, idéal pour alimenter votre Arduino, etc.
7) ENA : Cavalier moteur 1. Laissez-le en place lors de l’utilisation d’un moteur pas à pas. Connectez à la sortie PWM pour le contrôle de la vitesse du moteur DC.
8) IN1 : entrée 1.
9) IN2 : entrée 2.
10) IN3 : entrée 3.
11) IN4 : entrée 4.
12) ENB : Cavalier moteur 2. Laissez-le en place lors de l’utilisation d’un moteur pas à pas. Connectez à la sortie PWM pour le contrôle de la vitesse du moteur DC.
13) Moteur DC 2 « + » ou moteur pas à pas B +.
14) Moteur DC 2 « – » ou moteur pas à pas B -.

 

Contrôler les moteurs à courant continu :

Contrôler un ou deux moteurs DC est assez facile. 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. Dans le cas contraire, vous devrez peut-être les échanger lorsque vous réglez les deux moteurs vers l’avant et vers l’arrière !

Ensuite connectez votre alimentation : le positif à la broche 4 sur le module et négatif (GND) à la broche 5. Si vous fournissez jusqu’à 12V vous pouvez laisser le cavalier 12V en place (point 3 dans l’image ci-dessus) et le 5V sera disponible à 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 pour compléter 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 :

Enfin, connectez les broches de sortie numériques Arduino au module du 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. Ensuite, connectez D10 à la broche 7 du module (enlevez d’abord le cavalier) et D5 à la broche 12 du module (enlevez à nouveau 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 1, un HIGH à IN1 et un LOW à IN2 le feront tourner dans une direction, et LOW et HIGH le feront tourner dans l’autre sens.
Cependant, les moteurs ne tourneront pas tant que HIGH n’aura pas été réglé sur la broche de validation (7 pour le moteur 1, 12 pour le moteur 2). Et ils peuvent être éteints avec un niveau LOW à la même broche. Cependant, si vous avez besoin de contrôler la vitesse des moteurs, le signal PWM de la broche numérique connectée à la broche de validation peut en prendre soin.
C’est ce que nous avons fait avec l’exemple de démonstration du moteur à courant continu. Deux moteurs DC et un Arduino Uno sont connectés comme décrit ci-dessus, avec une alimentation externe.
Ensuite, tapez et téléchargez dans l’Arduino l’exemple suivant :

// connecter les broches du contrôleur de moteur aux broches numériques Arduino
// moteur 1
int enA = 10;
int in1 = 9;
int in2 = 8;
// moteur 2
int enB = 5;
int in3 = 7;
int in4 = 6;
void setup()
{
// régler toutes les broches de contrôle du moteur sur 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
// allume le moteur A
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
// définit la vitesse à 200 sur la plage possible 0 ~ 255
analogWrite(enA, 200);
// allume le moteur B
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
// définit la vitesse à 200 sur la plage possible 0 ~ 255
analogWrite(enB, 200);
delay(2000);
// change maintenant les directions du moteur
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(2000);
// Désactive maintenant les moteurs
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void demoTwo()
{
// cette fonction fait tourner les moteurs dans la gamme des vitesses possibles
// noter 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
// votre matériel
// allume les moteurs
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
// accélérer de zéro à la vitesse maximale
for (int i = 0; i < 256; i++)
{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// décélération de la vitesse maximale à zéro
for (int i = 255; i >= 0; –i)
{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}4
// Désactive maintenant les moteurs
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void loop()
{
demoOne();
delay(1000);
demoTwo();
delay(1000);
}

Alors, que se passe-t-il dans cet exemple ?

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 à 200/255.
PWM (Pulse Width Modulation) ou MLI en français (Modulation de Largeur d’Impulsion) est une technique couramment utilisée pour synthétiser des signaux continus à l’aide de circuits à fonctionnement tout ou rien. Le principe est qu’en appliquant une succession d’états discrets pendant des durées bien choisies, on peut obtenir en moyenne sur une certaine durée n’importe quelle valeur intermédiaire.
Elle permet donc de faire varier la vitesse d’un moteur à courant continu en envoyant des impulsions positives très espacées pour la vitesse lente à très rapprochées pour la vitesse rapide.
Puis, au bout d’un moment, les moteurs fonctionnent dans le sens inverse (voir comment nous avons changé les valeurs HIGH et LOW dans les fonctions digitalWrite () ).
Pour avoir une idée de la plage de vitesse possible de votre matériel, nous parcourons toute la gamme PWM dans la fonction demoTwo () qui allume les moteurs et les fait passer des valeurs PWM de zéro à 255 et revient à zéro avec les deux boucles for.

 

Contrôler les moteurs pas à pas :

Dans cet exemple, nous avons un moteur pas à pas NEMA-17 typique avec quatre fils : Il a 200 étapes par révolution, et peut fonctionner à 60trs / min. Si vous n’avez pas encore la valeur de pas et de vitesse pour votre moteur, découvrez maintenant et vous en aurez besoin pour le croquis.
La clé du succès de la commande du moteur pas à pas est l’identification des fils – c’est-à-dire lequel est lequel. Vous devrez déterminer les fils A +, A-, B + et B-. Avec notre moteur d’exemple 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 du module 1, 2, 13 et 14 respectivement. Placez les cavaliers inclus avec le module L298N sur les paires aux points 7 et 12 du module. Ensuite, connectez l’alimentation comme requis aux points 4 (positif) et 5 (négatif / GND).
Encore une fois, si l’alimentation de votre moteur pas à pas est inférieure à 12V, installez le cavalier sur le module au point 3, ce qui vous donne une alimentation nette de 5V pour votre Arduino.
Ensuite, connectez les broches du module L298N IN1, IN2, IN3 et IN4 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 fournissez 5V au module.
Contrôler le moteur pas à pas à partir de vos croquis est très simple, grâce à la bibliothèque Stepper Arduino fournie avec l’IDE Arduino en standard.
Pour illustrer votre moteur, chargez simplement l’exemple stepper_oneRevolution fournie avec la bibliothèque Stepper, par exemple :

Enfin, vérifiez la valeur de :
const int stepsPerRevolution = 200;
dans l’exemple et changer le 200 au nombre de pas par tour pour votre moteur pas à pas, et aussi la vitesse qui est préréglée à 60 tours par minute dans la ligne suivante :
myStepper.setSpeed (60);
Maintenant, vous pouvez sauvegarder et télécharger l’exemple, ce qui enverra votre moteur pas à pas autour d’un tour, puis de retour. Ceci est réalisé avec la fonction :
myStepper.step (stepsPerRevolution); // dans le sens des aiguilles d’une montre
myStepper.step (-stepsPerRevolution); // pour le sens anti-horaire