Accueil > ARDUINO > Drivers moteurs > Arduino & L298 sur breakout board (en driver pour Moteurs à courant (...)

Arduino & L298 sur breakout board (en driver pour Moteurs à courant continu)

lundi 9 janvier 2017, par thebault

Caractéristiques.

JPEG - 44.3 ko

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,

JPEG - 13.6 ko


- intensité maximale : 2A,
- tension alimentation puissance : de 5V à 30V
- les broches de la carte :

BrocheFonctionBrocheFonction
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 :

IN1IN2moteur A
0 0 Arrêt
0 1 rotation sens 1
1 0 rotation sens 2
IN3IN4moteur B
0 0 Arrêt
0 1 rotation sens 1
1 0 rotation sens 2

- commande PWM avec variation de vitesse

IN1IN2moteur A
0 0 Arrêt
0 PWM rotation sens 1
PWM 0 rotation sens 2
IN3IN4moteur B
0 0 Arrêt
0 PWM rotation sens 1
PWM 0 rotation sens 2

Branchements

JPEG - 537.1 ko

Programmes arduino

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

  1. int IN1 = 5;
  2. int IN2 = 6;
  3.  
  4. void setup() {
  5. pinMode(IN1, OUTPUT);
  6. pinMode(IN2, OUTPUT);
  7. }
  8.  
  9. void loop() {
  10. digitalWrite(IN1, 1); // rotation sens 1
  11. digitalWrite(IN2, 0);
  12. delay(2000);
  13. digitalWrite(IN1, 0); // arrêt
  14. digitalWrite(IN2, 0);
  15. delay(1000);
  16. digitalWrite(IN1, 0); // rotation sens 2
  17. digitalWrite(IN2, 1);
  18. delay(2000);
  19. digitalWrite(IN1, 0); // arrêt
  20. digitalWrite(IN2, 0);
  21. delay(1000);
  22. }

Télécharger

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  

  1. int IN1 = 5; // commande pont en H "1"
  2. int IN2 = 6; // commande pont en H "2"
  3.  
  4. int a; //rapport cyclique entre 0 et 255
  5.  
  6. void setup() {
  7. pinMode(IN1, OUTPUT);
  8. pinMode(IN2, OUTPUT);
  9. }
  10.  
  11. void loop() {
  12. digitalWrite(IN2, 0);
  13.  
  14. a=0;
  15. while (a <= 255) { // phase d'accélération.
  16. analogWrite(IN1, a);
  17. a = a + 1;
  18. delay(20);
  19. }
  20. while (a >=0) { // phase de décélération
  21. analogWrite(IN1, a);
  22. a = a - 1;
  23. delay(20);
  24. }
  25.  
  26. }

Télécharger

SPIP | | Plan du site | Suivre la vie du site RSS 2.0
Habillage visuel © digitalnature sous Licence GPL