Forum: Mikrocontroller und Digitale Elektronik AccelStepper.H - Reset


von Tex A. (tex)


Lesenswert?

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?

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

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
von Tex A. (tex)


Lesenswert?

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

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Tex A. schrieb:
> stepperStop();
Die Library keine keine Methode namens: stepperStop()

Tex A. schrieb:
> war in einem früheren Post
Sehe keinen anderen Post.

von Tex A. (tex)


Lesenswert?

>
> 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.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

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
von Tex A. (tex)


Lesenswert?

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.
🐺

von Frank O. (frank_o)


Lesenswert?

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)
#######################################

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

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
von Mike J. (linuxmint_user)


Lesenswert?

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.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

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.

von Mike J. (linuxmint_user)


Lesenswert?

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.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

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.

von Hugo H. (hugo_hu)


Lesenswert?


: 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
Noch kein Account? Hier anmelden.