Schrittmotor - MOBA-ToolsSteuerungslogik für motorische betriebene Möbelrolladen

Ich verwende Arduino Programmierung als "Entspannung" :innocent: und versuche mich in diversesten technischen Themen - alles für einen HIFI-Schrank ... aber das ist ein seeehr langes Thema.
Ich steuere meine Schrittmotoren (insgesamt werden es acht - aber derzeit wird nur der eine angesteuert) mit den Moba-Tools. Diese Bibliothek ist mir die liebste, weil einfach zu verwenden und hat genau die Funktionen, die ich gut verwenden kann.
Ach ja: Es kommt ein Arduino Mega 2560 mit einer CNC-Schrittmotorsteuerkarte "huckepack" und einer CNC-Schrittmotorsteuerkarte extern verdrahtet zum Einsatz.
Mein Problem:
Aktuelle kämpfe ich mit der Logik einer "Schiebetürautomatik":
Ein Schrittmotor treibt über einen Treibriemen (Standard 8mm) eine Spindel mit mit ca 45 cm Länge an. Einen Standard Messing Läufer habe ich auf der Drehbank zu einer 5mm starken Scheibe abgedreht und seitlich ein M2.5 Gewinde geschnitten, in welches ich einen Standard Messing Abstandshalter eingeschraubt habe. Dreht sich der Motor, dann wandert der Läufer mit dem Abstandshalter die 45 cm hin- und her und soll so (in ferner Zukunft :sweat_smile:) eine Türe verschieben. Die wird gelagert und benötigt somit nicht wirklich viel Kraft. Als Endeerkennung befindet sich auf den jeweiligen Enden IR-Detektoren (die Standard Dinger um wenige Euro). Es ist wirklich eine Geduldssache, die Reaktion dieser IR-Elemente so genau einzustellen, dass sie kurz vor dem jeweiligen Ende der Spindel anschlagen - aber ich hab es geschafft (mehr Abstand vom Messingläufer!)
Siehe ein Foto dieses mechanischen Aufbaus.
Jetzt habe ich ein "logisches" Problem... vielleicht auch mehr ...
Für die Steuerung dieser Mechanik ist genau ein Taster (Sensorknopf) vorgesehen.
Die Logik:

Damit ich weiß, wo sich der Läufer gerade befindet, setze ich eine Referenzfahrt (langsamfahrt) bis zum Anschlag-IR-Sensor und setze mit myStepper.setZero() den Nullpunkt. Von dort kann ich mir dann ausrechnen (eher ausprobieren), wieviele Schritte bis zum vollständigen Öffnen notwendig sind. So kann ich mit myStepper.doSteps(long stepcount) gezielt hin und herfahren.

Türe offen (IR-Sensor für offen schlägt an) --> Türe soll geschlossen werden
Türe geschlossen (IR-Sensor für geschlossen schlägt an) --> Türe soll geöffnet werden

bis jetzt ist es einfach.

Türe befindet sich irgendwo .....

bewegt sich die Türe gerade (myStepper.moving() = 0 ) --> Türe stop
steht die Türe irgendwo (myStepper.moving > 0) --> setze die Bewegung in die Gegenrichtung der letzten Bewegung fort - Meine Steuerung des Einfahrtstores macht es genauso.

gibt es schon eine effiziente Logik dafür?

danke euch
Anbei auch zwei Fotos der Mechanik zur Veranschaulichung

Christian


Moin. Beim Einschalten, soll die Tür nicht geschlossen werden, Verletzungsgefahr. Lieber öffnen, Referenz-Punkt merken und nach Befehl schließen indem bekannte Anzahl der Schritte ausgeführt werden.

imho bekommst du mit Endschaltern genauere Endpunkte hin.
Ich würde:

  • Endschalter einsetzen
  • Die Lichtschranken etwas weiter mittig setzen und nur für die Referenz fahrt nehmen um die Geschwindikgeit in diesem Bereich hochzufahren bzw. bei erreichen der Lichschranke auf "Langsamfahrt" gehen bis der Endschalter meldet - in Endposition.

Für so eine Anwendung würde ich induktive Näherungssensoren nehmen oder Microschalter
Die gibt es auch in preiswert
habe mal eben schnell gegoogelt

oder den hier als NPN-Schließer
https://www.ebay.de/itm/163629564724?hash=item2619150334:g:BUYAAOSwVvZiD41J

Wenn es optisch sein soll und etwas mehr kosten darf
der Sensor arbeitet sehr zuverlässig weil er einen Laser als Lichtquelle benutzt.
Man muss den Laserstrahl aber sehr konsequent abschirmen weil die Laserleistung 5 mW beträgt.

Zur Logik: Ich empfehle dazu eine Schrittkette zu programmieren
vgs

Guten Abend!
Ja, an die Verletzungsgefahr habe ich schon gedacht. Allerdings hat mich zu diesem Thema ein TMC2209 lange Zeit beschäftigt:
Der TMC2209 kann in einem UART Modus betrieben werden, da mit diesem Stall-detection möglich sein soll. mit Stall-detection bekommt man auf einem zusätzlichen Pin ein Ausgangssignal, wenn ein voreingestellter Strom des schrittmotors überschritten wird. Toll, aber die Version, die ich von A—>Z erhalten habe, ist „nicht ganz“ kompatibel. Darauf bin ich nach zwei Monaten gekommen. TMC2209 ist nicht gleich TMC2209! Jetzt sind die Treiber als Leiseläufer und Stromsparer im step/dir Modus im Einsatz.
Zurück zur Verletzungsgefahr:
In der Referenzfahrt laufen die Motoren in Langsamfahrt. Da haben die Enkelkinder noch Zeit, ihre Finger rauszuziehen (oder erst recht hineinzustecken). Jedenfalls ist es relativ egal, in welche Richtung die Referenzfahrt stattfindet. Machen wir :innocent:
Danke für den Hinweis

Christian

gute Idee!
ich habe da eine ganze Menge von diesen IR-Reflexsensoren gehabt - wollte sie nicht unbedingt ungenutzt lassen.
Die Schrittkette entspricht in etwa einer State Machine - wie sie auch HobbyElektroniker schon gut beschrieben hat?
Muss ich mal praktisch testen
danke für den Hinweis
Christian

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.