Accueil > ARDUINO > Drivers moteurs > Arduino & L298 sur breakout board (en driver pour Moteurs à courant (...)
lundi 9 janvier 2017, par
Le Shield L298 permet de commander 2 moteurs à courant continu dans les 2 sens de rotation avec variation de vitesse ( commande PWM).
documentation du L298N
le circuit comporte 2 ponts en H,
intensité maximale : 2A,
tension alimentation puissance : de 5V à 30V
les broches de la carte :
Broche | Fonction | Broche | Fonction | |
---|---|---|---|---|
ENA | autorisation de fonctionnement moteur A | ENB | autorisation de fonctionnement moteur B | |
IN1 & IN2 | commandes du moteur A | IN3 & IN4 | commandes du moteur B | |
GND | masse logique de commande et puissance | 5V | alimentation logique de commande | |
+12V | alimentation partie puissance | |||
OUT1 & OUT2 | branchements moteur A | OUT3 & OUT4 | branchements moteur B |
par défaut, des "jumpers" relient ENA et ENB à 5V pour autoriser le fonctionnement des 2 moteurs
Commande en tout ou rien des moteurs :
IN1 | IN2 | moteur A | |
---|---|---|---|
0 | 0 | Arrêt | |
0 | 1 | rotation sens 1 | |
1 | 0 | rotation sens 2 |
IN3 | IN4 | moteur B | |
---|---|---|---|
0 | 0 | Arrêt | |
0 | 1 | rotation sens 1 | |
1 | 0 | rotation sens 2 |
commande PWM avec variation de vitesse
IN1 | IN2 | moteur A | |
---|---|---|---|
0 | 0 | Arrêt | |
0 | PWM | rotation sens 1 | |
PWM | 0 | rotation sens 2 |
IN3 | IN4 | moteur B | |
---|---|---|---|
0 | 0 | Arrêt | |
0 | PWM | rotation sens 1 | |
PWM | 0 | rotation sens 2 |
Exemple 1 : Un programme qui permet de commander en tout ou rien un moteur à courant continu Ma :
commander le moteur pendant 2s,
stopper pendant 2s,
inverser le sens de rotation pendant 2s,
stopper pendant 2s
int IN1 = 5; int IN2 = 6; void setup() { pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); } void loop() { digitalWrite(IN1, 1); // rotation sens 1 digitalWrite(IN2, 0); delay(2000); digitalWrite(IN1, 0); // arrêt digitalWrite(IN2, 0); delay(1000); digitalWrite(IN1, 0); // rotation sens 2 digitalWrite(IN2, 1); delay(2000); digitalWrite(IN1, 0); // arrêt digitalWrite(IN2, 0); delay(1000); }
Exemple 2 : On va maintenant commander le moteur en vitesse variable. On va donc utiliser une sortie PWM. Le moteur accélère jusqu’à atteindre sa valeur maximale puis revient à vitesse nulle. Si on souhaite tourner dans l’autre sens, on utilise digitalWrite(IN2, 0) au lieu de digitalWrite(IN1, 0).
La variation de vitesse du MCC est réalisée par la commande PWM (a = rapport cyclique codé sur 8 bit - de 0 à 255 - ) : analogWrite(IN1, a) ;
Pour commander le pont H "1", il faut utiliser 2 sorties avec PWM notées
int IN1 = 5; // commande pont en H "1" int IN2 = 6; // commande pont en H "2" int a; //rapport cyclique entre 0 et 255 void setup() { pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); } void loop() { digitalWrite(IN2, 0); a=0; while (a <= 255) { // phase d'accélération. analogWrite(IN1, a); a = a + 1; delay(20); } while (a >=0) { // phase de décélération analogWrite(IN1, a); a = a - 1; delay(20); } }