- Composants requis
- Description des broches du moteur pas à pas
- Schéma de circuit pour la commande de moteur pas à pas à l'aide du module ULN2003
- Schéma de circuit pour la commande de moteur pas à pas à l'aide du module L293D:
- Contrôle du moteur pas à pas avec AVR ATmega16
Les moteurs pas à pas sont des moteurs CC sans balais qui peuvent tourner de 0 0 à 360 0 par étapes. Le moteur pas à pas utilise des signaux électroniques pour faire tourner le moteur par étapes et chaque signal fait tourner l'arbre par incrément fixe (un pas). L'ange de rotation est contrôlé en appliquant une certaine séquence de signaux. Contrairement aux servomoteurs, les moteurs pas à pas peuvent être entraînés en utilisant les broches GPIO du microcontrôleur plutôt que les broches PWM et peuvent tourner en (+360 0) et (-360 0). L'ordre des signaux décide du sens horaire et anti-horaire du moteur pas à pas. Pour contrôler la vitesse du moteur, il suffit de changer le taux des signaux de commande appliqués. Les moteurs pas à pas tournent par étapes. Il existe plusieurs modes d'étapes pour faire fonctionner le moteur pas à pas, tels que pas complet, demi-pas et micropas. Pour en savoir plus sur les bases, la théorie et le principe de fonctionnement du moteur pas à pas, suivez le lien.
Nous avons précédemment interfacé le moteur pas à pas avec de nombreux microcontrôleurs:
- Interfaçage du moteur pas à pas avec ARM7-LPC2148
- Interfaçage du moteur pas à pas avec Arduino Uno
- Interfaçage du moteur pas à pas avec le MSP430G2
- Interfaçage du moteur pas à pas avec STM32F103C8
- Interfaçage du moteur pas à pas avec le microcontrôleur PIC
- Interfaçage du moteur pas à pas avec le microcontrôleur 8051
- Interfaçage du moteur pas à pas avec Raspberry Pi
Dans ce tutoriel, nous allons interfacer le moteur pas à pas 28BYJ-48 avec le microcontrôleur Atmega16 AVR à l' aide d'Atmel Studio 7.0. Le moteur pas à pas est conçu pour fonctionner en 5V. Nous allons interfacer le moteur pas à pas avec les deux pilotes de moteur, c'est-à-dire ULN2003 et L293. Les deux seront alimentés par une alimentation 5V. Afin de simplifier l'interfaçage, nous utilisons le module de pré-construction des deux pilotes de moteur. Vous pouvez également utiliser des CI autonomes ULN2003 et L293D. Le nombre de fils et de cavaliers peut être plus important, alors soyez prudent lorsque vous connectez toutes les connexions.
Composants requis
- Moteur pas à pas (28BYJ-48)
- Module ULN2003 / pilote de moteur L293D
- CI microcontrôleur Atmega16
- Oscillateur à cristal 16Mhz
- Deux condensateurs 100nF
- Deux condensateurs 22pF
- Bouton poussoir
- Fils de cavalier
- Planche à pain
- USBASP v2.0
- Led (toute couleur)
Description des broches du moteur pas à pas
Schéma de circuit pour la commande de moteur pas à pas à l'aide du module ULN2003
Connectez tous les composants comme indiqué dans le schéma ci-dessous lors de l'utilisation de ULN2003. De même, nous l'interfacerons en utilisant L293D dans la prochaine étape. Nous utilisons PORTA d'Atmega16 pour interfacer le moteur pas à pas pour les deux pilotes de moteur. Il n'est pas nécessaire de connecter la broche 5V du moteur pas à pas. Seules les broches de la bobine sont nécessaires pour déplacer le moteur pas à pas. L'ordre des broches est très important pour entraîner le moteur pas à pas, car la mise sous tension des bobines doit l'être afin d'atteindre les étapes. Quatre entrées d'ULN2003 et quatre sorties d'ULN2003 sont utilisées dans ce projet. Les entrées seront connectées aux broches PORTA et les sorties seront connectées aux broches de signal du moteur pas à pas. Connectez également un bouton-poussoir dans la broche de réinitialisation pour réinitialiser Atmega16 chaque fois que nécessaire. Connectez Atmega16 au circuit d'oscillateur à cristal approprié. Tout le système sera alimenté par une alimentation 5V.
Voici l'image réelle du module de commande de moteur ULN2003:
Ci-dessous, nous avons donné les connexions à broches Atmega16 avec ULN2003 et L293D pour faire tourner le moteur pas à pas. L'interfaçage du moteur pas à pas avec le module L293D est expliqué dans la section suivante, rappelez-vous qu'un seul module ULN2003 ou L293D est nécessaire pour la commande du moteur pas à pas.
Les connexions des broches pour INPUT sont les suivantes:
Atmega16 |
ULN2003 |
L293D |
A0 |
IN1 (PIN1) |
IN1 (PIN2) |
A1 |
IN2 (PIN2) |
IN2 (PIN7) |
A2 |
IN3 (PIN3) |
IN3 (PIN10) |
A3 |
IN4 (PIN4) |
IN4 (PIN15) |
Les connexions des broches pour OUTPUT sont les suivantes:
Moteur pas à pas |
ULN2003 |
L293D |
Orange |
OUT1 (PIN16) |
OUT1 (PIN3) |
Jaune |
OUT2 (PIN15) |
OUT2 (PIN6) |
Rose |
OUT3 (PIN14) |
OUT3 (PIN11) |
Bleu |
OUT4 (PIN13) |
OUT4 (PIN14) |
Schéma de circuit pour la commande de moteur pas à pas à l'aide du module L293D:
Contrôle du moteur pas à pas avec AVR ATmega16
Comme déjà dit, contrairement au servomoteur, les moteurs pas à pas nécessitent des pilotes externes, par exemple un pilote de moteur ULN2003 ou L293D. Alors connectez simplement le Circuit comme ci-dessus et téléchargez le programme main.c donné à la fin.
Le croquis montre le moteur pas à pas tournant des deux côtés, c'est-à-dire dans le sens horaire et anti-horaire. Si vous souhaitez faire pivoter le stepper dans une direction, commentez simplement les lignes de code d'une autre direction dans l'esquisse.
Le code AVR complet pour contrôler le moteur pas à pas est donné ci-dessous. Le code est simple et peut être compris facilement. Deux codes sont donnés ci-dessous, un pour le moteur pas à pas rotatif avec ULN2003 et le second avec le module L293D.
Connectez votre USBASP v2.0 et suivez les instructions de ce lien pour programmer le microcontrôleur Atmega16 AVR en utilisant USBASP et Atmel Studio 7.0. Créez simplement le croquis et téléchargez-le à l'aide d'une chaîne d'outils externe.
Le code complet avec la vidéo de démonstration est donné ci-dessous.