Composants utilisés
- 1 Moteur pas à pas réducté 28byj-48 avec son driver ULN2003
- 1 Carte Arduino Uno
- 1 Lot de câbles de connexion Mâle Femelle
- 1 alimentation 5V DC
Principe de fonctionnement
Le moteur pas à pas à 4 phases réducté (1:64) peut être positionné sur une valeur angulaire précise.
Il possède un couple important permettant de l'utiliser dans la plupart des petits montages. Son driver ULN2003 (réseau de transistors Darlington) lui apporte la puissance que la carte Arduino ne peut pas fournir directement.
Applications
Petits robots, mécanismes divers, modélisme ferroviaire, jouets, machines, etc...
Caractéristiques
- Ce petit moteur très économique permet de motoriser précisément vos montages. Il fonctionne en 5V.
- Le moteur comporte 64 pas par tour, soit une résolution angulaire de 5.625 °
- Le couple de rotation est de 34 mN.m (~340 g.cm)
- Des diodes de visualisation permettent de contrôler le bon fonctionnement des 4 phases (A, B, C, D).
- Le driver ULN2003 fonctionne avec des moteurs unipolaires (avec 5 ou 6 fils) mais pas avec les moteurs bipolaires (4 fils) qui nécessitent un pont en H pour être pilotés.
Câblage
Le moteur se branche sur le driver ULN2003 avec son fil (fourni), muni d'un connecteur à 5 broches (avec détrompeur de sens de branchement).
- Rouge = Commun
- Orange = Pin1
- Jaune = Pin2
- Pourpre = Pin3
- Bleu = Pin4
Le driver ULN2003 est relié
- à une alimentation de 5V DC pour le moteur (l'ULN supporte jusqu'à 30V mais pas les 4 LEDS de la carte ni le moteur DC) : +V et GND.
- à la carte Arduino sur 4 pins digitales (pin 8- pin 11), configurées en sorties, avec 4 fils Dupont mâle / femelle.
In1 -> pin 8
In2 -> pin 9
In3 -> pin 10
In4 -> pin 11 - Relier les masses de l'Arduino et de celle de l'alimentation séparée du moteur.
La position du jumper dépend de la source de tension utilisée, en position 3-4 avec une alimentation externe.
Utilisation du driver avec d'autres moteurs
Le driver peut s'utiliser avec d'autres moteurs unipolaires.
Dans ce cas, repérer les 2 bobines avec un Ohmmètre en mesurant la résistance entre les 5 fils pris 2 à 2.
Le fil qui avec les autres présente la résistance maximale est le commun, c'est la broche 1 du connecteur.
Dimensions mécaniques
- Le moteur a pour diamètre 28 mm, épaisseur 19.3 mm, il entraîne un axe de 5 mm de diamètre avec méplat de 20.9 mm, de 8.2 mm de long.
Il se fixe par deux trous (2 mm) diamétralement opposés espacés de 35 mm. - Le PCB rectangulaire de 31.7 x 3.5.0 mm se fixe par 4 vis aux coins.
Programmation
Le code pour Arduino, fait tourner le moteur 1 tour et marque une pause, affiche le temps de rotation par tour.
- Code: Tout sélectionner
//**************************************************************
//Commande de moteur pas-à-pas unipolaire 4 fils
//tiptopboards.com 05/12/2013
// Driver ULN2003 et moteur réducté au 1:64
//
//**************************************************************
//Inclure la librairie stepper.h
#include <Stepper.h>
#define STEPS 100
//Créer une instance de la classe stepper
//Le moteur (fils 1 2 3 4) est branché sur les sorties 8 9 10 11 de l'Arduino (et sur GND, +V)
Stepper small_stepper(STEPS, 8, 10, 9, 11); // Sens horaire
//Stepper small_stepper(STEPS, 11, 10, 9, 8); // Sens anti-horaire en inversant 8 et 11 (si on préfère)
int Steps2Take = 0; //Nombre de pas de rotation demandé au moteur
long temps =0; //Durée de rotation pour un tour
//************************************************************
// Pour un moteur de ce type : http://tiptopboards.com/151-moteur-pas-%C3%A0-pas-r%C3%A9duct%C3%A9-de-5v-4-fils-driver-.html
// 64 pas par tour, 4 phases, angle de 5.625° selon les spécifications du moteur
// Démultiplication 1:64 pour ce moteur réducté mécaniquement
// 360° / 5.625° * 64 = 4096 angles avec la démultiplication
// 360° / 5.625° * 64 * 4 bobines / 2 bipolaire = 2048 step / tour
void setup()
{
Serial.begin(9600); // 9600 bps
Serial.println("Test de moteur pas a pas");
}
void loop()
{
Serial.println("Moteur en marche ");
//Faire tourner le moteur
small_stepper.setSpeed(10); //Vitesse de 300 (max) réduire ce chiffre pour un mouvement plus lent
//100 permet d'éavoir un couple élevé >300 le moteur vibre sans tourner
Steps2Take = 2048; // Une rotation complète avec 2048 pas (1 tour environ 4.5sec)
//Pour tourner à l'envers de 6 fois 1/30eme de tour, simplement multiplier Steps2Take par 6/30 et mettre un moins pour inverser le sens
// Exemple Steps2Take = -6*2048/30;
temps = millis();
small_stepper.step(Steps2Take); //Ca tourne
temps = millis()- temps ; //Chronomètre un rour complet 6.236 sec par tour à vitesse 200
Serial.println(temps); //Affiche le temps (en ms) pour un tour complet
delay(2000); //pause
}
Réglage de la vitesse
Pour ce modèle de moteur :28byj-48
- Le couple décroît avec la vitesse de rotation. Au delà d'une vitesse = 300, le moteur ne tourne plus mais vibre : décrochage du pas à pas.
- Avec vitesse = 200, un tour se fait en 6.2 sec.
- Avec vitesse = 100, un tour se fait en 12.4 sec.
- Une vitesse très lente =10 permet de visualiser avec les 4 leds la rotation des phases (effet de chenillard).
Références
Datasheet du circuit intégré ULN2003 Réseau de 7 transistors Darlington avec diode
Exemple d'utilisation : table XY
http://letsmakerobots.com/node/31381