Hallo zusammen,
ich versuche aktuell ein Mini-Hochregallager für mehre kleine Schubladen
zu bauen. An sich funktioniert das Anfahren der einzelnen Schubladen
ganz gut.
Ich verwende "virtuelle" Punkte die Regal-Zeilen/Spalten repräsentieren.
Die Schlitten werden durch Riemen gezogen (1:1 das gleiche Konzept von
einem 3D-Drucker) und mit einem Schrittmotor angesteuert. Durch
Rotary-Encoder erfasse ich die Schritte die gemacht wurden, und durch
die Anzahl der Schritte ermittle ich die Position des Schlittens und die
"virtuelle" Position zum Anfahren. Das hat ganz gut funktioniert, bis
ich das Regal vergrößert habe und ein wenig Spiel ins System gekommen
ist. Weshalb ich jetzt denke es wäre besser zu wissen, ob sich der
Schlitten vor einer Schublade befindet oder nicht anstelle es nur zu
berechnen und hoffen, dass der Schlitten in einer Position ist, an der
dieser eine Schublade herausziehen kann.
Da ich mir nicht sicher bin, wie man sowas am besten umsetzten könnte,
wollte ich euch Fragen, ob Ihr in dieser Richtung vielleicht schon ein
paar Erfahrungen gesammelt habt.
Hier wären ein paar von meinen Ideen:
- Magnet an Schubladenposition / Hall-Sensor am Schlitten
- Farbe an Schubladenposition / Farbsensor am Schlitten
- Taster an Schubladenposition / "Noppe" am Schlitten
Schrittmotor und Encoder ist ja an sich schon doppelt gemoppelt, jetzt
fehlt nur noch hier und da eine Referenzposition und los geht's.
Auf's Typenschild gehört dann aber "Redundant Department of Redundancy
Department Inc".
Ich hätte gesagt man baut die Mechanik so das es relativ egal ist.
Z.B. einen Reihenschalter, der jede Reihe in etwa anzeigt, das muss dann
gar nicht so genau sein.
Dazu ein relativ breiter Griff an der Lade, aber ein schmaler am Auszug,
schon ist auch die seitliche Position relativ schnurz.
Zuletzt ein Schalter, der das Einrasten des Griffs anzeigt.
Dann reichen Endschalter unten links und die Schritte.
1
driveToLowBoundOfRow(row);
2
driveToDrawer(drawer);
3
liftUntilLocked();
4
pullDrawer();
Abr dazu müsste man die Mechanik kennen, die kann Software beliebig
kompliziert oder einfach machen...
Magnete an der Lade haben einen relativ großen Erfassungsbereich, Taster
sind mechanisch anfällig.
Eine Marke, die man evtl. auch noch vermisst (und dann für jede Lade
womöglich noch ein XY-Korrekturwert) wären meine Wahl, wenn die Mechanik
es nicht hergibt. Könnte aber evtl. optisch mit Schmutz ein Problem
geben.
Hat also alles Vor- und Nachteile...
Darf man fragen wozu das ist?
Jens M. schrieb:> Schrittmotor und Encoder ist ja an sich schon doppelt gemoppelt, jetzt> fehlt nur noch hier und da eine Referenzposition und los geht's.
Ich verstehe das Argument, ich wusste nur nicht wie man Sicherstellen
kann, dass der Motor sich auch gedreht hat ohne Encoder. Es gibt wohl
die Möglichkeit über den Strom zu gehen um das herauszufinden. Dachte
mir aber, dass Encoder einfacher sind, vielleicht im Nachhinein keine
gute Entscheidung.
Jens M. schrieb:> driveToLowBoundOfRow(row);> driveToDrawer(drawer);> liftUntilLocked();> pullDrawer();> Abr dazu müsste man die Mechanik kennen, die kann Software beliebig> kompliziert oder einfach machen...
Genauso funktioniert es in etwa. Ich hab dir ein Bild mit hochgeladen
mit den Achsenbeschriftungen. Also Schlitten A wird durch einen Riemen
in die X Achse bewegt und Schlitten B wird von einer Spindel hochgehoben
(Auch hier wieder viel von einem 3D-Drucker abgeguckt). Achse X ist in
echt 1,2 m lang und die Y Achse 1 m.
Jens M. schrieb:> Eine Marke, die man evtl. auch noch vermisst (und dann für jede Lade> womöglich noch ein XY-Korrekturwert) wären meine Wahl,
Du sprichst nur von einer 'Marke' welcher Art wäre die Marke die du
wählst?
Jens M. schrieb:> Darf man fragen wozu das ist?
Klar, dass Basisprojekt war eine Arbeit für die Uni. Da ich das Modul
jetzt abgeschlossen habe, fand ich es zu schade um es wegzustellen oder
es gar wegzuschmeißen. Weshalb ich auf die Idee gekommen bin die
Schubladen zu verkleinern und als Regel für meine Hardware-Teile zu
verwenden. Also Tranistoren, Mosfets, Relais, IC's usw. Allerdings
benötige ich bei kleineren Schubladen kleinere Toleranzen und dann sind
wir auch schon im jetzt angekommen und ich frage wie ich diese am
besten, ohne die Mechanik groß umzubauen, verbessern kann.
Hi.
Ohne es jetzt selbst ausprobiert zu haben würde ich, als erste Idee, die
Grob- und die Feinpositionierung getrennt machen.
Also, per "Schnellvorschub" in die ungefähre Position fahren und dann
optisch (Barcode, Label etc. ) eine Feinpositionierung machen.
Das wäre dann zwei getrennte Themen die man einzeln gut abarbeiten kann.
Sebastian schrieb:> Jens M. schrieb:>> Schrittmotor und Encoder ist ja an sich schon doppelt gemoppelt, jetzt>> fehlt nur noch hier und da eine Referenzposition und los geht's.>> Ich verstehe das Argument, ich wusste nur nicht wie man Sicherstellen> kann, dass der Motor sich auch gedreht hat ohne Encoder. Es gibt wohl> die Möglichkeit über den Strom zu gehen um das herauszufinden. Dachte> mir aber, dass Encoder einfacher sind, vielleicht im Nachhinein keine> gute Entscheidung.
Nö, Stepper mit Encoder ist durchaus üblich und keine schlechte Idee.
Man will schon sicherstellen, dass der Motor genau so dreht wie gedacht
und keine Schritte verliert. Kann man auch mit Referenzposition lösen,
dann muss man da aber auch regelmäßig hin fahren.
Sebastian schrieb:> Du sprichst nur von einer 'Marke' welcher Art wäre die Marke die du> wählst?
Eine Reflexlichtschranke, dazu ein schwarzer runder Fleck auf weiß (oder
andersrum).
Im Grunde die Hardware, die ein Linienverfolger nutzt.
Mit 2-4 Bewegungen kann man das Zentrum der Marke eigentlich finden,
wenn man grundsätzlich ne Idee hat wo sie ist:
Zuerst in X-Richtung von der einen zur anderen Kante, dann weiß man
CenterX.
Dort hinfahren.
Dann in Y-Richtung von Kante zu Kante, dann hat man CenterY. Hierbei
sollte sich eigentlich schon der größte Durchmesser gefunden haben, d.h.
maximale Genauigkeit.
Sollte Fleckgröße und Schrittgröße ungünstig sein, sollte man den X-Teil
nochmal wiederholen, denn möglicherweise hat man bei X nur so gerade
eben den Rand des Flecks vermessen und damit ein wenig Ungenauigkeit.
Wer es dann ganz exakt haben will macht Y auch nochmal.
So funktioniert das zumindest bei Maschinen, die einen Reflexlaser zur
Markenfindung nutzen. Geht simpel und schnell.
Sebastian schrieb:> Dachte> mir aber, dass Encoder einfacher sind, vielleicht im Nachhinein keine> gute Entscheidung.
Ich hätte bei "Encoder auf der Motorwelle" eher an einen Servoantrieb
gedacht, keinen Stepper.
Xerxes schrieb:> Also, per "Schnellvorschub" in die ungefähre Position fahren und dann> optisch (Barcode, Label etc. ) eine Feinpositionierung machen.Jens M. schrieb:> Eine Reflexlichtschranke, dazu ein schwarzer runder Fleck auf weiß (oder> andersrum).
Denke, der Trend ist klar zu erkennen. Dann werde ich mich in die
Richtung mal umschauen. Ich danke für eure Hilfe.
User32 schrieb:> Nö, Stepper mit Encoder ist durchaus üblich und keine schlechte Idee.> Man will schon sicherstellen, dass der Motor genau so dreht wie gedacht> und keine Schritte verliert.
Vor vielen Jahren habe ich mal die Schlittenposition für einen Drucker
programmiert, dessen Druckkopf mit einem Schrittmotor angesteuert wurde.
Der Schrittmotor macht keinen Schrittfehler, wenn die Minimalzeiten
genau eingehalten wurden und der Motor so dimensioniert ist, dass er das
erforderliche Drehmoment auch unter ungünstigen Bedingungen (Führung des
Kopfes verschmutzt, Kopf stößt bei Bewegung an falsch eingezogenes
Papier o.ä.) aufbringen kann. Wenn das nicht sicher gegeben ist, ist ein
Encoder zur Kontrolle der Bewegung durchaus sinnvoll.
Dass bei größeren Riemenlängen deren Elastizität und auch ein
"Durchhängen" infolge des Eigengewichts sich bemerkbar macht, ist
logisch. Hier benötigt man die beschriebenen Methoden zur Kontrolle der
Position in Bezug auf das Ziel. Aber wichtig ist, die notwendigen
Korrekturschritte in der Berechnung für das nächste Ziel mit zu
berücksichtigen (beispielsweise wenn man zurückfährt), da dann diese
Fehlereinflüsse wieder "verschwinden".