• Première étape
  • Matériel et accessoires ; GPIO
  • Projets
  • Logiciel
    • Serveur Web
  • Arduino & ESP8266
  • Automatisation de la maison
  • Sonstiges
    • News
Facebook Twitter YouTube
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
  • Matériel et accessoires ; GPIO
  • Projets
  • Logiciel
  • Serveur Web
  • Première étape
  • Automatisation de la maison
  • Anglais
  • Allemand
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
Home»Matériel et accessoires ; GPIO»Contrôle de moteur Stepper Raspberry Pi avec L293D / ULN2003A

Contrôle de moteur Stepper Raspberry Pi avec L293D / ULN2003A

Facebook Twitter LinkedIn Tumblr Email Reddit
Raspberry Pi Stepper Motor Control with L293D / ULN2003A
Share
Facebook Twitter LinkedIn Email Tumblr Reddit Telegram WhatsApp

Les moteurs steppers sont idéaux pour les applications où il est nécessaire de connaître l’angle de rotation, par exemple en robotique. Contrairement à un moteur normal, les moteurs stepper peuvent commander les étapes individuellement et peuvent donc détecter la position exacte.
Pour contrôler facilement un tel moteur, un circuit IC de commande comme le L293D ou l’ULN2003 sont nécessaires. L’utilisation des deux conducteurs est montrée dans ce tutoriel.

 

Le plus commun de ces deux est l’ULN2003, qui est aussi souvent inclus sur les cartes de circuits avec le 28BYJ-48th Il y a une tension de 5V et 12V possible.

Le L293D offre cependant la possibilité de connecter une source d’alimentation externe, ce qui signifie par exemple un ampérage plus élevé (qui est nécessaire dans certains moteurs) peut être connecté.

Accessoires

  • Moteur Stepper , ex. le 28BYJ-48 avec circuit conducteur ULN2003
  • Conducteur L293D IC
  • alternativement, si aucun L293D n’est désiré : ULN2003 Darlington Array IC
  • Fil Jumper
  • peut-être une source d’alimentation externe, par exemple les piles

Bien sûr, vous pouvez utiliser n’importe quel autre moteur stepper, mais il est important d’identifier les différentes couleurs de fils possibles lorsque vous les connectez (voir fiche technique).

Ces couleurs se reflètent dans mon cas sur le 28BYJ-48 (data sheet):

Diagramme WiringSi vous choisissez un moteur différent, considérez le cas où les couleurs peuvent être différentes. Les positions et les étapes sont importantes.

 

Câblage L293D

Si vous avez un moteur avec une carte pilote ULN2003 ou le circuit intégré du pilote ULN2003, vous pouvez sauter cette étape.

La fiche technique montre qu’une source d’alimentation externe est possible. La structure est donc la suivante :

l293d_SteckplatineIl est important de dire que si vous utilisez une source d’alimentation externe, le + 5V de Raspberry Pi doit également être connecté au pin inférieur gauche du IC (broche 8), en addition à la broche 16.

Si l’ampérage du moteur exigeait plus que ce que le Raspberry peut fournir, vous devez avoir une source d’alimentation externe (une source de courant fixe est préférable aux batteries). La pré-résistance est également spécifiée dans la fiche technique. Faites attention que vous avez assez de tension et d’ampérage, parce que c’est la cause la plus commune, pourquoi le moteur plus tard ne fonctionne pas comme il le devrait. Avec le 28BYJ-48 cependant, cela n’est pas le cas.

Câblage ULN2003

Contrairement au L293D, la tension d’entrée n’est que de 5V ou 12V (fiche technique). Comme le Raspberry Pi n’est alimenté qu’en 5V, nous pouvons également utiliser uniquement des moteurs steppers qui nécessitent un maximum de 5V.

 

uln2003_Steckplatine

Essai

Lors de l’utilisation du 28BYJ-48, la séquence est la suivante. Si vous utilisez un moteur différent, vous devez ajuster la séquence correspondante à votre fiche technique.
Donc nous créons un script :

sudo nano stepper.py

et ajoutez le script suivant :

Python
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
import RPi.GPIO as GPIO
import time
 
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
coil_A_1_pin = 4 # pink
coil_A_2_pin = 17 # orange
coil_B_1_pin = 23 # blue
coil_B_2_pin = 24 # yellow
 
# adjust if different
StepCount = 8
Seq = range(0, StepCount)
Seq[0] = [0,1,0,0]
Seq[1] = [0,1,0,1]
Seq[2] = [0,0,0,1]
Seq[3] = [1,0,0,1]
Seq[4] = [1,0,0,0]
Seq[5] = [1,0,1,0]
Seq[6] = [0,0,1,0]
Seq[7] = [0,1,1,0]
 
GPIO.setup(enable_pin, GPIO.OUT)
GPIO.setup(coil_A_1_pin, GPIO.OUT)
GPIO.setup(coil_A_2_pin, GPIO.OUT)
GPIO.setup(coil_B_1_pin, GPIO.OUT)
GPIO.setup(coil_B_2_pin, GPIO.OUT)
 
GPIO.output(enable_pin, 1)
 
def setStep(w1, w2, w3, w4):
    GPIO.output(coil_A_1_pin, w1)
    GPIO.output(coil_A_2_pin, w2)
    GPIO.output(coil_B_1_pin, w3)
    GPIO.output(coil_B_2_pin, w4)
 
def forward(delay, steps):
    for i in range(steps):
        for j in range(StepCount):
            setStep(Seq[j][0], Seq[j][1], Seq[j][2], Seq[j][3])
            time.sleep(delay)
 
def backwards(delay, steps):
    for i in range(steps):
        for j in reversed(range(StepCount)):
            setStep(Seq[j][0], Seq[j][1], Seq[j][2], Seq[j][3])
            time.sleep(delay)
 
if __name__ == '__main__':
    while True:
        delay = raw_input("Time Delay (ms)?")
        steps = raw_input("How many steps forward? ")
        forward(int(delay) / 1000.0, int(steps))
        steps = raw_input("How many steps backwards? ")
        backwards(int(delay) / 1000.0, int(steps))
 

Ensuite, juste sauvegarder avec CTRL+O et CTRL+X et quitter. Vous pouvez le démarrer avec :

sudo python stepper.py

Avec setStep(0,0,0,0) vous pouvez mettre le stepper au ralenti, car sinon l’énergie est consommée tout le temps (par les électro-aimants du moteur).

Eu égard cela, si vous choisissez une valeur de retard élevée (par pas), le moteur se déplace très lentement (par exemple, avec un retard de 100ms, un tour complet prendrait déjà 51,2 secondes, car le moteur a un total de 512 pas. Des valeurs de retard trop faibles peuvent cependant avoir l’effet inverse, de sorte que les signaux sont transmis trop rapidement et que le moteur ne fait que « bégayer ». Si vous voulez un moteur plus rapide, choisissez un modèle avec un angle de pas plus grand).

28BYJ-48 moteur électrique python
Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
Previous ArticleComment établir une connexion Raspberry Pi à distance de bureau
Next Article Mesure de la température avec un capteur de température Raspberry Pi (1-Wire)

Related Posts

Connecter un clavier Raspberry Pi – Code Lock

Enregistrer les données des capteurs Raspberry Pi avec ThingSpeak et les analyser

Construire un capteur de porte / fenêtre Raspberry Pi avec Reed Relais

Apprendre à programmer sur le Raspberry Pi – Partie 1 : Introduction

Leave A Reply Cancel Reply

Mesure de la température avec un capteur de température Raspberry Pi (1-Wire)

Comment obtenir Google Chromium pour le Raspberry Pi

Utiliser un joystick sur le Raspberry Pi (avec MCP3008)

Lecture des étiquettes RFID RC522 de Raspberry Pi (NFC)

Comment connecter et contrôler bande LED RVB WS2801 Raspberry Pi

Comment utiliser un capteur d’empreintes digitales Raspberry Pi pour l’authentification

ABONNEZ-VOUS MAINTENANT
Et recevez de nouveaux tutoriels dans votre boîte de réception.
Cliquez ici pour soumettre!

Merci!

Nous vous contacterons bientôt.

Tutorials for Raspberry Pi
Facebook Twitter YouTube
  • Politique de confidentialité
  • Conditions de service & Politique sur les cookies

Type above and press Enter to search. Press Esc to cancel.