Accueil > ARDUINO > Drivers moteurs > Arduino & Driver TB6612FNG pour moteur à courant continu

Arduino & Driver TB6612FNG pour moteur à courant continu

samedi 19 décembre 2015, par thebault

Caractéristiques

JPEG - 368.1 ko

Le driver TB6612FNG proposé par POLOLU permet de commander 2 moteurs à courant continu dans les 2 sens de rotation avec variation de vitesse (PWM)

- page du produit chez POLOLU https://www.pololu.com/product/713/,
- documentation du composant TB6612FNG fabriqué par TOSHIBA https://www.pololu.com/file/download/TB6612FNG.pdf?file_id=0J86
- le circuit comporte 2 ponts en H (1 pour chaque moteur). Remarque : Les diodes de roues libres sont intégrées au driver  :

JPEG - 24.9 ko


- courant de sortie maxi : 1 A
- alimentation et tensions d’utilisation de la partie commande : 2,7 V à 5 V

- alimentation de la partie puissance : 4,5 V à 13,5 V

JPEG - 103.6 ko

- commande des moteurs. Le driver ne fonctionne que si /STBY est au niveau logique 1.

Pour commander l’un des moteurs, on utilise 3 entrées :
- IN1 et IN2 qui permettent de choisir le sens de rotation
- PWM qui permet de commander la variation de vitesse (commande PWM = MLI en français)

Commande en tout ou rien

xIN1 xIN2 xPWM OUT1 OUT2 Mode
0 0 1 0 0 arrêt
0 1 1 0 1 sens 1
1 0 1 1 0 sens 2
1 1 X 0 0 arrêt

En commande avec variation de vitesse :

xIN1 xIN2 OUT1 OUT2 Mode
0 0 0 0 arrêt
0 1 0 xPWM variation de vitesse sens 1
1 0 xPWM 0 variation de vitesse sens 2
1 1 0 0 arrêt

Branchements

Dans les exemples suivants, j’utilise les broches 1, 2, 3 (sortie PWM) pour commander le moteur :
- broche 1 -> AIN1,
- broche 2 -> AIN2,
- broche 3 -> PWMA

Pour l’alimentation et la commande /STBY :
- 5V arduino -> Vcc,
- GND arduino -> GND
- 5V arduino -> /STBY

ATTENTION au sens de mise en place du driver sur la plaquette d’essai !

JPEG - 715.4 ko

Code arduino


Exemple 1
 : le programme permet de commander en tout ou rien le moteur A :
- dans le sens 1 pendant 5s,
- à l’arrêt pendant 2s,
- dans le sens 2 pendant 5s,
- à l’arrêt pendant 2s,
- et ainsi de suite ...

  1. int PWMA=3;
  2. int AIN1=1;
  3. int AIN2=2;
  4.  
  5. void setup() {
  6. // broches 3 (PWMA), 1 (AIN1), 2 (AIN2) en sorties
  7. pinMode(PWMA,OUTPUT);
  8. pinMode(AIN1,OUTPUT);
  9. pinMode(AIN2,OUTPUT);
  10.  
  11. }
  12.  
  13. void loop() {
  14. // commande PWMA à pleine vitesse (1 logique)
  15. digitalWrite(PWMA,1);
  16.  
  17. // sens 1 : AIN1=1, AIN2=0 pendant 5 s
  18. digitalWrite(AIN1,1);
  19. digitalWrite(AIN2,0);
  20. delay(5000);
  21.  
  22. // stop : AIN1=0, AIN2=0 pendant 2 s
  23. digitalWrite(AIN1,0);
  24. digitalWrite(AIN2,0);
  25. delay(2000);
  26.  
  27. // sens 2 : AIN1=0, AIN2=1 pendant 5 s
  28. digitalWrite(AIN1,0);
  29. digitalWrite(AIN2,1);
  30. delay(5000);
  31.  
  32. // stop : AIN1=0, AIN2=0 pendant 2 s
  33. digitalWrite(AIN1,0);
  34. digitalWrite(AIN2,0);
  35. delay(2000);
  36. }

Télécharger

Exemple 2 : le programme suivant permet d’accélérer (en faisant varier le rapport cyclique de 0 à 1 (codé sur 8 bits de 0 à 255)) puis de décélérer (en faisant varier le rapport cyclique de 1 à 0 (codé sur 8 bits de 255 à 0)).

Pour faire varier le rapport cyclique, j’utilise la commande (PWMA = numéro de broche, a=rapport cyclique codé sur 8 bits) :

analogWrite(PWMA,a)

Le programme

  1. int PWMA=3;
  2. int AIN1=1;
  3. int AIN2=2;
  4. int a; // rapport cyclique entre 0 et 255
  5.  
  6. void setup() {
  7. // broches 3 (PWMA), 1 (AIN1), 2 (AIN2) en sorties
  8. pinMode(PWMA,OUTPUT);
  9. pinMode(AIN1,OUTPUT);
  10. pinMode(AIN2,OUTPUT);
  11.  
  12. }
  13.  
  14. void loop() {
  15.  
  16. // on ne travaille que dans le sens 1 : AIN1=1, AIN2=0
  17. digitalWrite(AIN1,1);
  18. digitalWrite(AIN2,0);
  19.  
  20. // phase d'accélération : le rapport cyclique va varier de 0 à 255
  21. a=0;
  22. while (a <= 255) {
  23. analogWrite(PWMA, a);
  24. a = a + 1;
  25. delay(20);
  26. }
  27. // phase de décelération : le rapport cyclique va varier de 255 à 0
  28. while (a >=0) { // phase de décélération
  29. analogWrite(PWMA, a);
  30. a = a - 1;
  31. delay(20);
  32. }
  33. }

Télécharger

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