Bonjour à tous !
Je propose un fil dédié au test du driver 20A pour deux moteurs CC présent sur le shop.
C’est un driver qui peut piloter un ou deux moteurs à courant continu fonctionnant entre 12V et 30V. Ce driver peut être utilisé par des microcontrôleurs en 3.3V ou 5V, d’ailleurs sa prise 5V fourni 200mA ce qui est suffisant pour alimenter une carte Arduino.
Ce driver contrôle chaque moteur à l’aide de 3 sorties numériques : 2 sorties qui contrôle la direction du moteur et une sortie en PWM qui pilote la vitesse du moteur.
Pour tester ce driver, j'ai utilisé : une carte clone Arduino Uno, un moteur à courant continu, et une batterie Li-Po.
Voici une illustration du montage que j'ai fait pour connecter tous les éléments (attention le driver n'est pas représentatif ).
http://fritzing.org/projects/driver-moteur-cc
Avec le bon driver, les connections sont les suivantes :
-
La broche GND de la carte Arduino reliée à celle du driver
-
Une broche PWM de l’Arduino reliée à la broche PB du driver
-
Deux broches numériques de la carte reliées aux broches B1 et B2 du driver.
Comment piloter la vitesse des moteurs avec ce driver ?
Sur ce driver, il y a deux puces de commande de moteurs (une pour chaque moteur) qui reprennent le principe du pont en H.
Les signaux de contrôle de la vitesse des moteurs sont de type PWM (Pulse Width Modulation), ce sont des signaux qui peuvent prendre deux états : l’état haut ou l’état bas. La vitesse est modulée en fonction de la durée de ces états, plus l’état haut dure longtemps et plus le moteur tourne vite.
Une fois le câblage terminé, j'ai écrit un programme qui permet de contrôler un moteur à l'aide des touches du clavier.
Je mets en dessous le code et une image une fois dans l'IDE (au cas ou le web editor ne fonctionne pas ).
// Contrôle PWM simple #define PB 3 // Contrôle vitesse moteur 1 #define B1 4 // Contrôle direction moteur 1 #define B2 5 void stop() //Stop { digitalWrite(PB,LOW); } void advance(char a) // En avant { analogWrite (PB,a); // Contrôle de vitesse en PWM digitalWrite(B1,HIGH); digitalWrite(B2,LOW); } void advancem(char a) // En avant vitesse médiane { analogWrite (PB,a); // Contrôle de vitesse en PWM digitalWrite(B1,HIGH); digitalWrite(B2,LOW); } void back_off (char a) // En arrière { analogWrite (PB,a); digitalWrite(B1,LOW); digitalWrite(B2,HIGH); } void setup() { int i; for(i=3;i<=5;i++) pinMode(i, OUTPUT); Serial.begin(9600); // Définit vitesse de transmission série Serial.println("Execution du controle par clavier"); } void loop() { if(Serial.available()){ char val = Serial.read(); //récupération des caractères sur le if(val != -1) //port série { switch(val) { case 'z':// En avant si touche "z" advance (255); // en avant vitesse max break; case 'a':// En avant si touche "a" advancem (128); // en avant vitesse médiane break; case 's':// En arrière si touche "s" back_off (255); // en arrière vitesse max break; case 'x': // arrêt si touche "x" stop(); break; } } else stop(); } }
Le résultat en vidéo :
Ce qui est sympa avec ce driver c'est qu'il possède des leds qui s'allument en fonction des différentes commandes. Cela peut paraître inutile mais c'est bien pratique pour voir comment fonctionne le driver et le programme.
Il y a deux leds par puce de commande : une verte qui fonctionne quand le moteur va en avant et une orange qui fonctionne dans l'autre sens.
Il y a aussi une led violette qui s'illumine lorsque la carte est sous tension.
Et voilà pour le fonctionnement de ce driver !