Jump to content

Recommended Posts

Posted

Moin,

ich wünsche mir:

* den Stepper für eine Bewegung zu programmieren,

* ihn anhalten (quasi Stop) zu können (geht natürlich schon),

* ihm sagen zu können, daß er seine Fahrt wie vorher programmiert wieder aufnehmen soll.

Bsp. 1: Ich lasse einen Stepper vorwärts laufen, muß anhalten und möchte dann, daß er auf Befehl einfach weiterfährt (incl. Anfahren).

Bsp. 2: Ich gebe einem Stepper den Befehl, 12000 Steps zu fahren, muß ihn im Verlauf aber stoppen und möchte, daß er auf Befehl einfach so weitermacht, als hätte man ihn nicht angehalten.

Ich kann es natürlich auf Umwegen mit Merken des ursprünglichen Befehls und der Abfrage der Position nach dem Stop bereits jetzt realisieren, aber...

Oder seht Ihr noch eine andere Möglichkeit der einfachen Realisierung mit vorhandenen Mitteln?

gruss uwet

Posted

Hallo uwet,

 

wenn ich dich richtig verstehe geht es dir darum, dass du in deinem Code dir sparen möchtest die Schritte bei einem Stop auszulesen und bei einem erneuten Start die restlichen wieder zu setzen, korrekt?

 

Da sehe ich aktuell nur die Möglichkeit diese Logik über dein Programm zu machen. Vll. macht es sinn die API des Steppers da auf Dauer zu erweitern.

 

Grüße,

 

Bastian

Posted

Also im Prinzip möchtest du eine Funktion haben die den Stepper wieder anschmeißt mit den noch ausstehenden Schritten?

 

Sowas wie

drive_remaining_steps()

und dazu würde man dann vermutlich auch noch ein

set_remaining_steps()

machen, was das gleiche tut wie set_steps, aber den Motor noch nicht losfahren lässt. Ist das so gemeint?

 

Schreibe ich mir auch mal auf die TODO Liste, hab ja jetzt schon mehrere Erweiterungen für den Stepper, da wäre das eine Kleinigkeit vermutlich.

Posted

Ja, so ungefähr. Eben so nach dem Motto: "Warte mal und halt gesittet an, da ist was im Weg... Und jetzt mach einfach weiter wie vorher besprochen!" (vorwärts oder rückwärts, zähl weiter deine Schritte oder fahr weiter zu der vereinbarten Position) Vielleicht - und das ist erstmal nur so eine Überlegung - könnte man die Zwischenstop-Funktion wie so eine generelle Bewegungsfreigabe betrachten. Wenn ich wieder freigebe, muß ich nicht wissen, was der Motor vorher machen sollte. Ich muß also nicht merken, ob er einfach so drehte, ob er eine Position anfahren sollte oder soundsoviele Schritte machen sollte. Es würde vieles vereinfachen. Ich kann mir auch eine Art Rundruf an alle Stepper/Servos/DCs oder auch an Gruppen vorstellen. Da gibt es definitiv unbegrenzte Möglichkeiten.

Es sollte aber die Möglichkeit geben, die Motoren im Zustand des Zwischenstops umzuprogrammieren - neue Schritte, Richtung usw.

Da fällt mir noch eine Frage ein: Wie sieht es mit einer Funktion wie IsStop(&Stepper, &StopTrue) aus, die liefert, ob der Motor noch dreht? Vielleicht auch als Callback. Jetzt teste ich die Änderung der Positionen, bis keine Änderung mehr vorliegt.

gruss uwet

Posted

Da fällt mir noch eine Frage ein: Wie sieht es mit einer Funktion wie IsStop(&Stepper, &StopTrue) aus, die liefert, ob der Motor noch dreht? Vielleicht auch als Callback. Jetzt teste ich die Änderung der Positionen, bis keine Änderung mehr vorliegt.

gruss uwet

Dafür gibt es eigentlich den position_reached callback.

Posted

Und das geht auch, wenn ich einen drehenden Motor anhalten möchte? Ist dann der gewünschte Stillstand das Ereignis "Position reached" und wird somit der vollzogene Stillstand gemeldet?

gruss uwet

Posted

Ah, verstehe das Problem. Ich könnte ohne Probleme einbauen das er "position reached" auch aufruft wenn ein Stop Zustand erreicht wird. Würde natürlich die Semantik der API ein wenig ändern, aber ich denke das sollte eigentlich kein Problem sein hier.

Posted

Zur Stepper-API Erweiterung fällt mir ev. noch eine Ergänzung ein, eines sogen. Homeruns:

Durch setPosition wird ein Lauf von z.B. 12000 Schritte ausgelöst.

Ist dieser durch Meldung im Callback am Ende soll der Motor automatisch zum Ursprung zurückgedreht werden.

 

Olaf,

wenn Du die Semantik von PositionReached verändern solltest, ergänze dann diesen durch einen weiteren Parameter, der uns hilft zu unterscheiden, ob das Event aufgrund von Stop oder durch das komplette Abfahren der SetPostions auftritt.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...