Moin,
ich möchte gerne zwei Schrittmotor über PWM ansteuern. Ich nutze dafür ein PYthon Skript. Die PWM ist knapp im MHz Bereich.
Ich stoße dabei nun auf das Problem, dass der Pi damit durch das ständige abfragen an seine Auslastungsgrenze gelangt. Das äußert sich nicht nur an der 100%igen Auslastung. Er unterbricht stellenweise auch die Modulation. Es sind deutliche Lücken zu erkennen und das äußert sich dann natürlich auch durch einen unruhigen LAuf des Motors. Ich nutze den Pi1 Modell B.
Ich habe bereits gesehen das es auch ein Kernel Modul von adafruit für die PWM gbt. Dies ist allerdings nur an einem Pin möglich..
Hat jemand eine Idee wie man das lösen kann? Umgehen kann oder wie auch immer.. Bin da im Moment voll in der Sackgasse..
Die fUNKTION SIEHT DABEI WIE FOLGT AUS:
while True:
try:
currenttime = time.time()
if currenttime - previoustime >= v1 and STakt1 == False:
previoustime = currenttime
STakt1 = True
GPIO.output(Takt1, STakt1)
Zaehler1 = Zaehler1 + 1
if Zaehler1 >= ZSchr11 and Schritt == 0:
GPIO.output(Richtung1, True)
Schritt = 1
print "Wechsel1"
Zaehler1 = 0
time.sleep(.1)
elif Zaehler1 >= ZSchr12 and Schritt == 1:
GPIO.output(Richtung1, False)
Schritt = 2
print "Wechsel2"
Zaehler1 = 0
time.sleep(.1)
elif Zaehler1 >= ZSchr13 and Schritt == 2:
GPIO.output(Richtung1, True)
Schritt = 3
print "Wechsel3"
GPIO.output(Richtung1, False)
Zaehler1 = 0
Schritt = 0
break
elif currenttime - previoustime >= v1 and STakt1 == True:
previoustime = currenttime
STakt1 = False
GPIO.output(Takt1, STakt1)
except (KeyboardInterrupt, SystemExit):
print "wurde abgebrochen"
break
Alles anzeigen
Das Problem liegt in der ständigen Abfrage der aktuellen Zeit und dem damit verbundenen Vergleich.. Denk ich zumindest
MfG