L'INTERFACE DE PUISSANCE L298
L'interface de puissance L298 est un module comportant un double pont en H capable de piloter deux moteurs à courant continu ou un moteur pas à pas sous 36 V et consommant 2 A, des diodes de roue libre pour protéger le L298, un régulateur de tension 5 V, des condensateurs de filtrage, des borniers à vis pour y brancher les moteurs et des broches pour y relier la carte Arduino. Le L298 possède trois entrées de commande par pont en H pour piloter le moteur.
Pour faire varier la vitesse du moteur, nous appliquerons un niveau bas sur une des deux entrées IN1 ou IN2 (cela permet de configurer le sens de rotation) et un signal MLI sur l'autre entrée IN1 ou IN2.
Les moteurs sont reliés aux borniers entourés en ROUGE.
Les alimentations (5 V et VCC) sont reliées au bornier entourés en JAUNE. Les masses de l'alimentation externe (VCC) et celle de la carte Arduino sont communes.
Le cavalier entouré en VERT doit être laissé en place pour activer le régulateur 5 V du module. Ce régulateur fournit le 5 V à la partie logique du L298. Si nous retirons ce cavalier, il faut alimenter le module en 5 V.
Les broches entourées en BLEU sont connectées aux broches numériques de la carte Arduino Uno.
Dans l'univers Arduino, le module interface de puissance L298 est principalement utilisé dans des applications robotiques.
Exemple :
Nous souhaitons faire varier la vitesse et le sens de rotation d'un moteur en fonction de la position d'un joystick.
Liste du matériel :
-
1 Arduino Uno
-
1 plaquette d'essai
-
1 interface de puissance L298
-
1 joystick
-
1 moteur à courant continu
-
1 alimentation
Câblage :
Programme :
/* Moteur est un programme qui commande un moteur à courant continu en fonction de la position d'un joystick */
#define in1 9 // affectation des broches
#define in2 10
#define joy_X A0
int val=0;
int mot=0;
void setup()
{
pinMode(in1, OUTPUT); // la broche in1 est en sortie
pinMode(in2, OUTPUT); // la broche in2 est en sortie
}
void loop()
{
val=analogRead(joy_X); // conversion AN
if (val>520) // joystick vers le haut
{
mot = map(val, 512, 1023, 0, 255);
analogWrite(in1,mot); // moteur dans le sens 1
digitalWrite(in2, LOW);
}
if (val<500) // joystick vers le bas
{
mot = map(val, 512, 0, 0, 255);
analogWrite(in2,mot); // moteur dans le sens 2
digitalWrite(in1, LOW);
}
if ((val<=520)&&(val>=500)) // joystick au milieu
{
digitalWrite(in1, LOW); // moteur arrêté
digitalWrite(in2, LOW);
}
delay(100);
}