CNC Amateurs
Vers le flux RSS
Vous êtes ici : Accueil > L'électronique des CNC
Retour vers le haut !

Module ULN2003


Par Steph, publié le

On trouve chez plusieurs marchands du net ce petit kit permettant de piloter un moteur pas-à-pas. Le mien provient de chez un célèbre vendeur Chinois, kit obtenu pour moins de 2€ livré en France ☺.

Présentation

On trouve chez plusieurs marchands du net ce petit kit permettant de piloter un moteur pas-à-pas. Le mien provient de chez un célèbre vendeur Chinois, kit obtenu pour moins de 2€ livré en France ☺.

Le kit comprend le matériel suivant :

  • Une platine pilote ULN2003 de 35mm x 32mm x 10mm de haut.
  • Un moteur pas-à-pas 28BYJ-48, 5 Volts DC avec ses fils de raccordement (24cm).

 

 

La carte pilote, le moteur et un clone Arduino

 

Il faudra bien entendu une carte Arduino pour faire fonctionner le moteur pas-à-pas et son pilote. Peu importe ici, le type de carte Arduino utilisée.

Par ailleurs il est préférable d'utiliser une alimentation externe 5 V continu si on veut garder son Arduino en bonne santé... En effet dès que l'on demande un peu de puissance en sortie, il est préférable de ne pas utiliser le 5 V de l'Arduino ou du port USB du PC.

 

Description

Carte pilote

La carte pilote utilise un circuit ULN2003 qui regroupe 7 transistors "Darlington" pouvant délivrer jusqu'a 500 mA. Voir le schéma ci-dessous pour la structure d'un transistor "Darlington".

La tension d'alimentation max est de 12 V. Mais ici on se limitera à 5 V qui est la tension de service du moteur pas-à-pas livré.

La carte comporte 3 connecteurs :

  • Alimentation, 4 broches :
  1. Masse du montage.
  2. +5 V alimentant le circuit ULN2003.
  3. Reliée à la broche 2.
  4. +5 V alimentant les leds et le moteur.
  • Entrées, 4 broches reliant la carte pilote aux GPIO de la carte Arduino.
  • Moteur, 5 broches. Ce connecteur est détrompé et on ne peut donc inverser le branchement du moteur.

4 leds sont présentes sur la carte pilote et permettent de visualiser et donc contrôler le bon fonctionnement des 4 phases (A, B, C, D), du moteur pas-à-pas.

Ses dimensions sont très réduites : 35mm x 32mm pour 10mm de hauteur.

 

Moteur pas-à-pas

Le moteur pas-à-pas est un modèle 25BYJ-48.

  • Moteur unipolaire à branchement 5 fils.
  • Tension d'alimentation 5 V continu.
  • Résistance interne 50 Ω.
  • Intensité nominale : 25 mA.
  • Fréquence : 100 Hz.
  • Couple de rotation 34 mN.m.
  • 64 pas par tour.
  • Résolution de 5,625° (360° / 64).
  • Niveau sonore 40 dB.
  • Entraxe de fixation: 35mm.
  • Axe : Ø 5mm avec double méplat (épaisseur 3mm).
  • Longueur de l'axe: 8mm

Connecteur de raccordement :

  • Commun : Rouge (Pôle positif de l'alimentation).
  • Broche 1 : Orange (Led D).
  • Broche 2 : Jaune (Led C).
  • Broche 3 : Rose (Led B).
  • Broche 4 : Bleu (Led A).

 

Carte Arduino

La carte Arduino sera câblée de la manière suivante :

  • Broche 8 de l'Arduino relié à la broche 1 de la carte pilote ULN2003. 
  • Broche 9 de l'Arduino relié à la broche 2 de la carte pilote ULN2003.
  • Broche 10 de l'Arduino relié à la broche 3 de la carte pilote ULN2003.
  • Broche 11 de l'Arduino relié à la broche 4 de la carte pilote ULN2003.

Bien sur on pourra utiliser d'autres broches (Digitales) des GPIO de l'Arduino mais dans ce cas, attention à modifier cela dans le code source...

 

Alimentation 5 V

N'importe quelle alimentation 5 V courant continu 500 mA fera l'affaire.

 

Principe de fonctionnement

Le moteur pas-à-pas à 4 phases démultiplié dans un rapport de 1:64 (Réduction mécanique), permet de se positionner sur la valeur angulaire de son choix et ce manière trés précise. 

Le couple relativement important permet une utilisation dans divers montages de petite taille. La carte pilote à base d'ULN2003 sert d'interface de puissance ce que les GPIO de l'Arduino ne peuvent pas fournir sans risque.

Ce montage pourra être utilisé dans les exemples suivants :

  • Table x, Y de petite taille.
  • Toute sortes d'automatismes.
  • ...

 

Séquence de commutation

Couleur des fils Direction
1 2 3 4 5 6 7 8
Bleu (Fil N° 1)          
Rose (Fil N° 2)          
jaune (Fil N° 3)          
Orange (Fil N° 4)          

 

Les schémas de raccordement

 

 

Schéma de la carte pilote à ULN2003

 

 

 

Câblage de l'ensemble

 

Le code source Arduino

 

// Inclusion de la librairie "stepper.h" pour les moteurs pas-à-pas.
#include <Stepper.h>

// Déclaration de la constante définissant le nombre de pas.
#define PAS 100

// Création d'une instance de la classe stepper.
  
// On utilise les sorties digitales 8, 9, 10 et 11 
// de l'Arduino pour connecter les fils 1, 2, 3 et 4 de la carte pilote.
// De cette manière, on tourne dans le sens "horaire". 
// Pour changer de sens on inverse les sorties 8 et 11.
Stepper small_stepper(PAS, 8, 10, 9, 11);

int  nbPas = 0;		// Initialisation du nombre de pas demandé
long temps = 0;		// Initialisation de la durée d'un tour
  
// Pour ce moteur :
  // 64 pas par tour.
  // 4 phases donc un angle de 5.625° (360° / 64).
  // Démultiplication de 1:64 (Réducteur mécanique intégré).
  // 64 * 64 = 4096 angles en prenant en compte la réduction mécanique.
  // 360° / 5.625° * 64  * 4 bobines / 2 bipolaire = 2048 step / tour.

void setup() {                
	Serial.begin(9600);     	// Transmission à 9600 bps
	Serial.println("Moteur pas à pas");  
}

void loop() {
	Serial.println("Moteur en cours de fonctionnement");  
	
	// Faire tourner le moteur en ne dépassant pas 300. 
	// Avec 100 le couple est élevé. 
	// Au dessus de 300, le moteur vibre et ne tourne plus...
	// Plus le chiffre est bas, plus le moteur tourne lentement.
	small_stepper.setSpeed(10);
  
	// Une rotation complète avec 1024 pas (1 tour environ 9 secondes)
	nbPas  = 2048;  
  
	// Pour tourner dans le sens inverse de 10 fois 1/20ème de tour,
	// il faut multiplier "nbPas" par 10/20ème et ajouter le 
    // signe "moins" devant pour inverser le sens.
    // Cela donne : nbPas  = -10*2048/20;
	temps = millis();
	
	// Ca tourne.
	small_stepper.step(nbPas); 
	// Chronomètrage d'un tour complet 6.236 s à vitesse 200.	
	temps =  millis() - temps ; 
	// Affiche le temps (en ms) pour un tour complet.	
	Serial.println(temps);
	// On effectue une pause de 5 secondes (5000 ms).	
	delay(5000);				
}

 

 

Références techniques

 

  1. Datasheet du moteur 28BYJ-48 5 V.
  2. Datasheet du ciruit ULN2003.
  3. Pour aller plus loin avec les moteurs pas-à-pas.

 


Publié par Steph le : 23/11/2017 & mis à jour le : 03/01/2018
Mots-clefs : MODULE, ULN2003, MOTEUR, PAP

Commenter l'article


ACCUEIL - LE FORUM - NOUS CONTACTER - FLUX RSS - HAUT de PAGE
6037 visiteurs différents ont consulté CNC Amateurs
Il y a actuellement 1 visiteur(s) en ligne.
CNC Amateurs a été consulté 19283 fois au total