Ich habe, wie hier vorgeschlagen, meine Programm zur Stepper-Ansteuerung auf die AccelStepper.H umgeschrieben. Dabei habe ich folgendes Phänomen: Wenn ich den Motorlauf vor Erreichen des Ziels abbreche, so dass er nicht langsam ausläuft, bleibt in der AccelStpper.H irgend etwas stecken, dass dazu führt, dass der Motor beim nächsten Anlauf erst mal in der falschen Richtung losläuft bevor das Dir_Pin nach 2 bis 150 Schritten richtig gesetzt wird. Das PIN vor Aufrufen der move-Funktion manuell zu setzen hilft leider nicht weiter. Wie löscht man alle noch verbliebenen Fragmente voriger Befehle in der Accelstepper.H?
Tex A. schrieb: > Wenn ich den Motorlauf vor Erreichen des Ziels abbreche, Wie tust du das? Tex A. schrieb: > Ich habe, wie hier vorgeschlagen, Sehe keinen Vorschlag. Es ist immer toll, wenn Fragen zu einem geheimen Programm gestellt werden.
:
Bearbeitet durch User
Arduino F. schrieb: > Tex A. schrieb: >> Wenn ich den Motorlauf vor Erreichen des Ziels abbreche, > Wie tust du das? stepperStop(); motorEnable(false); //Enable-Bit löschen Gibt es einen anderen Weg? > Tex A. schrieb: >> Ich habe, wie hier vorgeschlagen, > Sehe keinen Vorschlag. war in einem früheren Post
Tex A. schrieb: > stepperStop(); Die Library keine keine Methode namens: stepperStop() Tex A. schrieb: > war in einem früheren Post Sehe keinen anderen Post.
> > Es ist immer toll, wenn Fragen zu einem geheimen Programm gestellt > werden. Ich hätte jetzt stepper.moveTo(stepper.curentPosition() + (dir > 0 ? steps : -steps)); nicht für ein so unheimliches Geheimnis gehalten, als dass es unvorstellbar gewesen wäre. Die möglichen Abweichungen wären noch stepper.move(.... aber das Ergebnis ist das Selbe.
Tex A. schrieb: > Ich hätte jetzt .... > nicht für ein so unheimliches Geheimnis gehalten, als dass es > unvorstellbar gewesen wäre. OK, du hast einen Fehler in deinem Code, aber willst ihn geheim halten und wir/ich sollen ihn trotzdem finden. Oder mich gar für blöd erklären. In beiden Fällen endet es jetzt für mich hier.
:
Bearbeitet durch User
Nein, ich habe keinen Fehler in meinem Code, ich habe einen Fehler in meiner Benutzung der AccelStepper.H und du hast kein Interesse zu helfen, sondern nur am stänkern, denn weder der alte Beitrag Beitrag "Welche Fehler bei Schrittmotor-Ansteuerung?" noch der vergessene in stepper.Stop(); tun dabei irgendetwas zur Sache. Und für alle die nach der Lösung suchen: stepper.setCurrentPosition(0); löst das Problem. 🐺
Ich mache zwar nichts damit und habe das auch noch nicht, aber ich habe mir gerade auf Git die Keyword angesehen. # Methods and Functions (KEYWORD2) ####################################### moveTo KEYWORD2 move KEYWORD2 run KEYWORD2 runSpeed KEYWORD2 setMaxSpeed KEYWORD2 setAcceleration KEYWORD2 setSpeed KEYWORD2 speed KEYWORD2 distanceToGo KEYWORD2 targetPosition KEYWORD2 currentPosition KEYWORD2 setCurrentPosition KEYWORD2 runToPosition KEYWORD2 runSpeedToPosition KEYWORD2 runToNewPosition KEYWORD2 // Vielleicht klappt das hiermit? stop KEYWORD2 disableOutputs KEYWORD2 enableOutputs KEYWORD2 setMinPulseWidth KEYWORD2 setEnablePin KEYWORD2 setPinsInverted KEYWORD2 maxSpeed KEYWORD2 ####################################### # Constants (LITERAL1) #######################################
Tex A. schrieb: > stepper.Stop(); Die Library kennt keine Methode namens: Stop() Tex A. schrieb: > Nein, ich habe keinen Fehler in meinem Code, ich habe einen Fehler in > meiner Benutzung der AccelStepper.H Fällt dir der Widerspruch in deiner Aussage nicht auf? Der schreit doch! Tex A. schrieb: > und du hast kein Interesse zu > helfen, sondern nur am stänkern, Ist das so? Tex A. schrieb: > noch der vergessene in stepper.Stop(); Es ist nicht nur der Punkt, sondern auch das große S Das alles sagt mir: Du arbeitest schlampig und widerwillig. Du kannst versuchen mir dafür die Schuld in die Schuhe zu schieben. Macht nur keinen Sinn.
:
Bearbeitet durch User
Tex A. schrieb: > dass der Motor beim nächsten Anlauf erst mal > in der falschen Richtung losläuft bevor das Dir_Pin nach 2 bis 150 > Schritten richtig gesetzt wird. Genau das selbe Verhalten habe ich heute bei einem Youtube Video gesehen und mich gefragt warum er erst mal etwas zurück fährt bevor er wieder normal los läuft. Das war eine Lichtschranke die als Endanschlag dient und der µC muss die Routine beim durchschreiten der Lichtschranke gestoppt haben, wodurch dann dein beschriebener Fehler auftritt. Das kannst du ja einfach mal als Bug auf der Github-Seite melden.
Mike J. schrieb: > Das war eine Lichtschranke die als Endanschlag dient stepper.stop() fährt die Entscheunigungsrampe ab, bis zum Stillstand. Natürlich schießt das dann über die Lichtschranke hinaus! Ist ja kein Anschlag, wie du behauptest.
Arduino F. schrieb: > Mike J. schrieb: >> Das war eine Lichtschranke die als Endanschlag dient > > stepper.stop() fährt die Entscheunigungsrampe ab, bis zum Stillstand. > Natürlich schießt das dann über die Lichtschranke hinaus! > Ist ja kein Anschlag, wie du behauptest. Er hatte dort eine Lichtschranke auf der Plattform und an den Seiten waren oben und unten je zwei Unterbrecher-Plättchen. Die Plattform ist zur ersten Licht-Unterbrechnung gefahren, wurde dann langsamer, kam zur zweiten Unterbrecher-Platte und stoppte dann. Als er dann wieder nach unten fahren wollte fuhr er eben noch ein kleines Stück nach oben und dann mit selber Geschwindigkeit runter. Es schien wirklich so zu sein als ob nur der Richtungspin umgeschaltet wurde.
Mike J. schrieb: > Er hatte Auch wieder, ähnlich wie der TO, kein Code. Nur Prosa. Bedenke: Die lib ist schon so alt und ausgereift, dass Fehler darin wirklich selten sein dürften. Meist sitzt der Fehler vor dem Monitor. Übrigens, man fährt nicht voll karacho in eine Lichtschranke! Man macht eine Referenzfahrt. Danach braucht man keine Lichtschranke mehr.
Vielleicht sind ein paar Grundlagen zum Verständnis hilfreich :-) https://www.mikrocontroller.net/articles/Schrittmotoren https://product-help.schneider-electric.com/Machine%20Expert/V1.1/de/m241pto/m241pto/M241Lib-PTO-Configuration/M241Lib-PTO-Configuration-5.htm
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.