Team ADN  

Pour le fun, tout simplement 😎
Team ADN   Parutions   Machines  Electronique  ► Module uln2003
Connectez vous pour plus de contenu :
Pas en service pour le moment...
Connectez vous :

Parutions électronique appliquée

Parutions développement web

Module ULN2003

Par Steph, publié le - 1315 vues

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 :

 

 

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 :

  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.

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.

Connecteur de raccordement :

 

Carte Arduino

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

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 :

 

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.

 

 

Copyright © 2018    
Steph Team ADN