- Moteur pas à pas
- Rotation d'un moteur pas à pas AVEC ARM7-LPC2148
- Composants requis
- Moteur pas à pas (28BYJ-48)
- Pilote de moteur pas à pas ULN2003
- Schéma
- Programmation ARM7-LPC2148 pour moteur pas à pas
Dans le monde de l'automatisation d'aujourd'hui, le moteur pas à pas et le servomoteur sont les deux moteurs les plus couramment utilisés dans les systèmes embarqués. Les deux sont utilisés dans diverses machines d'automatisation comme les bras robotiques, les machines CNC, les caméras, etc. Dans ce tutoriel, nous verrons comment interfacer le moteur pas à pas avec ARM7-LPC2148 et comment en contrôler la vitesse. Si vous êtes nouveau sur ARM7, commencez par vous renseigner sur ARM7-LPC2148 et ses outils de programmation.
Moteur pas à pas
Le moteur pas à pas est un moteur à courant continu sans balais, qui peut être tourné dans de petits angles, ces angles sont appelés étapes. Nous pouvons faire tourner le moteur pas à pas pas à pas en donnant des impulsions numériques à ses broches. Les moteurs pas à pas sont peu coûteux et ont une conception robuste. La vitesse du moteur peut être contrôlée en changeant la fréquence des impulsions numériques.
Il existe deux types de moteurs pas à pas disponibles en fonction du type d'enroulement du stator: UNIPOLAR et BIPOLAIRE. Ici, nous utilisons le moteur pas à pas UNIPOLAR qui est le moteur pas à pas le plus couramment utilisé . Pour faire tourner le moteur pas à pas, nous devons alimenter les bobines du moteur pas à pas dans une séquence. Sur la base de l'opération de rotation, ils sont classés en deux modes:
- Mode pas à pas complet: (séquence en 4 étapes)
- Monophasé sur pas à pas (WAVE STEPPING)
- Deux phases sur pas
- Mode demi-pas (séquence de 8 pas)
Pour en savoir plus sur le moteur pas à pas et son fonctionnement, suivez le lien.
Rotation d'un moteur pas à pas AVEC ARM7-LPC2148
Ici, nous utiliserons le mode FULL STEP: ONE PHASE ON ou WAVE STEPPING pour faire tourner le moteur pas à pas avec ARM7-LPC2148
Dans cette méthode, nous n'activerons qu'une seule bobine (une broche de LPC2148) à la fois. C'est-à-dire que si la première bobine A est excitée pendant un petit moment, l'arbre changera de position, puis la bobine B sera excitée pendant le même temps et l'arbre changera à nouveau de position. De même, la bobine C puis la bobine D sont excitées pour déplacer l'arbre plus loin. Cela permet à l'arbre du moteur pas à pas de tourner pas à pas en alimentant une bobine à la fois.
Par cette méthode, nous faisons tourner l'arbre étape par étape en excitant la bobine dans une séquence. C'est ce qu'on appelle des séquences en quatre étapes car cela prend quatre étapes.
Vous pouvez faire tourner le moteur pas à pas en utilisant la méthode HALF STEP (méthode à 8 séquences) selon les valeurs données ci-dessous.
Étape |
Bobine A |
Bobine B |
Bobine C |
Bobine D |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
3 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
sept |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
Composants requis
Matériel:
- ARM7-LPC2148
- CI pilote de moteur ULN2003
- LED - 4
- MOTEUR PAS À PAS (28BYJ-48)
- PLANCHE À PAIN
- CONNEXION DES FILS
Logiciel:
- Keil uVision5
- Outil magique Flasic
Moteur pas à pas (28BYJ-48)
Le moteur pas à pas 28BYJ-48 est déjà montré dans l'image ci-dessus. C'est un moteur pas à pas unipolaire qui nécessite une alimentation de 5V. Le moteur a un arrangement unipolaire à 4 bobines et chaque bobine est évaluée à + 5V, il est donc relativement facile à contrôler avec n'importe quel microcontrôleur comme Arduino, Raspberry Pi, STM32, ARM, etc.
Mais nous avons besoin d'un circuit intégré de commande de moteur comme ULN2003 pour le piloter, car les moteurs pas à pas consomment un courant élevé et peuvent endommager les microcontrôleurs.
Les spécifications du 28BYJ-48 sont fournies dans la fiche technique ci-dessous:
Vérifiez également l'interfaçage avec le moteur pas à pas avec d'autres microcontrôleurs:
- Interfaçage du moteur pas à pas avec Arduino Uno
- Contrôle du moteur pas à pas avec Raspberry Pi
- Interfaçage du moteur pas à pas avec le microcontrôleur 8051
- Interfaçage du moteur pas à pas avec le microcontrôleur PIC
- Interfaçage du moteur pas à pas avec le MSP430G2
Le moteur pas à pas peut également être contrôlé sans microcontrôleur, voir ce circuit de pilote de moteur pas à pas.
Pilote de moteur pas à pas ULN2003
La plupart des moteurs pas à pas ne fonctionneront qu'avec l'aide d'un module de pilotage. En effet, le module contrôleur (dans notre cas LPC2148) ne sera pas en mesure de fournir suffisamment de courant à partir de ses broches d'E / S pour que le moteur fonctionne. Nous allons donc utiliser un module externe comme le module ULN2003 comme pilote de moteur pas à pas.
Dans ce projet, nous utiliserons le CI de pilote de moteur ULN2003. Le diagramme des broches de l'IC est donné ci-dessous:
Les broches (IN1 à IN7) sont des broches d'entrée pour connecter la sortie du microcontrôleur et OUT1 à OUT7 sont des broches de sortie correspondantes pour connecter l'entrée de moteurs pas à pas. COM reçoit une tension de source positive requise pour les périphériques de sortie et pour la source d'entrée d'alimentation externe.
Schéma
Le schéma de circuit pour l' interfaçage du moteur pas à pas avec ARM-7 LPC2148 est donné ci-dessous
ARM7-LPC2148 avec CI pilote de moteur ULN2003
Les broches GPIO de LPC2148 (P0.7 à P0.10) sont considérées comme des broches de sortie connectées aux broches d'entrée (IN1-IN4) du CI ULN2003.
LPC2148 broches |
ÉPINGLES DU CI ULN2003 |
P0.7 |
EN 1 |
P0.8 |
EN 2 |
P0.9 |
IN3 |
P.10 |
IN4 |
5V |
COM |
GND |
GND |
Connexions du CI ULN2003 avec moteur pas à pas (28BYJ-48)
Les broches de sortie (OUT1-OUT4) du CI ULN2003 sont connectées aux broches des moteurs pas à pas (bleu, rose, jaune et orange).
PINS IC ULN2003 |
BROCHES DE MOTEUR PAS À PAS |
OUT1 |
BLEU |
OUT2 |
ROSE |
OUT3 |
JAUNE |
OUT4 |
ORANGE |
COM |
ROUGE (+ 5V) |
LED avec IN1 à IN4 de ULN2003
Quatre broches d'anode de LED (LED1, LED2, LED4, LED 4) sont connectées aux broches IN1, IN2, IN3 et IN4 de ULN2003 respectivement et la cathode des LED est connectée à GND qui doit indiquer les impulsions du LPC2148. Nous pouvons noter le schéma des impulsions fournies. Le motif est montré dans la vidéo de démonstration jointe à la fin.
Programmation ARM7-LPC2148 pour moteur pas à pas
Pour programmer ARM7-LPC2148, nous avons besoin de l'outil keil uVision & Flash Magic. Nous utilisons un câble USB pour programmer la clé ARM7 via le port micro USB. Nous écrivons du code en utilisant Keil et créons un fichier hexadécimal, puis le fichier HEX est flashé sur le bâton ARM7 à l'aide de Flash Magic. Pour en savoir plus sur l'installation de keil uVision et Flash Magic et comment les utiliser, suivez le lien Premiers pas avec le microcontrôleur ARM7 LPC2148 et programmez-le à l'aide de Keil uVision.
Le code complet pour contrôler le moteur pas à pas avec ARM 7 est donné à la fin de ce tutoriel, nous en expliquons ici quelques parties.
1. Pour utiliser la méthode FULL STEP-ONE PHASE ON, nous devons inclure la commande ci-dessous. Nous utilisons donc la ligne suivante dans le programme
caractère non signé dans le sens des aiguilles d'une montre = {0x1,0x2,0x4,0x8}; // Commandes pour rotation horaire unsigned char anti-horaire = {0x8,0x4,0x2,0x1}; // Commandes pour la rotation anti-horaire
2. Les lignes suivantes sont utilisées pour initialiser les broches PORT0 en sortie et les régler sur LOW
PINSEL0 = 0x00000000; // Définition des broches PORT0 IO0DIR - = 0x00000780; // Définition des broches P0.7, P0.8, P0.9, P0.10 comme OUTPUT IO0CLR = 0x00000780; // Réglage de la SORTIE broches P0.7, P0.8, P0.9, P0.10 comme BAS
3. Réglez les broches PORT (P0.7 à P0.10) HIGH selon les commandes dans le sens horaire en utilisant cette boucle for avec retard
pour (int j = 0; j
Idem pour Anti-Clock Wise
pour (int z = 0; z
4. Changez le temps de retard pour changer la vitesse de rotation du moteur pas à pas
retard (0x10000); // Modifiez cette valeur pour changer la vitesse de rotation (0x10000) -Full speed (0x50000) -Gets slow (0x90000) -Gets slow than previous. Ainsi, en augmentant le délai, nous réduisons la vitesse de rotation.
5. Le nombre d'étapes pour une rotation complète peut être modifié avec le code ci-dessous
int no_of_steps = 550; // Modifie cette valeur pour le nombre d'étapes de rotation requis (550 donne une rotation complète)
Pour mon moteur pas à pas, j'ai 550 pas pour une rotation complète et 225 pour une demi-rotation. Alors changez-le selon vos besoins.
6. Cette fonction est utilisée pour créer un temps de retard.
void delay (unsigned int value) // Fonction pour générer un délai { unsigned int z; pour (z = 0; z
Le code complet avec la vidéo de démonstration est donné ci-dessous.