- Description
 
Ce circuit, bon marché (moins de 3€), offre un bon moyen de piloter jusqu’à deux moteurs à courant continu, ou bien un moteur pas à pas.
- 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)
 
- 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 (MLI en Français).
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.
- Principe de commande
 
- Câblage
 
Le schéma de câblage utilisant les deux ponts.
- 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 ».
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57  | // 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); }  | 
Aucun commentaire:
Enregistrer un commentaire