Accueil > ARDUINO > Drivers moteurs > Arduino & driver BTN7971B

Arduino & driver BTN7971B

vendredi 6 janvier 2017, par thebault

Caractéristiques

JPEG - 17 ko

Le driver BTN7971B permet de commander 1 moteur à courant continu dans les 2 sens de rotation avec variation de vitesse ( commande PWM).

  • documentation du 1/2 pont en H, BTN7971B : doc en pdf
  • le circuit comporte 2 x 1/2 pont en H, soit un pont en H constitué de deux BTN7971B
JPEG - 75.8 ko
  • intensité maximale : 44A avec dissipateur thermique. quelques ampères sans dissipateur (non précisé dans la documentation)
  • tension alimentation : de 7V à 18V (il est conseillé de ne pas dépasser 14V)
  • les broches du côté commande :
BrocheFonctionBrocheFonction
GND 0V alimentation partie commande 5V 5V alimentation partie commande
IN1 commande 1er 1/2 pont en H IN2 commande 2ème 1/2 pont en H
  • Commande en tout ou rien du moteur :
IN1IN2moteur
0 0 Arrêt
0 1 rotation sens 1
1 0 rotation sens 2
  • Commande PWM avec variation de vitesse du moteur :
IN1IN2moteur
0 0 Arrêt
0 PWM rotation sens 1
PWM 0 rotation sens 2

Branchements

Côté commande :

  • GND (Arduino) -> GND (driver BTN7971B)
  • 5V (Arduino) -> 5V (driver BTN7971B)
  • broche 5 (Arduino) -> IN1 (driver BTN7971B)
  • broche 6 (Arduino) -> IN2 (driver BTN7971B)

Côté puissance (connecteur à vis) :

  • GND -> masse alimentation puissance
  • Vcc -> alimentation puissance
  • OUT1 & OUT2 -> moteur

Programmes arduino

Exemple 1 : Un programme qui permet de commander en tout ou rien un moteur à courant continu M1 :
- 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) ;

  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