Voici un petit guide sur la façon de contrôler un moteur pas à pas au moyen d'un Arduino et d'un circuit intégré L293D.
1° Le moteur: bipolaire ou unipolaire?
Il existe deux types de moteurs pas à pas: ceux qui sont
bipolaires sont munis de 4 fils, et ceux qui sont
unipolaires comportent 5 ou 6 fils. Les deux types de moteur peuvent être contrôlés sans problème avec un L293D.
2° Identification des fils du moteur
Les moteurs
bipolaires sont constitués de deux bobinages distincts; au moyen d'un multimètre, il est facile de déterminer quels fils partagent le même bobinage. Si la résistance entre deux fils est faible (quelques ohms, ou quelques dizaines de ohms), c'est qu'ils partagent le même bobinage. Si les deux fils font partie de bobinages différents, la résistance entre les deux fils est infinie.
Par exemple, j'ai un moteur bipolaire Mitsumi muni de 4 fils: jaune, orange, brun et noir. La résistance entre le fil jaune et le fil orange est de 31 Ω, et la résistance entre le fil brun et le fil noir est de 31 Ω également. La résistance est infinie pour toutes les autres combinaisons de fils (jaune-noir, jaune-brun, orange-noir, orange-brun). Je peux en déduire que le premier bobinage est alimenté par le fil jaune et le fil orange, et que le deuxième bobinage est alimenté par le fil brun et le fil noir.
Pour les moteurs
unipolaires, c'est un peu plus compliqué: chacun des deux bobinages est muni de 3 fils: un à chaque extrémité, et un au centre. De plus, il est fréquent que le centre des deux bobines soit branché au même fil.
Par exemple: J'ai un moteur de marque Brother qui comporte 6 fils. La résistance entre le fil 1 et le fil 3 est de 70 Ω, la résistance entre le fil 1 et le fil 5 est de 140 Ω: ces trois fils partagent le même bobinage et le fil 3 est au centre. Un lien similaire existe entre les fils 2, 4 et 6.
Autre exemple: j'ai un moteur Mitsumi muni de 5 fils: blanc, jaune, noir, rouge, brun. La résistance est de 80 Ω entre le fil noir et n'importe quel autre fil, alors qu'elle est de 160 Ω pour toutes les autres paires de fil. J'en déduis que le fil noir est relié au centre des deux bobinages. Mais comment savoir quel fil (parmi jaune, rouge et brun) partage le même bobinage que le fil blanc? Il faudra faire des essais: si on branche les fils de façon incorrecte, le moteur ne tournera pas aussi bien qu'il le devrait (il s'agira alors de permuter les fils jusqu'à ce que le moteur fonctionne correctement).
3° Connections du L293
Le circuit intégré L293D est muni de 16 pins, qui seront branchées de la façon indiquée sur le dessin ci-dessous.
- La pin 16 est l'alimentation du L293D, la pin 1 est le "chip enable" du bobinage 1 et la pin 9 est le "chip enable" du moteur 2. Vous branchez tout ça à la sortie 5 V de l'Arduino.
- Si vous désirez utiliser les exemples fournis avec le logiciel Arduino sans trop de modifications, vous branchez les pins 2, 7, 10 et 15 aux sorties 8, 9, 10, 11 de l'Arduino (vous pouvez utiliser d'autres sorties de l'Arduino à la place: il s'agira de modifier le sketch en conséquence).
- Les pins 3 et 6 sont branchées aux deux extrémités d'un même bobinage du moteur. Les pins 11 et 14 sont branchées aux deux extrémités de l'autre bobinage. Si vous moteur est unipolaire, vous branchez le centre des deux bobinages à la pin 8 du L293D.
- Pour éviter d'endommager votre Arduino, votre moteur devrait être alimenté au moyen d'une alimentation externe dont la borne positive est reliée à la pin 8 .
- Les 4 pins "GND" doivent être reliées ensemble (ainsi qu'au GND de l'Arduino et à la borne négative de l'alimentation externe du moteur).
4° Programmation de l'Arduino
Grâce à la librairie "stepper", la programmation de l'Arduino est triviale. Dans le menu Fichier → Exemples → Stepper, vous pouvez choisir "stepper_oneRevolution": votre moteur fera un tour complet dans un sens, puis un tour complet dans l'autre sens (pour ce faire, il faut régler la variable "stepsPerRevolution" à la bonne valeur (qui est de 48 pour la majorité des moteurs que je possède). Vous pouvez aussi utiliser l'exemple "stepper_oneStepAtATime" et compter le nombre de pas effectués par votre moteur pendant un tour complet.
5° Et sur un MSP430 Launchpad?
Pour contrôler un moteur pas à pas avec le MSP430, un L293 et le logiciel Energia, vous suivez exactement les mêmes instuctions qu'avec l'Arduino, sauf que les sorties 8, 9, 10 et 11 de l'Arduino sont remplacées par les sorties P2.0, P2.1, P2.2 et P2.3 du Launchpad. Évidemment la sortie 5 V de l'Arduino est remplacée par la sortie VCC du Launchpad, et le GND de l'Arduino est remplacé par le GND du Launchpad. Il ne vous reste plus qu'à essayer les exemples fournis dans Energia: File → Examples → Stepper.
À lire aussi:
Contrôle d'un moteur pas à pas avec un ULN2003
Yves Pelletier (Twitter:
@ElectroAmateur)