DRV8833 - Piloter facilement des moteurs continus avec un Pi ou Arduino
Bonjour a tous,
Cette semaine, nous nous penchons sur le contrôle de moteur continu. Cela peut se réaliser à l'aide de Pont-H comme le L293 ou un shield moteur... mais rien n'est plus comfortable qu'un petit breakout dédié à cette tâche.
Le DRV8833 - Contrôleur pour deux moteur continu
Ce petit breakout pour le DRV8833 de Texas Instruments est un pilote permettant de connecter 2 moteurs continu souvent identifié sur le WEB par DC Motor (anglais) ou brushed Motor (Moteur continu avec collecteur).
Le DRV8833 est capable de délivrer continuellement 1.2A sur chaque canal (1.5 avec refroidissement actif et des pointes juste 2 A).
Voici une petite vidéo de mise en bouche et démonstration...
Vous pouvez également accéder directement à la vidéo ici (YouTube)
Avec une tension de fonctionnement de 2.7 V à 10.8 V, le DRV8833 inclus les protections suivantes:
Le DRV8833 de Texas Instruments est un circuit intégré incluant un double pont-H qui peut être utilisé pour contrôler, dans les deux sens, deux moteurs continu ayant une tension de fonctionnement entre 2.7 V et 10.8 V. Il est capable de supporter courant d'environ 1.2A sur chaque pont-H et peut tolérer des pointes de courants jusqu'à 2A par canal pendant quelques seconds. Cela en fait un excellent breakout pour les moteurs hobbyistes (généralement entre 5 et 9v, en basses tensions) et des moteurs en très basse tension (sous 3.5v) tout en tolérant les éventuels courants de blocages. Cette carte utilisant le DRV8833, nous recommandons de lire attentivement la fiche technique du DRV8833 (1Mb pdf). Les autres composants de la carte sont montés en surface (SMD/CMS) et inclus un FET pour protéger la carte contre une polarisation inverse.
Comment l'utiliser
Le montage est relativement simple... tout comme le code d'utilisation.
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.
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.
Exemple Arduino
Voici l'exemple utilisé dans la vidéo de présentation.
.
Tutoriel
Cette semaine, nous nous penchons sur le contrôle de moteur continu. Cela peut se réaliser à l'aide de Pont-H comme le L293 ou un shield moteur... mais rien n'est plus comfortable qu'un petit breakout dédié à cette tâche.
Le DRV8833 - Contrôleur pour deux moteur continu
Le DRV8833 - double pont-H disponible chez MCHobby |
Ce petit breakout pour le DRV8833 de Texas Instruments est un pilote permettant de connecter 2 moteurs continu souvent identifié sur le WEB par DC Motor (anglais) ou brushed Motor (Moteur continu avec collecteur).
Le DRV8833 est capable de délivrer continuellement 1.2A sur chaque canal (1.5 avec refroidissement actif et des pointes juste 2 A).
Voici une petite vidéo de mise en bouche et démonstration...
Vous pouvez également accéder directement à la vidéo ici (YouTube)
Avec une tension de fonctionnement de 2.7 V à 10.8 V, le DRV8833 inclus les protections suivantes:
- contre la polarisation inverse,
- la sous-tension (tension trop basse pour fonctionnement correcte),
- les courants trop important,
- et les températures trop élevées
Le DRV8833 de Texas Instruments est un circuit intégré incluant un double pont-H qui peut être utilisé pour contrôler, dans les deux sens, deux moteurs continu ayant une tension de fonctionnement entre 2.7 V et 10.8 V. Il est capable de supporter courant d'environ 1.2A sur chaque pont-H et peut tolérer des pointes de courants jusqu'à 2A par canal pendant quelques seconds. Cela en fait un excellent breakout pour les moteurs hobbyistes (généralement entre 5 et 9v, en basses tensions) et des moteurs en très basse tension (sous 3.5v) tout en tolérant les éventuels courants de blocages. Cette carte utilisant le DRV8833, nous recommandons de lire attentivement la fiche technique du DRV8833 (1Mb pdf). Les autres composants de la carte sont montés en surface (SMD/CMS) et inclus un FET pour protéger la carte contre une polarisation inverse.
Comment l'utiliser
Le montage est relativement simple... tout comme le code d'utilisation.
Source: Tutoriel de MCHobby sur le DRV8833 |
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.
Source: Tutoriel de MCHobby sur le DRV8833 |
Exemple Arduino
Voici l'exemple utilisé dans la vidéo de présentation.
Montage d'un DRV8833 sur un Arduino UNO - Source: MCHobby.be |
// --- 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); }
Tutoriel
- Notre tutoriel sur le DRV8833 reprend de nombreuses autres informations utiles. Vous y apprendrez l'usage de la broche nSleep et nFault.
Écrire un commentaire