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?
:
Bearbeitet durch User
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".
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.