- Matériaux nécessaires
- Moteur pas à pas (28BYJ-48)
- CI pilote de moteur ULN2003
- Schéma de circuit et connexions
- Moteur pas à pas rotatif avec STM32F103C8
- PROGRAMMATION STM32 pour 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. Généralement, le moteur pas à pas utilise 200 pas pour effectuer une rotation de 360 degrés, ce qui signifie qu'il tourne de 1,8 degré par étape. Le moteur pas à pas est utilisé dans de nombreux appareils qui nécessitent un mouvement de rotation précis comme les robots, les antennes, les disques durs, etc. Nous pouvons faire tourner le moteur pas à pas à n'importe quel angle particulier en lui donnant les instructions appropriées. Principalement deux types de moteurs pas à pas sont disponibles, unipolaire et bipolaire. Unipolar est plus facile à utiliser, à contrôler et aussi plus facile à obtenir. Ici, dans ce tutoriel, nous interfaçons le moteur pas à pas avec la carte STM32F103C8 (pilule bleue).
Matériaux nécessaires
- STM32F103C8 (Pilule bleue)
- Moteur pas à pas (28BYJ-48)
- IC ULN2003
- Potentiomètre 10k
- Planche à pain
- Fils de cavalier
Moteur pas à pas (28BYJ-48)
28BYJ-48 est un moteur pas à pas unipolaire qui nécessite une alimentation 5V. Le moteur a un arrangement unipolaire à 4 bobines et chaque bobine est évaluée pour + 5V, il est donc relativement facile à contrôler avec des microcontrôleurs comme Arduino, Raspberry Pi et STM32.Mais nous avons besoin d'un circuit intégré de commande de moteur comme ULN2003 pour le piloter, car les moteurs pas à pas consomme un courant élevé et peut endommager les microcontrôleurs.
Une autre donnée importante à noter est l' angle de foulée: 5,625 ° / 64. Cela signifie que le moteur, lorsqu'il fonctionne en séquence de 8 étapes, se déplacera de 5,625 degrés pour chaque étape et qu'il faudra 64 étapes (5,625 * 64 = 360) pour effectuer une rotation complète. D'autres spécifications 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
Le moteur pas à pas peut également être contrôlé sans microcontrôleur, voir ce circuit de pilote de moteur pas à pas.
CI pilote de moteur ULN2003
Il est utilisé pour entraîner le moteur en fonction des impulsions reçues du microcontrôleur. Vous trouverez ci-dessous le schéma d'image de l'ULN2003:
Les broches (IN1 à IN7) sont des broches d'entrée et (OUT 1 à OUT 7) sont des broches de sortie correspondantes. COM reçoit une tension de source positive requise pour les périphériques de sortie. D'autres connexions pour le moteur pas à pas sont données ci-dessous dans la section du schéma de circuit.
Schéma de circuit et connexions
Vous trouverez ci-dessous l'explication des connexions pour le schéma de circuit ci-dessus.
STM32F103C8 (pilule bleue)
Comme nous pouvons le voir dans le schéma ci-dessous, les broches PWM sont indiquées au format wave (~), il y a 15 broches de ce type qui peuvent être utilisées pour la sortie d'impulsions vers le moteur pas à pas. Nous n'avons besoin que de quatre broches, nous utilisons (PA0 à PA3).
STM32F103C8 avec CI pilote de moteur ULN2003
Les broches (PA0 à PA3) sont considérées comme des broches de sortie connectées aux broches d'entrée (IN1-IN4) du CI ULN2003.
ÉPINGLES DE STM32F103C8 |
ÉPINGLES DU CI ULN2003 |
PA0 |
EN 1 |
PA1 |
EN 2 |
PA2 |
IN3 |
PA3 |
IN4 |
5V |
COM |
GND |
GND |
IC 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 (orange, jaune, rose et bleu).
ÉPINGLES DU CI ULN2003 |
BROCHES DE MOTEUR PAS À PAS |
OUT1 |
ORANGE |
OUT2 |
JAUNE |
OUT3 |
ROSE |
OUT4 |
BLEU |
COM |
ROUGE |
STM32F103C8 avec potentiomètre
Un potentiomètre est utilisé pour régler la vitesse du moteur pas à pas.
POTENTIOMÈTRE |
STM32F103C8 |
GAUCHE (ENTRÉE) |
3,3 |
CENTRE (SORTIE) |
PA4 |
DROITE (GND) |
GND |
Moteur pas à pas rotatif avec STM32F103C8
Voici quelques étapes pour faire fonctionner le moteur pas à pas:
- Réglez la vitesse du moteur pas à pas en faisant varier le potentiomètre.
- Ensuite, entrez manuellement les étapes de rotation dans le sens horaire (+ valeurs) ou dans le sens anti-horaire (-valeurs) via SERIAL MONITER présent dans ARDUINO IDE (Tools-> Serial monitor) ou CTRL + SHIFT + M.
- Selon la valeur d'entrée donnée dans le moniteur série, certaines étapes de rotation ont lieu dans le moteur pas à pas.
Par exemple
VALEUR DONNÉE EN SERIAL MONITER |
ROTATION |
2048 |
(360) CLK WISE |
1024 |
(180) CLK WISE |
512 |
(90) CLK WISE |
-2048 |
(-360) ANTI CLK WISE |
-1024 |
(-180) ANTI CLK WISE |
-512 |
(-90) ANTI CLK WISE |
PROGRAMMATION STM32 pour moteur pas à pas
Comme le tutoriel précédent, nous avons programmé le STM32F103C8 avec Arduino IDE via le port USB sans utiliser le programmeur FTDI. Pour en savoir plus sur la programmation de STM32 avec Arduino IDE, suivez le lien. Nous pouvons procéder à sa programmation comme un Arduino. Le code complet est donné à la fin du projet.
Nous devons d'abord inclure les fichiers de la bibliothèque stepper #include
#comprendre
Ensuite, nous définissons non. d'étapes à compléter sur rotation, ici nous utilisons 32 car nous utilisons Full-Step (4 Step-sequence) donc (360/32 = 11,25 degrés). Ainsi, pour un pas, l'arbre se déplace de 11,25 degrés, soit l'angle de foulée. Dans une séquence de 4 étapes, 4 étapes sont nécessaires pour une rotation complète.
#define ÉTAPES 32
Nous pouvons également utiliser le mode demi-pas avec un angle de foulée de 8 pas (360/64 = 5,625).
Pas par tour = 360 / ANGLE DE PAS
Comme nous réglons la vitesse, nous devons prendre la valeur analogique du PA4 qui est connecté au potentiomètre. Nous devons donc déclarer une broche pour cela
const int speedm = PA4
Ensuite, nous avons converti la valeur analogique en numérique en stockant ces valeurs dans une variable de type entier, après cela, nous devons mapper les valeurs ADC pour régler la vitesse, nous utilisons donc l'instruction ci-dessous. En savoir plus sur l'utilisation d'ADC avec STM32 ici.
int adc = analogRead (speedm); int result = map (adc , 0, 4096, 1, 1023);
Pour définir la vitesse, nous utilisons stepper.setSpeed (résultat); Nous avons une plage de vitesse de (1-1023).
Nous devons créer une instance comme ci-dessous pour définir les broches connectées au moteur. Soyez prudent dans ces étapes car la plupart d'entre eux font une erreur ici dans ce modèle. Ils donnent un mauvais modèle et à cause de cela, les bobines ne peuvent pas être sous tension.
Pas à pas (STEPS, PA0, PA2, PA1, PA3);
L'instruction ci-dessous est utilisée pour obtenir la valeur des étapes du moniteur série. Par exemple, nous avons besoin de 2048 valeurs pour une rotation complète (32 * 64 = 2048), soit 64 sera le rapport de démultiplication et 32 sera une séquence demi-pas pour une rotation.
rotation = Serial.parseInt ();
Le code ci-dessous est utilisé pour appeler l'instance et exécuter le moteur. Si la valeur de rotation est 1, il appelle la fonction stepper une fois et un mouvement est effectué.
stepper.step (rotation);
Le code complet avec la vidéo de démonstration est donné ci-dessous. Vérifiez également tous les projets liés aux moteurs pas à pas ici, avec l'interfaçage avec divers autres microcontrôleurs