das ist mein erster Beitrag in diesem Forum und hoffe nicht gleich Porzellan zu zerschmeißen. Bitte folgende Frage : Ich habe zwei Stepper-Mototoren zum laufen gebracht (worüber ich schon sehr froh bin). Ein Motor treibt eine Gewindespindel an, der zweite Motor eine Drehscheibe. Beide Motoren müssen bei Start des Systems eine Anfangsposition einnehmen um eine Endposition definiert anzufahren. Realisieren will ich das über mechanische Endschalter. Wie kann ich das programmieren ? Vielen Dank für eine eventuelle Unterstützung.
Hier kann man den Stepper auch schneller laufen lassen, vor allem wenn die Vorrichtung beim Einschalten weit vom Sensor entfernt sein kann. Deshalb anchließend die langsame Bwwegung in Gegenrichtung zur genauen Erkennung der Markierung.
Das lassen wir mal schön heile, aber ich finde es wichtig, in einem schriftlichen Forum möglichst die richtigen Begriffe zu verwenden. Aus dem CNC-Bereich sind mir folgende geläufig:
Endschalter: Sollten nur im Fehlerfall erreicht werden und führen zu NOTAUS.
Referenzschalter: Sagt dem Schrittmotor nach dem Einschalten, wo er steht.
absolute Nullposition: Von dort startet jegliche Positionsberechnung.
relative Nullposition: Kann sich auf ein Werkstück beziehen und ist veränderlich.
Das wäre dann wohl der Referenzschalter, den Du benötigst.
_______________________/------- ^ ^ 0 R
Ablauf:
Ist der Referenzschalter gedrückt, weiter bei 3., sonst im Schleichgang nach rechts.
Wird der Referenzschalter gedrückt, Stop.
Bewegung langsam nach links.
Wird der Referenzschalter losgelassen, Position relativ zur Nullposition merken. Ggf. Nullposition anfahren.
In 4. steckt die Annahme, die Nullposition ist etwas vom Referenzpunkt entfernt, damit der Referenzschalter geschont wird.
Ich empfehle Dir die über die Bibliotheksverwaltung installierbare Programmbibliothek MobaTools, die Dich bei der Programmierung unterstützt. Siehe beispielsweise die Beispiele Stepper_Reference und Stepper_Reference_2 sowie Stepper_Slider mit meiner Mitwirkung.
Ich danke Dir für Deine Antwort. Du hast natürlich recht. Es geht nicht um das "Endeschalten" sondern um das definieren einer Position um dann entsprechend einer angegeben Schrittzahl auf eine Ziel-Position zu fahren. Beide Motoren müssen zueinander synchron hinsichtlich ihrer Zielposition laufen. D.h. Drehscheibe des Motors 1 soll stehen mit einer Funktionskontur auf C-Achse 0° , dann muss Motor 2 den Spindelschlitten auf Z-Ende-Position fahren und wieder zurück. Motor 1 schaltet die Drehscheibe 36° weiter, bei Ziel erreicht, Motor2 fährt schlitten wieder auf Z-Ziel-Position und wieder zurück. Um diese Synchronisation zu erzielen war also meine Überlegung, eine Start-Routine zu programmieren welche dafür sorgt das die Motoren anlaufen und bei erreichen der Microtaster-Schaltpunkte stoppen um dann den Loop auszuführen.
@hans-haselnuss: Was dir die ganzen Kommentare sagen wollen: Hier hat keine eine Glaskugel. Und ohne deinen Code zu kennen wirst du keine sinnvolle Antwort bekommen. Was hast du bereits? Und wo genau hängst du fest?
man kann das "Referenz Fahren" natürlich auch in eine Ablaufsteuerung (Schrittkette / Statemashine) integrieren.
Es gibt auch immer wieder den Vorschlag das mit in die Setup() zu bauen. Kann man machen. Ich bin jetzt ehr dafür das für jeden Antrieb mit einer eigene Function, und wie im Beispiel gezeigt, mit einer Statusvariablen zu machen. Die Function kann man gegebenenfalls dann auch nochmals bei Bedarf starten.
Hallo,
ich sehe das ein klein wenig anders. Der T0 sucht einen Ansatz, wie man eine Referenz-Fahrt und anschließend einen Ablauf realisieren kann. Das er sich zur Anfangsaufgabe gestellt hat das gleich mit zwei Antrieben und einem recht komplexen Ablauf zu machen, ist etwas unglücklich.
@hans-haselnuss
Vorschlag Du beschäftigst Dich zunächst mal damit wie Du z.B mitttels Moba Tools einen Deiner Antrieb Referenz fahren kannst und anschließend zwei Sollpositionen mit unterschiedlicher Geschwindigkeit und Rampe.
Dann mit dem Thema Schrittkette,Ablaufsteuerung und versuchst Deinen gesamten Ablauf gedanklich in so ein Konzept bringen. Das geht am besten mit Papier und Bleistift, also völlig analog. Dabei kann heraus kommen das Du zwei Schrittketten benötigst. Soweit ich das bisher verstanden habe gibt es aber eindeutige Abhängigkeiten voneinander, da sollte eine reichen.
Beispiele für Schrittketten, Ablaufsteuerungen, Endlicher Automat, Statemashine findest Du auch hier im Forum.
Wie Du dann in welchem Schritt / State welche Position mit welchem Antrieb anfahren musst ist dann eigentlich recht einfach.