Contrôleur "pont en H" pour moteurs électriques

publicité
Contrôleur "pont en H" pour moteurs électriques
Extrait du PoBot
http://www.pobot.org
Contrôleur "pont en H" pour
moteurs électriques
- Robopedia - Constituants - Les circuits spécialisés - Les contrôleurs de moteur -
Date de mise en ligne : lundi 14 décembre 2009
PoBot
Copyright © PoBot
Page 1/5
Contrôleur "pont en H" pour moteurs électriques
Avec un seul circuit de type pont en H (L293 ou SN754410), on peut contrôler deux moteurs à
courant continu ou un seul moteur pas à pas à deux phases. C'est ce que nous avons fait lors
de nos ateliers hebdomadaires et que nous vous présentons ici.
Sommaire
• Le circuit intégré
• Le schéma de test
• Code source
• Notre expérience en atelier
Le but de cet article est de reproduire rapidement une expérience simple : faire tourner un moteur électrique à
courant continu ou un moteur pas-à-pas (tels que ceux qu'on récupère dans des imprimantes) avec un composant
simple et peu cher. Bien sûr, il faut adapter votre choix de pont en H selon la puissance nécessaire : un gros
moteur aura besoin d'un pont plus important (tel le L298).
Pas de grande théorie sur les ponts en H, mais juste un rappel : les moteurs électriques que nous allons utiliser font
tourner un aimant en faisant circuler un courant dans des bobines. Un contrôleur de moteur est donc un
composant de puissance capable d'alimenter un moteur électrique en fonction des consignes (le contrôle) que vous
lui donnez.
Si vous disposez d'une carte électronique intégrant ce pont en H, c'est plutôt cet article qu'il vous faut.
Le circuit intégré
Nous utilisons le composant L293D (à 3Euros chez Zartronic
[http://www.zartronic.fr/l293d-double-pont-en-h-pilote-de-moteur-1a-p-199.html]) intégrant les diodes de roue libre (le
"D" derrière le L293) qui protègent le circuit et évitent d'avoir à rajouter d'autres composants. Il y a un équivalent, le
SN754410 (à 2,30$ chez Sparkfun [http://www.sparkfun.com/commerce/product_info.php?products_id=315]) qui
permet de faire passer plus de courant en étant entièrement compatible.
Ces deux circuits intègrent 4 contrôleurs indépendants acceptant en entrée la consigne (actif ou inactif, comme un
interrupteur), et reproduisant en sortie l'alimentation correspondante (0 volts ou tension d'entrée "puissanc" différente
de la tension "logique" du signal en entrée).
Chaque sortie doit être reliée à une extrémité d'une bobine. Dans le cas d'un moteur à courant continu, il suffit de 2
sorties associées (l'une fermée lorsque l'autre est ouverte) pour faire tourner le moteur dans un sens ou dans l'autre.
Avec un seul CI, on fait ainsi fonctionner deux moteurs (utile pour un robot mobile simple comme le muPobot.
Vous trouverez la documentation technique dans cette rubrique (lien corrigé, merci).
Il existe des alternatives à ce montage "fait à la main", comme l'utilisation d'un circuit de puissance intégré à la carte
Arduino Romeo ou utiliser une extension Arduino ("motor shield") telle qu'on en trouve sur Zartronic.fr
[http://www.zartronic.fr/contr%C3%B4leur-de-moteur-1a-l293-shield-pour-arduino-p-42.html].
Copyright © PoBot
Page 2/5
Contrôleur "pont en H" pour moteurs électriques
Le schéma de test
Cet article sert aussi de démonstration d'utilisation de Fritzing pour des circuits simples.
Voici pour un moteur à courant continu :
Comme vous le constatez en lisant la "datasheet" (doc technique), on utilise les deux sorties 3 et 4 (juste pour que le
schéma soit lisible, ça marche de la même manière pour 1 et 2. Chacune de ces sorties "de puissance" (tension pour
les moteurs) est contrôlée par une entrée "logique" (tension pour les signaux) qui est connectée à la carte
programmable Arduino.
Mais vous remarquerez qu'une troisième connexion est utilisée entre la carte et le contrôleur de moteur, reliée à
l'entrée "Enable 3,4" qui correspond à l'activation des sorties, indépendamment des entrées. Cette activation peut
changer très vite, et pour un moteur à courant continu elle va permettre de faire varier la vitesse (merci à Christophe
pour ce complément).
Voici pour un moteur pas à pas :
Code source
Pour le moteur à courant continu
#define PILOT_A 11 // entrée A du pont en H #define PILOT_B 12 // entrée B du pont en H #define
PILOT_PWM 6 // entrée "Enable" du pont en H void direction (byte dir) { if (dir == 0) { digitalWrite (PILOT_A,
HIGH); digitalWrite (PILOT_B, LOW); } else { digitalWrite (PILOT_A, LOW); digitalWrite (PILOT_B, HIGH);
Copyright © PoBot
Page 3/5
Contrôleur "pont en H" pour moteurs électriques
} } void setup() { pinMode(PILOT_A, OUTPUT); pinMode(PILOT_B, OUTPUT); pinMode(PILOT_PWM,
OUTPUT); direction(0); } void loop() {
int valeur = analogRead(0);
analogWrite(PILOT_PWM,
analogRead(0)*2); }
Pour le moteur pas à pas
/** * Controle d'un moteur pas à pas avec un L293D sur protoshield * (montage classique) * * (c) Julien Holtzer et
Frédéric Rallo / Pobot 2012 */ void setup() { Serial.begin(9600); // les déclarations des 4 pattes de controle des
bobines pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); pinMode(7,OUTPUT); // la patte
d'enable pinMode(12,OUTPUT); analogWrite(12,250); } int TEMPS = 2000; void loop() { Serial.println(".."); //
A off, B haut digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,HIGH);
delay(TEMPS); // A haut, B off digitalWrite(4,LOW); digitalWrite(5,HIGH); digitalWrite(6,LOW);
digitalWrite(7,LOW); delay(TEMPS); // A off, B bas digitalWrite(4,LOW); digitalWrite(5,LOW);
digitalWrite(6,HIGH); digitalWrite(7,LOW); delay(TEMPS); // A bas, B off digitalWrite(4,HIGH);
digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW); delay(TEMPS); }
Notre expérience en atelier
Copyright © PoBot
Page 4/5
Contrôleur "pont en H" pour moteurs électriques
Copyright © PoBot
Page 5/5
Téléchargement