Schrittmotoren lassen sich nicht ansteuern, fehlende Parameter?

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
SilverLotus
User
Beiträge: 4
Registriert: Sonntag 19. Juni 2022, 10:52

Hey hey,
bitte entschuldigt vorab falls ich mich falsch ausdrücke oder ähnliches, ich bin ganz neu in der Thematik und habe keinerlei Vorkenntnisse im Programmieren oder mit dem Raspberry Pi, aber im Rahmen eines Projektes muss ich vier Schrittmotoren, Modell ULN2003 ansteuern können. Dazu habe ich einen Code allerdings fehlen hier (denke ich) die Parameter und ich habe leider keine Ahnung was genau ich einsetzen muss, damit ich die vier Motoren ansteuern kann.
Mein Modell ist eine Seilkamera mit den Maßen 90 x 53 x 60 cm und die Motoren dienen dazu, die an Angelschnüren befestigte Kamera zu bewegen. Hier der Code dazu:

from time import sleep
import RPi.GPIO as GPIO

#Verwendete Pins des Raspberry Pi
A=18
B=23
C=24
D=25

time = 0.0025

def setup():
GPIO.setmode(GPIO.BCM)

#Pins als Ausgaenge definieren
GPIO.setup(A, GPIO.OUT)
GPIO.output(A, False)
GPIO.setup(B, GPIO.OUT)
GPIO.output(B, False)
GPIO.setup(C, GPIO.OUT)
GPIO.output(C, False)
GPIO.setup(D, GPIO.OUT)
GPIO.output(D, False)

#Schritte 1-8 festlegen
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)

# Eine Umdrehung vorwaerts
def forward():
for i in range(512):
Step1()
Step2()
Step3()
Step4()
Step5()
Step6()
Step7()
Step8()


# Eine Umdrehung rueckwaerts
def backward():
for i in range(512):
Step8()
Step7()
Step6()
Step5()
Step4()
Step3()
Step2()
Step1()

# Setzt die Zeit, die die Geschwindigkeit regelt:
# Je groesser die Zeit, desto langsamer die Geschwindigkeit
def setSpeed(newtime):
time = newtime

def cleanup():
GPIO.cleanup()

Ich bin für jede Antwort dankbar und hoffe ich habe mich soweit richtig ausgedrückt :oops:
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das wird nix. Ein solches System, bei dem du ja präzise synchron die 4 Motoren fahren musst, bekommt man nicht mit so einem krepeligem Bit-banging Code hin.

Besorg dir eine der üblichen 4 Achsen CNC Steuerungen basierend auf arduino. Den kannst du dann bequem via gcode synchron ansteuern lassen.
Antworten