Je suis assez nouveau dans l'impression 3D car j'ai besoin de contrôler le moteur pas à pas pour les axes X, Y et Z. J'ai deux moteurs pas à pas et un pilote Micro-pas (CW-5045) et bien sûr Raspberry pi 3 avec une carte d'extension.

Je veux que l'axe Z se déplace pour l'imprimante 3D en cliquant sur le bouton souhaité. Les boutons sont destinés à la position donnée pour déplacer l'axe Z de haut en bas. Je pensais avoir 2-3 boutons qui sont censés déplacer 25 micro couches, 50 micro couches et 100 micro couches. (Je ne sais pas s'il s'agit de micro couche ou de micro mètres).

Le code ci-dessous mentionné est celui que j'ai essayé mais le moteur pas à pas fait du bruit mais je n'ai vu aucun mouvement dans l'axe.

J'ai essayé avec cette référence : configurer le moteur de pilote bipolaire leadshine DM860 sur framboise pi

Je sais que je pourrais utiliser des contrôleurs d'imprimante externes comme Octoprint et d'autres, mais le projet est au stade initial car je n'ai pas tous les équipements. Je voulais donc commencer par le moteur pas à pas.

import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

CW = 1     # Clockwise Rotation
CCW = 0    # Counterclockwise Rotation
SPR = 200   # Steps per Revolution (360 / 1.8)


GPIO.setup(21,GPIO.OUT)
GPIO.setup(20,GPIO.OUT)

GPIO.output(21,False)


microStep = 0
step_count = SPR
delay = .0208

GPIO.output(20, GPIO.HIGH)
while True:
    for x in range(step_count):
        GPIO.output(20, GPIO.HIGH)
        sleep(delay)
        GPIO.output(20, GPIO.LOW)
        sleep(delay)

    sleep(.5)
    GPIO.output(20, GPIO.LOW)
    for x in range(step_count):
        GPIO.output(20, GPIO.HIGH)
        sleep(delay)
        GPIO.output(20, GPIO.LOW)
        sleep(delay)

    microStep = microStep + 1
    print(microStep)

GPIO.cleanup()

Je pense qu'il me manque pour contrôler la vitesse du moteur. J'aimerais contrôler le moteur par micro-pas avec précision en donnant la valeur de position souhaitée, pas seulement le moteur fonctionnant de haut en bas.

2
Kartheek 7 oct. 2019 à 11:22

1 réponse

Meilleure réponse

Avec l'aide de l'un des membres du forum raspberry pi, le problème a été résolu.

Pour les futures références à quelqu'un comme moi

import RPi.GPIO as GPIO
import time
from time import sleep

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

GPIO.setup(21,GPIO.OUT) # direction
GPIO.setup(20,GPIO.OUT) # step

step_count = 72727  # number of step to run  change this to change where it stops
delay = 0.001

# drive motor clockwise number of steps set by step count
GPIO.output(21, GPIO.HIGH)
    print (" Drive CW ", step_count ,"steps")
for x in range(step_count):
    GPIO.output(20, GPIO.HIGH)
    sleep(delay)
    GPIO.output(20, GPIO.LOW)
    sleep(delay)

# stop motor for 5 seconds    
print (" Stop")
sleep(5)
input("Press Enter to continue...")
# drive motor counter clockwise number of steps set by step count
print (" Drive CCW ", step_count ,"steps")
GPIO.output(21, GPIO.LOW)
for x in range(step_count):
    GPIO.output(20, GPIO.HIGH)
    sleep(delay)
    GPIO.output(20, GPIO.LOW)
    sleep(delay)

# end of program
print (" End program")

GPIO.cleanup()

Step_count changerait en fonction des calculs (dépend de l'angle du moteur et du décompte de la distance parcourue pour un tour).

Paix

0
Kartheek 23 oct. 2019 à 10:50