Le moteur pas à pas est un moteur à courant continu sans balais dans lequel la rotation est divisée en un certain nombre de pas qui résultent de la structure du moteur.
Dans ce tutoriel, on va commander un moteur pas à pas par la carte ESP32: le moteur pas à pas tourne dans le sens de l’aiguille puis il tourne dans le sens inverse.
Carte ESP32
ESP32 est une carte de développement électronique basée sur le microcontrôleur ESP32 de la société Espressif. Il s’agit d’un microcontrôleur à double cœur avec un processeur principal Xtensa LX6 et un processeur secondaire dedié au traitement du signal. La carte ESP32 est conçue pour être utilisée dans les applications IoT (Internet des objets) et comprend une variété de fonctionnalités pour faciliter la communication avec d’autres dispositifs et l’accès à Internet.
Voici quelques-unes des principales caractéristiques de la carte ESP32 :
moteur pas à pas 28BYJ-48
Le moteur pas à pas 28BYJ-48 est un moteur électrique pas à pas de faible puissance utilisé dans de nombreux projets de robotique et de contrôle de mouvement. Il est capable de convertir des impulsions électriques en mouvements de rotation précis, ce qui en fait un choix populaire pour la construction de robots et d’autres dispositifs de contrôle de mouvement.
Le moteur pas à pas 28BYJ-48 est un moteur à pas unique, ce qui signifie qu’il nécessite quatre impulsions électriques pour effectuer un demi-tour complet. Cela le rend particulièrement adapté à la réalisation de mouvements de rotation précis, car il peut être facilement contrôlé en utilisant un microcontrôleur ou un autre dispositif de commande électronique.
Le moteur pas à pas 28BYJ-48 est également assez peu coûteux et facile à trouver, ce qui en fait un choix populaire pour les projets de bricolage et de robotique. Toutefois, il a une faible puissance et n’est pas adapté à des applications qui nécessitent des mouvements de haute précision ou une grande puissance de sortie.
module UNL2003
Le module UNL2003 est un module de commande de moteur pas à pas utilisé pour piloter des moteurs pas à pas à quatre fils. Il comprend un circuit intégré UNL2003 qui peut être utilisé pour convertir des signaux de commande en impulsions de sortie pour le moteur pas à pas. Le module UNL2003 est généralement utilisé avec des microcontrôleurs ou d’autres dispositifs de commande électronique pour fournir une interface de commande facile pour le moteur pas à pas.
Le module UNL2003 peut être utilisé pour commander des moteurs pas à pas à pas unique ou à pas double, en fonction de la façon dont il est configuré. Il est généralement assez facile à utiliser et peut être connecté au moteur pas à pas et au dispositif de commande en utilisant des fils et des connecteurs appropriés.
Le module UNL2003 est un choix populaire pour de nombreux projets de robotique et de contrôle de mouvement en raison de sa simplicité et de sa facilité d’utilisation. Cependant, il est important de suivre attentivement les instructions de montage et d’utilisation fournies avec le module pour éviter tout dommage ou mauvais fonctionnement.
batterie de 9V
Une batterie de 9 volts est une pile qui fournit une tension de sortie de 9 volts. Elles sont souvent utilisées dans les appareils électroniques portables tels que les radiodiffuseurs, les jouets et les outils électroniques. Elles sont également couramment utilisées dans les applications de bricolage et de loisir, telles que les circuits électroniques et les projets de robotique.
Les fils de connexion sont des fils électriques utilisés pour connecter des composants électroniques à une carte de développement ESP32. Ils sont généralement utilisés pour connecter des capteurs, des actionneurs, des afficheurs et d’autres composants à la carte ESP32 afin de créer des circuits électroniques.
Il existe deux types de fils de connexion: les fils de connexion mâle-mâle et les fils de connexion mâle-femelle. Les fils de connexion mâle-mâle sont utilisés pour connecter des composants qui ont tous deux des broches mâles, tandis que les fils de connexion mâle-femelle sont utilisés pour connecter des composants avec une broche mâle et une broche femelle.
Les fils de connexion sont généralement fabriqués en cuivre ou en alliage de cuivre et sont revêtus d’un isolant en plastique pour protéger les fils électriques et empêcher les courts-circuits. Ils sont disponibles dans une variété de couleurs pour aider à identifier et organiser les différents fils dans un circuit.
Voici les programmes micropython qui permettent de commander le moteur pas à pas par la carte ESP32.
boot.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import Stepper from machine import Pin, ADC import time # for the ESP8266 # In1 = Pin(2,Pin.OUT) # IN1-> GPIO2 # In2 = Pin(0,Pin.OUT) # IN1-> GPIO0 # In3 = Pin(4,Pin.OUT) # IN1-> GPIO4 # In4 = Pin(5,Pin.OUT) # IN1-> GPIO5 # for ESP32 In1 = Pin(32,Pin.OUT) In2 = Pin(33,Pin.OUT) In3 = Pin(25,Pin.OUT) In4 = Pin(26,Pin.OUT) infrarouge = ADC(Pin(34)) s1 = Stepper.create(In1,In2,In3,In4, delay=1) while True: s1.step(500) # faire tourner le moteur pas a pas dans le sens de l'aiguille time.sleep(1) s1.step(500,-1) # faire tourner le moteur pas a pas dans le sens inverse de l'aiguille time.sleep(1) |
Stepper.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
import time # download from: https://github.com/zhcong/ULN2003-for-ESP32 # file: https://github.com/zhcong/ULN2003-for-ESP32/blob/master/Stepper.py # based on: https://github.com/IDWizard/uln2003 # (c) IDWizard 2017, # MIT License. ### usage: ### https://github.com/zhcong/ULN2003-for-ESP32/blob/master/main.py # import Stepper # from machine import Pin # # connected to ESP32, Pin 32,33,25,26 # # using default parameters: delay=2, mode='HALF_STEP' # In1 = Pin(32,Pin.OUT) # In2 = Pin(33,Pin.OUT) # In3 = Pin(25,Pin.OUT) # In4 = Pin(26,Pin.OUT) # s1 = Stepper.create(In1,In2,In3,In4) # # # # one revolution is about 509 steps # s1.step(100) # 100 steps clockwise # s1.step(100,-1) # 100 steps counter clockwise # s1.angle(180) # 180 degree clockwise # s1.angle(360,-1) # 180 degree counter clockwise # only test for uln2003 class Stepper: FULL_ROTATION = int(4075.7728395061727 / 8) # http://www.jangeox.be/2013/10/stepper-motor-28byj-48_25.html HALF_STEP = [ [0, 0, 0, 1], [0, 0, 1, 1], [0, 0, 1, 0], [0, 1, 1, 0], [0, 1, 0, 0], [1, 1, 0, 0], [1, 0, 0, 0], [1, 0, 0, 1], ] FULL_STEP = [ [1, 0, 1, 0], [0, 1, 1, 0], [0, 1, 0, 1], [1, 0, 0, 1] ] def __init__(self, mode, pin1, pin2, pin3, pin4, delay): if mode=='FULL_STEP': self.mode = self.FULL_STEP else: self.mode = self.HALF_STEP self.pin1 = pin1 self.pin2 = pin2 self.pin3 = pin3 self.pin4 = pin4 self.delay = delay # Recommend 10+ for FULL_STEP, 1 is OK for HALF_STEP # Initialize all to 0 self.reset() def step(self, count, direction=1): """Rotate count steps. direction = -1 means backwards""" for x in range(count): for bit in self.mode[::direction]: self.pin1(bit[0]) self.pin2(bit[1]) self.pin3(bit[2]) self.pin4(bit[3]) time.sleep_ms(self.delay) self.reset() def angle(self, r, direction=1): self.step(int(self.FULL_ROTATION * r / 360), direction) def reset(self): # Reset to 0, no holding, these are geared, you can't move them self.pin1(0) self.pin2(0) self.pin3(0) self.pin4(0) def create(pin1, pin2, pin3, pin4, delay=2, mode='HALF_STEP'): return Stepper(mode, pin1, pin2, pin3, pin4, delay) |