Sunteți pe pagina 1din 12

Projet électronique : Commande d’un moteur pas à pas 4 phases avec

Arduino

Objectifs du projet électronique


1. Comprendre le principe de fonctionnement d’un moteur pas à pas
2. Comprendre le fonctionnement du circuit ULN2003
3. Savoir implémenter la commande d’un moteur pas à pas avec le microcontrôleur
4. Savoir modifié le sens et la vitesse d’un moteur pas à pas
5. Autres astuces de programmation

Principe de fonctionnement
Le projet consiste à la commande d’un moteur pas à pas 4 phases en mode demi-pas en
utilisant le driver ULN2003 pour booster le courant dans les phases du moteur. La carte
Arduino sert à générer les signaux de commande du moteur pas à pas (8 commandes / tour)
cadencés par une fréquence.

Les chronogrammes ci-dessous illustrent les signaux de la commande en mode demi-pas, le


changement du sens est simple ! Il suffit d’inverser la séquences des commandes [1 9 8 12 4
6 2 3 ] au lieu de [1 3 2 6 4 12 8 9].

Le circuit contient deux Led pour indiquer le sens de rotation du moteur S1 et S2 pour le
sens 1 et sens 2 de rotation. Les Led sont connectés aux pin 8 et 9 de l’Arduino.

Vous pouvez changer la vitesse de rotation du moteur en changeant le fréquence (Fre=


1/DelayMs, voir le programme). D’après le datasheet la fréquence maximale est limitée à
1000 Hz.

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr


Projet électronique : Commande d’un moteur pas à pas 4 phases avec
Arduino

Moteur pas à pas 28BYJ-48 – 5V (Datasheet)

Notions sur la commande de moteur pas à pas


unipolaire
Ce type de moteur se trouve dans un grand nombre de périphériques informatiques :
imprimantes, lecteur de disquettes ou disque dur car il s’agit du composant mécanique par
excellence pour tout ce qui demande une grande précision de positionnement. Il en existe
plusieurs modèles dont le nombre de pas par tours peut varier de quelques dizaines à
quelques centaines. C’est la raison pour laquelle nous avons choisi d’utiliser ce type de
moteur pour réaliser le positionnement de la caméra vidéo, aussi bien horizontalement que
verticalement. Lire la suite…

Fonctionnement du circuit ULN2003 (Datasheet)

Programme Arduino

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr


Projet électronique : Commande d’un moteur pas à pas 4 phases avec
Arduino

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr


Projet électronique : Commande d’un moteur pas à pas 4 phases avec
Arduino

const int DelayMs = 10; /* 1/10E-3 =100 Hz*/


const int DelayMs_Init = 10;
const int Num_Half_Step= 50; /*64*8*/;
int i= 0;

const int OUT1 = 2;


const int OUT2 = 3;
const int OUT3 = 4;
const int OUT4 = 5;

const int SENS1 = 7;


const int SENS2 = 8;

void setup() {

pinMode(OUT1, OUTPUT);
pinMode(OUT2, OUTPUT);
pinMode(OUT3, OUTPUT);
pinMode(OUT4, OUTPUT);

pinMode(SENS1, OUTPUT);
pinMode(SENS2, OUTPUT);

digitalWrite(OUT1, LOW);
digitalWrite(OUT2, LOW);
digitalWrite(OUT3, LOW);
digitalWrite(OUT4, LOW);

digitalWrite(SENS1, LOW);
digitalWrite(SENS2, LOW);

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr


Projet électronique : Commande d’un moteur pas à pas 4 phases avec
Arduino

delay(3000);

void loop() {

// Sens 1

digitalWrite(SENS1, HIGH);
digitalWrite(SENS2, LOW);

for(i=0; i<Num_Half_Step;i++)
{
// 1 - 0001
digitalWrite(OUT1, HIGH);
delay(DelayMs);

// 3 - 0011
digitalWrite(OUT1, HIGH);
digitalWrite(OUT2, HIGH);
delay(DelayMs);

// 2 - 0010
digitalWrite(OUT1, LOW);
digitalWrite(OUT2, HIGH);
delay(DelayMs);

// 6 - 0110
digitalWrite(OUT2, HIGH);
digitalWrite(OUT3, HIGH);
delay(DelayMs);

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr


Projet électronique : Commande d’un moteur pas à pas 4 phases avec
Arduino

// 4 - 0100
digitalWrite(OUT2, LOW);
digitalWrite(OUT3, HIGH);
delay(DelayMs);

// 12 - 1100
digitalWrite(OUT3, HIGH);
digitalWrite(OUT4, HIGH);
delay(DelayMs);

// 8 - 1000
digitalWrite(OUT3, LOW);
digitalWrite(OUT4, HIGH);
delay(DelayMs);

// 9 - 1001
digitalWrite(OUT1, HIGH);
digitalWrite(OUT4, HIGH);
delay(DelayMs);

digitalWrite(OUT1, LOW);
digitalWrite(OUT2, LOW);
digitalWrite(OUT3, LOW);
digitalWrite(OUT4, LOW);

delay(DelayMs_Init);
}

// Sens 2

digitalWrite(SENS1, LOW);
digitalWrite(SENS2, HIGH);

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr


Projet électronique : Commande d’un moteur pas à pas 4 phases avec
Arduino

for(i=0; i<Num_Half_Step;i++)
{

// 9 - 1001
digitalWrite(OUT1, HIGH);
digitalWrite(OUT4, HIGH);
delay(DelayMs);

// 8 - 1000
digitalWrite(OUT1, LOW);
digitalWrite(OUT4, HIGH);
delay(DelayMs);

// 12 - 1100
digitalWrite(OUT3, HIGH);
digitalWrite(OUT4, HIGH);
delay(DelayMs);

// 4 - 0100
digitalWrite(OUT4, LOW);
digitalWrite(OUT3, HIGH);
delay(DelayMs);

// 6 - 0110
digitalWrite(OUT2, HIGH);
digitalWrite(OUT3, HIGH);
delay(DelayMs);

// 2 - 0010
digitalWrite(OUT3, LOW);
digitalWrite(OUT2, HIGH);
delay(DelayMs);

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr


Projet électronique : Commande d’un moteur pas à pas 4 phases avec
Arduino

// 3 - 0011
digitalWrite(OUT1, HIGH);
digitalWrite(OUT2, HIGH);
delay(DelayMs);

// 1 - 0001
digitalWrite(OUT1, HIGH);
digitalWrite(OUT2, LOW);
delay(DelayMs);

digitalWrite(OUT1, LOW);
digitalWrite(OUT2, LOW);
digitalWrite(OUT3, LOW);
digitalWrite(OUT4, LOW);

delay(DelayMs_Init);
}

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr


Projet électronique : Commande d’un moteur pas à pas 4 phases avec
Arduino

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr


Projet électronique : Commande d’un moteur pas à pas 4 phases avec
Arduino

Photos du projet

Cours PDF:

1. Les machines électriques Electricité 2 —


Electrotechnique

2. Généralités sur les machines électriques tournantes

3. Machines électriques cours et problèmes

4. Les moteurs électriques pour mieux les piloter et les


protéger

5. La machine à courant continu

6. Généralités sur les machines électriques

7. Les moteurs électriques

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr


Projet électronique : Commande d’un moteur pas à pas 4 phases avec
Arduino

8. Machines tournantes – moteur asynchrone (MAS)

************

Un petit commentaire de vous, un Grand


encouragement pour nous

Dernières réalisations
Projet électronique #17: Sèche-mains ultrason avec Arduino
Projets Matlab & Microcontrôleur #3: Reconnaissance des couleurs avec matlab et
Arduino 1/2
Projets Matlab & Microcontrôleur #2: Commande d’un moteur à CC avec une manette
visuelle avec matlab et Arduino
Projets Matlab & Microcontrôleur #3: Reconnaissance des couleurs avec matlab et
Arduino 2/2
Projet électronique FPGA #10 : Commande factorielle d’un moteur à CC avec Arduino et
FPGA
Projet électronique FPGA #8 : Commande d’un moteur à CC – V2
Projet électronique #18: Wattmètre avec Arduino
Projet électronique : Traitement du signal avec Arduino # Lissage & Seuillage d’un signal
3/3
Projet électronique #19: Augmenter la résolution d’un Convertisseur A/N (CAN)

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr


Projet électronique : Commande d’un moteur pas à pas 4 phases avec
Arduino

Articles
Projet électronique #17: Sèche-mains ultrason avec Arduino
Projet électronique #19: Augmenter la résolution d’un Convertisseur A/N (CAN)
Projet électronique #18: Wattmètre avec Arduino
Projet électronique FPGA #10 : Commande factorielle d’un moteur à CC avec Arduino et
FPGA
Projet électronique : Traitement du signal avec Arduino # Lissage & Seuillage d’un signal
3/3
Projet électronique FPGA #8 : Commande d’un moteur à CC – V2
Projets Matlab & Microcontrôleur #3: Reconnaissance des couleurs avec matlab et Arduino
2/2

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

S-ar putea să vă placă și