Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Autres constituants d’un robot > Les circuits spécialisés > Les contrôleurs de moteur > Moteur pas-à-pas 5 phases avec deux ponts L298

Moteur pas-à-pas 5 phases avec deux ponts L298

dimanche 22 avril 2012, par Julien H.

Nous avons récupéré des moteurs pas à pas à 5 fils. Voici un montage permettant de le contrôler avec deux circuits intégrés L298 (double demi-pont en H).

A première vue, rien de bien sorcier, car généralement un pas à pas à 5 fils est un moteur unipolaire double phases, avec un fil comme point milieu commun aux deux bobines, et un fil par extrémité de bobine.

Mais ici le cas est plus particulier, car il s’agit en fait de moteurs à 5 phases (soit 5 bobines). Les bobines sont connectées les unes aux autres en étoile. Il n’y a pas de point milieu.

La solution choisie pour ce montage de test consiste à utiliser 5 quarts de pont en H (un L298 complet et un second qui sera utilisé pour la cinquième phase).

La séquence est différente de ce qu’on connaît avec un bipolaire biphase à 4 ou 8 fils : il y a 10 pas différents.

On identifie les bobines avec un ohmmètre : en fixant un des fils comme point de départ, on dissocie les 4 autres en deux paires de fils ayant la même résistance avec le fil de point de départ. Puis on identifie dans la seconde paire quel fil est "proche" de quel autre dans la première paire. Plus la résistance est faible, plus les bobines sont proches.

Comme la structure de bobinage du moteur pas à pas à 5 phases que nous avons récupéré est en étoile, chaque bobine est proche de deux autres et éloignée de deux autres. Une fois le circuit de bobines reconstitué, on fixe l’ordre et on donne un numéro à chaque fil.



Le montage

Contrairement aux contrôleurs de plus faible puissance comme le L293D, le circuit intégré L298 n’est pas directement utilisable, et il faut donc observer quelques règles importantes :

 ajouter des diodes de roue libre (rapides) à chaque sortie moteur
 ajouter une résistance 1W sur les pattes de contrôle du courant (les sucres blancs sur la photo)

Ces derniers sont obligatoires pour faire fonctionner le moteur. On peut penser aux diodes de roue libre (car après tout il n’y a que sur la version D du L293 qu’elles sont intégrées) mais j’avais oublié les résistances, n’ayant pas de contrôle de courant à faire et pensant que si la datasheet du composant les mentionnait, c’était uniquement dans le cas d’une utilisation avec un contrôleur intelligent comme le L297.

Le code

Voici un code Arduino fonctionnant très bien. On utilise la patte 13 pour activer l’entrée ENABLE 1 ou 2 des demi-ponts des contrôleurs L298. Les sorties 2 à 6 sont utilisées pour piloter les fils 1 à 5 du moteur.

int tspeed = 1;

void setup()
{
   pinMode(2,OUTPUT);
   pinMode(3,OUTPUT);
   pinMode(4,OUTPUT);
   pinMode(5,OUTPUT);
   pinMode(6,OUTPUT);
   
   pinMode(13,OUTPUT);
   
}


void loop()
{
  digitalWrite(13,HIGH);
  
  // pas 1
  digitalWrite(2,HIGH);
  digitalWrite(3,LOW);
  digitalWrite(4,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(6,LOW);
  delay(tspeed);
  // pas 2
  digitalWrite(2,HIGH);
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  digitalWrite(5,HIGH);
  digitalWrite(6,LOW);
  delay(tspeed);
  // pas 3
  digitalWrite(2,HIGH);
  digitalWrite(3,HIGH);
  digitalWrite(4,LOW);
  digitalWrite(5,HIGH);
  digitalWrite(6,LOW);
  delay(tspeed);
  // pas 4
  digitalWrite(2,LOW);
  digitalWrite(3,HIGH);
  digitalWrite(4,LOW);
  digitalWrite(5,HIGH);
  digitalWrite(6,LOW);
  delay(tspeed);
  // pas 5
  digitalWrite(2,LOW);
  digitalWrite(3,HIGH);
  digitalWrite(4,LOW);
  digitalWrite(5,HIGH);
  digitalWrite(6,HIGH);
  delay(tspeed);
  // pas 6
  digitalWrite(2,LOW);
  digitalWrite(3,HIGH);
  digitalWrite(4,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,HIGH);
  delay(tspeed);
  // pas 7
  digitalWrite(2,LOW);
  digitalWrite(3,HIGH);
  digitalWrite(4,HIGH);
  digitalWrite(5,LOW);
  digitalWrite(6,HIGH);
  delay(tspeed);
  // pas 8
  digitalWrite(2,LOW);
  digitalWrite(3,LOW);
  digitalWrite(4,HIGH);
  digitalWrite(5,LOW);
  digitalWrite(6,HIGH);
  delay(tspeed);
  // pas 9
  digitalWrite(2,HIGH);
  digitalWrite(3,LOW);
  digitalWrite(4,HIGH);
  digitalWrite(5,LOW);
  digitalWrite(6,HIGH);
  delay(tspeed);
  // pas 10
  digitalWrite(2,HIGH);
  digitalWrite(3,LOW);
  digitalWrite(4,HIGH);
  digitalWrite(5,LOW);
  digitalWrite(6,LOW);
  delay(tspeed);
 
}

Rien de bien organisé mais pour tester, c’est bien.

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.