Aide moteur pas à pas

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Répondre
Thomeche
Messages : 2
Enregistré le : jeu. 28 avr. 2022 14:58

Aide moteur pas à pas

Message par Thomeche » jeu. 28 avr. 2022 15:11

Boujour à tous,
je solicite aujourd'hui votre aide car nous sommes dans une impasse.
Nous devons faire tourner un moteur pas à pas dans les 2 sens pour notre projet de TIPE. Le code que nous utilisons est ci contre, mais ne permets pas de le faire touner dans les 2 sens. Il ne tourne que dans le sens horaire. Pourriez vous nous aider en nous proposant un pogamme ?
Cela nous sauverait notre projet
En esperant que vous pouurez m'aider.


from time import sleep
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
# PIN-Assignment
A=18
B=23
C=24
D=25
time = 0.001
# defining the PINs
GPIO.setup(A,GPIO.OUT)
GPIO.setup(B,GPIO.OUT)
GPIO.setup(C,GPIO.OUT)
GPIO.setup(D,GPIO.OUT)
GPIO.output(A, False)
GPIO.output(B, False)
GPIO.output(C, False)
GPIO.output(D, False)
# driving the motor
def Pas_a_pas(n):
def Step1():
GPIO.output(D, True)
sleep (time)
GPIO.output(D, False)

def Step2():
GPIO.output(D, True)
GPIO.output(C, True)
sleep (time)
GPIO.output(D, False)
GPIO.output(C, False)

def Step3():
GPIO.output(C, True)
sleep (time)
GPIO.output(C, False)
def Step4():
GPIO.output(B, True)
GPIO.output(C, True)
sleep (time)
GPIO.output(B, False)
GPIO.output(C, False)

def Step5():
GPIO.output(B, True)
sleep (time)
GPIO.output(B, False)

def Step6():
GPIO.output(A, True)
GPIO.output(B, True)
sleep (time)
GPIO.output(A, False)
GPIO.output(B, False)

def Step7():
GPIO.output(A, True)
sleep (time)
GPIO.output(A, False)

def Step8():
GPIO.output(D, True)
GPIO.output(A, True)
sleep (time)
GPIO.output(D, False)
GPIO.output(A, False)

# start one complete turn
for i in range (n):
Step1()
Step2()
Step3()
Step4()
Step5()
Step6()
Step7()
Step8()

GPIO.cleanup()
Pas_a_pas(512)

piper
Raspinaute
Messages : 343
Enregistré le : sam. 5 juin 2021 18:57

Re: Aide moteur pas à pas

Message par piper » jeu. 28 avr. 2022 15:33

Bonjour,
Comment est connecté le Raspberry, vous utiliser un pilote de moteur ? à base de transistor ULN2003 ? c'est branché comment ?
Votre code est incompréhensible parce que Python exploite les indentations pour définir les blocs d'instructions. Pourriez vous utiliser le bouton "</>" du forum pour mettre le code (il sert à ça).

Enfin, tel que je vois votre code, vous avez mis ceci :

Code : Tout sélectionner

def Pas_a_pas(n):
def Step1():
Et vous appelez :

Code : Tout sélectionner

Pas_a_pas(512)
C'est à dire une fonction qui ne fait rien

S'il se passe quelque chose ce ne peut-être que parce qu'il y a du code sans indentation donc exécuté systématiquement (et invisible pour nous puisqu'on ne voit pas les indentations)

Sinon, il y a un article ici en Français.
https://www.aranacorp.com/fr/pilotez-un ... spberrypi/

le programme n'est pas "joli" mais ça fonctionne, en appelant steps avec un nombre >0, le moteur tourne dans le sens horaire et avec un nombre <0 dans le sens anti-horaire.
1 Pi 4 Emby / Samba
1 Pi4 Librelec
1 Pi3 / Hifiberry OSMC
1 Pi0 : traker GPS et acquisitions de données moteur automobile
1 Pi 2 : pilotage de serrures / RFID
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

Thomeche
Messages : 2
Enregistré le : jeu. 28 avr. 2022 14:58

Re: Aide moteur pas à pas

Message par Thomeche » jeu. 28 avr. 2022 15:56

Bonjour,
nous utilisons un contrôleur (référence ULN2003) ainsi que le programme fourni avec (que vous pouvez trouver sur le lien suivant)
https://www.joy-it.net/en/products/SBC-Moto1
La fonction pas à pas a été crée afin de pouvoir insérer le programme, et n'a donc aucune valeur ajoutée

piper
Raspinaute
Messages : 343
Enregistré le : sam. 5 juin 2021 18:57

Re: Aide moteur pas à pas

Message par piper » jeu. 28 avr. 2022 20:39

Ce programme n'est bien que pour faire une petite démo.

Bref, la réponse à votre question est simple : il suffit de refaire les étapes dans l'autre sens :
Si vous voulez faire un une fonction dans laquelle vous pourrez choisir de combien de degrés vous voulez faire la rotation et dans quel sens, il faudra faire autrement (le lien que j'ai fournis est pas mal, il utilise des tableaux de valeurs , ça semble plus compliqué au 1er abord mais en faire à l'usage c'est beaucoup plus souple et simple)

Code : Tout sélectionner

# SENS HORAIRE
for i in range (512):
	Step1()
	Step2()
	Step3()
	Step4()
	Step5()
	Step6()
	Step7()
	Step8()

# SENS ANTI-HORAIRE
for i in range (512):
	Step8()
	Step7()
	Step6()
	Step5()
	Step4()
	Step3()
	Step2()
	Step1()
1 Pi 4 Emby / Samba
1 Pi4 Librelec
1 Pi3 / Hifiberry OSMC
1 Pi0 : traker GPS et acquisitions de données moteur automobile
1 Pi 2 : pilotage de serrures / RFID
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

Répondre

Retourner vers « Python »