Pont en H L298N
Matériel testé : double pont en H à base de L298N
Bibliothèque nécessaire : aucune
Description
Ce circuit, très populaire et bon marché (moins de 3€), offre un bon moyen de piloter jusqu’à deux moteurs à courant continu, ou bien un moteur pas à pas, voire même un moteur brushless.
- Il peut délivrer jusqu’à 2A en pointe et 20W en continu.
- Il possède son propre circuit d’alimentation logique (permettant d’alimenter l’Arduino)
Cette platine utilise un circuit intégré L298N.
Commande
Les ports ENA et ENB permettent de gérer l’amplitude de la tension délivrée au moteur, grâce à un signal PWM.
Les ports In1, In2 pour le moteur A et In3, In4 pour le moteur B, permettent de contrôler le pont en H et par conséquent le sens de rotation des moteurs.
Arrêt (moteur libre) | Sens + | Sens – | Arrêt (moteur freiné) | ||
Moteur A | Moteur B | ||||
In1 | In3 | LOW | HIGH | LOW | HIGH |
In2 | In4 | LOW | LOW | HIGH | HIGH |
Câblage
Le schéma de câblage suivant utilise le pont B.
Programmation
Le programme suivant permet de mettre en mouvement le moteur connecté au pont B en passant par le port série.
Par l’intermédiaire du moniteur série, on envoie un entier entre -255 et 255 pour actionner le moteur, la valeur 0 signifiant « arrêt du moteur ».
// Pont en H L298N //Ports de commande du moteur B int motorPin1 = 8; int motorPin2 = 9; int enablePin = 5; // Vitesse du moteur int state = 0; void setup() { // Configuration des ports en mode "sortie" pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(enablePin, OUTPUT); // Initialisation du port série Serial.begin(9600); } void loop() { if (Serial.available() > 0) { // Lecture de l'entier passé au port série state = Serial.parseInt(); // // Sens du mouvement // if (state > 0) // avant { digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); Serial.print("Avant "); Serial.println(state); } else if (state < 0) // arrière { digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH); Serial.print("Arriere "); Serial.println(state); } else // Stop (freinage) { digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, HIGH); Serial.println("Stop"); } // // Vitesse du mouvement // analogWrite(enablePin, abs(state)); } delay(100); }
Bonjour!
Peut-on mettre en parallele les deux sorties moteurs ( à condition que les commandes soient misent en parallele aussi!) afin de commander un moteur qui consomme 4A ???
Merci
Bonjour
Je n’ai jamais tenté ce genre de chose … Ça se tente à mon avis.
Je ne pense pas que ça présente de risques, ni pour le moteur, ni pour l’arduino.
c’est ecrit dans la doc constructeur du L298 qu’on peut le faire :
When the repetitive peak current needed from the
load is higher than 2 Amps, a paralleled configuration
can be chosen (See Fig.7).
Bonjour,
SI j’ai une alim en 24V, comment ça se passe pour brancher l’arduino ?
Bonjour
Dans le cas d’une alimentation 24V, il faut alimenter l’Arduino avec une autre source, car si le cavalier d’activation de la sortie 5V est fermé, l’alimentation ne doit pas dépasser 12V !
attention vous avez des balises HTLM dans le code… par exemple if (Serial.available() > 0)
==> le > devrait être >
Merci pour l’info