DRV8833-Utiliser
Comment utiliser
Dans une application type, les connexions de puissances sont faites d'un côté de la carte et les connexions de contrôle de l'autre côté de la carte. La broche nSLEEP est maintenue au niveau haut par la carte (à l'aide d'une résistance pull-upp), il n'est donc pas nécessaire de la connecter (sauf si vous voulez mettre le DRV8833 en mode veille).
Chacun canal moteur dispose d'une paire d'entrées de contrôle , xIN1 et xIN2, qui active l'état de la sortie correspondante , xOUT1 et xOUT2; Ces entrées sont équipées de pull-down en interne (qui ramène le signal de la broche au niveau bas/low), ce qui désactive les sorties par défaut (méthode efficace qui évite à vos moteurs de tressauter à la mise sous tension).
Voyez la table de contrôle des entrées (dans la fiche technique) pour voir comment celles-ci influence l'état des sorties.
H: signifie HIGH/niveau haut. L: LOW/niveau bas
Il est possible d'appliquer un signal PWM (pulse width modulated/modulation de largeur d'impulsion) sur ces entrées, ce qui permet de contrôler la vitesse du moteur. Quand vous contrôlez la rotation en PWM, le courant tend à continuer à circuler lorsque le pilote interrompt celui-ci. Cela se s'appelle le "courant de recirculation" (cfr doc de Texas Instruments). Le pont-H peut gérer cette recirculation de deux façons différentes: en mode roue libre (Coat/Fast decay) ou en mode de freinage (Brake/Slow Decay). En mode roue libre (Coat/Fast Decay) le pont H est désactivé et le courant de recirculation circule à travers les diodes. En mode freinage, les bobines du moteur sont court-circuités, ce provoque le freinage du moteur.
Note: Il est également possible de contrôler le moteur en PWM en mode roue libre et freinage, voyez la fiche technique de Texas Instruments pour plus d'information à ce sujet.
La broche nFAULT est une sortie à drain ouvert qui est ramené au niveau bas par le circuit intégré lorsqu'il est surchargé (sur-courant), en surchauffe ou s'il fonctionne en sous-tension. Dans le cas contraire l'état de cette broche est flottant et vous devrez y connecter une résistance pull-up externe (ou utiliser une entrée de votre microcontroleur en y activant son pull-up interne). Si vous ne voulez pas surveiller cet état d'erreur, vous pouvez simplement ignorer cette broche.
Montage Arduino
// --- Commande de controleur moteur DC ---------------------- // DRV8833_Test.ino // // Commande du DRV8833, prenant le controle de deux moteurs // continu. // // Un projet www.mchobby.be (vente de kit et composant) // Meurisse D. - Licence CC-SA-BY // // Un tutoriel http://mchobby.be/wiki/index.php?title=DRV8833 // Ou Acheter un StepStick DRV8833 // http://shop.mchobby.be/product.php?id_product=499 // #define pinINA1 5 // Moteur A, entrée 1 - Commande en PWM possible #define pinINA2 6 // Moteur A, entrée 2 - Commande en PWM possible #define pinINB1 10 // Moteur B, entrée 1 - Commande en PWM possible #define pinINB2 11 // Moteur B, entrée 2 - Commande en PWM possible void setup(){ Serial.begin(9600); Serial.println("Test DRV8833"); // Initialize les broches de commandes // du moteur A pinMode( pinINA1, OUTPUT ); pinMode( pinINA2, OUTPUT ); digitalWrite( pinINA1, LOW ); digitalWrite( pinINA2, LOW ); } void loop(){ // --- Moteur A: Controle pleine puissance ------------------- // Marche avant digitalWrite( pinINA1, HIGH ); digitalWrite( pinINA2, LOW ); delay( 3000 ); // Arret par frein (voir documentation) digitalWrite( pinINA1, LOW ); digitalWrite( pinINA2, LOW ); delay( 2000 ); // Marche arriere digitalWrite( pinINA1, LOW ); digitalWrite( pinINA2, HIGH ); delay( 3000 ); // Arret en roue libre digitalWrite( pinINA1, HIGH ); digitalWrite( pinINA2, HIGH ); delay( 2000 ); // Arret par frein (voir documentation) digitalWrite( pinINA1, LOW ); digitalWrite( pinINA2, LOW ); // ---- Moteur A: Controle de vitesse en PWM ------------ // Marche avant progressive digitalWrite( pinINA2, LOW ); // réactive la commande en digital sur la broche for( int i = 20; i<=240; i=i+20 ){ analogWrite( pinINA1, i ); Serial.println( i ); delay( 500 ); // attentre 0.5 sec } // Arret digitalWrite( pinINA1, LOW ); digitalWrite( pinINA2, LOW ); delay( 2000 ); // arret digitalWrite( pinINA1, LOW ); digitalWrite( pinINA2, LOW ); // Marche arriere progressive digitalWrite( pinINA1, LOW ); // réactive la commande en digital sur la broche for( int j = 20; j<=240; j=j+20 ){ analogWrite( pinINA2, j ); delay( 500 ); // attentre 0.5 sec } // Arret par frein (voir documentation) digitalWrite( pinINA1, LOW ); digitalWrite( pinINA2, LOW ); // Arreter le programme while(true); }
Documentation réalisée par Meurisse. D pour MCHobby.be. En partie basé sur les informations disponible sur le site de Pololu
Traduit avec l'autorisation de Pololu - Translated with the permission from Pololu - www.pololu.com
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.